大家好,又见面了,我是你们的朋友全栈君。
手背静脉识别的图像处理算法
题目内容及要求
手背静脉识别技术作为一种全新的特征识别技术,相比于传统的生物识别技术(如指纹识别)具有许多明显的优势,然而对于该技术的研究尚处于刚刚起步阶段,使用计算机来直接进行静脉识别与身份匹配仍然较为困难,为了方便后续特征识别,提高静脉识别的准确度和优越性,有必要对获取的静脉图像进行一系列处理,得到静脉的骨架结构。 题目主要要求为: 1.对采集图像进行背景去除,取得手背部分; 2.计算采集手背的质心并提取手背有效区域; 3.提取手背静脉走势; 4.对提取的静脉进行细化处理,去除毛刺; 5.改进算法,提高程序的通用性和适普性; 6.在图像分割上尝试不同的方法,并比较结果的好坏。
二、题目分析
静脉识别是一种近年来迅速发展的红外生物识别技术,它以非接触、高准确度、低重复率等优点获得了广泛的关注,本文在现有的静脉识别研究基础上,提出了有效的识别方法,前期以题目所给图片为主要试验图,后期进一步改进优化,尝试提取更多的人体近红外手背静脉图,使程序具有较好的静脉识别率。 在图像采集过程中,由于受到环境和采集设备等的影响,原始图像中常常含有多种噪声,这使得图像分割步骤中静脉纹路有较大的突起并且边缘存在许多毛刺,甚至会使图像质心的计算出现较大偏差进而影响图像有效区域的提取。因此对图像的预处理过程对防止静脉纹路的骨架出现较大失真具有重要作用。 我们首先需要对原始图像进行预处理,对灰度化的图像去除背景,计算质心并提取有效区域,然后对有效区域进行直方图均衡化处理进行图像增强,采用均值滤波方法对图像进行平滑处理;随后对比采用不同的图像分割方法,将效果最好的处理结果进行图像细化,获得光滑的并且失真较小的静脉骨架。 总体流程图如下:
解决问题的方法及原理
3.1 图像预处理 3.1.1 图像尺寸归一化 图像尺寸归一化就是处理多幅图像使其大小尺寸一致。该步骤对于处理单幅图像而言并不必要,但是对于多幅图像的特征比对以及效果图与示例图的效果比较仍具有作用。 3.1.2 图像灰度归一化 由于每个人的手背区域尺寸、手背脂肪厚度、图像采集时间和红外光强等因素均有不同,为了提高后续识别的准确性,需要将采集图像的灰度统一到同一灰度范围内,即对图像灰度值进行归一化处理。
3.1.3 二值化处理 将彩图或灰度图转化为二值图,为后续质心确定做准备。 3.1.4 形态学处理 在二值化处理过程中我们发现处理效果存在较多的孔洞和毛边,边缘并不流畅,因此我们对处理后的二值图像进行开运算和闭运算,消除毛边,平滑边缘。 我们知道开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便;而闭运算能够填平小孔,弥合小裂缝,而总的位置和形状不变。因此我们具体处理为先开运算去除背景噪声,再继续闭运算填充目标内的孔洞。 3.2 图像有效区域提取 3.2.1 标记质心 采集到的静脉图像库中的图像为256级灰度,其分辨率大小为462×489,显然,图像中除了含有手背图像外,还含有很多背景,为了减少背景对静脉纹络的影响,我们需要提取含有手背静脉纹络的有效区域。就是指从采集的手背图像中定位出对特征提取有意义的区域,定位的精确很大程度上将直接影响识别结果。 我们采用基于质心的有效区域提取算法,因此确定质心的位置尤为重要。 具体做法是对形态学处理后的平滑二值图进行逐点扫描,计算得出质心:
其中A是二值图中的手背区域,M是行数,N是列数。
3.2.2 计算手背部分面积并标记有效区域 我们知道二值图仅有两种灰度值,便于进行面积的计算,因此我们对含有手背的二值图进行求和,得到的数值即为手背的白色区域所含的像素数,即为书背的面积。 在选取有效区域部分中,我们分别设计了自动有效区域选取和人工有效区域选取的两种方案。其中自动选取主要依据质心的位置,根据手背面积的开方值作为所选区域的边长a,以质心为中心确定矩形有效区域;人工选取主要是基于用户的不同选择需求和爱好,方便使用者具体准确地确定所选区域,通过确定的行、列数提取有效区域。 3.3 特征区域图像增强 在手背静脉图像采集过程中,由于静脉采集装置受采集光强以及个人手背薄厚影响,它所采集的图像在灰度上可能就存在差异。通常情况下,所采集到的静脉图像中,静脉血管纹理和手背的灰度差别很小。大部分分割法会导致部分可用信息丢失,而图像增强处理是获取有效信息的保证,因此,为便于静脉纹理的分割,对采集的图像进行一系列处理来增强静脉纹理是非常必要的。 3.3.1巴特沃斯高通滤波器 由于我们所处理的图像是近红外图像,对比度较低,灰度较为集中,当手背拍摄角度不合适或近红外光较弱时,将对后期静脉提起产生很大的不利影响。因此有必要对图像中高频部分进行增强。我们知道频谱图中频率较低的部分对应空域变化缓慢的平滑区域,而频率较高的部分对应空域变化显著的细节区域,因此我们可以构造高通滤波器,实现锐化图像的作用,更好的提取静脉边缘。 我们通过巴特沃斯高通滤波器实现滤波,再加上一个合适的偏移量,提高图像的高频成分的同时保证了低频部分的灰色色调【6】,更好地达到图像增强的效果。该方法的传递函数为
其中,a 0,且b>a。偏移量a 的典型值在0. 25到0. 5之间, 乘数b 的典型值在1. 5 到2. 0 之间。这里我们将a设置为0.5;b设置为2。 二阶巴特沃思型高通滤波器的传递函数:
上式中, 为 点距频率矩形中心的距离, 为截止频率。 假设 均为二维离散空间上的两个离散函数, 为图像位于 点处的灰度值, 为增强后图像位于 点处的灰度值, , 分别是上面两个图像的傅里叶变换。可得高频增强的频域模型为:
再通过傅里叶逆变换我们可以得到增强后的图像灰度信息 3.3.2 空域滤波 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,其基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。 具体方法【14】是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为
其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为33,55区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。 而均值滤波采用的主要方法为邻域平均法。基本原理【15】是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),可以选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即
其中m为该模板中包含当前像素在内的像素总个数。
3.3.3 直方图均衡 直方图可以反映图像的灰度分布情况,而直方图均衡(Histogram Equalization, HE)是一种最常用的直方图修正技术,它以数理统计和概率理论为基础,基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围,从而可达到增强图像整体对比度的效果。 根据直方图修正原理【1】,对于数字图像,一幅图像的灰度级 出现的概率近似为
其中, 是图像中灰度级为 的像素的个数, 是图像中像素的总个数。变换函数 的离散形式为
明确变换函数后,即可对原始图像进行对应的均衡化变换。
直方图均衡化,其实质上是对原始图像的像素灰度做某种映射变换,把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部的灰度范围内的平均分布,对于整体偏量或偏暗的图像具有较好的改善效果。 直方图均衡又分为全局直方图均衡和局部直方图均衡。全局直方图均衡算法简单高效,适合于整体增强。但是对于某些图像的不同区域,灰度相差较大,此时该方法很难识别其中的细节,造成部分信息丢失。局部直方图均衡能够在一定程度上克服上述缺点,主要方法是采用滑动模板,对模板范围窗口中的直方图进行均衡化,进而实现对中心像素灰度的增强,能够使图像的每个小区域的细节得到增强。但是同时也会在增强局部特征的同时引入附加特征,造成图像的噪声增加,对静脉提取产生不利影响。
3.4 图像分割 3.4.1 OSTU算法 对于图像 I(x,y),前景(即目标)和背景的分割阈值记作 T,属于前景的像素点数占整幅图像的比例记为 ω0,平均灰度为 μ0;背景像素点数占整幅图像的比例为 ω1,平均灰度为 μ1;整幅图像的平均灰度记为μ,类间方差记为g。 假设图像大小为M×N,图像中像素的灰度值小于阈值 T 的像素个数为 N0,像素灰度大于阈值T的像素个数为 N1,那么:
采用遍历的方法使得类间方差g最大的阈值T,即为所求。Ostu方法可以形象地理解为:求取直方图有两个峰值的图像中那两个峰值之间的低谷值 T 。 3.4.2双阈值分割法 直方图双峰法(2-Mode method),如下图所示,即如果图像灰度直方图呈明显的双峰状,则选取双峰间的最低谷出作为图像分割的阈值所在。即下图中,以Zt为阈值进行二值化分割,可以将目标和背景分割开。 图示如下:
3.4.3 NiBlack算法 NiBlack算法是一种局部动态阈值法,此算法基本思想是对每个像素计算它的阈值,然后进行阈值分割,其计算公式如下:
据此我们知道该算法的执行基础元素是互不相邻的像素点,作用的区域是位于相应像素点内部的邻域,如果得到了该部分的方差与均值,那么这一点的阈值也随之得出。 设图像像素点 的灰度值为 ,则
分割之后得到的图像计算公式为:【02】
3.4.4一阶微分算子锐化图像 一阶微分算子可以借用空域微分算子,通过卷积实现图像锐化,但在实际图像中求导往往是利用查分近似微分来进行的。梯度对应一阶导数,故梯度算子是一阶导数算子,对于一个连续函数f(x,y),它在位置(x,y)处的梯度可以表示成一个矢量:
对于一幅数字图像而言,导数可以近似用差分来近似,因此梯度可以标识成为:
在实际中常常使用小区域模板卷积来近似计算。根据模板的不同,可以对应不同的元素系数值,因此构成了许多不同的检测算子。 3.5 图像细化 静脉图像经过二值化分割后,仍然具有一定的宽度。为了得到单像素描绘的静脉血管,保持原有的纹路特征,使得静脉骨架真实有效,便于研究,我们需要对分割图像进行细化处理。细化时应保证骨架的连接性,特征点不变,还应保持骨架的中心基本不变。细化的好坏直接影响静脉识别的识别率。 最常见的细化算法为条件细化算法,其具体内容如下: 设已知目标点标记为1,背景点标记为0.定义边界点:本身标记为1而其8-联通区域中至少有一个点标记为0的点。算法对边界点进行如下操作: 考虑以边界点为中心的8-邻域【1】,即中心点为P1,其邻域的八个点顺时针绕中心点分别记为P2,P3……P9,其中P2在P1上方。如果P1=1而且下面四个条件如果同时满足,则删除P1。 P9 P2 P3 P8 P1 P4 P7 P6 P5 (1). 2≤N(P1)≤6 (2). S(P1)=1 (3). P2P4P6=0 (4). P4P6P8=0 其中N(P1)是P1的非零邻点个数,S(P1)是以P2,P3……P9为序时这些点的值从0-1变化的次数。当对所有边界点都检查完毕后,将所有标记了的点去除,直到所有的像素点都不可删除。 在图像细化后,可能存在静脉毛边、突起或孤立的小区域,为了准确检验,有必要进行细化后的修复,通过这一过程使静脉变得平滑。
具体实现过程这里不再赘述
附上操作结果(需要源码请与我联系)
图16 Ostu算法处理结果
图17 双阈值分割处理结果
图18 迭代式阈值分割法处理结果.
图19 最佳阈值分割法处理结果
图20 不同参数NiBlack算法处理结果
对于近红外手背的静脉提取,本文使用了多种处理方法,并进行了对比和择优选择: A. 去噪阶段使用不同的模板进行滤波处理,分别选择效果最好的模板; B. 在直方图处理阶段比对了全局直方图处理结果以及不同模板大小的局部直方图处理结果,最终选择采用大小为150的局部直方图处理结果; C. 在确定有效区域阶段分别设计了自动区域提取和自定义区域选择两种方案,使图像处理程序更具适普性; D. 图像细化和修复阶段根据实际多次进行不同模板大小的膨胀和滤波处理,以求连接静脉并且去除噪点,使结果达到最好效果; E. 在形态学操作效果较差的情况下,我们使用逻辑运算自定义函数‘fillholes’填补多余孔洞,具有一定的创新型; F. 同组成员使用不同图像分割算法进行静脉提取,比对结果后最终选择NiBlack算法。
但是本文程序仍然存在如下不足及局限性: A. 在图像细化和修复阶段,由于进行多次膨胀处理以及中值滤波,使得静脉相比于原图具有一定的失真; B. 本文针对自定义函数fillboles的阈值确定以及图像细化修复过程具有较大的图像依赖性,在其他静脉图像中也许并不能得到较好的处理效果; C. 题目所给的图像较为特殊,二值化后仅存在一个连通区域,因此为质心确定提供了方便,但其他手背静脉图像也许会存在多个连通区域,这也给其质心确定带来困难。 纵观全文,我们主要进行了图像形态学处理、手背质心确定、有效区域提取、噪声处理、直方图处理、图像分割、孔洞填充以及图像的细化和修复。其中对于图像分割和图像增强方面进行了较为细致的研究比对,采用局部直方图均衡、巴特沃斯高通滤波和NiBlack算法并且取得了较好的效果。在参数的选择方面,我们多次进行测试,并采用了较为合理的参数值。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145752.html原文链接:https://javaforall.cn