2018.5.10
转载自 https://blog.csdn.net/yangleo1987/article/details/53168423
感谢作者 ,作者写得特别好
一.最基本两个形态学运算----膨胀与腐蚀
膨胀与腐蚀能够实现以下作用:
1.消除噪声
2.分割出独立的图像元素,在图像中连接相邻的元素
3.寻找图像中的明显的极大值区域或者极小值区域
4.求出图像的梯度
需要注意之处: 腐蚀和膨胀都是对图像的白色部分(高亮部分)而言。膨胀是图像中的高亮部分进行膨胀,类似于领域扩张,效果图拥有比原图更大的高亮区域;腐蚀是原图的高亮部分被腐蚀,类似于领域被蚕食,效果图拥有比原图更小的高亮区域。
从数学的角度来说,膨胀和腐蚀操
作就是将图像与核进行卷积,核可以是任意形状和大小的。
膨胀代码如下:
clc;
vidObj = VideoReader('traffic.avi');
B=[0 1 0
1 1 1
0 1 0];
for k=1:1 %读取前1帧
frame = read(vidObj, k);
frame = rgb2gray(frame); %彩色图像灰度化
A1 = imdilate(frame, B); %图像被结构元素B膨胀
A2 = imdilate(A1, B); %图像被结构元素B二次膨胀
A3 = imdilate(A2, B); %图像被结构元素B三次膨胀
subplot(221) ; imshow(frame);
title('图像原始图像');
subplot(222) ; imshow(A1);
title('图像第一次膨胀');
subplot(223) ; imshow(A2);
title('图像二次膨胀');
subplot(224) ; imshow(A3);
title('图像三次膨胀');
end
效果图:
腐蚀代码如下:
clc;
Vid = VideoReader('traffic.avi');
frame = read(Vid,20);
frame = rgb2gray(frame);
subplot(221),imshow(frame);
title('原始图像');
se1 = strel('disk',5); %创建一个半径为5的平坦型圆盘结构的元素
A1 = imerode(frame, se1);
subplot(222), imshow(A1);
title('使用结构原始disk(5)腐蚀图像');
se2 = strel('disk',10);
A2 = imerode(frame,se2);
subplot(223),imshow(A2);
title('使用结构原始disk(10)腐蚀图像');
效果图: