由于指静脉由于采集时候手指的不固定,所以同一手指的不同照片可能会有旋转。我们提取手指的轮廓就是为了拟合出手指的中线,从而对手指的图片进行旋转矫正。
在opencv中提供了好几种方法供我们用来提取图片中物体的边界与轮廓。有Sobel算子,拉普拉斯算法等等,但是应用在我的图片上一点都不友好:

中间的是原图,不知道是不是因为我没有对原图进行平滑处理,如果用这两种算子来进行进一步的处理的话,难度巨大。但是在opencv中,还有一种十分友好的边缘检测的方法,他就是cv.Canny()
想了解原理和用法的话这里讲的非常清楚:
接下来展示一下这个函数的效果(网页原因图片被拉伸了)
效果很好,与轮廓无关的部分大大减少。
示例的源码:
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
clahe_test=cv.imread('clahe_test.bmp',0)
sobelx = cv.Sobel(clahe_test,cv.CV_64F,1,0,ksize=5)
laplacian = cv.Laplacian(clahe_test,cv.CV_64F)
canny=cv.Canny(c

该博客介绍了如何使用opencv-python在指静脉图像中提取手指轮廓,以应对手指旋转问题。作者尝试了Sobel算子和拉普拉斯算法,但最终选择了cv.Canny()函数,通过自定义函数提取所需部分,有效地减少了无关轮廓。文章展示了函数效果及源码,并分享了处理特殊情况的异常处理技巧。
最低0.47元/天 解锁文章
419

被折叠的 条评论
为什么被折叠?



