資源簡介
該算法是適用canny算子來實現邊緣增強的方法,具有智能識別邊緣的特性,具有良好的增強邊緣的效果。
代碼片段和文件信息
function?e=canny_edge(Isigma)?
%functione=edge(I‘canny‘threshsigma);
%該函數實現Canny算子提取邊緣點
%輸入圖像為I,標準差sigma,輸出為邊緣圖像e
[mn]=size(I);
Rr=2:m-1;cc=2:n-1;
e=repmat(logical(uint8(0))mn);
%產生同樣大小的邊緣圖像e,初始化為1?,即初始化邊緣
GaussianDieOff=-0.001;%設定高斯函數消失門限
PercentOfPixelsNotEdges=-7;%用于計算邊緣門限
ThresholdRatio=-4;%設置兩個門限的比例
%首先設計高斯濾波器和它的微分
pw=1:30;
%設定濾波器寬度
ssq=sigma*sigma;
%計算方差
width=max(find(exp(-(pw.*pw)/(2*sigma*sigma))>GaussianDieOff));
%計算濾波算子寬度
t=(-width:width);
len=2*width+1;
t3=[t-.5;t;t+.5];
%對每個像素左右各半個像素位置的值進行平均
gau=sum(exp(-(t3.*t3)/(2*ssq))).‘/(6*pi*ssq);
%一維高斯濾波器
dgau=(-t.*exp(-(t.*t)/(2*ssq))/ssq).‘;
%高斯濾波器的微分
ra=size(I1);
ca=size(I2);
ay=255*double(I);ax=255*double(I‘);
h=conv(gaudgau);
%利用高斯函數濾除噪聲和用高斯算子的一階微分對圖像濾波合并為一個算子
ax=conv2(axh‘same‘).‘;
評論
共有 條評論