掌脉图像是由近红外CCD摄像机拍摄而采集到的,在图像采集的过程中,由于受到采集时间、光强、手掌倾斜度及手掌薄厚等因素的影响,采集到的掌脉图像在灰度分布图上存在一定程度的差异,这些都为掌脉的特征提取和匹配带来了困难。因此,为了提高后续特征提取的速度、匹配识别算法的有效性和鲁棒性,去掉不必要的噪声干扰,降低后续工作的复杂度,有必要在特征提取之前对手掌静脉图像进行定位和归一化等一系列的预处理。掌脉图像预处理是掌脉识别工作的必要准备和前提,同时也是掌脉识别中的难点问题。
6.3.2.1 掌脉图像ROI提取
考虑到掌脉与掌纹采集方式的相似性,掌脉图像ROI的提取可以借鉴掌纹ROI提取的方法。根据所采集到的掌脉图像特点,选用了最大内切圆的方法提取掌脉ROI,实验中ROI大小取为224×200,效果如图6.7所示。
图6.7 掌脉图像ROI提取
6.3.2.2 平滑和增强处理
采集到的掌脉图像中含有不同程度的噪声和毛刺,运用高斯低通滤波器对图像进行平滑滤波,滤去一些噪声和毛刺。高斯低通滤波器的标准方差依然取为0.625。
平滑后掌脉图像中的静脉血管比较模糊,不利于后续处理,因此必须对平滑后掌脉图像进行图像增强。可采用自适应局部对比度增强算法对掌脉图像进行增强,具体实现方法如下:取一个M×M的邻域窗口(M取49),中心像素点的坐标为(i,j),则按下述公式进行灰度增强:
6.3.2.3 二值化
二值化是掌脉识别系统中的一个重要环节,二值化的准确性直接影响后续处理的有效性,具有重要的意义。
选用Niblack算法及其改进算法对增强后的掌脉图像进行二值化。Niblack算法是一种简单有效的局部动态阈值算法,该算法的基本思想是对图像中的每一点,在它的r×r邻域内,计算整个邻域像素点的均值和方差,然后通过公式计算出该点的局部阈值从而实现二值化。
假设图像为f(x,y),则均值m(x,y)和方差s(x,y)的计算公式为:
邻域窗口的大小r是一个非常敏感的值,r取值太大则图像的细节无法保留,太小则图像的噪声无法抑制。(www.xing528.com)
基于Niblack算法的改进算法,在r×r邻域中,中心像素的阈值由下面的式子确定:
在实际的实验中,根据采集到的掌脉图像特点,选用31×31的邻域窗口,参数k=5,R=64,得到的二值化后效果如图6.8(c)所示。
图6.8 掌脉图像预处理步骤
6.3.2.4 滤波去噪
二值化后的图像不够平滑,毛刺较多,且存在较大范围的噪声,采用中值平滑滤波去除血管旁边的毛刺和噪声。另外采用连通区域标记法标记相连通的像素点,把相连通的像素点标记为相同ID的图像块,再根据先验知识使用阈值滤波处理来消除小图像区域(一般为离散噪声点),利用目标图像块的面积、外接矩形高度、宽度和位置信息等先验信息来滤去这些噪声。一般而言,我们感兴趣的手掌静脉的这些先验信息是在一定范围内的,利用经验值设定一些阈值便可以滤去大部分的噪声和毛刺干扰。图6.8(d)为中值滤波之后的效果图,图6.8(e)为连通区域标记法去噪之后的效果图。
6.3.2.5 细化
细化处理是在不影响纹线连通性的基础上删除纹线上的冗余信息,直到纹线为单像素宽度为止,理想状态时,细化后的纹线骨架应该是保留的原始纹线的中间位置,应该保持原有图像的拓扑结构、形状和连通性。
对于细化问题,国内外已经提出了多种细化算法,各有特点和不足,各种细化算法的主要问题都在断点、毛刺、缩短和中心偏移上。根据掌脉图像中静脉纹线特性,本节采用基于8邻域的细化算法,主要根据1个点的8个相邻点来判断其是否能去掉。细化之前做出一张表,根据某点的8个相邻点的情况查表,若表中元素为1,则表示该点可以删除,
否则保留。细化的表如下:
Table_erase[256]=
{0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,0,1,0,0,0}
每次先在水平方向对整幅图像进行逐行扫描,通过查表判断每个点是否应该被删除,再在垂直方向逐列扫描,对于每个点计算它在表中对应的索引,若为0,则保留,否则删除。若这次扫描没有一个点被删除,循环结束,剩下点为骨架点,如果有点被删除,则进行新一轮扫描,反复直到没有点被删除。细化结果如图6.8(f)所示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。