最近学习到的静脉图像识别方法,大致做一下整理。
背景:
类似指纹识别,实现静脉识别。
目的:通过红外线图,得到血管细线图,以下程序是未完成代码截图,先做整理。
识别方法A:
其中,线性拉伸(imadjust(HD,[0.3
0.6],[]);)目的为提高对比度,经过实验,取0.3-0.6的值进行拉伸,效果最佳。直方图均衡也是增强对比度的一种方法,经过实验,效果不如线性拉伸,因此忽视。
为了更好的边缘提取,使用高斯滤波进行去噪。
Niblack算法基于图像的局部均值和标准差计算阈值,像素(x,y)处阈值T(x,y)=m(x,y)+k*s(x,y)
其中m(x,y)与s(x,y)分别是以(x,y)为中心邻域(邻域常用15*15)的均值和标准差,k为修正系数可取-0.1;经过实验,发现r取50,k取-0.2效果较好。
该算法是静脉图像识别中常用的二值化算法,也曾尝试matlab中提供的其他边缘提取的算法,效果不如该算法,但在matlab中该算法运行速度较慢,需改进代码或直接使用C++实现该算法。
图像二值化算法,该网页提供了另外几种方法,有时间尝试。http://blog.csdn.net/cxf7394373/article/details/6335281
中值滤波去噪。闭操作可使轮廓线更光滑,消弥狭窄的间断和长细的鸿沟,消除小的空洞,并填补轮廓线中的断裂,用来做图像修补和去除小面积噪声。
余下工作:细化图像,曾尝试细化,但效果不佳,可尝试再做一次闭操作之后细化。
细化后进行特征提取,之后匹配得出结论。
最终得到预处理图像:
识别方法2:
根据吴薇等2013.10在光学学报发表的文章《基于灰度曲面匹配的快速手掌静脉识别》,提出一种基于灰度曲面匹配的快速手掌静脉识别算法。
大致方法整理如下:
1、提取感兴趣区域(参考吴薇等2013年在光电子激光
发表的《手掌静脉识别中感兴趣区域的选择与定位研究》)。
2、将感兴趣区域分成若干个之区域(经过试验8*8子区域效果最佳),计算每个子区域像素灰度平均值作为该子区域的灰度值,以各子区域灰度值构建待匹配图像。
3、两个待匹配灰度曲面中的像素灰度做差,得到灰度曲面差,求该灰度曲面差的方差。
4、用此方差衡量两张灰度曲面图是否来自同一只手。
该方法在第一步结束后,得到的是一张没有背景的完整的血管图。
因此,若使用该方法,如何获得感兴趣图片成为重点。
另,根据论文描述,该算法的正确识别率达到97.94%,且时间仅为0.163ms,值得尝试。
其余有待补充。