形态学基本运算——腐蚀、膨胀、开操作、闭操作

形态学,即数学形态学(mathematical Morphology)包括腐蚀(dilation),膨胀(erosion),开操作(opening),闭操作(closing)等。在运算过程中需要利用一定形状的结构元素(structing element)来作为模板,常用的有圆形、方形、菱形、扁平形等。

1. 腐蚀

腐蚀操作的主要目的是使边界缩小,腐蚀能够消融物体的边界,具体的腐蚀结果与图像本身和结构元素的形状有关。
Matlab用imerode函数实现图像腐蚀。用法为:Imerode(X,SE).其中X是待处理的图像,SE是结构元素对象。结构元素的生成可以用strel函数,用法为SE=strel(shape,parameter),shape指定了结构元素的形状,parameter是和输入有关的参数。其中shape的种类有:‘arbitrary’(任意自定义的结构元素)、‘pair’(包含两个点的结构元素)、‘diamond’(菱形结构元素)、‘disk’(圆形结构元素)、‘rectangle’(矩形结构元素)、‘line’(线形结构元素)、‘square’(正方形结构元素)、‘octagon’(八角形结构元素)。
形态学基本运算——腐蚀、膨胀、开操作、闭操作_第1张图片

f = imread('2.jpg');
I=edge_extr(f);
figure;imshow(I);title('腐蚀前');
se = strel('square',5);
Ib = imerode(I,se);
figure;imshow(Ib);title('腐蚀后');

2.膨胀

膨胀操作是与腐蚀操作相反的过程,经过运算之后可以使图像变大,内部空洞变小。在图像二值化的过程中,很容易出现连通区域断裂或孔洞较多的情况,可以用于合并裂缝、填充孔洞。
imdilate函数用于完成图像膨胀,用法为:I = imdilate(I,SE);
形态学基本运算——腐蚀、膨胀、开操作、闭操作_第2张图片

3. 开操作

开操作就是对图像先腐蚀,再膨胀。其中腐蚀与膨胀使用的模板是一样大小的。作用是放大裂缝和低密度区域,消除小物体,在平滑较大物体的边界时,不改变其面积。消除物体表面的突起。
在MATLAB中,以相同的结构元素先后调用imerode和imdilate即可实现开操作,也可以直接使用开运算函数imopen。

4. 闭操作

闭操作就是对图像先膨胀,再腐蚀。作用是排除小型黑洞,突触了比原图轮廓区域更暗的区域,将两个区域连接起来,形成连通域。
在MATLAB中,以相同的结构元素先后调用imdilate和imerode即可实现开操作,也可以直接使用开运算函数imclose。
形态学基本运算——腐蚀、膨胀、开操作、闭操作_第3张图片

f = imread('2.jpg');
I=edge_extr(f); figure;imshow(I);title('原图');
se = strel('square',15);
I1 = imopen(I,se);  figure;imshow(I1);title('开操作');
I2 = imclose(I,se);  figure;imshow(I2);title('闭操作');

除了上面的几个函数之外,也可以使用bwmorph函数对二值图像进行数学形态学运算。用法为 BW2 = bwmorph(BW,operation,n),其中n是执行次数,可以是Inf(无穷大),即一直对该图像做同样的形态学处理直到图像不再发生变化。operation 用于指定进行的形态学处理类型,有以下几种取值:

  • ‘bothat’:进行“bottom hat”形态学运算,即返回闭运算减去源图像的图像;
  • ‘branchpoints’:找到骨架中的分支点;
  • ‘bridge’:进行像素连接操作;
  • ‘clean’:去除图像中孤立的亮点,比如, 一个像素点, 像素值为1, 其周围像素的像素值全为0, 则这个孤立的亮点将被去除;
  • ‘close’:进行形态学闭运算(即先膨胀后腐蚀);
  • ‘diag’: 采用对角线填充, 去除八邻域的背景;
  • ‘dilate’: 使用结构元素ones(3)对图像进行膨胀运算;
  • ‘endpoints’:找到骨架中的结束点;
  • ‘erode’:使用结构元素ones(3)对图像进行腐蚀运算;
  • ‘fill’:填充孤立的黑点, 比如3*3的矩阵, 除了中间元素为0外, 其余元素全部为1, 则这个0将被填充为1;
  • ‘hbreak’:断开图像中的H型连接;
  • ‘majority’:如果一个像素的8邻域中有等于或超过5个像素点的像素值为1, 则将该点像素值置1;
  • ‘open’:进行形态学开运算(即先腐蚀后膨胀);
  • ‘remove’:如果一个像素点的4邻域都为1, 则该像素点将被置0;该选项将导致边界像素上的1被保留下来;
  • ‘skel’:在这里n = Inf,骨架提取但保持图像中物体不发生断裂;不改变图像欧拉数;
  • ‘spur’:去除小的分支, 或引用电学术语“毛刺”;
  • ‘thicken’:在这里n = Inf, 通过在边界上添加像素达到加粗物体轮廓的目的;
  • ‘thin’:在这里n = Inf,进行细化操作;
  • ‘tophat’:进行“top hat”形态学运算, 返回源图像减去开运算的图像。

你可能感兴趣的:(图像处理,图像处理,形态学运算,膨胀腐蚀,开闭操作)