Harris特征检测(python实现)

文章目录

    • 1.Opencv特征的场景
    • 2.特征
    • 3.Harris特征检测
    • 4.哈里斯(Harris)角点特征性质
    • 5.函数讲解
    • 6.代码实战

1.Opencv特征的场景

(1)图像搜索:以图搜索;
(2)拼图游戏;
(3)图像拼接:将两张有关联的图拼接在一起;


2.特征

图像特征就是指有意义的图像区域,具有独特性,易识别性,比如角点,斑点以及高密度区域。
角点:在特征中最重要就是角点;灰度梯度的最大值对应的像素;两条线的交点;极值点(一阶导数最大,二阶导数为0)


3.Harris特征检测

Harris特征检测(python实现)_第1张图片
第一幅图矩形表示一个平坦区域,在各方向移动,窗口内像素值没有变化;
第二幅图矩形表示一个边缘特征(Edges),如果沿着垂直方向移动(梯度方向),像素值会发生改变;如果沿着边缘移动(平行于边缘) ,像素值不会发生变化;
第三幅图矩形框来说,它是一个角(Corners),不管你把它朝哪个方向移动,像素值都会发生很大变化。


4.哈里斯(Harris)角点特征性质

该算法算子对亮度和对比度的变化不敏感。
算子具有旋转不变性。
算子不具有尺度不变性。


5.函数讲解

cornerHarris(src, blockSize, ksize, k, dst=None, borderType=None)
Src:输入的原始图像;
Blocksize:检测窗口的大小
Ksize:卷Sobel积核的大小;
K:权重系数,经验值,一般取0.02-0.04之间。
Dst:输出的图像
borderType:⽤于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT.


6.代码实战

import os
import cv2

#读取图片
img=cv2.imread('images/HaLiSi.jpg')
#缩放图片
img=cv2.resize(src=img,dsize=(450,450))
#转灰度图
gray=cv2.cvtColor(src=img,code=cv2.COLOR_RGB2GRAY)
#哈里斯检测
halisi=cv2.cornerHarris(src=gray,blockSize=2,ksize=3,k=0.03)
#判断角点的“质量”
img[halisi>0.01*halisi.max()]=[0,255,0]
#显示图像
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

if __name__ == '__main__':
    print('Pycharm')

Harris特征检测(python实现)_第2张图片

你可能感兴趣的:(Opencv,python,opencv,计算机视觉)