資源簡介
本壓縮包包括一個亞像素邊緣檢測源代碼,以及一個測試圖片,從亞像素的角度去解決邊緣檢測問題,并且與Canny算子做比較,效果顯著!
代碼片段和文件信息
clear
clc
II=imread(‘Sample_BW.jpg‘);
figure(1)imshow(II)
I=double(II);
[mn]=size(I);
%用Canny算子進行像素邊緣檢測,判別閾值為0.1
ff=edge(I‘canny‘0.1);
figure(2)imshow(ff)
f=double(ff);
%求原函數梯度函數
R=zeros(mn);
for?xi=2:1:m-1
????for?yi=2:1:n-1
????????R(xiyi)=abs(I(xi+1yi+1)+2*I(xiyi+1)+I(xi-1yi+1)-I(xi-1yi-1)-2*I(xiyi-1)-I(xi+1yi-1))+abs(I(xi-1yi-1)+2*I(xi-1yi)+I(xi-1yi+1)-I(xi+1yi+1)-2*I(xi+1yi)-I(xi+1yi-1));
????end
end
%開始求坐標
nn=1;
W=zeros(mn);
for?x=2:1:m-1
????for?y=2:1:n-1
????????if?f(xy)==0
???????????W(xy)=0;
????????else
????????????i=[R(x-1y)R(xy)R(x+1y)];
????????????j=[R(xy-1)R(xy)R(xy+1)];
????????????if?(i(2)>i(1))&(i(2)>i(3))&(j(2)>j(1))&(j(2)>j(3))
????????????????Xe=x+(i(1)-i(3))/((i(1)-2*i(2)+i(3))+eps);%求亞像素邊緣坐標[XeYe]
????????????????Ye=y+(j(1)-j(3))/((j(1)-2*j(2)+j(3))+eps);
????????????????if?(Xe0)&(Ye0)
????????????????????Xe1(nn)=Xe;???????????????????????????%得到的亞像素邊緣點
????????????????????Ye1(nn)=Ye;
????????????????????Xe2(nn)=round(Xe);????????????????????%得到的逼近的邊緣點
????????????????????Ye2(nn)=round(Ye);
????????????????????W(Xe2(nn)Ye2(nn))=1;?????????????????%把檢測到的邊緣點直觀的表示出來
????????????????????nn=nn+1;??????????????????????????????%設置循環(huán),用數組的形勢表示Xe2,Ye2,方便后期查看處理亞像素邊緣點坐標
????????????????end
????????????end
????????end
????end
end
figure(3)imshow(W)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1474??2009-05-18?09:24??yaxiangsu.m
?????文件???????7378??2005-11-22?10:20??Sample_BW.jpg
-----------?---------??----------?-----??----
?????????????????8852????????????????????2
- 上一篇:一個自動收發(fā)的RS485電路圖
- 下一篇:基于WEB的網上書店設計
評論
共有 條評論