一种智能纸质试卷总分识别方法及系统与流程

文档序号:19117054发布日期:2019-11-13 01:16阅读:619来源:国知局
一种智能纸质试卷总分识别方法及系统与流程

本公开涉及计算机图像处理、计算机视觉领域,具体涉及一种智能纸质试卷总分识别方法及系统。



背景技术:

在学校的学习生活中,考试是不可或缺的,无论中小学、大学,它是为了让学生通过一个标准来判断自己的不足,但伴随着考试,改试卷是不可缺少的一个环节,对于学生来说,分数是自己实力的证明,而对于老师来说,认真改好试卷是对学生的负责,然而改完之后,最后一步就是统计总分,而这个是影响改试卷高效率的一大障碍。如今,许多学校由于资金等问题,很少学校能做到每次改卷使用机改,而大部分教师改卷都是手改,本身手改试卷就有者许多影响效率的动作,比如翻试卷,写分数等操作。而影响最大的就是统计分数。无论是一人改卷还是多人分工改卷,最后的统计分数是改完一张试卷花费时间最多的。而计算分数也是最容易算错的,这容易导致二次改卷,影响改卷质量。同时教师与学生的正常比例为一边倒,导致平均每一个教师改试卷数量庞大,以及规定完成时间紧迫,这大大给教师造成许多压力与健康上的威胁。

现有的爱作业,小猿搜题等应用没有应用到老师改卷的领域上,没能提供提高老师改卷效率的方法。爱作业app实现方法为:1、通过在周边学校收集、积累作业数据;打造自己的数据集用于训练自己的神经网络;2、通过多次训练达到较高的准确率;3、再用类似ocr的图像和文字识别技术,对识别到的区域进行功能完善的图像预处理并识别;4、实现自动纠错、打分和批改等功能。并且大多使用集成的ocr(opticalcharacterrecognition)技术对文本层面上的识别,对手写数字识别准确率不高,可见ocr技术在此方面效果没有理想中的好,还有大多利用标识符对数字与数字之间的分割,不能很好的还原真实分数,更难用于算术运算了。上述现有的方法主要有以下缺陷:1.没有为教师改卷领域提供提高效率的应用。2.大多通过ocr技术进行识别,对于手写和相邻数字没能提供好的识别效果。3.同时未能完整还原真实数字。例如“1(空格)10”,ocr技术在距离不大的情况下会识别为110,不会识别为1和10。



技术实现要素:

本公开提供一种智能纸质试卷总分识别方法及系统,为教师改卷领域提供提高效率的应用,通过分割算法准确分割数字,将分数区域图片中对应题号的分数的个位数与十位数分割并标记得到标记分数区域图片,并还原真实数字;该方法用于教师改卷的特定领域,各步骤的图像预处理详细步骤的顺序,对应题号分数提取方式,分割方法以及分割方法包括但不限于使用opencv相关函数进行实现。对应题号分数的分割方法与标记方法;用于识别的神经网络模型包括但不限于xception、vgg16、vgg19、resnet50、inceptionv3中任意一种的开源网络模型,判断是否已写出总分数的方法。

为了实现上述目的,根据本公开的一方面,提供一种智能纸质试卷总分识别方法,所述方法包括以下步骤:

步骤1,在纸质试卷图像上固定的打分区域从左到右分别提取对应题号的分数区域图片;

步骤2,将分数区域图片中对应题号的分数的个位数与十位数分割并标记得到标记分数区域图片;

步骤3,通过训练好的卷积神经网络模型对标记分数区域图片进行分数识别得到分数预测值;

步骤4,对分数预测值进行还原得到对应题号的分数;

步骤5,迭代执行步骤2到步骤4,直至对应各题号的分数全部得出;

步骤6,判断是否已写出总分数,对已写出的总分提供预测值对比,否则将所有对应题号的分数相加得到总分。

进一步地,在步骤1中,在纸质试卷图像上固定的分数栏区域从左到右分别提取对应题号的分数区域图片的方法为:

纸质试卷图像通过图像采集设备(包括但不限于摄像头、照相机)进行获取,纸质试卷图像上的分数栏区域处于图像中的固定的坐标位置,该坐标位置为人工设置,可调整;

分数区域图片的固定的打分区域结构特性为矩形,分数区域图片中对应题号(在本公开中以“左”、“右”表示打分区域的题号顺序的位置关系),题号为打分区域从左到右的编号。

对分数栏区域提取对应题号的分数区域图片,提取方法包括但不限于使用开源python库opencv相关函数对分数栏区域图像进行分数提取与图像预处理,处理方法如下:

步骤1.1,在分数栏区域图像中色彩层面的平滑滤波,平滑色彩细节;

步骤1.2,将分数栏区域图像的bgr类型图片转换为hsv图片(hsv颜色模型);

步骤1.3,对hsv图片的hsv色彩空间红色字体进行提取,得到红色数字的二值图片;

步骤1.4,将分数栏区域图像多次膨胀的形态学处理,以便得到各分数栏区域图像中对应各题号分数的具体区域图片;

步骤1.5,在具体区域图片寻找对应题号分数的轮廓,通过用矩形框识别的形式从左到右提取题号的轮廓中包含分数区域图片,并记录包含分数区域图片的数量;

所述从左到右提取分数区域图片包括但不限于使用快速排序方法,通过矩形框的起始像素点排序;

所述从左到右提取分数区域图片包括但不限于使用快速排序方法实现,具体步骤如下:

步骤1.5.1,获取每张对应题号分数区域图片(以下简称图片)四个角的像素点位置;

步骤1.5.2,通过图片四个角的像素点位置计算除图片中心点;

步骤1.5.3,每一张图片中心点的x值越小,则越靠左,每一张图片中心点的x值越大,则越靠右;

步骤1.5.4,利用快速排序算法按照每张对应题号将分数区域图片进行排序;

提取对应题号的分数区域图片有利于更加准确地识别出分数值。

进一步地,在步骤2中,将分数区域图片中对应题号的分数的个位数与十位数分割并标记得到标记分数区域图片的方法为:

步骤2.1,对分数区域图片进行预处理;

步骤2.2,将分数区域图片中对应题号的分数的个位数与十位数分割得到各个分割子图;

步骤2.3,标记各个分割子图得到标记分数区域图片。

进一步地,在步骤2.1中,对分数区域图片进行预处理的步骤如下:

步骤2.1.1,在色彩层面进行平滑滤波,中和色彩分布相近的颜色,并平滑色彩细节,从而侵蚀掉面积较小的颜色区域;

步骤2.1.2,通过对步骤2.1.1平滑滤波后的图片进行自适应二值化,膨胀得到清晰完整轮廓分明的数字二值图片,用于下一步数字分割。

进一步地,在步骤2.2中,将分数区域图片中对应题号的分数的个位数与十位数分割得到各个分割子图的方法有通过基于距离变换的分水岭算法和滴水算法:

基于距离变换的分水岭算法为:将distancetransform()方法用于计算分数区域图片中的所选二值图片中每一个非零点与自己最近的零点的距离,distancetransform()得到的参数保存了每一个点与离自己最近的零点的距离信息,通过一系列计算,从而达到细化分割对象的轮廓像素值,结合分水岭算法,在分割的过程中,由距离变换得到细化分割对象的轮廓,将图片区域上相邻并且灰度值大致相同的像素点联通起来,从而形成一个封闭的轮廓,从而达到分割效果。此算法对数字连起来的情况效果显著。

滴水算法为:是非常强大的分割算法,能够准确分割数字,用于完全粘起来(粘起来即相邻的两个分数的像素区域的像素点连续)的十位以上数字。具体步骤:通过预处理好的分数区域图片的二值图片,寻找合适的起始分割点。对每一个分割点的右边、右下角、正下方、左下角和左边的像素点进行判断,制定6个寻找下一个分割点的规则(由优先级排序):

1.若其5个方位像素点全为背景或为笔迹时,则下一个分割点为正下方像素点;

2.若其左下角像素点为背景,其余4个方位像素点至少有一个为笔迹,则下一个分割点为左下角像素点;

3.若其左下角像素点为笔迹,正下方像素点为背景,则下一个分割点为正下方像素点;

4.若其左下角像素点与正下方像素点为笔迹,右下方为背景,则下一个分割点为右下方像素点;

5.若其右下角、正下方和左下角像素点为笔迹,左边像素点为背景,则下一个分割点为右边边;

6.若其除了左边像素点为背景,其余4个方位像素点为笔迹,则下一个分割点为左边。

进一步地,基于距离变换的分水岭算法将数字轮廓变得清晰与封闭,从而使用最小矩形框圈出来即可,对不黏在一起(黏在一起即相邻的两个分数的像素区域的像素点连续)的分数以及单个数字效果最佳,速度快。通过判断框出的数字图片的中心点在原图片水平方向上的像素点位置确定个位数(标记为0)和十位数(标记为1)。

进一步地,在步骤2.2中,将分数区域图片中对应题号的分数的个位数与十位数分割得到各个分割子图方法为:对于滴水算法,为了更好的实现字符分割,需对预处理图片进行垂直方向上的投影,得到垂直方向上构成数字的像素点的分布情况,并搜素其宽度中心附近(三分之一宽度)区域,在区域中选取最低点作为起始分割点的水平位置,由于该水平位置的纵方向构成数字的像素点少,更能代表两个数字连接的地方,分割会更准确;又由于算法优先级5的规则与算法优先级6的规则会出现两种情况(当前分割点左边出现:右下角、正下方和左下角像素点为笔迹,左边像素点为背景;分割点出现:除了左边像素点为背景,其余4个方位像素点为笔迹)导致选区分割点无限左右循环,从而导致算法运行失败,在此改进算法,添加记录像素点遍历情况,即遍历过的像素点不再参与算法执行,不会出现循环。同时滴水算法得到的连续分割点,用于分辨个位数与十位数的位置,为了根据连续的分割点实现数字分割步骤如下:

以十位数为例,通过判断框出的数字图片的中心点在原图片水平方向上的像素点位置确定个位数标记为0和十位数标记为1,以此类推;对于滴水算法,为了更好的实现字符分割,需对预处理图片进行垂直方向上的投影,得到垂直方向上构成数字的像素点的分布情况,并搜素其宽度中心附近(三分之一)宽度区域,在区域中选取最低点作为起始分割点的水平位置,由于该水平位置的纵方向构成数字的像素点少,更能代表两个数字连接的地方,分割会更准确;添加记录像素点遍历情况,即遍历过的像素点不再参与算法执行,这样就不会出现循环寻找分割点,同时滴水算法得到的连续分割点,用于分辨个位数与十位数的位置,为了根据连续的分割点实现数字分割步骤如下:

步骤2.2.1,提取十位数时,以每个分割点为边界,将图片矩阵数据中每一行分割点右边的数据全部变为(0,0,0),即将右边图片变为背景色;提取个位数时,以每个分割点为边界,将图片矩阵数据中每一行分割点左边的数据全部变为(0,0,0),即将左边图片变为背景色;

步骤2.2.2,将得到的十位数的图片与个位数的图片平滑轮廓细节,进行图片预处理,将数字完整化成清楚的二值图片,并做好十位数的图片标记为1与个位数的图片标记为0标记;

步骤2.2.3,用最小矩形框极限框出十位数的图片与个位数的图片中的数字。

步骤2.2.4,由于得到的图片未适合输入训练好的神经网络,对极限框出的数字图像的长(记为height)与宽(记为width)进行判断,当长大于宽时,创建一个全为背景色(即全黑)与边长为height+10个像素点的正方形图片,两张图片都以中心点为对称点,将原图覆盖到创建的正方形图片上,从而得到不变形的正方形分割子图

进一步地,在步骤2.3中,标记方法为:按照图像的像素从右到左位置用0,1……n标记分割区域得到标记分数区域图片,排序方法包括但不限于快速排序算法,n+1为分割子图数量。

进一步地,在步骤3中,通过训练好的卷积神经网络模型对标记分数区域图片进行分数识别得到分数预测值方法为:

建立神经网络模型,所述神经网络模型包括但不限于xception、vgg16、vgg19、resnet50、inceptionv3中任意一种的开源网络模型,用于对手写数字图片进行训练,所用的手写数字数据集包括但不限于mnist数据集,

将标记分数区域图片输入神经网络模型进行识别,步骤具体如下:

步骤3.1,将步骤2.2.4处理得到分割子图的尺寸通过resize()不变形地重构为28*28像素,符合神经网络对图片的要求;

步骤3.2,将步骤3.1中处理的图片数字部分一致改为黑色,背景部分一致改为白色,并通过reshape()重构为[1,784]的矩阵;

步骤3.3,将[1,784]的矩阵输入训练好的神经网络中,得出到预测值。

输入神经网络并输出结果为以下步骤:

1.通过步骤2.2处理好的矩阵,创建占位符为[0,9]的10维向量

2.输入第一层卷积层,卷积层1:卷积核大小为5*5,步长为1,32个卷积核;通过tensorflow的relu()函数进行非线性映射激活,得出的卷积的结果输入max_pool()池化层1:大小为2*2,步长为2;得出32张14*14的特征映射图

3.输入第二层卷积层,卷积层2:卷积核大小为5*5,步长为1,64个卷积核;通过tensorflow的relu()函数进行非线性映射激活,得出的卷积结果输入max_pool()池化层2:大小为2*2,步长为2;得到64张7*7的特征映射图;

4.将第二层池化后的数据通过tensorflow的reshape()函数调整为7*7*64的向量,与全连接层的权重[7*7*64,1024]进行矩阵相乘并加偏置,然后进行非线性映射relu()函数得到1024维的向量。全连接层设有1024个神经元。

5.将全连接层得出的1024维向量与权重[1024,10]并加偏置,通过softmax()函数输出为10维的向量,通过argmax()得到识别结果,即每位数字的真实值,从而快速的识别出各个子图的分数值。

进一步地,在步骤4中,对分数预测值进行还原得到对应题号的分数的方法为:将标记为0的分割区域识别预测值为个位数,标记为1的分割区域识别预测值为十位数并将其识别到的数字乘于10,以此类推,通过相加还原真实分数并保存到计分列表中,所述计分列表为一个用于存储分数的浮点型数组或者链表,数组或者链表,计分列表的顺序为分数区域图片中对应题号(在本公开中以“左”、“右”表示顺序的位置关系)。

进一步地,在步骤5中,迭代执行步骤2到步骤4,直至对应各题号的分数全部得出的方法为:重复执行步骤2、步骤3、步骤4,直至所有标记分数区域图片对应的题目分数全部得出;判断依据由步骤1中得的题目数;为零时不重复执行步骤2、步骤3、步骤4,反之重复执行步骤2、步骤3、步骤4。

进一步地,在步骤6中,判断是否已写出总分数,对已写出的总分提供预测值对比,否则将所有对应题号的分数相加得到总分的方法为以下步骤:

步骤6.1,将计分列表中的对应各题号的分数全部求和是否大于n(试卷以100分为例,n=100):大于则输出总分数,小于则执行步骤6.2;

步骤6.2,除计分列表中最右的分数不参与求和得到预测值总和,得到的预测值总和是否等于计分列表中最右的分数。不等于则判定为未写出分数,若出现等于的情况则无法判断是否给出分数,则转到步骤6.3。

步骤6.3,对试卷上固定的分数区域图片进行矩形框识别(opencv中boundingrect函数),具体实行:对整张图片自适应二值化,得到汉字、数字和边框为黑底,空白的地方为白底,利用boundingrect函数的矩形框框出白底区域(由于边框为黑色,可作为边界,所述分数区域图片的固定的打分区域结构特性为矩形),则题号的总数量为框出来的白底区域个数除于2再减去2,并将识别到的所有对应题号的分数相加得到总分数。

本发明还提供了一种智能纸质试卷总分识别系统,所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下系统的单元中:

分数区域提取单元,用于在纸质试卷图像上固定的打分区域从左到右分别提取对应题号的分数区域图片;

分割标记分数单元,用于将分数区域图片中对应题号的分数的个位数与十位数分割并标记得到标记分数区域图片;

分数预测值单元,用于通过训练好的卷积神经网络模型对标记分数区域图片进行分数识别得到分数预测值;

分数还原单元,用于对分数预测值进行还原得到对应题号的分数;

迭代执行单元,用于迭代执行分数预测值单元到分数还原单元,直至对应各题号的分数全部得出;

总分计算单元,用于判断是否已写出总分数,对已写出的总分提供预测值对比,否则将所有对应题号的分数相加得到总分。

本公开的有益效果为:本发明提供一种智能纸质试卷总分识别方法及系统,为了帮助教师群体在改卷上提高速度,从而减轻其负担与压力。在改好每一题分数的前提下,大大提高改卷速度,从而避免二次操作;本发明能够帮助教师群体在改卷上提高速度,从而减轻其负担与压力。通过简单的图像预处理准确分割数字,对于相邻地很近地数字也有不错的效果,准确高效,能够准确地还原真实数字应用到算术运算中。

附图说明

通过对结合附图所示出的实施方式进行详细说明,本公开的上述以及其他特征将更加明显,本公开附图中相同的参考标号表示相同或相似的元素,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,在附图中:

图1所示为一种智能纸质试卷总分识别方法的流程图;

图2所示为下一个分割点可能的5个方位图;

图3所示为纸质试卷图像上固定的打分区域图;

图4所示为神经网络流程图;

图5所示为一种智能纸质试卷总分识别系统图。

具体实施方式

以下将结合实施例和附图对本公开的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本公开的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在本发明公开的描述中,需要理解的是,术语上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明公开和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明公开的限制。

需要说明的是,在本发明公开中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。

如图1所示为根据本公开的一种智能纸质试卷总分识别方法的流程图,图2所示为下一个分割点可能的5个方位图,下面结合图1和图2来阐述根据本公开的实施方式的一种智能纸质试卷总分识别方法。

本公开提出一种智能纸质试卷总分识别方法,具体包括以下步骤:

步骤1,在纸质试卷图像上固定的打分区域从左到右分别提取对应题号的分数区域图片;

步骤2,将分数区域图片中对应题号的分数的个位数与十位数分割并标记得到标记分数区域图片;

步骤3,通过训练好的卷积神经网络模型对标记分数区域图片进行分数识别得到分数预测值;

步骤4,对分数预测值进行还原得到对应题号的分数;

步骤5,迭代执行步骤2到步骤4,直至对应各题号的分数全部得出;

步骤6,判断是否已写出总分数,对已写出的总分提供预测值对比,否则将所有对应题号的分数相加得到总分。

进一步地,在步骤1中,在纸质试卷图像上固定的分数栏区域从左到右分别提取对应题号的分数区域图片的方法为:

纸质试卷图像通过图像采集设备(包括但不限于摄像头、照相机)进行获取,如图3所示,图3所示为纸质试卷图像上固定的打分区域图,纸质试卷图像上的分数栏区域处于图像中的固定的坐标位置,该坐标位置为人工设置,可调整;

分数区域图片的固定的打分区域结构特性为矩形,分数区域图片中对应题号(在本公开中以“左”、“右”表示打分区域的题号顺序的位置关系),题号为打分区域从左到右的编号。

对分数栏区域提取对应题号的分数区域图片,提取方法包括但不限于使用开源python库opencv相关函数对分数栏区域图像进行分数提取与图像预处理,处理方法如下:

步骤1.1,通过opencv函数pyrmeanshiftfiltering()在分数栏区域图像中色彩层面的平滑滤波,平滑色彩细节;

步骤1.2,通过opencv函数cvtcolor()将分数栏区域图像的bgr类型图片转换为hsv图片(hsv颜色模型);

步骤1.3,通过opencv函数inrange()对hsv图片的hsv色彩空间红色字体进行提取,得到红色数字的二值图片;

步骤1.4,通过opencv函数dilate()将分数栏区域图像多次膨胀的形态学处理,以便得到各分数栏区域图像中对应各题号分数的具体区域图片;

步骤1.5,通过opencv函数findcontours()在具体区域图片寻找对应题号分数的轮廓,通过boundingrect()用矩形区域的形式(boundingrect包覆此轮廓的最小正矩形,即提取的图片为矩形)从左到右提取题号的轮廓中包含分数区域图片,并记录包含分数区域图片的数量;

所述从左到右提取分数区域图片包括但不限于使用快速排序方法,通过矩形框的起始像素点排序;

所述从左到右提取分数区域图片包括但不限于使用快速排序方法实现,具体步骤如下:

步骤1.5.1,由opencv函数findcontours()可得到每张对应题号分数区域图片(以下简称图片)四个角的像素点位置;

步骤1.5.2,通过图片四个角的像素点位置计算除图片中心点;

步骤1.5.3,每一张图片中心点的x值越小,则越靠左,每一张图片中心点的x值越大,则越靠右;

步骤1.5.4,利用快速排序算法按照每张对应题号将分数区域图片进行排序。

进一步地,在步骤2中,将分数区域图片中对应题号的分数(具体以两位数为例)的个位数与十位数分割并标记得到标记分数区域图片的方法为:通过开源python库opencv相关函数实现,

步骤2.1,对分数区域图片进行预处理;

步骤2.2,将分数区域图片中对应题号的分数的个位数与十位数分割得到各个分割子图;

步骤2.3,标记各个分割子图得到标记分数区域图片。

进一步地,在步骤2.1中,对分数区域图片进行预处理的步骤如下:

步骤2.1.1,在色彩层面进行平滑滤波,中和色彩分布相近的颜色,并平滑色彩细节,从而侵蚀掉面积较小的颜色区域;

步骤2.1.2,通过对步骤2.1.1平滑滤波后的图片进行自适应二值化,膨胀得到清晰完整轮廓分明的数字二值图片,用于下一步数字分割。

进一步地,在步骤2.2中,将分数区域图片中对应题号的分数的个位数与十位数分割得到各个分割子图的方法有通过基于距离变换的分水岭算法和滴水算法:

基于距离变换的分水岭算法为:将distancetransform()方法用于计算分数区域图片中的所选二值图片中每一个非零点与自己最近的零点的距离,distancetransform()得到的参数保存了每一个点与离自己最近的零点的距离信息,通过一系列计算,从而达到细化分割对象的轮廓像素值,结合分水岭算法,在分割的过程中,由距离变换得到细化分割对象的轮廓,将图片区域上相邻并且灰度值大致相同的像素点联通起来,从而形成一个封闭的轮廓,从而达到分割效果。此算法对数字连起来的情况效果显著。

滴水算法为:是非常强大的分割算法,能够准确分割数字,用于完全粘起来(粘起来即相邻的两个分数的像素区域的像素点连续)的十位以上数字。具体步骤:通过预处理好的分数区域图片的二值图片,寻找合适的起始分割点。对每一个分割点的右边、右下角、正下方、左下角和左边的像素点(如图2所示,图2所示为下一个分割点可能的5个方位图)进行判断,制定6个寻找下一个分割点的规则(由优先级排序):

1.若其5个方位像素点全为背景或为笔迹时,则下一个分割点为正下方像素点;

2.若其左下角像素点为背景,其余4个方位像素点至少有一个为笔迹,则下一个分割点为左下角像素点;

3.若其左下角像素点为笔迹,正下方像素点为背景,则下一个分割点为正下方像素点;

4.若其左下角像素点与正下方像素点为笔迹,右下方为背景,则下一个分割点为右下方像素点;

5.若其右下角、正下方和左下角像素点为笔迹,左边像素点为背景,则下一个分割点为右边边;

6.若其除了左边像素点为背景,其余4个方位像素点为笔迹,则下一个分割点为左边。

进一步地,基于距离变换的分水岭算法将数字轮廓变得清晰与封闭,从而使用最小矩形框圈出来即可,对不黏在一起(黏在一起即相邻的两个分数的像素区域的像素点连续)的分数以及单个数字效果最佳,速度快。通过判断框出的数字图片的中心点在原图片水平方向上的像素点位置确定个位数(标记为0)和十位数(标记为1)。

进一步地,在步骤2.2中,将分数区域图片中对应题号的分数的个位数与十位数分割得到各个分割子图方法为:对于滴水算法,为了更好的实现字符分割,需对预处理图片进行垂直方向上的投影,得到垂直方向上构成数字的像素点的分布情况,并搜素其宽度中心附近(三分之一宽度)区域,在区域中选取最低点作为起始分割点的水平位置,由于该水平位置的纵方向构成数字的像素点少,更能代表两个数字连接的地方,分割会更准确;又由于算法优先级5的规则与算法优先级6的规则会出现两种情况(当前分割点左边出现:右下角、正下方和左下角像素点为笔迹,左边像素点为背景;分割点出现:除了左边像素点为背景,其余4个方位像素点为笔迹)导致选区分割点无限左右循环,从而导致算法运行失败,在此改进算法,添加记录像素点遍历情况,即遍历过的像素点不再参与算法执行,这样就不会出现循环。同时滴水算法得到的连续分割点,用于分辨个位数与十位数的位置,为了根据连续的分割点实现数字分割步骤如下:

步骤2.2.1,提取十位数时,以每个分割点为边界,将图片矩阵数据中每一行分割点右边的数据全部变为(0,0,0),即将右边图片变为背景色。提取个位数时,以每个分割点为边界,将图片矩阵数据中每一行分割点左边的数据全部变为(0,0,0),即将左边图片变为背景色。

步骤2.2.2,将得到的十位数的图片与个位数的图片平滑轮廓细节,进行图片预处理,将数字完整化成清楚的二值图片,并做好十位数的图片与个位数的图片标记,将十位数的图片标记为1,个位数的图片标记为0;

步骤2.2.3,用最小矩形框极限框出十位数的图片与个位数的图片中的数字。

步骤2.2.4,由于得到的图片未适合输入训练好的神经网络,对极限框出的数字图像的长(记为height)与宽(记为width)进行判断,当长大于宽时,创建一个全为背景色(即全黑)与边长为height+10个像素点的正方形图片,两张图片都以中心点为对称点,将原图覆盖到创建的正方形图片上,从而得到不变形的正方形分割图片。

进一步地,在步骤2.3中,标记方法为:按照图像的像素从右到左位置用0,1……n标记分割区域得到标记分数区域图片,排序方法包括但不限于快速排序算法,n+1为分割子图数量。

进一步地,在步骤3中,通过训练好的卷积神经网络模型对标记分数区域图片进行分数识别得到分数预测值方法为:

建立神经网络模型,所述神经网络模型包括但不限于xception、vgg16、vgg19、resnet50、inceptionv3中任意一种的开源网络模型,用于对手写数字图片进行训练,所用的手写数字数据集包括但不限于mnist数据集,

将标记分数区域图片输入神经网络模型进行识别,步骤具体如下:

步骤3.1,将步骤2.2.4处理得到分割子图的尺寸通过resize()函数不变形地重构为28*28像素,符合神经网络对图片的要求;

步骤3.2,将步骤3.1中处理的图片数字部分一致改为黑色,背景部分一致改为白色,并通过reshape()重构为[1,784]的矩阵;

步骤3.3,将[1,784]的矩阵输入训练好的神经网络中,得出到预测值。

输入神经网络并输出结果相关步骤(如图4所示,图4所示为神经网络流程图):

1.通过步骤2.2处理好的矩阵,创建占位符为[0,9]的10维向量

2.输入第一层卷积层,卷积层1:卷积核大小为5*5,步长为1,32个卷积核;通过tensorflow的relu()函数进行非线性映射激活,得出的卷积的结果输入max_pool()池化层1:大小为2*2,步长为2;得出32张14*14的特征映射图

3.输入第二层卷积层,卷积层2:卷积核大小为5*5,步长为1,64个卷积核;通过tensorflow的relu()函数进行非线性映射激活,得出的卷积结果输入max_pool()池化层2:大小为2*2,步长为2;得到64张7*7的特征映射图;

4.将第二层池化后的数据通过tensorflow的reshape()函数调整为7*7*64的向量,与全连接层的权重[7*7*64,1024]进行矩阵相乘并加偏置,然后进行非线性映射relu()函数得到1024维的向量。全连接层设有1024个神经元。

5.将全连接层得出的1024维向量与权重[1024,10]并加偏置,通过softmax()函数输出为10维的向量,通过argmax()得到识别结果,即每位数字的真实值。

进一步地,在步骤4中,对分数预测值进行还原得到对应题号的分数的方法为:将标记为0的分割区域识别预测值为个位数,标记为1的分割区域识别预测值为十位数并将其识别到的数字乘于10,以此类推,通过相加还原真实分数并保存到计分列表中,所述计分列表为一个用于存储分数的浮点型数组或者链表,数组或者链表,计分列表的顺序为分数区域图片中对应题号(在本公开中以“左”、“右”表示顺序的位置关系)。

进一步地,在步骤5中,迭代执行步骤2到步骤4,直至对应各题号的分数全部得出的方法为:重复执行步骤2、步骤3、步骤4,直至所有标记分数区域图片对应的题目分数全部得出;判断依据由步骤1中得的题目数;为零时不重复执行步骤2、步骤3、步骤4,反之重复执行步骤2、步骤3、步骤4。

进一步地,在步骤6中,判断是否已写出总分数,对已写出的总分提供预测值对比,否则将所有对应题号的分数相加得到总分的方法为以下步骤:

步骤6.1,将计分列表中的对应各题号的分数全部求和是否大于n(试卷以100分为例,n=100):大于则输出总分数,小于则执行步骤6.2;

步骤6.2,除计分列表中最右的分数不参与求和得到预测值总和,得到的预测值总和是否等于计分列表中最右的分数。不等于则判定为未写出分数,若出现等于的情况则无法判断是否给出分数,则转到步骤6.3。

步骤6.3,对试卷上固定的分数区域图片(如图3所示)进行矩形框识别(通过opencv中boundingrect函数),具体实行:对整张图片自适应二值化,得到汉字、数字和边框为黑底,空白的地方为白底,利用boundingrect函数的矩形框框出白底区域(由于边框为黑色,可作为边界,所述分数区域图片的固定的打分区域结构特性为矩形),则题号的总数量为框出来的白底区域个数除于2再减去2,并将识别到的所有对应题号的分数相加得到总分数。

本公开的实施例提供的一种智能纸质试卷总分识别系统,如图5所示为本公开的一种智能纸质试卷总分识别系统图,该实施例的一种智能纸质试卷总分识别系统包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种智能纸质试卷总分识别系统实施例中的步骤。

所述系统包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下系统的单元中:

分数区域提取单元,用于在纸质试卷图像上固定的打分区域从左到右分别提取对应题号的分数区域图片;

分割标记分数单元,用于将分数区域图片中对应题号的分数的个位数与十位数分割并标记得到标记分数区域图片;

分数预测值单元,用于通过训练好的卷积神经网络模型对标记分数区域图片进行分数识别得到分数预测值;

分数还原单元,用于对分数预测值进行还原得到对应题号的分数;

迭代执行单元,用于迭代执行分数预测值单元到分数还原单元,直至对应各题号的分数全部得出;

总分计算单元,用于判断是否已写出总分数,对已写出的总分提供预测值对比,否则将所有对应题号的分数相加得到总分。

所述一种智能纸质试卷总分识别系统可以运行于桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备中。所述一种智能纸质试卷总分识别系统,可运行的系统可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述例子仅仅是一种智能纸质试卷总分识别系统的示例,并不构成对一种智能纸质试卷总分识别系统的限定,可以包括比例子更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种智能纸质试卷总分识别系统还可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种智能纸质试卷总分识别系统运行系统的控制中心,利用各种接口和线路连接整个一种智能纸质试卷总分识别系统可运行系统的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种智能纸质试卷总分识别系统的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

尽管本公开的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本公开的预定范围。此外,上文以发明人可预见的实施例对本公开进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本公开的非实质性改动仍可代表本公开的等效改动。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1