91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-10
  • 語言: Matlab
  • 標簽: harris??matlab??

資源簡介

使用matlab編寫的harris角點提取程序。需要自己添加一個main函數,或者在本程序稍微一改就可以了。程序里的border是用來去掉邊界的。

資源截圖

代碼片段和文件信息

function?[rowcolcountcorner]=harris_detector(imageborder)
if(isrgb(image))
????Image=rgb2gray(image);%非灰度圖要轉為灰度圖
else
????Image=image;
end

dx=[-1?0?1;
????-1?0?1;
????-1?0?1];%?x方向梯度算子
dy=[-1?-1?-1;
????0?0?0;
????1?1?1];%?y方向梯度算子

Ix2?=?filter2(dxImage).^2;?%?x方向的梯度圖像
Iy2=filter2(dyImage).^2;?%?y方向的梯度圖像
Ixy=filter2(dxImage).*filter2(dyImage);?%梯度乘積圖像

h=fspecial(‘gaussian‘92);%高斯濾波器,9*9模板,sigma為2
%準備高斯濾波

A=filter2(hIx2);%濾波后的Ix2矩陣,記作A
B=filter2(hIy2);
C=filter2(hIxy);

row=size(Image1);%圖像的行數
col=size(Image2);%圖像的列數
corner=zeros(rowcol);%corner用于存放角點的位置

t=20;
%角點粗略確定
for?i=border:row-border+1
????for?j=border:col-border+1
????????nlike=0;?%相似點個數,除去噪聲點
????????if?Image(i-1j-1)>Image(ij)-t?&&?Image(i-1j-1)????????????nlike=nlike+1;
????????end
????????if?Image(i-1j)>Image(ij)-t?&&?Image(i-1j)????????????nlike=nlike+1;
????????end
????????if?Image(i-1j+1)>Image(ij)-t?&&?Image(i-1j+1)????????????nlike=nlike+1;
????????end??
????????if?Image(ij-1)>Image(ij)-t?&&?Image(ij-1)????????????nlike=nlike+1;
????????end
????????if?Image(ij+1)>Image(ij)-t?&&?Image(ij+1)????????????nlike=nlike+1;
????????end
????????if?Image(i+1j-1)>Image(ij)-t?&&?Image(i+1j-1)????????????nlike=nlike+1;
????????end
????????if?Image(i+1j)>Image(ij)-t?&&?Image(i+1j)????????????nlike=nlike+1;
????????end
????????if?Image(i+1j+1)>Image(ij)-t?&&?Image(i+1j+1)????????????nlike=nlike+1;
????????end
????????if?nlike>=2?&&?nlike<=6
????????????corner(ij)=1;%如果周圍有2-6個與中心相似的點,初判為角點
????????end;
????end;
end;

CRF=zeros(rowcol);%用于存儲每個像素點的harris角點響應
CRFmax=0;%用于記錄角點響應最大值
k=0.05;%經驗值

for?i=border:row-border+1?%不考慮邊界上的點
????for?j=border:col-border+1
????M?=?[A(ij)?C(ij);%自相關矩陣M
?????????C(ij)?B(ij)];
??????CRF(ij)?=?det(M)-k*(trace(M))^2;
????????if?CRF(ij)>CRFmax
????????????CRFmax=CRF(ij);%記錄最大響應值,用于后面判斷
????????end
????end
end

count=0;%統計角點個數
t=0.01;%t的選取會影響到角點的檢測,t越小檢測的越多
for?i=border:row-border+1
????for?j=border:col-border+1?%非極大值抑制,窗口大小3*3
????????if?corner(ij)==1
????????????if?CRF(ij)>t*CRFmax?&&?CRF(ij)?>CRF(i-1j-1)?......
???????????????&&?CRF(ij)?>?CRF(i-1j)?&&?CRF(ij)?>?CRF(i-1j+1)?......
???????????????&&?CRF(ij)?>?CRF(ij-1)?&&?CRF(ij)?>?CRF(ij+1)?......
???????????????&&?CRF(ij)?>?CRF(i+1j-1)?&&?CRF(ij)?>?CRF(i+1j)......
???????????????&&?CRF(ij)?>?CRF(i+1j+1)
????????????????count=count+1;%角點個數+1
????????????else
????????????????corner(ij)=0;%不是角點
????????????end
????????end
????end
end
[rowcol]=find(corner==1);%找到所有特征點的坐標并返回

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2971??2013-05-24?08:38??harris_detector.m

評論

共有 條評論