------------------------------------------------------------------
------------------------------------------------------------------
------------------------------------------------------------------
------------------------------------------------------------------
------------------------------------------------------------------
------------------------------------------------------------------
------------------------------------------------------------------
src =imread('F:/image/round.png');
src=rgb2gray(src);
D=60;
TeBall=zeros(D,D);
for i=0:D
for j=0:D
if((i-D/2)^2+(j-D/2)^2 <= (D/2)^2)
TeBall(i+1,j+1) = 1;
end
end
end
%图像膨胀
figure;
subplot(2,4,1);
imshow(src);
title('原图像');
imag1=imdilate(src,TeBall);
subplot(2,4,2);
imshow(imag1);
title('圆形元素膨胀图像');
%图像腐蚀
imag2=imerode(imag1,TeBall);
subplot(2,4,3);
imshow(imag2);
title('圆形元素腐蚀图像');
%二值化
imag3=imbinarize(imag2);
imag4=rescale(imag3);
subplot(2,4,4);
imshow(imag4);
title('二值图像')
D=150;
TeBall=zeros(D,D);
for i=0:D
for j=0:D
if((i-D/2)^2+(j-D/2)^2 <= (D/2)^2)
TeBall(i+1,j+1) = 1;
end
end
end
%腐蚀图像
imag5=imerode(imag4,TeBall);
imag5=rescale(imag5);
imag6=imdilate(imag5,TeBall);
subplot(2,4,5);
imshow(imag5);
title('圆形区域腐蚀图像');
subplot(2,4,6);
imshow(imag6);
title('圆形区域膨胀图像');
%找边缘
imag7=edge(imag6,'Roberts');
edgdilate=uint8(imag7*255);
edgdilate=imdilate(edgdilate,ones(3,3));
subplot(2,4,7);
imshow(edgdilate);
title('图像边缘');
imag8=uint8(edgdilate+src);
subplot(2,4,8);
imshow(imag8);
title('原图像区域边缘分割');
clear;
src0 = imread('F:/image/round.png');
src = rgb2gray(src0);
figure;
subplot(3,3,1);
imshow(src);
title('原图像');
ent = entropyfilt(src);
E = mat2gray(ent);
E=rescale(ent);
subplot(3,3,2);
imshow(E);
title('纹理图像');
bin1 = imbinarize(E);
bin1=rescale(bin1);
subplot(3,3,3);
imshow(bin1);
title('纹理图像二值化');
bin2=bwareaopen(1-bin1,2300,8);
subplot(3,3,4);
bin2=rescale(bin2);
imshow(bin2);
title('提取纹理');
D=30;
TeBall=zeros(D,D);
for i=0:D
for j=0:D
if((i-D/2)^2+(j-D/2)^2 <= (D/2)^2)
TeBall(i+1,j+1) = 1;
end
end
end
closeb=imdilate(bin2,TeBall);
closeb=imerode(closeb,TeBall);
subplot(3,3,5);
imshow(closeb);
title('闭操作图像')
image1=1-closeb;
subplot(3,3,6);
imshow(image1);
title('图像取反');
D=100;
TeBall=zeros(D,D);
for i=0:D
for j=0:D
if((i-D/2)^2+(j-D/2)^2 <= (D/2)^2)
TeBall(i+1,j+1) = 1;
end
end
end
subplot(3,3,7);
image2=imdilate(image1,TeBall);
image2=imerode(image2,TeBall);
imshow(image2);
title('再次闭操作');
imag7=edge(image2,'Roberts');
edgdilate=uint8(imag7*255);
edgdilate=imdilate(edgdilate,ones(3,3));
subplot(3,3,8);
imshow(edgdilate);
title('区域边缘');
imag8=uint8(edgdilate+src);
subplot(3,3,9);
imshow(imag8);
title('原图像区域边缘分割');