Harris角点检测

2022-05-28 16:49:59 浏览数 (2)

代码语言:javascript复制
import cv2
import numpy as np
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
cv2.imshow("original",img)
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#将彩色图片转换为灰度图片
gray=np.float32(gray)
dst=cv2.cornerHarris(gray,2,3,0.04)#Harris 角点检测
dst=cv2.dilate(dst,None)#膨胀图像
img[dst>0.01*dst.max()]=[0,0,255]#阈值
cv2.imshow('result',img)
cv2.waitKey()
cv2.destroyAllWindows()

算法:Harris角点检测是属于局部特征检测,利用移动的窗口在图像中计算灰度变化值,其中关键流程包括转化为灰度图像、计算差分图像、高斯平滑、计算局部极值、确认角点。

图像处理(局部特征检测)的基本思想:

局部特征检测的属性:

  • 重复性(即可在每个图像中独立检测相同的点)
  • 平移、旋转、缩放(仿射变换)不变性
  • 对噪声、模糊、遮挡、杂波和光照变化(局部)具有鲁棒性
  • 该区域应该包含感兴趣的结构(可辨别性)

dst=cv2.cornerHarris(img, blockSize, ksize, k)

  • img表示原始图像
  • blockSize表示角点检测中的领域大小
  • ksize表示Sobel求导中使用的窗口大小
  • k表示Harris 角点检测方程中的自由参数,取值参数为[0,04, 0.06]

文献:Harris, C. G., & Stephens, M. (1988, August). A combined corner and edge detector. In Alvey vision conference (Vol. 15, No. 50, pp. 10-5244).

0 人点赞