形态学滤波(Morphological Filter)
变形操作:
a,b为位置,a+b为向量操作
- 膨胀(Dilation)
A为图像:
B为结构原素:
则A被B膨胀定义如下:
膨胀操作会使原本图像目标变粗。
- 腐蚀(Erosion)
腐蚀操作与膨胀操作效果相反,会使目标物体向内收缩。A被B腐蚀的操作过程可理解为:
代码如下:
clear;close all;
img = imread('thin.png');
img = 255-rgb2gray(img);
figure('name','Morphological')
subplot(221);
imshow(img);
title('原图')
se = strel('ball',5,6); %定义B
%膨胀操作
dilatedimg = imdilate(img,se);
subplot(222);
imshow(dilatedimg);
title('膨胀操作');
%腐蚀操作
erodedimg = imerode(img,se);
subplot(223)
imshow(erodedimg);
title('腐蚀操作')
通常,由于噪声的影响,图像在阈值化后所得到的边界往往是很 不平滑的,物体区域有一些噪声孔,背景区域上散布着一些小的噪声物体。连续的开合闭运算可以有效地改善这种情况。有时需要讲过多次腐蚀之后加上相同次数的膨胀,才可以产生比较好的效果。
-开运算(Opening)
先腐蚀后膨胀的操作成为开运算。用来消除小物体、在纤细点出分离物体、平滑较大物体的边界的同时并不明显地改变面积。
-闭运算(Closing)
先膨胀后腐蚀的操作成为闭运算。用来填充物体内的细小空洞、连接邻近物体、平滑其边界的同时不明显改变其面积。
实例如下:
实例代码:
clear;close all;
img = imread('apple.jpg');
img = 255-rgb2gray(img);
figure('name','Open');
subplot(221);
imshow(img);
title('原图')
se = strel('ball',5,5);
%开操作
openedimg = imopen(img,se);
subplot(222);
imshow(openedimg);
title('开操作');
%闭操作
closedimg = imclose(img,se);
subplot(223);
imshow(closedimg);
title('闭操作');