Harris角點檢測

2021-06-18 14:24:56 字數 1572 閱讀 9174

貼一下 計算機視覺課的作業

有時候 需要用下 

function f = detectcorner(i, threshold, sigma)

%harris corner detect

%by:lifeiteng

%version1.0 灰度影象 2013/5/08

%version1.1 彩色影象 2013/5/13

%存在問題:沒有實現跟 corner 相似的介面,對雜訊也不能很好的處理。

if nargin < 3

sigma = 0.01;

endif nargin < 2

threshold = 0.6; %實驗表明 對此引數不敏感

sigma = 0.01; %對此引數敏感

endif size(i,3)==3

i = rgb2gray(i);

endw = fspecial('gaussian', [5 5], 2);

i = double(i);

i = imfilter(i, w, 'same');

ix = imfilter(i,[-1 0 1], 'same');

iy = imfilter(i,[-1 0 1]', 'same');

a = ix.^2;

b = ix.*iy;

c = iy.^2;

a = imfilter(a, w, 'same');

b = imfilter(b, w, 'same');

c = imfilter(c, w, 'same');

%f = (a.*c-b.*b)./(a+c+eps);

f = (a.*c-b.*b)-threshold*(a+c);

f = f/max(f(:));

f = f.*(f>sigma); %f = f.*(f>0.01);

cor = 10;

f(1:cor,1:cor)=0; f(1:cor,end-cor:end)=0;f(end-cor:end,1:cor)=0;f(end-cor:end,end-cor:end)=0;

f = imregionalmax(f, 8);

[row, col] = find(f==1);

f = [col, row];

end

測試用例:

HARRIS角點檢測

cvinvoke.cornerharris image.convert b,2 注意 角點檢測傳出的為float型別的資料 cvinvoke.normalize b,b,0,255,normtype.minmax,depthtype.cv32f 正常化輸入陣列,使得它的範數或值範圍取一定值 多個 d...

Harris角點檢測

1 什麼是harris角點 在影象中,可以認為角點是物體輪廓線的連線點,是影象中重要的特徵點。角點數目遠小於畫素點,通過檢測角點可較準確地識別物體並減少計算量。角點檢測在目標識別 目標跟蹤 影象匹配等方面具有重要作用。如下圖,紅色圓圈標註的點可看做角點。2 如何檢測harris角點 可將影象分為三個...

Harris角點檢測

harris角點檢測是在灰度圖上,設定乙個區域性視窗向多個方向隨意平移,通過判斷視窗內畫素值有無明顯變化判斷有無角點的一種角點檢測方法。1.計算影象 灰度圖 的水平和豎直方向的梯度ix,iy img cv2.cvtcolor img,cv2.color bgr2gray dx cv2.sobel i...