根据实验数据测定和分析,当Aver>36 时,可认为该区域内有图像,否则认为是背景。利用均方差区分出了前后景,还可以据此判断图像的对比度。根据对比度的差异分别来增强图像,可以使得不同曝光亮度的图像得到一致增强。对原始图像进行了算法处理,提取处理前后效果进行比对,具体效果如图4 所示。
图4 图像增强前后的变化
软件算法中对于指纹处理中的求取图像方向场问题,采用了基于原Sobel 算子改进后的Sobel 算子。
原Sobel 算子如下:
改进后的Sobel 算子为:
改进的Sobel 算子能增加方向场的准确性,实测通过率从采用标准Sobel 算子的93.3% 提高到95.8%.图5 所示为其变化情况。
图5 Sobel算子改进前后的效果变化
如图5 可见,改进的Sobel 算子在原Sobel 算子的基础上,能显着地分割出正确图像的面积,几乎能在整个画面区域提取出正确的方向来。系统对图像进行了Gabor 滤波和图像数据二值化。指纹图像属于纹理图像,纹理图像采用Gabor 滤波器,利用每一点的点方向沿方向指向增强,沿方向的法线方向减弱。Gabor 滤波器能很好地拼接断纹,滤除环境噪声,最后将Gabor 滤波后的图像做双窗口均值门限二值化:
门限1 :均值化算子矩阵: 7×7 的单位矩阵。
门限2 :均值化算子矩阵: 3×3 的单位矩阵。
具体运算表达式如下:
当每一点的值g(x,y)>p(x,y) 时,则赋值g(x,y)=1,否则赋值为0,以此得到二值化最终的结果,提取图像进行实测效果的比对如图6 所示。
图6 二值化处理前后的实测效果比对
图7 是最后根据图像纹理的粗细二值化图像,并根据端点和交叉点提取特征点。
图7 根据图像纹理的粗细提取的二值化图像端点和交叉点特征
经过上面的步骤,即可从原始图像里面提取出有效的特征信息。特征信息描述了特征点的位置、方向等信息,最终形成一个大小不超过512 字节的特征模板。指纹的比对就是在特征模板的基础上,构建两个点形成的杆对集,而杆对所包含的杆长度、端点方向与杆的夹角等信息已经是相对量,与位置无关。理想状况下,同一枚指纹,采集的两幅图像能找到的杆对的每一个量(长度、夹角)在数学上是完全相等的。以此为基本数学模型,构建整个比对算法。
4 结语
本文的基于ARM的光学指纹识别系统的设计方案,经过实物测试, 模块录入用户指纹图像时间为500 ~ 800 ms,拒真率小于等于1%,平均4.2 ms 即可比对一枚指纹,支持1∶1 指纹验证和1∶N 指纹搜索。在硬件设计中引出了通信端子,系统支持3.3V TTL 串口通信,可以通过串口对模块进行用户注册、删除特定用户、删除所有用户、复位模块、获取用户总数、获取用户权限、1∶1 比对、1∶N 比对、设置串口波特率、读取图像并提取特征值、获取图像等30 个常规或扩展功能命令,能满足大多数的指纹应用场合,可以很好地运用于嵌入式领域,从而证实了本方案的可行性。