?? 712edge.m
字號(hào):
blood=imread('cell.bmp');
[x,y]=size(blood);
b=double(blood);
N=sqrt(100)*randn(x,y);%生成方差為10的白噪聲
I=b+N;
for i=1:x %實(shí)際圖像的灰度為0-255
for j=1:y
if(I(i,j)>255)
I(i,j)=255;
end
if(I(i,j)<0)
I(i,j)=0;
end
end
end
z0=max(max(I)); %求出圖像中最大的灰度
z1=min(min(I)); %最小的灰度
T=(z0+z1)/2;
TT=0;
s0=0;n0=0;
s1=0;n1=0;
allow=0.5; %新舊閾值的允許接近程度
d=abs(T-TT);
count=0;
while(d>=allow)
count=count+1;
for i=1:x
for j=1:y
if(I(i,j)>=T)
s0=s0+I(i,j);
n0=n0+1;
end
if(I(i,j)<T)
s1=s1+I(i,j);
n1=n1+1;
end
end
end
T0=s0/n0;
T1=s1/n1;
TT=(T0+T1)/2;
d=abs(T-TT);
T=TT;
end
seg=zeros(x,y);
for i=1:x
for j=1:y
if(I(i,j)>=T)
seg(i,j)=1; %閾值分割的圖像
end
end
end
SI=1-seg; %閾值分割后的圖像求反,便于用腐蝕算法求邊緣
se1=strel('square',3); %定義腐蝕算法的結(jié)構(gòu)
SI1=imerode(SI,se1); %腐蝕算法
BW=SI-SI1; %邊緣檢測(cè)
%--------傳統(tǒng)的邊緣檢測(cè)方法--------%
I=imread('cell.bmp');
BW1=edge(I,'sobel');
BW2=edge(I,'log');
BW3=edge(I,'canny');
% ----------圖像顯示--------
figure(1),imshow(I);title('原圖');
figure(2),imshow(BW2);title('Sobel算子邊緣檢測(cè)結(jié)果');
figure(3),imshow(BW1);title('Gauss_Laplace邊緣檢測(cè)結(jié)果');
figure(4),imshow(BW1);title('Canny邊緣檢測(cè)結(jié)果');
figure(5),imshow(BW);title('邊緣檢測(cè)精確結(jié)果');
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -