基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证

需求分析


对于指纹的特征提取包含几个步骤,脊线增强、脊线分割、脊线细化、细节点检测和细节点验证,本次大作业需要针对已经增强的指纹图片进行后续几个步骤,通过多种形态学算法进行分割、细化、细化后处理,找到其中的端点和分叉点,而指纹周边的伪细节点需要被去除。

本次作业有两张图片需要进行处理,如图 2 所示,分别称为图片 1 和图片 2。

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第1张图片

图 1 指纹特征提取步骤

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第2张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第3张图片

图片 1 (b)图片 2 图 2 两张待处理指纹

二、算法设计


2.1 脊线分割


脊线分割的目的是使增强后的指纹图像脊线更加清晰、饱满、平滑。首先使用函数 对图像进行二值化处理。选择参数 0.5,图片 1 能得到较好的二值化效果,而图 片 2 会出现指纹背景与脊线同色的情况,影响之后的细化操作,因此需要先通过灰度值范围 将底色去除,再进行二值化,会呈现较好的效果。

之后的形态学处理使用(, )函数做开运算,其中运算结构为边长为 2 个像素 的正方形,开运算能够对指纹轮廓进行一定程度的平滑,连接一些在二值化之后出现的脊线 断裂1;对于图像中的孤岛,使用函数,去除一定像素大小以内的连通域,可以 对原始图片和反色图片各做一次,分别去除脊线空洞和白背景上的孤岛。

2.2 脊线细化


使用函数ℎ(, ′ ℎ ′ , )对指纹进行细化,其中为细化操作的次数,可以设为 ,即细化至图像不变化为止。

脊线细化后可能出现脊线断裂、桥接、短线或毛刺等问题,如图 3 所示。由于在 2.1 中 去除了背景中孤岛,细化后未产生短线。对于不希望的桥接,可以通过ℎ(,1,2) 函数,对指纹图片进行“击中与否”变换,其中 B1 是感兴趣的结构体,B2 是其互补结构, 在本例中,即桥接部分主要形状, 返回的是图中相同结构体的中心点,之后再手 动改变周围像素值,实现去除桥接的目的。脊线的断裂可以通过做腐蚀2实现,腐蚀 后的图像脊线会加粗,再细化即可。

对于脊线上的毛刺,需要进行剪枝,借鉴老师的示例程序编写剪枝算法,可以 设定剪枝长度(剪枝次数),首先定义一些毛刺结构,使用ℎ寻找具有相同结构的 毛刺,找到毛刺位置后对获得的ℎ 图片做膨胀,从而在原图上去除这些毛刺,也能 使脊线更加平滑。

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第4张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第5张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第6张图片

桥接 (b)断裂 (c)毛刺图 3 细化后图片待处理问题

2.3 细节点检测


指纹细节包括端点和分叉点,对于两种类型细节点的寻找可以通过下述算法统一实现。 对于像素点,其类型由交叉数()决定。

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第7张图片

其中()表示处的像素值,如图 4 所示,遍历图像,对每个脊线像素的 8 邻域像素做计 算,端点和交叉点的对于特征图如图 4(b)(d),端点的cn() = 1,交叉点cn() = 3,其他的 cn()值忽视。

程序中找到的端点用绿色框标记,交叉点用红色方框标记。

开运算针对图片中的白色底色进行操作,因此可以连接灰度值为 0 的黑色脊线部分

与脚注 1 同理,对白色背景做腐蚀,可以连接断裂脊线

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第8张图片

邻域 (b)端点 (c)其他 (d)交叉点图 4 像素 8 邻域特征与细节点类型

2.4 伪细节点去除


本次作业中,定义指纹边缘端点为找到的伪细节点,因此去除边缘点需要确定边缘。使用计算全图 3*3 的局部方差3,非指纹区域值为 0,通过此法可以大致画出边缘形状,如图 5,在此范围内的细节端点统一被去除。

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第9张图片

图 5 找到的指纹边缘

三、实验结果


图片 1 输出

该算法效率较低,可以使用小作业中实现的积分图方法计算局部方差,速度较快

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第10张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第11张图片

值化 (b)形态学处理

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第12张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第13张图片

细化 (d)细化处理

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第14张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第15张图片

细节点检测 (f)去除伪细节点

图片 2 输出

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第16张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第17张图片

值化 (b)形态学处理

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第18张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第19张图片

细化 (d)细化后处理

基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第20张图片
基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证_第21张图片

细节点检测 (f)去除伪细节点

完整代码+报告:

https://download.csdn.net/download/qq_38735017/87386312

你可能感兴趣的:(matlab,matlab,图像处理,脊线增强)