数学形态图像处理的方法基本有膨胀,腐蚀,开运算,闭运算
- 腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点;
- 膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。
- 开运算是先腐蚀后膨胀的过程,可以消除图像上细小的噪声,并平滑物体边界。
- 闭运算是先膨胀后腐蚀的过程,可以填充物体内细小的空洞,并平滑物体边界。
clc,clear
I=imread('circbw.tif');
imshow(I),title('原始图像');
%腐蚀操作
se=strel('square',3);
Ie=imerode(I,se);
figure,imshow(Ie),title('腐蚀之后的图像');
%膨胀操作
Id=imdilate(I,se);
figure,imshow(Id),title('膨胀之后的图像');
%开运算——先腐蚀后膨胀
Io=imdilate(Ie,se);
figure,imshow(Io),title('开运算之后的图像');
%闭运算——先膨胀后腐蚀
Ic=imerode(Id,se);
figure,imshow(Ic),title('闭运算之后的图像');
%边缘提取--第1种方法,原图减去腐蚀之后的结果
Iout1=I-Ie;
figure,imshow(Iout1),title('边界提取之后的图像');
%边缘提取--第2种方法,bwperim()
Iout1=bwperim(I,4);
figure,imshow(Iout1),title('bwperim边界提取之后的图像');
运行结果:
进行周长的计算(手动估算,边界提取计算,自带的周长计算函数):
clc,clear
I=imread('C:\Users\admin\Desktop\圆形黑白图.bmp');
imshow(I)
imtool(I)
%估算周长为:338px * pi--1061px
%边界提取求周长--953px
[width,height]=size(I);
Iout1=bwperim(I,4);
figure,imshow(Iout1),title('bwperim边界提取之后的图像');
pxNum=0;
for i =1:width
for j =1:height
if(Iout1(i,j)>0 )
pxNum=pxNum+1;
end
end
end
%matlab自带函数求周长--1058px
p=regionprops(I,'Perimeter');