harris角點檢測是在灰度圖上,設定乙個區域性視窗向多個方向隨意平移,通過判斷視窗內畫素值有無明顯變化判斷有無角點的一種角點檢測方法。
1.計算影象(灰度圖)的水平和豎直方向的梯度ix,iy;
img = cv2.
cvtcolor
(img, cv2.
color_bgr2gray
)dx = cv2.
sobel
(img,cv2.
cv_32f,1
,0,ksize=ksize)
dy = cv2.
sobel
(img,cv2.
cv_32f,0
,1,ksize=ksize)
2.計算每個畫素位置的harris矩陣m;
m
= np.
zeros
([img.shape[0]
, img.shape[1]
,3], dtype=np.float32)
for i in
range
(img.shape[0]
):for j in
range
(img.shape[1]
):m[i,j,0]
= dx[i,j]
* dx[i,j]
m[i,j,1]
= dx[i,j]
* dy[i,j]
m[i,j,2]
= dy[i,j]
* dy[i,j]
#計算3
*3塊內的梯度和
m= cv2.
boxfilter(m
,-1,
(3,3
), normalize = false)
3.計算每個畫素位置的harris角點響應值r;
r
= np.
zeros([
m.shape[0]
,m.shape[1]
], dtype=np.float32)
for i in
range(m
.shape[0]
):for j in
range(m
.shape[1]
):a =
m[i,j,0]
b =m[i,j,1]
c =m[i,j,2]
r[i,j]
= a*c - b*b - k*
(a+c)
*(a+c)
(3+)非最大值抑制。
4.角點輸出。
src:資料型別為 float32 的輸入影象
blocksize:角點檢測中考慮的區域大小
ksize:sobel求導中使用的視窗大小
k:harris 角點檢測方程中的自由引數,取值引數為 [
0.04
0.06
]dst:輸出影象
bordertype:邊界的型別
1.亮度和對比度的變化對角點無影響。
2.harris角點檢測運算元具有旋轉不變性(旋轉形狀不變)。
3.harris角點檢測不具有尺度不變性(同等視窗內的影象隨著影象縮放會不同)。
4.閾值決定檢測點數量。
Harris角點檢測
貼一下 計算機視覺課的作業 有時候 需要用下 function f detectcorner i,threshold,sigma harris corner detect by lifeiteng version1.0 灰度影象 2013 5 08 version1.1 彩色影象 2013 5 13...
HARRIS角點檢測
cvinvoke.cornerharris image.convert b,2 注意 角點檢測傳出的為float型別的資料 cvinvoke.normalize b,b,0,255,normtype.minmax,depthtype.cv32f 正常化輸入陣列,使得它的範數或值範圍取一定值 多個 d...
Harris角點檢測
1 什麼是harris角點 在影象中,可以認為角點是物體輪廓線的連線點,是影象中重要的特徵點。角點數目遠小於畫素點,通過檢測角點可較準確地識別物體並減少計算量。角點檢測在目標識別 目標跟蹤 影象匹配等方面具有重要作用。如下圖,紅色圓圈標註的點可看做角點。2 如何檢測harris角點 可將影象分為三個...