当前位置:首页 > 指纹识别算法的matlab实现 - 图文
对称的删除;(4)保证细化完后的指纹图像是单个像素的;(5)对边缘上噪声不应该敏感;(6)算法简单且实用。 2.4.1 快速细化算法
快速细化算法的原理为先判断出指纹的边缘,并沿着脊线的边缘对称的逐步删除像素,直至删除的剩下单个像素。该算法速度快但不彻底。它的算法为
(1)遍历整个指纹的图像,找出指纹图像脊线的边界点(图2-14中的X的八邻域为P1到P8)。脊线上每一点的八邻域,脊线端点的八邻域中只有一个目标点,脊线连续点的八邻域有两个目标点,分叉点有三个目标点,且每点八邻域最多只有三个目标点,符合上述条件的才为单像素宽。
图 2-14 X点的八邻域
(2)当X点周围的点多于三个目标点时,将多余的点删除,依次删除到剩下三个时判断该点是否为分叉点,不是再删除,剩下两个点时,判断是否为连续点,不是时删除,当为一个点时不删除。
(3)循环寻找,直到没可删除的点为止。 2.4.2 改进的OPTA算法
常用的传统细化算法还有OPTA算法[10](基于模板的图象细化算法),原理为构造两个模板:一消除模板和一保留模板,将指纹图像二值化后与这
21
两个模板相比较,来决定是否删除该像素,本文研究的是改进后的OPTA算法,改进后的OPTA算法的优点是消除了原OPTA算法算法中两种模板不一致的问题。本算法采用统一的4*4模板,消除模板有八个,保留模板有六个,模板的结构如下图2-15,图2-16,图2-17所示。
图 2-15 OPTA算法的改进模板(4*4)
图 2-16 消除模板(八个)
22
图2-17 保留模板(六个)
改进后的OPTA算法的细化原理:从图像(类似于4*4的模板中)左上角开始进行,图中的各个像素(如图所示的元素,用P表示)抽取如图2-15所示的P1~P15总共十五个相邻像素,其中的八个相邻的像素(P1~P4,
P6~P9)与图2-15所示的消除模板(八个)相比较, 若都不匹配,则P保留,
否则将抽取出来的元素和图2-16的保留模板(六个)相比较,若与其中的一个匹配,则保留P,否则应该将P删除。重复利用以上的操作,将所有图像中的像素值进行比较直至不变为止。此算法是八连通的算法,基本都能够保证单像素的宽度。但该算法却不能使分叉点处彻底的细化,同时也会产生部分毛刺。
Matlab程序见附录A。细化结果图如图2-18:
23
图2-18 细化图
根据实验发现,该方法处理弓形指纹效果较好,对于环形或螺旋形指纹的中心区域时会出现较多的毛刺和断裂,如下图2-19,这是其的缺点之一,为了很好的使其有实际应用,有待改进。
图 2-19 细化图
本章通过对指纹原图像的分割,二值化,滤波和细化算法的分析比较,得出了一套比较实用和便捷的算法,并通过matlab仿真实现最终的结果,为后续的特征提取和匹配打下了基础。
24
共分享92篇相关文档