美文网首页
136. 灰度腐蚀和灰度膨胀

136. 灰度腐蚀和灰度膨胀

作者: 大龙10 | 来源:发表于2025-09-28 04:46 被阅读0次

8. 形态学图像处理索引

一、灰度级形态学

  • 灰度级形态学将形态学操作从二值图像扩展到灰度图像。灰度形态学处理也有腐蚀、膨胀、开运算、闭运算、顶帽操作、低帽操作等操作,可以实现图像平滑、图像增强、图像分割功能。

  • 把图像像素点的灰度值视为高度,不同的灰度级表示不同的高度,整个图像就像一张高低起伏的地形图。明亮的区域(灰度值大)相当于高山,黑暗的区域(灰度值小)相当于深谷,边缘区域即明亮与黑暗的交界相当于悬崖。

  • 灰度级形态学中的结构元的基本功能与二值形态学中的结构元类似,都是检查图像中的特定结构特征的”探测器“。
    灰度级形态学中的结构元分为平坦结构元和非平坦结构元,这两类结构元具有不同的灰度剖面。

二、灰度腐蚀和灰度膨胀

  • 腐蚀腐蚀使图像中白色高亮部分被腐蚀,“邻域被蚕食”;膨胀使图像中的白色高亮部分进行膨胀,“邻域扩张”。

  • 灰度腐蚀是由结构元确定的邻域中选取图像值与结构元值之差的最小值,灰度膨胀是由结构元素确定的邻域中选取图像值与结构元值之和的最大值。

  • 平坦结构元的高度为零,对灰度图像的腐蚀或膨胀运算,简化为对每个像素在结构元邻域内求图像灰度级的最小值或最大值。
    令f(x,y) 是一幅灰度图像,b(x,y) 是一个平坦结构元。
    当结构元 b 的原点是 (x,y)时,b 对图像 f 在位置 (x,y) 的灰度腐蚀定义为图像 f 与 b 重合区域中的最小值:


  • 对灰度图像进行腐蚀运算,在邻域内求灰度级的最小值,腐蚀后的图像比原图像暗,在比结构元小的区域中的亮特征减少,暗特征变大。
    类似地,当结构元 b 对图像 f 在位置 (x,y) 的灰度膨胀定义为图像 f 与 b ^ \hat{b} 重合区域中的最大值:


    对灰度图像进行膨胀运算,在邻域内求灰度级的最大值,膨胀后的图像比原图像亮,在比结构元小的区域中的暗特征减少,亮特征变大。

三、函数

  • OpenCV 提供了函数 cv.erode 可以实现图像的灰度腐蚀:

cv.erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) → dst

  • OpenCV 提供了函数 cv.dilate 可以实现图像的灰度膨胀:

cv.dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) → dst

  • 函数 cv.getStructuringElement 可以构造不同形状和尺寸的结构元。

cv.getStructuringElement(shape, ksize[, anchor] ) -> retval

参数说明:

  • shape:结构元素形状的类型
    • cv.MORPH_RECT:矩形,全 1 矩阵
    • cv.MORPH_CROSS:交叉型, 十字交叉为 1,其它为 0
    • cv.MORPH_ELLIPSE: 椭圆型,椭圆内为 1,其它为 0
  • ksize:内核的尺寸
  • anchor:卷积核的锚点位置,可选项,默认值 (-1, -1) 表示锚点为中心点
  • retval:返回指定形状和尺寸的结构元素

四、例程

  • 10.26:灰度级形态学之灰度腐蚀
    # 10.26: 灰度级形态学之灰度腐蚀
    imgGray = cv2.imread("../images/Fig0937a.tif", flags=0)  # flags=0 灰度图像

    # 图像腐蚀
    element = cv2.getStructuringElement(cv2.MORPH_CROSS, (3,3))
    imgErode1 = cv2.erode(imgGray, kernel=element)  # 图像腐蚀

    element = cv2.getStructuringElement(cv2.MORPH_CROSS, (5,5))
    imgErode2 = cv2.erode(imgGray, kernel=element)  # 图像腐蚀

    element = cv2.getStructuringElement(cv2.MORPH_CROSS, (9,9))
    imgErode3 = cv2.erode(imgGray, kernel=element)  # 图像腐蚀

    plt.figure(figsize=(10, 5))
    plt.subplot(141), plt.axis('off'), plt.title("Origin")
    plt.imshow(imgGray, cmap='gray', vmin=0, vmax=255)
    plt.subplot(142), plt.title("eroded kSize=(3,3)"), plt.axis('off')
    plt.imshow(imgErode1, cmap='gray', vmin=0, vmax=255)
    plt.subplot(143), plt.title("eroded kSize=(9,9)"), plt.axis('off')
    plt.imshow(imgErode2, cmap='gray', vmin=0, vmax=255)
    plt.subplot(144), plt.title("eroded kSize=(25,25)"), plt.axis('off')
    plt.imshow(imgErode3, cmap='gray', vmin=0, vmax=255)
    plt.tight_layout()
    plt.show()

五、资料

youcans_的博客:
https://blog.csdn.net/youcans/article/details/123565619

相关文章

  • 第 5 章 用形态学运算变换图像

    本章包括以下内容: 用形态学滤波器腐蚀和膨胀图像; 用形态学滤波器开启和闭合图像; 在灰度图像中应用形态学运算; ...

  • 【图像处理】直方图均衡与匹配

    灰度直方图 灰度直方图: 图像灰度直方图描述的是图像各个灰度级的统计特性,横坐标表示各级灰度值,纵坐标表示各级灰度...

  • 形态学滤波

    数字形态学是图像处理的基本理论,这里简单介绍一下基本的形态学运算,针对的是灰度图像,包括:腐蚀与膨胀,开闭运算,形...

  • 实现一套灰度发布系统需要考虑哪些问题?

    要了解一个灰度发布系统的功能,个人觉得有必要先了解灰度发布的概念定义和灰度发布流程,从概念和流程中明确灰度的目的并...

  • 9.4直方图均衡化

    原图 原图直方图 灰度图 灰度直方图 均衡灰度图 均衡灰度直方图 均衡彩色图 均衡彩色直方图

  • 2、灰度变换函数

    1、imadjust 和 stretchlim imadjust 用于对灰度级图像进行灰度变换。 除了 f 和 ...

  • 图片处理-opencv-6.灰度直方图

    灰度直方图 定义: 灰度直方图(histogram)是灰度级的函数,描述的是图像中每种灰度级像素的个数,反映图像...

  • Java基于opencv实现图像数字识别(三)—灰度化和二值化

    Java基于opencv实现图像数字识别(三)—灰度化和二值化 一、灰度化 灰度化:在RGB模型中,如果R=G=B...

  • 基础 - 话术

    灰度图灰度图 RGB 三个值相同的图片,灰度的方法有=R、=G、=B、平均、加权平均等。 [灰度化] (https...

  • 49. 灰度直方图源码

    灰度直方图绘制步骤: 读取维度信息 读取灰度图片 灰度值计数与归一化 设置横纵坐标 显示灰度直方图 原图片维度信息...

网友评论

      本文标题:136. 灰度腐蚀和灰度膨胀

      本文链接:https://www.haomeiwen.com/subject/pddwzjtx.html