基于matlab的指纹图像处理、脊线增强、脊线分割、脊线细化、细节点检测和细节点验证
创始人
2024-05-13 00:46:37
0

需求分析


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

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

图 1 指纹特征提取步骤

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

二、算法设计


2.1 脊线分割


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

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

2.2 脊线细化


使用函数𝑏𝑤𝑚𝑜𝑟𝑝ℎ(𝐼, ′ 𝑡ℎ𝑖𝑛 ′ , 𝑁)对指纹进行细化,其中𝑁为细化操作的次数,可以设为 𝑖𝑛𝑓,即细化至图像不变化为止。

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

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

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

2.3 细节点检测


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

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

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

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

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

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

2.4 伪细节点去除


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

图 5 找到的指纹边缘

三、实验结果


图片 1 输出

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

值化 (b)形态学处理

细化 (d)细化处理

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

图片 2 输出

值化 (b)形态学处理

细化 (d)细化后处理

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

完整代码+报告:

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

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...