openCV:图像特征-harris角点检测

概念

角点的定义

角点检测是提取图像特征的一个方法。

  • 狭义:两条边的交点
  • 广义:图像中具有某些数学特征的坐标。如局部最大或最小的灰度
角点的概念

基本原理

所以这些特征值决定了区域是否是角,边缘或者无反差的。

  • 当|R|小的时候,也就是λ1和λ2小的时候,区域是无反差的

  • 当R < 0, 页就是λ1 >> λ2时,区域是边缘

  • 当R很大,是λ1和λ2很大并且λ1 ~ λ2时区域是角

python实现

cv2.cornerHarris(src, block_size, ksize, k)

  • src 必须是float32
  • block_size 邻域大小,越大表示用更粗的点标记角点
  • ksize Sobel求导中的窗口大小
  • k 自由参数,取值[0.04, 0.06]
import cv2 
import numpy as np

img = cv2.imread('lena.jpg')
print ('img.shape:',img.shape)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# gray = np.float32(gray)
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
print ('dst.shape:',dst.shape)
img.shape: (263, 263, 3)
dst.shape: (263, 263)
img[dst>0.01*dst.max()]=[0,225,0]
cv2.imshow('dst',img) 
cv2.waitKey(0) 
cv2.destroyAllWindows()
harris角点检测.PNG
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。