经由图像的预处理,原始的指纹图像已经被转化成细化图。在细化图中,脊线为一个像素宽度,像素点的强度值为0和1,即二值化的图像。在细化图中,指纹特征点的提取就变得简单。本文涉及到的特征点为细节点特征,包括端点和分叉点。
指纹的特征端点是指纹纹线的两头末点,或起点或终点。如图a。在像素模型的九点图中,如果A是端点,那么去掉A后,九点图中只剩下一个黑色方块,该黑点上下左右相邻的白点只有两个。指纹的分叉点是两条纹线相交为一条纹线的交汇点。如图b。在像素模型的九点图中,如果A是分叉点,那么去掉A后,纹线剩下3个黑点方块,每个黑点方块上下左右相邻的白色方块有两个。依据此特征,本文总结出特征点提取的方法。使用八邻域的方法对指纹图像的每个像素点进行遍历。对于某一像素点A,如果A周围八个点的所有相邻两个点差的绝对值之和就为6,则A为分叉点。图c为典型的伪分叉点,通过上述方法已能排除。如果A点周围的八个点相邻两个点差的绝对值之和为2,那么此点为端点。
定义二值图像中像素点a\left(x,y\right)的交叉数cn(a)为a的八邻域内相邻像素对的差值之和,则cn(a)的计算方法如下:
c
n
(
a
)
=
∑
i
=
1
…
8
∣
I
(
a
i
m
o
d
8
)
−
I
(
a
i
−
1
)
∣
cn\left(a\right)=\sum_{i=1\ldots8}\left|I\left(a_{i\ mod\ 8}\right)-I\left(a_{i-1}\right)\right|
cn(a)=i=1…8∑∣I(ai mod 8)−I(ai−1)∣
容易得到结果如下:
- 当 c n ( a ) = 2 cn\left(a\right)=2 cn(a)=2的时候,对应像素点为脊线端点;
- 当
c
n
(
a
)
=
6
cn\left(a\right)=6
cn(a)=6的时候,对应像素点为脊线分叉点。
缺损指纹在进行Gabor滤波处理和细化后,得到指纹细化图,而缺损区域使得指纹细节点特征提取算法提取出很多的伪端点和伪分叉点。即是匹配算法效果优秀,如果在细节点提取时提取到很多伪特征点,最终也无法进行准确的1:1匹配。将指纹前景内的缺损区域也分离出去能降低甚至消除缺损区域内伪特征点的影响。
reference:
[1] Maio D, Maltoni D. Direct gray-scale minutiae detection in fingerprints[J]. IEEE transactions on pattern analysis and machine intelligence, 1997, 19(1): 27-40.
tips:见本人上传的资源
。