指纹在生活中的各个领域都有丰富的应用,如在刑侦时利用指纹追踪嫌犯,但很多情况下获取的指纹不够清晰,或纹线之间有断裂、粘连,因此指纹增强是很有必要的。通过滤波、形态学变换、时域频域转换等操作,使指纹图像在图片背景中变得清晰可见,是指纹增强所追求的。
在本次作业中,需要对如图 1 所示三张指纹图像进行增强,为表述简便,下文分别称为图片 1、图片 2 和图片 3。
图 1 需增强指纹
指纹增强主要有以下几个步骤——前景分割、局部脊线方向估计、局部脊线频率估计、脊线增强,其中前三个步骤之间并无先后关系,在实际操作中相辅相成,现对各步骤分别进行介绍。
前景分割即从原图像中找出指纹区域,主要通过检测指纹区域的频域特征和均、方差特征来实现。首先对原图进行切分,将原图分成多个相邻的 88 小块,为保证切割完整性,将图像边界向外扩充,将长和宽变为 8 的倍数,为了傅里叶变换的效果更好,对每个 88 小块向外扩充至 32*32。
通常指纹纹线可以近似看作二位正弦函数,因此可以通过二位正弦函数的特征来判断指纹区域。使用2(2())函数进行 2D DFT,取绝对值。首先使用2()找到*32 区域中灰度值最大的像素点,一般应是中心直流点,去掉最亮点之后,再次使用 2()找到次亮点,若次两点的个数为 2 且关于中心点对称,则认为可能是指纹区域。计算两个两点到中心点的平均距离,作为局部脊线频率的测度,同时可以通过距离筛选掉一些不属于指纹区域的背景部分。
上述步骤完成后,对于图片 1 和图片 2 已经基本可以分出指纹区域,而对于背景较为杂乱的图片 3,上述操作只能找到一些离散的块,对这些块做扩展,认定其周围 48*48 的区域均为指纹区域,此时得到离散块中,有一些白色部分较多的或方差较大的,可以通过均值筛掉,这样可以获得一个如图 2 所示的 mask,mask 为 1 的部分是认定的指纹区域。之后再对图片 3 的原图进行处理,进行一系列腐蚀、膨胀的形态学运算,通过灰度值、方差等条件大致去除背景中其他部分,与 mask 结合后效果如图 3.
图 2 图片 3 指纹区域 mask
图 3 图片 3 前景分割效果
局部脊线方向估计
已知对于二维正弦函数,其 2D DFT 幅度谱两个分量的连线与正弦波方向垂直。在 2.1 的操作中,已获得指纹区域 32*32 小块的 2D DFT 幅度谱,找到两个次亮点后,通过两个亮点的连线与竖直方向的夹角计算指纹脊线方向,此过程中对于不同方向的部分要分类讨论,将最终获得的脊线方向角存入矩阵。以图片 1 为例,使用函数展示方向图如图 4
,可以看到该方向图能反映出指纹的大致走势,但仍有些较为杂乱的部分。
接下来对方向图进行平滑,将方向矩阵每个元素乘以 2,计算其正弦和余弦,分别对正弦图和余弦图进行平滑,再对正余弦矩阵调用 atan2 函数,除以 2,得到平滑后的方向矩阵,再使用函数展示方向图如图 4(b),可以看到此时方向图已较为平滑。
对于图片 3,由于在 2.1 的操作中,去除了穿指纹图像而过的两条黑线,生成的方向图也有明显的断裂,对于此现象做方向的手动调整和两次平滑,最终处理效果如图 5(b),可以看到中间断裂处已被基本连接。
初始 (b)平滑后图 4 图片 1 方向图
初始 (b)处理后图 5 图片 3 方向图
已知对于二维正弦函数,其 2D DFT 幅度谱两个分量连线距离反映了该点频率大小。在 2.1 的操作中,用两个次亮点到中心点的平均距离作为指纹区域的判断条件,判断为是指纹区域后,将存入频率矩阵,获得频率矩阵后,对其进行空域平滑滤波,以图片 1 为例,将距离大小转换为灰度值大小显示如图 6.
图 6 图片 1 频率图
最后一步即脊线增强,本次作业中分别使用了notch滤波和Gabor滤波。其中,notch滤波是在频域上进行的,通过之前获得的指纹区域方向图和频率图,计算滤波器两个峰的位置,即仅允许这两个位置处的频率分量通过,滤除其他频率的分量,从而获得增强的指纹图像;而Gabor滤波是在空域上实现的,使用函数(, , ),其中是滤波器两个峰之间的距离,是方向角,其转移函数如图7所示。
图7 Gabor滤波器转移函数
对三幅图片分别使用Notch和Gabor滤波,再进行二值化处理,对比如图8所示,可以看到Notch滤波对指纹信息如指纹方向的保留较好,但指纹纹线之间会有断裂;而Gabor滤波增强后的指纹纹线较为完整、平滑,但纹线方向有一定扭曲和毛刺,另外,在运行中也发现
在指纹增强时,不妨将两种滤波结果结合起来看,能较好的得到指纹信息。
Notch (b) Gabor 图 8 图片 1 增强结果
实验结果每个步骤的实验结果以图片形式展示,顺序为图片 1、图片 2、图片 3.
前景分割
方向图
初始
平滑后
频率图
增强图
Notch
Gabor