当前位置:   article > 正文

8、灰度图的腐蚀、膨胀、开闭运算、顶帽底帽_灰度腐蚀

灰度腐蚀

1. 灰度图的腐蚀


用结构元素的中心点,从左到右从上到下,依次扫描灰度图的像素点,图片上该像素点的值取为结构元素所覆盖区域中像素点的 最小值,扫描一遍后会得到一张新图,就是原图的腐蚀图。

用该结构元素:
在这里插入图片描述
对下面矩阵进行腐蚀:
在这里插入图片描述
对第一个像素点的腐蚀操作如下:

在这里插入图片描述在这里插入图片描述
当移动到中间某像素点时腐蚀操作如下:
在这里插入图片描述在这里插入图片描述

2. 灰度图的膨胀


用结构元素的中心点,依次扫描灰度图的每个像素点,图片上该像素点的值取为结构元素覆盖的所有像素点中的 最大值,扫描一遍后会得到一张新图,就是原图的膨胀图。

用该结构元素:
在这里插入图片描述
对下面矩阵进行膨胀:
在这里插入图片描述
对第一个像素点的膨胀操作如下:
在这里插入图片描述在这里插入图片描述
扫描到中间某像素点时的膨胀操作为:
在这里插入图片描述在这里插入图片描述

3. 灰度图的腐蚀膨胀图片示例


下图示例结果表明,对灰度图进行腐蚀操作后,图片整体变暗,由于结构体的选择原因,图片分块颜色相似,有颗粒状的颜色分布;对图片进行膨胀操作后,图片整体变亮,也有块状分布的趋势。
在这里插入图片描述
本例代码:

clear,clc,close all;
f=imread('lemon.jpg');
g=rgb2gray(f);
figure,imshow(g);

se=strel('disk',10);
g_en=imerode(g,se);
figure;
subplot(1,2,1),imshow(g_en),title('腐蚀');
g_di=imdilate(g,se);
subplot(1,2,2),imshow(g_di),title('膨胀');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4. 灰度图开运算闭运算图片示例


观察开运算和闭运算的图像可以看出,经过开运算后,图片先腐蚀后膨胀,图片的整体色调变暗,但是图片中阴影和明亮处的界限并未改变,每一部分的亮部和暗部都更加平滑了。

经过闭运算后,图片先膨胀后腐蚀,图片的整体色调变亮,界限没有改变,明亮也更加平滑了。

在这里插入图片描述
本演示代码为:

clear,clc,close all;
f=imread('lemon.jpg');
g=rgb2gray(f);
figure,imshow(g);

se=strel('disk',10);
g_open=imopen(g,se);
g_close=imclose(g,se);
ge=cat(2,g,g_open,g_close);%cat函数解释在下面
figure,imshow(ge);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
ge = cat(2, g, g_open, g_close);
  • 1

cat 的参数为,cat( num , im1 , im2 , im3 [ ,... ] )

cat 函数是将后面的几张图片拼接为一张,其中 num 为拼接的方式,1代表从上到下拼接,2代表从左向右拼接,3代表从前向后拼接(即将几张图片重叠起来,变为一张图片,后面会有应用)。

5. 顶帽操作

顶帽操作的效果等同于原图-开运算,即原图减去开运算的图像。顶帽用来对灰度图进行操作。函数为:

tophat = imtophat(g, se);
  • 1

顶帽操作通常用来去除背景。等价于 g - g_open

6. 底帽操作

底帽操作的效果等同于原图-闭运算,即原图减去闭运算的图像。底帽用来对灰度图进行操作。函数为:

bothat = imbothat(g, se);
  • 1

:顶帽和底帽操作都是对于灰度图的操作。

7. 顶帽和底帽的应用

对下图进行顶帽和底帽操作,查看效果。
在这里插入图片描述
步骤:

  1. 首先将图片转为灰度图,因为底帽和顶帽操作都是针对灰度图。
    在这里插入图片描述

  2. 直接用函数进行顶帽和底帽操作

    可以看出,顶帽操作只保留了一些高亮的区域,偏暗的部分都被去除了,而后面较亮的背景也被去除。

    根据上面开运算的图可以知道,开运算保留了偏亮部分,用原图减去开运算,只保留高亮的部分。

    闭运算得到的是比较亮的部分,用原图减去闭运算,得到比较暗部的细节。
    在这里插入图片描述
    本例代码为:

    clear,clc,close all;
    f=imread('lemon.jpg');
    imshow(f);
    g=rgb2gray(f);
    figure,imshow(g);
    
    tophat=imtophat(g,strel('disk',10));
    subplot(1,2,1),imshow(tophat),title('顶帽');
    bothat=imbothat(g,strel('disk',10));
    subplot(1,2,2),imshow(bothat),title('底帽');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/86613
推荐阅读
相关标签
  

闽ICP备14008679号