
作者:周海涛 韩晓军
来源:《电脑知识与技术·学术交流》2008年第28期
摘要:论文提出了一种能够有效识别答题卡的方法,利用基于hough变换的直线检测技术检测图像的倾斜度,判断图像是否倾斜。对存在倾斜的图像进行旋转校正。最终实现答题卡答案的定位和检测。论文使用像素统计方法进行识别,其识别错误效率极低,能够准确识别答题卡的涂卡标记。
关键词:hough变换;像素统计;答题卡识别
中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)28-0197-03
Studying on Answer Sheet Identification Method Based on Digital Image Processing
ZHOU Hai-tao, HAN Xiao-jun
(School of Information and Communication, Tianjin Polytechnic University, Tianjin 300160, China)
Abstract: This paper presents an answer sheet recognition system which can recognize answer sheet effectively. Hough transformation-based beeline detection technique is used to detect the gradient of image, confirm whether if the image is leaned and adjust these images. So the location and detection of the answers is completed. This answer sheet recognition system can recognize answer sheet effectively and have few of mistake.
Key words: hough transformation; statistics of pixels; answer sheet recognition
1 检测图像倾斜度及旋转校正
答题卡在采集图像的过程中由于各种原因可能会产生图像倾斜、水平或垂直错位,要进行正确的识别首先需要对其进行校正,下面是针对图像倾斜的检测及校正。
使用扫描仪得到答题卡图像如图1所示,图像中有一条明显的黑色横线,因此可以作为校正的直线。为了压缩图像信息减少处理时间,将图像转换为灰度图像,再进行二值化处理。灰度图像的数据保存为二维数组g(i,j),二值图像保存为二维数组b(i,j)。图1所示为采集的图像,二值化后的图像如图2所示。
■
图1倾斜的答题卡图像 图2二值化后的倾斜答题卡图像
如图1所示答题卡图中只有倾斜的一条直线,不存在其他直线,这条直线很容易被检测出来。采用hough变换检测图像中的这条直线的倾角,并以这个倾角来判断图像是否倾斜。
如果用直线到原点的距离和直线的倾角来表示一条直线,那这条直线为:
ρ=x·cos(θ)+y·sin(θ)(1)
这里ρ是直线到原点的距离,图像最左上角的一点就是原点,θ是直线的倾角,就是直线与x轴的夹角。ρ和θ组成了一个参数空间,称为ρθ参数空间。对于xy平面上任意一个点A(xi,yi),有ρ=xi ·cos(θ) +yi ·sin(θ),这在ρθ参数空间里是一条正弦曲线。如果xy平面内只有一条线段l,在这条线段上共有 个点,对其进行hough变换,就得到ρθ参数空间里的n条正弦曲线。因为在xy平面里线段l有相同的ρ和θ,所以在ρθ参数空间里这些正弦曲线会相交于一点,在参数空间里形成一个峰值点。这个峰值点在参数空间里的坐标就是直线 在xy平面里的ρ和θ。如果平面里有若干条直线,那么经hough变换以后对应的参数空间里的若干个峰值点[5]。
如图3所示,这幅二值图像里只有一条线段,对这幅二值图像进行Hough变换得到的ρθ参数空间就如图4所示,形成一个峰值点。
■
图3 一条直线图4 一条直线形成的峰值点
Hough变换检测图像中直线的倾角以及校正步骤如下:
1)读取整幅图像,将彩色图像变为灰度图像,并保存在二维数组g(i,j)里。其中i是行标,j是列标,g(i,j)表示对应行标i和列标j的灰度值;
2)将图像变为二值图像。经过多次试验验证,二值化阈值为50时效果最好,能有效的将图像中的黑色直线与其他颜色的直线区分开。二值化的结果如图2所示。二值图像的数据保存在bw(i,j)中;
3)对图像进行hough变换。首先建立一个二维数组A(ρ,θ)作为参数空间的累加器。这里ρ是直线到原点的距离,范围是从0到答题卡图像对角线的长度。θ是直线的倾角,范围是-90°到90°。然后扫描第二步得到的二值图像数据bw(i,j),将bw(i,j)里所有像素值为 0的点的坐标保存下来。对于bw(i,j)中像素值为0的点(bwi,bwj),将(bwi,bwj)代入式(1)中,令θ等于-90°到90°中的每一个值,如果得到的ρ值在0到答题卡图像对角线的长度之间,就将对应的A(ρ,θ)的值加1。得到的二维数组A(ρ,θ)就是ρθ参数空间,如图5所示。
4)如图5所示有明显三个峰值,其中只有一条是目标直线,另外还有两条是答题卡图像右边和下边的许多方块形成的峰值,因此需要对下一步中检测到的峰值进行判别,是否为图像中的直线。
5)hough变换域空间是一个二维数组,找到hough变换域空间的峰值,也就是这个二维数组的最大值,并记下它的位置,记为 (ρ',θ')。并把找到的峰值(ρ',θ')以及它的邻域中的hough变换单元设为零,邻域大小为8×8。
6) 判断找到的峰值(ρ',θ')所对应的是否为答题卡图像中的直线。判别方法为:将图像旋转90°-θ',使这条直线大概位于一条垂线上。这里θ'是第二步检测到的峰值所对应的直线倾角。检测这条直线上的最长的线段长度。设一个阈值T,如果这条直线上的最长线段长度大于阈值T,就说明这个峰值对应的是答题卡图像中的直线。
7)重复第二步到第四步,直到找出答题卡图像中的直线。这条直线的倾角就是所求的答题卡图像的倾角θ'。
将图1逆时针旋转θ’,使图像中的两条直线位于水平位置,就完成了检测图像倾斜度以及旋转校正。得到的答题卡图像如图6所示。再将变换得到的答题卡图像进行二值化,如图7所示,就是hough变换后的二值答题卡图像[1]。
■
图6hough变换后的答题卡图像图7二值化以后的答题卡图像
2图像定位
对图像进行旋转校正以后,还需要对图像进行定位。图像右方和下方的黑色方块比较明显,容易识别,所以选用图像右方和下方的黑色方块进行定位。步骤如下:
1)测得右方方块的宽和高分别为28和11作为先验信息。宽和高都以像素为单位。
2)对二维灰度数组g(i,j)进行处理。建立一个累加器B(i,j),大小和灰度数组g(i,j)一样。在灰度数组g(i,j)右边增加27列,在下边增加10行,增加的值均为255。对于灰度数组g(i,j)中的每一个值g(i',j'),从这个点开始统计宽和高分别为11和28的矩形块的灰度值之和,并将这个灰度值的和赋值给对应的累加器B(i',j')。查看B(i,j)的值可以发现在右边方块的位置会出现极小值,通过检测这些极小值可以知道方块的位置。
3)图6有51个同样大小的方块,需要找出51个同样的极小值。找出B(i,j)中的一个极小值,并记下它的行坐标的位置,并把找到的极小值以及它的邻域中的单元设为累加器B(i,j)中的最大值,邻域大小为6×10。然后再找出下一个极小值,直到找出51个方块的位置为止。
记录下每一个方块的行坐标和列坐标。根据答题卡图像特点可知,每一个方块的列坐标应该是相同的。并对检测出的行坐标进行从小到大的排序,保存在长度为51的一维数组x(i)中。
4)测得下边方块的宽和高分别为19和9作为先验信息。仍根据上一步中所说的方法找出23个方块的行坐标和列坐标。并对检测出的列坐标进行从大到小的排序,保存在长度为23的一维数组y(i)中。
5)根据一维数组x(i)和y(i),可以确定答题卡中每一个选项的具体位置。例如,答题卡中的第1题A选项的坐标就是 (x(15),y(23)),而第105题A选项的坐标就是(x(31),y(5))。至此,实现了答题卡的定位。
3 答题卡的识别
根据一维数组x(i)和y(i),找到答题卡中每一个选项的坐标。然后统计以该坐标为左顶点的大小为19×11的矩形区域的灰度值总和。如果这个值小于某个阈值,则判断该选项为黑,就是该选项已涂黑。经过多次仿真实验,阈值为31350时效果最好,能正确地将填涂的答案识别出来。
参考文献:
[1] 陈盖凯.基于Hough变换的直线检测[J].西安:西安航空技术高等专科学校学报,2007,(03):36-38.
[2] K?覿lvi?覿inen H, Oja E, Xu L.Randomized Hough transform applied to translational and rotational motion analysis [A].Proceedings of the 11th International Conference on Pattern Recognition [C].Hague:ICPR,1992:672-675.
[3] Xu L,Oja E.Randomized Hough transform(RHT):basic mechanisms,algorithms and computational complexities[J].CVGIP:Image Understanding Archive,1993,57(2):131-154.
[4] 李兰友,万振凯.Visual Basic6图像处理开发与实例[M].北京:电子工业出版社,2000.
[5] 冈萨雷斯,数字图像处理[M].北京:电子工业出版社,2007.
[6] 李朝晖,张弘.数字图像处理及应用[M].北京:机械工业出版社,2004.
[7] 阮秋琦.数字图像处理学[M].北京:电子工业出版社,2001.
