如图指纹图像通常由脊谷区域、图像背景及边界、墨迹斑、模糊的可恢复的脊谷区域、不可恢复的模糊区域组成。在语义分割领域,图像的分割是将ROI(region of interest)分割出来。在指纹图像的分割领域,ROI一般定义为指纹前景即脊谷区域,本文所述的指纹图像的分割将可恢复区域及完好区域作为ROI。

在线指纹识别算法的一个重要步骤是对指纹图像的分割。指纹图像分割将包括脊线和谷线在内的有效区域从待分割的指纹图像中分离出来,从而达到了指纹识别的标准,降低了计算复杂度,提高了指纹识别系统的处理速度。指纹图像的分割的目标为将指纹前景区域进行分割,以避免在噪声和背景区域提取特征。Mehtre[34]认为一个好的指纹分割算法应当具有以下特点:
1、它应该检测图像中的污迹和噪声区域。
2、它不应该是敏感的对比度输入图像,因为对比度可以很容易地改变。
3、分割的结果应该对输入图像的增强保持不变。
4、它应该为不同的图像质量的图像提供标准一致的结果。

1、基于灰度方差的指纹图像分割方法

基于方差的指纹图像分割方法是使用最为广泛的,其分割的依据是每个块中与方向场垂直方向上的灰度水平的方差。基于方差的分割方法的基本的假设是,有噪声的图像区域没有方向依赖性,而指纹前景区域在与方向正交的方向上表现出非常高的方差,而在脊线上表现出非常低的方差。用方差来决定对应指纹块的质量,高方差的指纹块的质量为好,低方差的指纹块的质量为差。基于灰度方差的指纹图像分割算法如下:

  1. 将指纹图像分为w×w(8×8)w\times w\ (8\times8)w×w (8×8)的小块;

  2. 计算每个指纹块的灰度强度的平均值,灰度强度的平均值的计算公式如公式:
    M=1w×w∑u=x−w2u=x+w2∑v=y−w2v=y+w2I(u,v)M=\frac{1}{w\times w}\sum_{u=x-\frac{w}{2}}^{u=x+\frac{w}{2}}\sum_{v=y-\frac{w}{2}}^{v=y+\frac{w}{2}}I\left(u,v\right)M=w×w1​u=x−2w​∑u=x+2w​​v=y−2w​∑v=y+2w​​I(u,v)

  3. 计算每个指纹块的灰度强度的方差,灰度强度的方差的计算公式如公式:
    VAR=1w×w∑u=x−w2u=x+w2∑v=y−w2v=y+w2(I(u,v)−M)2VAR=\frac{1}{w\times w}\sum_{u=x-\frac{w}{2}}^{u=x+\frac{w}{2}}\sum_{v=y-\frac{w}{2}}^{v=y+\frac{w}{2}}\left(I\left(u,v\right)-M\right)^2VAR=w×w1​u=x−2w​∑u=x+2w​​v=y−2w​∑v=y+2w​​(I(u,v)−M)2

  4. 使用固定阈值方法或者自适应阈值方法进行阈值的选取,通过每个指纹块的方差阈值的比较判断是否为指纹前景。

2、基于梯度和大津算法的指纹图像分割方法

采用的指纹分割方法采用了一种改进的梯度场计算方法。对获得的梯度场图像进行形态开闭操作,以减弱指纹梯度图中前景区域低梯度部分的影响。最后,修正大津算法,使阈值更好地分割了指纹梯度图像。该方法默认为图像边缘4个像素作为指纹背景。

1)改进的指纹图像的梯度场计算

采用的指纹分割方法是基于指纹图像的梯度场,但是对指纹图像梯度场的计算会有一些变化。、对于指纹图像,使用Sobel算子来计算图像的梯度。
图显示了以点(x,y)(x,\ y)(x, y)为中心的周围八个邻域点。

在之前已介绍了指纹梯度场的计算方法,写成一般形式为公式3-3,其中Gx(x,y)G_x\left(x,y\right)Gx​(x,y)为x方向的梯度,Gy(x,y)G_y\left(x,y\right)Gy​(x,y)为y方向的梯度。
{Gx(x,y)=a2+2a3+a4−(a0+2a7+a6)Gy(x,y)=a0+2a1+a2−(a6+2a5+a4)\left\{\begin{array}{l} G_{x}(x, y)=a_{2}+2 a_{3}+a_{4}-\left(a_{0}+2 a_{7}+a_{6}\right) \\ G_{y}(x, y)=a_{0}+2 a_{1}+a_{2}-\left(a_{6}+2 a_{5}+a_{4}\right) \end{array}\right.{Gx​(x,y)=a2​+2a3​+a4​−(a0​+2a7​+a6​)Gy​(x,y)=a0​+2a1​+a2​−(a6​+2a5​+a4​)​
在该方法中,像素点\left(x,y\right)的梯度是以点为中心的8×8的像素块中点的梯度的平均值作为像素点的梯度,如公式所示。
{Gx(x,y)=1r2∑u=−r2r2∑v=−r2r2Gx(u,v)Gy(x,y)=1r2∑u=−r2r2∑v=−r2r2Gy(u,v)\left\{\begin{array}{l} G_{x}(x, y)=\frac{1}{r^{2}} \sum_{u=-\frac{r}{2}}^{\frac{r}{2}} \sum_{v=-\frac{r}{2}}^{\frac{r}{2}} G_{x}(u, v) \\ G_{y}(x, y)=\frac{1}{r^{2}} \sum_{u=-\frac{r}{2}}^{\frac{r}{2}} \sum_{v=-\frac{r}{2}}^{\frac{r}{2}} G_{y}(u, v) \end{array}\right.{Gx​(x,y)=r21​∑u=−2r​2r​​∑v=−2r​2r​​Gx​(u,v)Gy​(x,y)=r21​∑u=−2r​2r​​∑v=−2r​2r​​Gy​(u,v)​
r为8,表示像素块宽度,卷积步长为1,并且将梯度G\left(x,y\right)的计算简化为公式。
G(x,y)=∣Gx(x,y)∣+∣Gy(x,y)∣G\left(x,y\right)={|G}_x\left(x,y\right)|+{|G}_y\left(x,y\right)|G(x,y)=∣Gx​(x,y)∣+∣Gy​(x,y)∣

G′(x,y)=G(x,y)max⁡(G(x,y))G^\prime\left(x,y\right)=\frac{G\left(x,y\right)}{\max(G\left(x,y\right))} G′(x,y)=max(G(x,y))G(x,y)​

2)指纹图像的梯度场的形态学开闭处理

指纹图像经常有折痕和高噪点的出现,所获得的指纹梯度图像在指纹的前景区域可能具有较低的梯度像素块,如图中所示。为了解决高噪声和指纹图像折痕的问题,本文采用形态学上的开闭操作。本文使用6×66\times66×6的正方形结构元。形态学开操作会删除所有不包含结构元的部分,使指纹前景和背景边界的轮廓变平滑,同时消除噪声并消除细微突起。形态学上的闭操作将狭窄的裂缝连接起来,并填满比结构元小的孔。当然,闭合操作也倾向于使物体的轮廓光滑。

3)Otsu’s的方法

使指纹图像的总像素点为NNN,pip_ipi​表示梯度为i发生的可能性。假定阈值为kkk,C1C_1C1​为灰度强度在[0,1,2,…,k]\left[0,1,2,\ldots,k\right][0,1,2,…,k]内的像素点集合,C2C_2C2​为灰度强度在[k+1,…,L−1]\left[k+1,\ldots,L-1\right][k+1,…,L−1]内的像素点集合,LLL为指纹图像可能的像素值的最大值,这里为256,因为指纹图像为位深8位的灰度图。P1(k)P_1(k)P1​(k)表示C1C_1C1​发生的可能性,则有公式如下:
P1(k)=∑i=0kpiP_1\left(k\right)=\sum_{i=0}^{k}p_iP1​(k)=i=0∑k​pi​
m1(k)m_1\left(k\right)m1​(k)和m2(k)m_2\left(k\right)m2​(k)分别是集合C1C_1C1​和C2C_2C2​中像素的平均灰度强度,而mGm_GmG​是整个图像的平均灰度强度,由等式计算得出。
{m1(k)=∑i=0kipim2(k)=∑i=k+1L−1ipimG=∑i=0L−1ipi\left\{\begin{aligned} m_{1}(k) &=\sum_{i=0}^{k} i p_{i} \\ m_{2}(k) &=\sum_{i=k+1}^{L-1} i p_{i} \\ m_{G} &=\sum_{i=0}^{L-1} i p_{i} \end{aligned}\right.⎩⎨⎧​m1​(k)m2​(k)mG​​=i=0∑k​ipi​=i=k+1∑L−1​ipi​=i=0∑L−1​ipi​​
最大类间方差的表达式为公式:
σ2=[mGP1(k)−m1(k)]P1(k)[1−P1(k)]\sigma^2=\frac{[m_GP_1(k)-m_1(k)]}{P_1(k)[1-P_1(k)]}σ2=P1​(k)[1−P1​(k)][mG​P1​(k)−m1​(k)]​
通过遍历阈值k来得到最大的类间方差,使用阈值k对指纹梯度图进行分割。指纹图像的分割结果如图。

可以进行一些修正或对大津算法进行权值处理以得到更好的分割图,这里对得到最大的类间方差的对应阈值k减去0.25,得到:

3、基于灰度方差、基于梯度和大津与基于梯度直方图分割的结果比较


使用基于梯度和大津的方法与基于灰度方差的像素块分割和基于梯度的像素块的直方图分割进行比较。基于梯度的像素块的直方图分割是将梯度图像划分为w×ww\times ww×w大小的像素块,获得分割后的梯度图像的直方图,使用10%的百分比估算梯度阈值,然后对梯度图像按阈值进行分割。图显示了通过三种不同方法对指纹进行分割的结果。第一行是指纹原始图像,第二行是基于灰度方差的像素块分割结果,第三行是基于梯度的像素块的直方图分割结果。第四行是本文方法分割的结果。基于梯度和大津的方法分割结果具有特定的轮廓,平滑的边缘,背景区域中没有多余的像素块,并且对折痕具有很强的鲁棒性。通过在线指纹采集器获得的指纹可以得到更好的分割。

代码参考:https://download.csdn.net/download/xuhe93/85802879?spm=1001.2014.3001.5503

指纹识别-(8)指纹图像预处理算法之图像分割相关推荐

  1. 指纹识别-(2)指纹图像的获取

    指纹识别-(2)指纹图像的获取 一.指纹采集器采集指纹 1.指纹采集器分类 单指扫描的电子指纹采集器根据类型可以分为:光学指纹采集器.半导体指纹采集器. (1)光学指纹采集器 光学指纹采集器基于全内反 ...

  2. 【指纹识别】指纹识别【含GUI Matlab源码 029期】

    ⛄一.指纹识别简介 指纹识别技术主要分三个步骤:指纹预处理.特征提取.指纹分类与匹配. 无论是指纹分类还是指纹匹配,都需要提取指纹的有效特征,而特征提取的性能很大程度上要依赖于指纹图像的质量.在实际应 ...

  3. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  4. 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  5. html5 指纹识别,Http指纹识别技术

    Http指纹识别技术 Http指纹识别现在已经成为应用程序安全中一个新兴的话题,Http服务器和Http应用程序安全也已经成为网络安全中的重要一部分.从网络管理的立场来看,保持对各种web服务器的监视 ...

  6. 【指纹识别】指纹预处理+特征点提取【含GUI Matlab源码 1693期】

    ⛄一.指纹识别简介 0 引言 随着社会的发展,钥匙.证件.银行卡以及用户名密码等这些鉴定身份的标志性物品和标识的安全性越来越弱,很容易被伪造.被盗用.不小心丢失等,给人们带来了极大的困扰,如何才能更好 ...

  7. 【图像识别-指纹识别】指纹特征提取附matlab代码

    1 内容介绍 ​一 指纹增强 采用Lin Hong等人提出的基于Gabor滤波的方法进行指纹增强,可分为以下步骤: 标准化:标准化是把图像的平均灰度和方差调整到预定的级别上,以减少脊线上的灰度差异,方 ...

  8. 【指纹识别】指纹识别门禁系统【含GUI Matlab源码 1692期】

    ⛄一.指纹识别简介 0 引言 随着社会的发展,钥匙.证件.银行卡以及用户名密码等这些鉴定身份的标志性物品和标识的安全性越来越弱,很容易被伪造.被盗用.不小心丢失等,给人们带来了极大的困扰,如何才能更好 ...

  9. 基于FPGA的目标颜色识别追踪一——图像预处理

    为了解决后续对于固定颜色的识别,需要对OV5640摄像头采集的图像进行预处理.预处理的思路为rgb2YCbCr corrode expand 之后对预处理的图片进行边界提取. 图像预处理 下面给出了常 ...

最新文章

  1. SpringBoot复习:3(@Conditional)
  2. 如何隐藏system函数的窗口
  3. Rolling Guidance Filter
  4. 华为交换机在Telnet登录下自动显示接口信息
  5. 【初赛】概率与期望学习笔记
  6. java knn分类_返回2个或更多最近邻居的KNN算法
  7. 架构、框架和设计模式关系
  8. Python联网下载文件
  9. linux 命令行看图片,骚操作:用终端打开图片
  10. Java中Integer类的方法
  11. 第41天:匀速、缓动运动和图片无缝滚动
  12. 利用Python进行数据分析--数据聚合与分组运算
  13. Python数据库连接池DBUtils(基于pymysql模块连接数据库)
  14. HAproxy的安装配置及动静分离
  15. GradientDrawable
  16. mybatis动态sql,条件判断详解示例
  17. FileSplit.exe
  18. Jenkins Bitbucket Java 部署
  19. 安卓异常java.lang.IllegalStateException: Content has been consumed
  20. 详解节省计划,一文了解最云原生的成本优化方式

热门文章

  1. C语言数据结构之二叉排序树
  2. 关于linux使用动态库进行进程间通讯
  3. 计算机依赖英语作文,网络依赖症英语作文 How Will Our Life Go on without Internet?
  4. 灵创系统服务器,服装ERP-灵创软件-ICSCM供应链管理系统
  5. 人工智能和文本分析:遵循的最佳方法
  6. IE浏览器字体兼容笔记
  7. 功能测试(黑马)——用例设计
  8. php技术外文原文期刊,科学网—选择外文期刊,也是被逼无赖! - 曹建军的博文...
  9. 北京科技大学 王志良老师物联网工作小组视频
  10. python3爬虫 selenium+pyquery爬取人才网简历实战