计算机视觉与深度学习实战:以MATLAB、Python为工具
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.2 理论基础

答题卡自动阅卷系统通过获取答题卡图像作为系统输入,并通过计算机处理、自动识别填涂标记,存入数据库完成阅卷。在图像数字化的过程中,受设备、环境等因素的影响,答题卡图像的质量在一定程度上下降,影响自动阅卷的准确率,甚至导致无法正常阅卷。因此,要对所获取的图像进行一系列的预处理,过滤干扰、噪声,做几何校正、彩色校正等操作,并进行二值化处理,以确保后续步骤能顺利进行。

4.2.1 图像二值化

彩色图像经过灰度化处理后得到灰度图,每个像素都仅有一个灰度值,该灰度值的大小决定了像素的亮暗程度。在答题卡自动识别实验中,根据答题卡图像答案目标的色彩特点,为了方便地进行目标答案的检测和识别,我们需要对灰度图像进行二值化处理,也就是说各像素的灰度值只有0和1两个取值,用来表示黑白两种颜色,这样可以大大减少计算的数据量。

在对答题卡图像进行二值化的过程中,阈值的选取是关键,直接影响到目标答案能否被正确识别。根据二值化过程中阈值选取的来源不同,阈值选取方法可以分为全局和局部两种。鉴于答题卡图像的应用场景,不同考生填涂答题卡的深浅度往往不同。如果采用由用户指定阈值的方法,则可能会产生对每张答题卡都需要进行阈值调整的要求,而且在光照不均匀等因素的影响下往往会出现目标区域二值化异常的现象。因此,在本案例中采用局部平均阈值法来自动确定阈值,当像素点的灰度值小于阈值时,则将该点的数值置为0,否则将数值置为l。该算法在不同的图像区域所选择的阈值会自动调整,也消除了光照不均匀等因素的干扰,同时在光照明暗变化时能自动调整阈值的大小。

等待系统载入答题卡图像并进行灰度化等预处理后再进行二值化,将有效突出答案目标的显示效果,其效果如图4-1所示。

图4-1 图像二值化

4.2.2 倾斜校正

在答题卡图像采集的过程中,由于种种原因,可能会导致所采集到的答题卡图像有某种程度的倾斜,为了得到准确的阅卷结果,需要进行必要的倾斜校正处理。答题卡图像的倾斜校正一般分为两步:第一步,查找倾斜角度;第二步,进行坐标变换,得到校正后的图像。其中,常用的倾斜角度查找方法有两种:一种是利用Hough变换来找出倾斜角度;另一种是利用角点检测来找出倾斜角度。根据答题卡图像样式固定的特点,本案例采用Hough变换进行倾斜角度的计算。

Hough变换作为一种参数空间变换算法,自从1962年被Hough提出之后,便成为直线和其他参数化形状检测的重要工具。Hough变换具有较强的稳定性和鲁棒性,可以在一定程度上避免噪声的影响,而且易于并行运算。因此,Hough变换被不断地研究并取得大量进展。Duda和Halt将极坐标引入Hough变换,使这种方法可以更加有效地用于直线检测和其他任意几何形状的检测。Ballard提出了非解析任意形状的R表法,将Hough变换推广到对任意方向和范围的非解析任意形状的识别,这种方法被称为广义Hough变换。

直线y=mx+b可用极坐标表示为:

也可表示为:

其中,(4.1)式中的( rθ)定义了一个从原点到该直线最近点的向量,显然,该向量与该直线垂直,如图4-2所示。

图4-2 直线的极坐标表示

假设以参数rθ构成一个二维空间,则xy平面上的任意一条直线都对应平面上的一个点。因此,xy平面上的任意一条直线的Hough变换就是寻找平面上的一个对应点的过程。

假设在xy平面上有一个特定的点(x0y0),经过该点的直线可以有很多条,每条都对应平面中的一个点,则这些点必须满足以x0y0作为常量时的(4.1)式。因此,根据(4.1)式的定义可以发现,在参数空间与xy空间中,所有直线对应点的轨迹就是一条正弦型曲线,即xy平面上的任意一点都对应平面上的一条正弦曲线。如果有一组位于由参数r0θ0决定的直线上的边缘点,则每个边缘点都对应空间的一条正弦型曲线。由于这些曲线都对应同一条直线,因此所有这些曲线必交于点(r0θ0)。

在实际计算过程中,为了找出这些点所构成的直线段,我们可以将空间进行网格化,进而将其量化成许多小格,并初始化各小格的计数累加器。根据每个(x0y0)点的极坐标公式代入θ的量化值,算出各个r的值,如果量化后的值落在某个小格内,则使该小格的计数累加器加1;在全部(xy)点都变换后,对小格计数器进行统计,包含较大计数值的小格对应共线点,并且(rθ)可作为直线拟合参数;包含较小计数值的小格一般对应非共线点,丢弃不用。通过以上过程可以看出,如果rθ网格量化度量过大,则其参数空间的聚合效果较差,很难查找直线的准确rθ参数;同理,如果 rθ 网格量化度量过小,则计算量会随之增大,影响查找效率。因此,在计算过程中需要综合考虑这两方面,选择合适的网格量化度量值。

由于Hough变换需要进行网格扫描处理,运行速度往往较慢,因此在进行直线检测和倾斜角度计算时,需要考虑的一个重要因素就是计算量。其中,计算量与搜索角度步长θs和搜索角度范围θr密切相关。因此,采用多级Hough变换,通过设置角度搜索步长由大到小进行直线检测和倾斜角度计算,可以有效降低算法的计算量。多级Hough变换首先用较大的θsθr求出倾斜角度的大致范围,这类似于人眼主观估计的过程;然后用较小的θsθr对倾斜角度进行细化处理,对于某些应用场景甚至可以求出约0.02°的倾斜,这类似于人眼仔细估计的过程。因此,采用多级Hough变换比直接应用Hough变换在运算速度上有了较大提高。

在计算答题卡图像的倾斜角度时,为了消除涂抹区域不均匀的影响,对已获取的满足上述特征的极大值对应的倾斜角度,可采用算术平均的方式进行优化处理。假设每行答题区对应的倾斜角度都为θii=1,2,…,NN通常为答题区的总行数),则图像的倾斜角度θm由(4.3)式给出:

在获取答题卡图像的倾斜角度后,可以对图像进行旋转处理。假设点(x0y0)绕点(ab)旋转θ度后坐标为(x1y1),旋转后中心坐标为(cd),则:

图像旋转可能会引起图像的高度和宽度范围的改变,结合答题卡图像周边区域的特点,我们对旋转图像超出范围的周边区域进行了删除处理。同时,为了尽可能保持图像的完整性,在进行旋转时以图像的中心位置作为旋转中心进行计算,对答题卡图像进行倾斜校正的效果如图4-3~图4-4所示。

图4-3 倾斜校正效果1

图4-4 倾斜校正效果2

4.2.3 图像分割

图像分割是图像处理中常用的关键步骤之一,本案例涉及对答题卡图像有效区域的检测和分割。在一般情况下,对灰度图像的分割通常可基于像素灰度值的两个性质:不连续性和相似性。图像固定区域内部的像素一般具有灰度相似性,而在不同区域之间的边界上一般具有灰度不连续性,也就是我们常说的区域边缘属性。因此,灰度图像分割方法一般可以分为基于区域的方法和基于边界的方法。前者利用区域内的灰度相似性进行分割,后者利用区域间的灰度不连续性进行分割。根据分割过程中选择的运算策略不同,分割算法又可分为并行算法和串行算法。在并行算法过程中,所有检测和分割都可独立和同时地进行,利于提高运算效率。在串行算法过程中,后续的处理流程要用到在之前的步骤中得到的结果,要求程序运行具有连续性。

1.基于区域的分割方法

基于区域的分割方法以区域内像素的相似性特征为依据,将图像划分成一系列有意义的独立区域,实现分割的目标。图像进行区域分割后一般有以下特征。

(1)一致性。图像分割后的区域应在某些特征方面表现出一致性,如灰度、颜色或纹理。

(2)单一性。区域内部目标分布单一,不能包含太多孔洞。

(3)差异性。区域内部的同一特征在相邻区域间应有明显的差异性。

(4)准确性。区域间的分割边界应该有光滑性,且边界的空间位置准确。

基于区域的分割方法常用的有灰度阈值法和区域增长法等,其特点是充分利用了区域内像素特征的相似性。

2.基于边界的分割方法

基于边界的分割方法也被称为基于梯度的图像分割方法,其关键步骤是进行边缘检测。基于边界的分割方法首先检测图像中的边缘点,然后按照一定的策略连接成轮廓线得到边界,最后根据边界得到分割区域。由于图像边界具有梯度峰值的特点,所以该方法又被称为基于梯度的图像分割方法。其中,进行边缘检测的常用方法有图像微分(差分)、梯度和拉普拉斯变换等。

如果仅进行边缘检测还不能完成图像分割,则需要继续将边缘点按某种策略连接成边缘线,形成直线、曲线、轮廓线等,直到能表示图像区域的边界。其中,将边缘点连接成线包括两个过程:检测可能的边缘点;将得到的边缘点通过连接或拟合等方式获取连续的线(如直线、曲线、轮廓线等)。该方法涉及边缘检测,需要综合考虑图像抗噪性和检测精度的矛盾:若提高抗噪性,则往往会产生边缘丢失或位置偏差;若提高检测精度,则往往会产生噪声伪边缘或错误的轮廓。

3.基于特定理论的分割方法

随着图像分割技术的不断发展,出现了许多与特定理论、方法相结合的图像分割技术,如基于活动轮廓的图像边缘检测方法和基于小波分析的图像分割方法等。

本案例结合答题卡图像的特点,采用区域定位分割的思路,将答题卡图像分为答题区域上下两部分,如图4-5所示。

图4-5 图像区域分割