matlab練習程式(FAST特徵點檢測)

2022-06-08 21:33:11 字數 2244 閱讀 1627

演算法思想:如果乙個畫素與它鄰域的畫素差別較大(過亮或過暗) , 那它更可能是角點。

演算法步驟:

1.上圖所示,乙個以畫素p為中心,半徑為3的圓上,有16個畫素點(p1、p2、...、p16)。

2.定義乙個閾值。計算p1、p9與中心p的畫素差,若它們絕對值都小於閾值,則p點不可能是特徵點,直接pass掉;否則,當做候選點,有待進一步考察;

3.若p是候選點,則計算p1、p9、p5、p13與中心p的畫素差,若它們的絕對值有至少3個超過閾值,則當做候選點,再進行下一步考察;否則,直接pass掉;

4.若p是候選點,則計算p1到p16這16個點與中心p的畫素差,若它們有至少9個超過閾值,則是特徵點;否則,直接pass掉。

5.對影象進行非極大值抑制:計算特徵點出的fast得分值(即score值,也即s值),判斷以特徵點p為中心的乙個鄰域(如3x3或5x5)內,計算若有多個特徵點,則判斷每個特徵點的s值(16個點與中心差值的絕對值總和),若p是鄰域所有特徵點中響應值最大的,則保留;否則,抑制。若鄰域內只有乙個特徵點(角點),則保留。

**如下:

; %閾值

for i=4:m-3

for j=4:n-3

p=img(i,j);

%步驟1,得到以p為中心的16個鄰域點

pn=[img(i-3,j) img(i-3,j+1) img(i-2,j+2) img(i-1,j+3) img(i,j+3) img(i+1,j+3) img(i+2,j+2) img(i+3,j+1

) ...

img(i+3,j) img(i+3,j-1) img(i+2,j-2) img(i+1,j-3) img(i,j-3) img(i-1,j-3) img(i-2,j-2) img(i-3,j-1

)]; %步驟2

if abs(pn(1)-p)9)-p)

continue

;

end%步驟3

p1_5_9_13=[abs(pn(1)-p)>t abs(pn(5)-p)>t abs(pn(9)-p)>t abs(pn(13)-p)>t];

if sum(p1_5_9_13)>=3

ind=find(abs(pn-p)>t);

%步驟4

if length(ind)>=9

score(i,j) = sum(abs(pn-p));

endend

endend

%步驟5,非極大抑制,並且畫出特徵點

for i=4:m-3

for j=4:n-3

if score(i,j)~=0

if max(max(score(i-2:i+2,j-2:j+2)))==score(i,j)

[img(i-3,j), img(i-3,j+1), img(i-2,j+2), img(i-1,j+3), img(i,j+3), img(i+1,j+3), img(i+2,j+2), img(i+3,j+1

), ...

img(i+3,j), img(i+3,j-1), img(i+2,j-2), img(i+1,j-3), img(i,j-3), img(i-1,j-3), img(i-2,j-2), img(i-3,j-1)]=...

deal(

255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255

);

endend

endend

figure;

imshow(img);

結果如下:

原圖:檢測結果:

參考:

matlab練習程式(DBSCAN)

和kmeans相比,不需要事先知道資料的類數。以程式設計的角度來考慮,具體演算法流程如下 1.首先選擇乙個待處理資料。2.尋找和待處理資料距離在設定半徑內的資料。3.將找到的半徑內的資料放到乙個佇列中。4.拿佇列頭資料作為當前待處理資料並不斷執行第2步。5.直到遍歷完佇列中所有資料,將這些資料記為一...

matlab練習程式(c c 呼叫matlab)

就我目前了解的c 呼叫matlab有兩種方法。第一種是通過matlab引擎呼叫,也就是這裡用到的方法。第二種是用matlab將m檔案編譯為相應的h lib dll檔案再加以呼叫。使用engine所用到的h和lib檔案基本在d program files matlab r2010b extern裡面,...

matlab練習程式(SUSAN檢測)

susan運算元既可以檢測角點也可以檢測邊緣,不過角點似乎比不過harris,邊緣似乎比不過canny。不過思想還是有點意思的。主要思想就是 首先做乙個和原影象等大的目標影象。然後用乙個圓形的模板,用模板去遍歷原影象每個畫素,把模板內的每個畫素都和模板中心畫素比較,如果灰度小於乙個閾值,那麼就對目標...