資源簡(jiǎn)介
Log和Canny邊緣檢測(cè)算子

代碼片段和文件信息
clear;
I?=?imread(‘C:\Users\Auser.MEY\Desktop\CV\Tessella.bmp‘);
%I?=?double(I);
%I=rgb2gray(I);?
I=imnoise(I‘gaussian‘00.0005);
figure;
imshow(I)
title(‘noise?image‘)
[heightwidth]?=?size(I);
J?=?I;
conv?=?zeros(55);%高斯卷積核
sigma?=?1;%方差
sigma_2?=?sigma?*?sigma;%臨時(shí)變量
sum?=?0;
for?i?=?1:5
????for?j?=?1:5
????????conv(ij)?=?exp((-(i?-?3)?*?(i?-?3)?-?(j?-?3)?*?(j?-?3))?/?(2?*?sigma_2))?/?(2?*?3.14?*?sigma_2);%高斯公式
????????sum?=?sum?+?conv(ij);
????end
end
conv?=?conv./sum;%標(biāo)準(zhǔn)化
%對(duì)圖像實(shí)施高斯濾波
for?i?=?1:height
????for?j?=?1:width
????????sum?=?0;%臨時(shí)變量
????????for?k?=?1:5
????????????for?m?=?1:5
????????????????if?(i?-?3?+?k)?>?0?&&?(i?-?3?+?k)?<=?height?&&?(j?-?3?+?m)?>?0?&&?(j?-?3?+?m)?????????????????????sum?=?sum?+?conv(km)?*?I(i?-?3?+?kj?-?3?+?m);
????????????????end
????????????end
????????end
????????J(ij)?=?sum;
????end
end
figureimshow(J[])
title(‘高斯濾波后的結(jié)果‘)
%求梯度
dx?=?zeros(heightwidth);%x方向梯度
dy?=?zeros(heightwidth);%y方向梯度
d?=?zeros(heightwidth);
for?i?=?1:height?-?1
????for?j?=?1:width?-?1
????????dx(ij)?=?J(ij?+?1)?-?J(ij);
????????dy(ij)?=?J(i?+?1j)?-?J(ij);
????????d(ij)?=?sqrt(dx(ij)?*?dx(ij)?+?dy(ij)?*?dy(ij));
????end
end
figureimshow(d[])
title(‘求梯度后的結(jié)果‘)
%局部非極大值抑制
K?=?d;%記錄進(jìn)行非極大值抑制后的梯度
%設(shè)置圖像邊緣為不可能的邊緣點(diǎn)
for?j?=?1:width
????K(1j)?=?0;
end
for?j?=?1:width
????K(heightj)?=?0;
end
for?i?=?2:width?-?1
????K(i1)?=?0;
end
for?i?=?2:width?-?1
????K(iwidth)?=?0;
end
for?i?=?2:height?-?1
????for?j?=?2:width?-?1
????????%當(dāng)前像素點(diǎn)的梯度值為0,則一定不是邊緣點(diǎn)
????????if?d(ij)?==?0
????????????K(ij)?=?0;
????????else
????????????gradX?=?dx(ij);%當(dāng)前點(diǎn)x方向?qū)?shù)
????????????gradY?=?dy(ij);%當(dāng)前點(diǎn)y方向?qū)?shù)
????????????gradTemp?=?d(ij);%當(dāng)前點(diǎn)梯度
????????????%如果Y方向幅度值較大
????????????if?abs(gradY)?>?abs(gradX)
????????????????weight?=?abs(gradX)?/?abs(gradY);%權(quán)重
????????????????grad2?=?d(i?-?1j);
????????????????grad4?=?d(i?+?1j);
????????????????%如果x、y方向?qū)?shù)符號(hào)相同
????????????????%像素點(diǎn)位置關(guān)系
????????????????%g1?g2
????????????????%???C
????????????????%???g4?g3
????????????????if?gradX?*?gradY?>?0
????????????????????grad1?=?d(i?-?1j?-?1);
????????????????????grad3?=?d(i?+?1j?+?1);
????????????????else
????????????????????%如果x、y方向?qū)?shù)符號(hào)反
????????????????????%像素點(diǎn)位置關(guān)系
????????????????????%???g2?g1
????????????????????%???C
????????????????????%g3?g4
????????????????????grad1?=?d(i?-?1j?+?1);
????????????????????grad3?=?d(i?+?1j?-?1);
????????????????end
????????????%如果X方向幅度值較大
????????????else
????????????????weight?=?abs(gradY)?/?abs(gradX);%權(quán)重
????????????????grad2?=?d(ij?-?1);
????????????????grad4?=?d(ij?+?1);
????????????????%如果x、y方向?qū)?shù)符號(hào)相同
????????????????%像素點(diǎn)位置關(guān)系
????????????????%g3
????????????????%g4?C?g2
????????????????%?????g1
????????????????if?gradX?*?gradY?>?0
????????????????????grad1?=?d(i?+?1j?+?1);
????????????????????grad3?=?d(i?-?1j?-?1);
????????????????else
????????????????????%如果x、y方向?qū)?shù)符號(hào)反
?????????????????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????8297??2016-07-14?19:13??Log和Canny程序(MATLAB)\canny.m
?????文件???????4474??2016-07-14?23:03??Log和Canny程序(MATLAB)\Laplacian.m
?????目錄??????????0??2016-07-15?17:07??Log和Canny程序(MATLAB)
-----------?---------??----------?-----??----
????????????????12771????????????????????3
評(píng)論
共有 條評(píng)論