基于Matlab的答题卡识别技术研究

基于Matlab的答题卡识别技术研究

摘要:在高速发展的互联网时代中,人们每时每刻都在接收信息的状态下,所以对环境中的信息获得和回应的能力十分必要。其中文本信息占了其中的绝大多数。如果信息处理系统能够尽量像人眼一样对周围环境进行解析,特别是环境中的文本信息,那么信息获取流程将会更加简便快捷。本文主要以答题卡识别为例,利用Matlab软件实现对答题卡图片中答案和个人信息的识别,分数的计算和输出。应用Matlab可以很方便的从数字图像中获得相关数据,还可以进行各种检测,如预处理检测、hough直线检测、图像平滑、形态学滤波、区域分割与标记等一系列操作,编写相应的算法并设计出完整的GUI界面。用Matlab软件进行仿真和测试,输出的分数与真实得分相对比准确率达100%,这也充分确保了阅卷的公平公正,减少了人工阅卷的负担。
关键词:Matlab;数字图像处理;答题卡;答案识别

数字图像处理

Matlab,又名矩阵实验室,其出现要归功于美国MathWords。上个世纪八十年代,为了解决一系列数学处理工作,该公司专门开发了一款商业化数学处理软件。通过改软件,能够完全大多数矩阵类数据运算及分析工作,同时还能专门针对不同的信号或者复杂图形变化等工作进行处理。这种高效的人机处理特性使其被大大推广,并在全世界范围内被众多使用者所推崇。
2.1 图像归一化
图像归一化是在执行一系列操作之后将各种原始图像能够被变化为另外一类结构。这期间需要一系列的处理,以此能够更好的获取不同数量的图像及副本内容。同时,在图形进行必要的归一处理后,能采用相同的参数进行转换取得标准化图形。图像归一化的基本方法有线性函数转换、对数函数转换(以10为底)和反余切函数转换。
由于在处理中图像的参数可能会发生改变,这类归一化转换可以获取更多标准化模型,以此防范空间转换中而产生的其他影响性,从而实现处理的高效性。此次使用的函数是I=Image_Normalize(I,1);
归一化图像如图2-1所示
 在这里插入图片描述

图2-1 归一化前后对比图
2.2 图像平滑
图像平滑滤波就是图像的去噪声处理,每张图像都会有噪音,噪音有从系统的外部进行干扰同时也有系统内部的一些东西。降噪方法通常在空间和频域中处理。通用的处理技术是低通滤波。常用的图像平滑模板操作包括均值滤波,中值滤波和高斯滤波。此次使用的函数为I=Image_Smooth(I,hsize,sigma,1)。
平滑处理后图像如图2-2所示。
在这里插入图片描述

图2-2 平滑前后对比图
2.3 图像灰度化
通常见到的彩色图像,都由基本原色所构成,即离不开RGB。在Matlab软件中,由此而选择使用nm3的数据矩阵大小,来保证基本彩色结构。数组中的元素代表图中每个像素的蓝色,红色和绿色值。哪种颜色的值较大,像素将显示该颜色。前面提及过的灰度图像,在Matlab中也是矩阵结构。假设A为某一数据矩阵,那么A的大小能够表现为某一灰度数值。如果三原色分量大小一致,那么分量数值即为灰度。在灰度数据存储中,每个像素分配一个字节的存储,数值范围为0-255。通常采取四种方法的一种进行灰度化处理,有分量法、最大值法、平均值法和加权平均法。
(1)分量法
三个灰度值在图像上,一般由三个分量共同表达,在处理时候可以任选某一种图像来操作。f1(I,J)=R(I,J),f2(I,J)=G(I,J),f3(I,J)=B(I,J)。继而,fk(I,J)(k=1,2,3),是图像中的转换后灰度值大小。
(2)最大值方法
主要选择把图像中的三分量的max值选出来,最后专门用作灰度值设定。
f(I,J)=max(R(I,J),G(I,J),B(I,J))
(3)平均值法
对图像中的三分量值进行平均化以此为灰度。
f(I,J)=(R(I,J)+G(I,J)+B(I,J))/3
(4)加权平均法
根据特定的一些指标,对这三个组成部分进行加权然后用不同的权重平均。研究表明人眼对绿色的灵敏度最高而对蓝色的灵敏度最低,因此可以由以下公式获得RGB分量的加权平均值,以获得更适合的灰度图像。
f(I,J)=0.30R(I,J)+0.59G(I,J)+0.11B(I,J)
此次使用的函数是I=Gray_Convert(I,1),灰度化处理后的效果如图2-3所示
在这里插入图片描述

图2-3 灰度化处理
2.4 图像二值化
所谓二值化,就是将图像中的彩色全部变成黑白的处理过程。也就是将图像的像素灰度值全部变为零或者最大值255的处理操作。二值化就是应用二维空间特性进行设计的思路表示图像的X坐标和Y坐标。二值图像的每个像素只有黑色和白色量值颜色。当将彩色图转变为黑白图时候,就可以将二维数值定为某一定值。如果图像的像素大于此定值,则像素将成为白色,颜色分数值为255。若原始图像的像素大小小于这个定值,此像素就成为黑色,数值变成0。每个图像经过这样的比较变换后,就会形成二值图像。在数字图像处理中,二值图像比原始图像的数据量小,使图片对象的边缘轮廓更加明显。此次使用的函数为bw2=Image_Binary(I,1)。二值图像如图2-4。
在这里插入图片描述

图2-4 二值化图像效果图
2.5 边缘检测
数字图像除了显示黑色或者白色外,其亮度还可以进行调设。应用边缘性检验,可以很好辨识出这些不同像素大小。这些属性的改变能够随之反映到图像的显示上。常规的方式有深度不连续及表面方向的不连续性,以此能够体现出材料属性的改变及场景转换特点。
(1)基于一阶微分算子
所谓一阶微分边缘算子,就是应用一阶导数,结合微分算子演算出图像梯度的矩阵算法,然后应用边缘图像的梯度来进行边缘性测验。此过程,又称为梯度边缘算子法。
Sobel算子:image=edge(in_image,‘sobel’,threshold,direction);
Prewitt算子:image=edge(in_image,‘prewitt’,threshold,direction);
Roberts算子:image=edge(in_image,‘sobel’,threshold);
优点:在软件中操作简单并且可以快速得到结果。
缺点:很容易被噪音干扰。究其原因,主要为实际值同设定值有差距,由此应该检验不同的边缘数。同时,由于将算子固定,就不能检验变化环境下的尺度。
Canny算子:image=edge(in_image,’canny’,threshold);
这里,in_image为灰度图像,threshold则为阙值。
上述算子,就是在一阶微分的处理后进行必要改换。一种改换是双向值域大小,另外一种改换为非最大抑制的修正。在双阙值中,高位阙值能够比较清楚标定出边缘,低阙值又能够跟踪模糊边缘。以此,能够减少漏掉不少关键属性、减少边缘遗忘。总体有四个部分:高斯平滑降噪,计算梯度和方向角,非最大抑制、滞后阈值。以此非最大抑制一方面能够保障边缘精确度,还能够减少多响应边缘性。
(2)基于二阶微分算子
二阶微分边缘不同于一阶边缘,其在灰度值突发变换的条件下,这个被选中的点二阶微分导数值为零,称为“过零点”。这样可以迅速定位边缘。因此,该算法也称为零点算子。二阶微分算子常见的有拉普拉斯算子和Log算子。
高斯拉普拉斯方法(laplacian of Gaussian,LoG):image=edge(in_image,’log’,threshold);
其中,in_image是灰度图像,threshold是阈值。
log算子检验,其结果主要源于roberts和sobel算子,其优点是可以有效抵抗噪声干扰并且检测出的边缘明显而且完整。
(3)基于SUSAN特征检测算子
SUSAN特征检验,又称为最小核心相似检验。该算子应用原型模板,结合模板圆的中心点同其他点进行对比,以此能够测算出圆形的中心区像素值大小,同时考虑需不需要选定阙值。
优点:抗噪能力好、计算量小速度快、可以检测边缘的方向信息[7][8]。
(4)hough检测
由于答题卡区域是固定的,只需要检测直线,所以此次采用了hough变换检测直线。hough变换可以连接检测到的边缘点以获得边界曲线。知道此曲线的形状后,hough变换将对所有这些非常分散的边缘点进行积分,然后对曲线进行逼近。我们也可以使用此转换,这种转换被视为一种称为聚类分析的技术。
霍夫转换能够使用两套方式去检验,一类方式为应用直角坐标,另外一种方法是应用极坐标。都能进行直线检测。
采用第一种方法,即为在直角坐标上检验直线:假定在某个二维平面上,取一点A(x1,y1),同时能够找到一直线y1=ax1+b 。同一平面上通过A点的直线有无数条。假若直线y1的关键数值a、b存在很多不同取值时,这种方程形式能够一直存在。然而,将直线变换为b=-ax1+y1b,同时认为ab仅仅在定点A这里能找到一条直线。
在软件中,在处理之前首要工作为创建一个新的二维累积数组m。m的第一维度能够表达直线斜率的近似区域,第二维度能够划定直线截距的近似区域,同时还需要进行初始化操作。接着将空间像素值,使用霍夫变化法来测算,由此知晓a和b的大小,再紧接着把这个数值放置到元素M(a,b)。此时通过测算获得的M(a,b)就是图像的空间点位大小。
使用极坐标检测直线:
在空间维度的直线中,若假使z表现为直线同原点之间的距离大小,同时θ表示法线与x轴之间的角度,此类直线空间方程为:z =xsinθ+ycosθ
其中,(z,θ)为原点同直线的垂直距离的向量
以此参数制订的空间直线,任何直线都可能在该空间找到对应的位置。由此而言,直角坐标中的任何直线经过霍夫变换,都可以成为极坐标空间的一个点。假设平面上存在一点(x0,y0)。很多直线通过此点,同时每个直线都对应极坐标中的一个点。那么,这类点能够用x0和y0为常数的标准方程。另外,参数在空间位置上,能够正好对应此类直线的对应线路正好为正弦曲线,直角平面上的点正好对应于z,θ空间的正弦曲线。
若在由另外一个极坐标参数所描述的直线上具备一组边缘点,那么每个取定的边缘点正好对应为(z,θ)空间中的正弦曲线上。因此,所有此类曲线应该正好在(z1,θ1)相交。
为更好这类点及其所形成的直线,因此需要在z,θ空间中创造一类二维直方图。如果存在的边缘点(xi,yi),均将其逐个在直方图上添加上去,运用z,θ空间中对应于该点Hough变换来操作。等待所有包含的边缘点进行运算后,使得(z1,θ1)的正方形将具有局部最大值,此时既可以进行直线检测。
检测直线标记如图2-5。
在这里插入图片描述

图2-5 hough检测直线
输入图像可能具有旋转图像,因此需要对图像进行倾斜校正。对RGB图像进行不同方位的转换,主要需要借助一些函数来实现。主要有image、iRotateAngle、width和height。其中image包含了整个图像的相关数据信息,iRotateAngle针对转件角度进行设计,剩下两个主要是针对图像的宽度及高度进行设计。此次样本实验中校正了90度,将图像从水平放置变为竖直放置,方便后续区域识别,校正后的图像如图2-6。 在这里插入图片描述

图2-6 倾斜校正图
2.6 形态学滤波
在生物学中有一类分支研究专门针对术语形态学,此类研究主要围绕动植物的不同结构进行研究。然而,在图像处理操作中,应用到数学形态功能,主要是为了更好提取图像中的不同成分对象,在操作上描述为从图像中描述出不同区域的形态。所谓形态学,需要进行数学形态的过滤而实现的图像变化。从根本特性上看,同各种滤镜功能完全一致,由此能够避免太多噪音提高图像的呈现度。在对图像进行形态转换之前,经常会做变换处理。其中,变换处理通常需要进行灰度及二进制处理。在morphology模块上能够很清楚看到不同的函数特性。
这包含了很多不同的操作方法。最常见的方法是腐蚀、膨胀操作。然后,其他不同形态的操作均是在这两类操作之上进行各种运算,无论是开操作耗时顶帽等操作。
膨胀:
这个过程是不断通过逼近寻找局部中最大化数值,也就是说对于待处理的图像及元素完成卷积操作,由此能够使得图像在二进制操作中能够生长或者被粗糙化。选择目标点,然后找到以目标点为中心的结构化元素。覆盖的面积最大。
功能函数:skimage.morphology.dilation(image,selem=None)
腐蚀:
腐蚀刚好相反,选择结构化元素和目标点的方法相同,但操作成为以目标点为中心的结构化元素可以消除的最大面积。
功能函数:skimage.morphology.erosion(image,selem=None)
开操作:
开运算是先腐蚀然后膨胀。其主要功能是在不更改对象形状的情况下对噪声进行消噪,消除一些小像素点并平滑图像。
功能函数:skimage.morphology.openning(image,selem=None)
闭操作:
这类操作特点是首先是膨胀,然后是腐蚀性。这种操作一般用于对于前景中的小位置区进行填满操作。
功能函数:skimage.morphology.closing(image,selem=None)
如果处理图像为二值图像,则可以调用skimage.morphology.binary-closing(image,selem=None)
用此函数比处理灰度图像要快。
经过滤波后的图像如图2-7。
在这里插入图片描述

图2-7 滤波后图像
2.7 区域分割与标记
在对整个图像进行处理的工作中,也包括对整个区域进行划分。每个细分工作将整个图像划分为不同的子区域,至于细分的原因更多由待解决问题的需要而定。答题卡识别有效的个人信息在图像的特定版块,这些信息一般来说有考试科目、试卷的类型(A卷、B卷…)和学生学号,还有最重要的一个也就是答题区。如果我们可以对这些区域精准定位就可以获取答题卡中的我们需要的重点信息。本文采用了基于直线的边界检测和区域分割的方法,将答题卡化分为信息区域和答题区域两部分。

图2-8 区域分割图
在这里插入图片描述

图2-9 区域标记图

结论

本次设计是在图片文字识别建库无法实现的限制下,以答题卡为例用Matlab设计了这个系统,给出了实现的基本具体方案,详细描述了执行数字图像处理的许多操作的算法及其原理。其中最主要的重点难点是霍夫变换检测直线,这是本次设计能成功实现的关键步骤。在该设计中,从理论到实践,编写、验证和分析了程序算法。本实验实现了答题卡的正确识别,不需要专用的识别设备和答题卡,在普通PC机上就可实现。这不仅降低了购买成本、使用成本,还扩大了应用范围,并且该方法的识别正确率达到100%,识别速度为每份0.866s。因此,本文所描述的识别方法是一种廉价、高效、便捷、实用的阅卷方法,具有实际应用价值。本次设计主要研究的内容如下:
(1)设计了基于Matlab识别答题卡的具体步骤。
(2)详细论述了识别系统的各个组成部分。
(3)实现了设计提出的功能,分析比较了该系统与其他系统的优劣。
经过阅读文献以及对算法的分析,也发现了本次算法的不足:
(1)由于区域分割的特定性,只能识别固定排版的答题卡。
(2)不能批量输入图像,操作繁琐。
(3)不能自动录入分数,需要操作者手动录入。
因此,本次设计虽然完成了设计的基本要求,但是在功能上并不完美,只是为后续的研究打下基础。一方面,答题卡识别技术的未来发展趋势将是答案识别更加准确。将准确的参考答案与识别结果进行比较,以输出准确的分数。另一方面,我们将从一种算法转换为多种算法,还可以比较多种算法获得的识别结果,最后选择最优的识别结果,这将大大提高答案的识别率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值