python - 过滤灰度指纹扫描图像和二进制文件
问题描述
我正在尝试从拇指扫描图像中获取二值化指纹。我已经实现了消除嘈杂的背景。但我找不到可以帮助我实现这一目标的过滤器。我有以下处理后的图像。
我想以二进制形式提取指纹细节。我已经试过了,
ret1,th1 = cv2.threshold(gray,48,80,cv2.THRESH_BINARY)
# Otsu's thresholding
ret2,th2 = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# Otsu's thresholding after Gaussian filtering
blur = cv2.GaussianBlur(gray,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
images = [gray, 0, th1,
gray, 0, th2,
gray, 0, th3]
titles = ['Original Noisy Image','Histogram','Global Thresholding (v=127)',
'Original Noisy Image','Histogram',"Otsu's Thresholding",
'Gaussian filtered Image','Histogram',"Otsu's Thresholding"]
for i in range(3):
plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],'gray')
plt.title(titles[i*3]), plt.xticks([]), plt.yticks([])
plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([])
plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],'gray')
plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([])
plt.show()
这给了我这个
另外,我尝试了 Catalano-Framework 和 Matlab 二值化,都给了我黑白图像。任何帮助深表感谢。
解决方案
我在 MATLAB 中玩了一下你的图像。我认为Canny Edge Detector在您的情况下可以正常工作。检查生成的图像。 检测到原始图像与 Canny 边缘
我希望这能帮到您。 OpenCV-Python:
import cv2
import numpy as np
img = cv2.imread('thumbs_up.png',cv2.IMREAD_GRAYSCALE)
#Adjust the Range as per application
edges = cv2.Canny(img,50,200)
cv2.imshow('Output',edges)
cv2.waitKey(0)
推荐阅读
- javascript - Boostrap 验证器 1000Hz v0_11_9 更多自定义验证
- reactjs - 作为道具传递的函数不是函数
- python - 是否可以在不修复的情况下为 Widget 设置宽度?
- python - 从列中的字符串中提取每行的最大值
- ios - 如何在不重新加载所有 UITableView 数据的情况下更新特定 UITableViewCell 中的标签?
- java - 捕获来自放心请求的响应的问题
- kotlin - Kotlin:在创建协程范围时是否应该将作业与调度程序一起传递
- windows - Windows 的 Nginx 配置设置
- ios - 'folly/Portability.h' 文件未找到 React 库
- npm-install - NPM命令不能工作它会弹出权限被拒绝