opencv-python学习
lustyoung
枯燥
展开
-
opencv-python 二值图像的模板匹配实现
之前写过如何获得一个指静脉的二值化特征图像,传送门:opencv-python 用Gabor滤波器实现指静脉血管区域二值化纹理特征提取然后这篇文章记录我是如何来做特征模板匹配的。匹配评分原理:原理:根据上述二值纹理特征提取方法,获取手指静脉纹路的二值 纹理图像将已注册图像的 ROI 区域与待认证图片的 ROI 区域均采用二值纹理特征提取方法获得两张纹理前景图像,然后计算两张纹理前景...原创 2019-12-24 21:18:17 · 3993 阅读 · 0 评论 -
opencv-python +ski-image实现指静脉的LBP(局部二进制模式)特征提取
LBP:我对original LBP的理解是:对一个灰度图像的每个像素,用这个像素周围一格或者N格的其他像素做比较,最后将这周围(一般是8个)得到的比较结果串起来得到一个8位二进制的串,用这个8位二进制数在一个同等大小的矩阵中的同等位置替代原来像素信息,遍历整个图像即可得到这副图像的LBP图像。原理上来说,original LBP 具有灰度不变性。而如果用一个圆形的8个(或者更多)等分点来代替...原创 2019-12-23 22:52:05 · 2601 阅读 · 4 评论 -
opencv-python 用Gabor滤波器实现指静脉血管区域二值化纹理特征提取
之前写的都是有关于ROI的区域提取,但是对于提取到的区域我们需要提取它的特征,才可以在后期的特征匹配中排上用场。这篇文章主要记录我是如何对指静脉图片做二值纹理特征提取的原理:一种比较特征提取简单的方法:用Gabor滤波器提取各个方向上的纹理,然后将他们融合在一起,做二值化处理。原理非常简单,但是我进行的过程十分艰辛。首先要了解什么是gabor滤波器,这篇文章可以让你有一个大概的认...原创 2019-12-22 16:48:21 · 3582 阅读 · 0 评论 -
有关我的ROI提取的一些说明(存在的问题以及改正)
在继续用之前写的ROI提取的代码进行实验的时候发现了自己存在的几个问题。想到博客中都以及写完了,但是本着负责任的心理我肯定要回去修改。实话说心态有点崩我已经在原来的博客中尽量的修改了,但是可能还是有些纰漏,特地在这篇中说明一下。有关canny算法的两个参数(上下阈值),这两个参数是需要自己去选取的,而不是直接用我记录的值,只要手指内部不要有非0的像素即可。这里左边的中间有一个点,是...原创 2019-12-21 14:29:48 · 759 阅读 · 0 评论 -
opencv-python 指静脉的ROI获取(拟合手指中线加旋转)
阅读过我的上一篇博客后,都知道应该如何在canny处理后提取到我们的手指轮廓,剔除背景轮廓了,还没看的点这里上一篇博客然后我们要做的事情很简单,就是拟合手指的中线,并且旋转我们原来的图像以待进一步的处理。中线的获得:我拟合中线的办法就是采取手指每一对上下(两侧)轮廓的平均值,然后将这个中间位置的坐标记录下来。import cv2 as cvimport numpy as np...原创 2019-12-18 20:28:13 · 2136 阅读 · 0 评论 -
opencv-python 指静脉的手指轮廓提取实现
由于指静脉由于采集时候手指的不固定,所以同一手指的不同照片可能会有旋转。我们提取手指的轮廓就是为了拟合出手指的中线,从而对手指的图片进行旋转矫正。在opencv中提供了好几种方法供我们用来提取图片中物体的边界与轮廓。有Sobel算子,拉普拉斯算法等等,但是应用在我的图片上一点都不友好:中间的是原图,不知道是不是因为我没有对原图进行平滑处理,如果用这两种算子来进行进一步的处理的话,难度巨...原创 2019-12-18 17:41:30 · 3342 阅读 · 2 评论 -
opencv-python 中直线拟合函数cv.fitLine()的2D直线拟合(适合小白观看)
在提取指静脉的过程中,我们需要提取有用的ROI区域。而这时候,我们会采取将手指两边中点拟合成一条直线,求得这个直线的直线方程,然后得到旋转的角度,以便对原来的图像进行旋转操作。当我们知道如何取得手指的边缘中点后,直接用fitLine函数可以方便的按我们想要的方式得到期望 的直线。首先是官方文档上的函数原型:然后我会通过实例来解释每一个参数的意义,代码十分简单:import cv...原创 2019-12-18 14:56:15 · 8784 阅读 · 3 评论 -
opencv-python 指静脉的ROI(感兴趣区域)的指节提取(原理+代码)
静脉采集过程中,由于手指自由度比较大,所以可能会有手指旋转,平移等现象,这有可能使得同一个手指的两次采集图像差别较大。这是我们不希望看到的。所以对图像进行ROI的提取非常有必要,也是图像预处理的一个过程。本文:阐述我是如何对一张图片进行指节的区分的原理:由于指节的两端有关节腔,而关节腔内部主要是软骨和组织液,这样会使得在图片中关节腔的位置会比较亮,而根据这一特点,我们就可以方便的知道指节是...原创 2019-12-16 20:23:59 · 5470 阅读 · 8 评论 -
opencv-python 限制对比度自适应直方图均衡化(CLAHE)(我的疑问与示例)
限制对比度自适应直方图均衡化的主要计算过程需要先了解一下https://blog.csdn.net/u013066730/article/details/83000004这个链接说的很清楚。看了几遍不是很明白具体是怎么操作的,我的理解是:将原来的图像划分为不重叠的几个区域(一般是8*8)然后在每个区域内,限制对比度(如何限制?不明白),并且把一部分特别这是原来博文的截图,这个图我...原创 2019-12-15 22:05:26 · 8686 阅读 · 9 评论 -
opencv-python 对彩色图像做直方图均衡化(+自己实现源码)
环境:spyder(python 3.7 ) opencv-python (4.1.2.30)opencv-python中有一个函数cv.equalizeHist(single_channel_img)可以非常方便的对图像进行直方图均衡化处理直方图均衡化增加了图像的对比度,待会我们通过例子就可以看出图片明显的区别,这里需要注意的一点是, src参数必须是8比特的单通道图像,否者报错...原创 2019-12-14 20:35:25 · 6520 阅读 · 3 评论 -
opencv-python的图像基础逻辑运算及细节、注意事项(与或非及掩膜)
主要记录一下bitwise_and(),cv.cv,bitwise_or(),cv.bitwise_not()这三个最基础的逻辑运算(与或非)首先cv.bitwise_not()参数如图,虽然参数列表上面有三个参数,但是我使用的时候一般都是只用一个参数circle = np.zeros((280,300),dtype="uint8")cv.circle(circle,(150...原创 2019-12-11 18:53:41 · 1355 阅读 · 0 评论 -
opencv-python的像素索引记得要交换X,Y坐标!(小问题)
import cv2 as cvimport numpy as nprectangle = np.zeros((280,300),dtype="uint8")cv.rectangle(rectangle,(90,120),(220,170),100,-1)cv.imshow('rectangle',rectangle)cv.waitKey(0)cv.destroyAllWindo...原创 2019-12-11 17:26:59 · 1821 阅读 · 0 评论 -
opencv最基础的一段代码需要注意的问题(spyder python3.7)
代码如下import cv2import numpy as nppath ='cat.jpg'img=cv2.imread(path,0)cv2.imshow("test",img)cv2.waitKey(0)cv2.destroyAllWindows()imread() 图片读入第一个参数是路径,第二个参数是代表着以灰度的形式读入这里注意到提到了al...原创 2019-12-10 11:15:57 · 240 阅读 · 0 评论