openCV:图像特征-harris角点检测
2019-09-28 本文已影响0人
SwiftBirds
概念
角点的定义
角点检测是提取图像特征的一个方法。
- 狭义:两条边的交点
- 广义:图像中具有某些数学特征的坐标。如局部最大或最小的灰度
基本原理
所以这些特征值决定了区域是否是角,边缘或者无反差的。
-
当|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