其中f(x,y)为介于两个字符之间的像素,该过程由函数char_segment实现
七、特征提取
提取数字字符的特征向量,也即提取梯度分布特征+灰度分布特征+水平投影直方图+垂直投影直方图,最后每个字符得到一个1*72的特征向量,由calcGradientFeat函数实现
八、神经网络训练
所使用的训练图片均由从多张身份证图片上分割得到,之后经过特征提取,获得训练矩阵和标签矩阵保存于ann_xml.xml文件中,由函数getAnnXML实现,然后由ann_train从中读取训练矩阵和标签矩阵用于神经网络训练,opencv中实现的是多层感知器神经网络。
九、分类器分类
使用训练得的神经网络对所提取的字符特征向量进行分类,由函数classify实现。
十、校验位计算
由于最后一位有时识别率不高,可能是最后一位的分割结果不是很好,故最后1位校验位直接由前17位数字计算得,由getParityBit函数实现。
十一、结果显示
该身份证号码识别系统所处理的图像必须要求身份证区域尽可能占整幅图像更多的区域,且在纯色背景下拍摄,另外需保证拍摄得的身份证图像尽可能光照均匀,不能有高光存在。如下所示
系统识别结果示意如下: