day13 - 对指纹图片进行噪声消除

在指纹识别的过程中,指纹图片通常都是现场采集的,受环境的影响会有产生很多的噪声点,如果直接使用,会对指纹的识别产生很大的影响,而指纹识别的应用场景又都是一些比较严肃不容有错的场合,所以去除噪声又不损坏原始图像的结构就显得更为重要。

本期我们介绍使用图像的开、闭运算进行指纹图片的噪声消除。

完成本期内容,你可以:

  • 了解图像开、闭运算的原理和应用

  • 掌握使用图像开、闭运算的使用

若要运行案例代码,你需要有:

  • 操作系统:Ubuntu 16 以上 或者 Windows10

  • 工具软件:VScode 或者其他源码编辑器

  • 硬件环境:无特殊要求

  • 核心库:python 3.6.13, opencv-contrib-python 3.4.11.39,opencv-python 3.4.2.16

点击下载源码


开、闭运算

开运算就是将图像先进行腐蚀操作,在进行膨胀操作。开运算可以用来抹除图像外部的细节(或者噪声)。

闭运算是将图像先进行膨胀操作,在进行腐蚀操作。闭运算可以抹除图像内部的细节(或者噪声)。

形态学方法

OpenCV将形态学方法封装成了cv2.morphologyEx()方法。

函数原型:dst = cv2.morphologyEx(src, op, kernel, anchor, iterations, borderType, borderValue)
dst为输出图像。

参数描述如下:

  • src:被处理的图像
  • kernel:操作中使用的核
  • anchor:可选参数,核锚点的位置
  • iterations:可选参数,迭代次数,默认值为1
  • borderType:可选参数,边界样式,建议采用默认值
  • borderValue:可选参数,边界值,建议采用默认值
  • op:操作类型
参数值含义
cv2.MORPH_ERODE腐蚀操作
cv2.MORPH_DILATE膨胀操作
cv2.MORPH_OPEN开运算,先腐蚀后膨胀
cv2.MORPH_CLOSE闭运算,先膨胀后腐蚀
cv2.MORPH_GRADIENT梯度运算,膨胀图减腐蚀图,可以得到简易的轮廓
cv2.MORPH_TOPHAT顶帽运算,原始图像减开运算图像
cv2.MORPH_BLACKHAT黑帽运算,闭运算图像减原始图像

具体步骤

1. 创建项目结构

创建项目名为对指纹图像进行噪声消除,项目根目录下新建code文件夹储存代码,新建dataset文件夹储存数据,项目结构如下:

对指纹图像进行噪声消除                     # 项目名称
├── code                               # 储存代码文件
├── dataset                            # 储存数据文件

注:如项目结构已存在,无需再创建。

2. 使用膨胀操作对图像进行修复

  1. code文件夹下创建fingerprint.py文件;
  2. 导入所需的库,OpenCV、numpy;
  3. 读取dataset文件夹下的fingerprint.png图片,并进行展示;
  4. 创建一个7*7的都为1 的数组作为滤波核;
  5. 对图像进行开运算处理,并展示结果;

代码实现

# 导入OpenCV、numpy
import cv2
import numpy as np

# 读取图像
img = cv2.imread("../dataset/fingerprint.png")
cv2.imshow("img1",img)

# 创建一个值都为1的7*7的数组
k = np.ones((7,7),np.uint8)
# 使用开运算
o = cv2.morphologyEx(img,cv2.MORPH_OPEN,k)

cv2.imshow("result1",o)
cv2.waitKey()
cv2.destroyAllWindows()

请添加图片描述

效果截图

经过开运算之后,指纹图像中的噪声已经全部去除,对指纹的轮廓结构也并未产生影响,经过处理以后的图像就是一张只包含指纹信息的图像,在进行指纹识别会有更高的精确度。

点击下载源码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值