
1.5 答案识别
通过对答题区域的网格化分割,以及对答案字符的检测,我们可以得到顺序排列的答案字符图像,用于字符的匹配识别。考虑到单项选择题答案的特殊性,可采用经典的模板匹配算法,将待识别的答案字符图像与标准的字符“ABCD”图像进行模板匹配,得到最相似的字符输出作为识别结果。因此,本节首先进行标准的字符模板图像生成;然后对答案字符图像进行相关性计算,得到模板匹配结果;最后输出答案字符并将其标注到答题卡图像上进行可视化分析,并结合标准答案设置计算试卷得分。
1.5.1 字符模板图像生成
针对字符“ABCD”,通过字符显示及自动化截屏裁剪的方法可生成一套指定字体的字符模板图像,关键代码如下。

运行后,得到文件db.mat,存储了字符模板图像、字符模板内容,模板图像可集中显示如图1-7所示。字符模板图采用黑色底图、白色前景的形式,尺寸统一为[50 30]的大小,这便于进行统一匹配识别。

图1-7 字符模板图像
1.5.2 字符模板匹配识别
模板匹配识别方法的关键在于相似性度量的计算,常用的计算方法有欧氏距离、汉明距离、余弦距离、相关系数等,考虑到字符图像的规范化特点,本节采用相关系数法进行相似性判断,并将相关系数最高的字符作为模板匹配的输出结果。假设对m行n列的矩阵A、B计算相关系数,公式如下:

相关系数越高,表示矩阵A、B相关性越强,将其应用于答案字符图像的模板匹配识别过程,关键代码如下。

对定位到的答案字符图像,进行有效区域的定位,并统一尺寸为[50 30],将其应用于字符模板库进行相关系数计算,并提取最大相关系数对应的字符作为匹配识别结果。
1.5.3 识别结果可视化
网格内的答案字符图像识别后,可以将字符结果输出到对应的网格内进行显示,结合标准答案,比较分析识别结果,关键代码如下。

应用于当前处理的答题卡,对答案字符图像进行识别并对比显示,具体效果如图1-8所示。如图1-8所示,可以发现采用基于相关计算的模板匹配方法能正确识别网格内的答案字符。为了进行验证,将此处理流程应用于其他的答题卡图像,得到的结果如图1-9和图1-10所示,选择其他的答题卡图像依然能得到正确的检测及识别结果,方法具有一定的通用性。

图1-8 答题卡识别结果1

图1-9 答题卡识别结果2

图1-10 答题卡识别结果3