美文网首页
144. 基于灰度形态学的纹理分割

144. 基于灰度形态学的纹理分割

作者: 大龙10 | 来源:发表于2025-10-06 07:44 被阅读0次

8. 形态学图像处理索引

一、灰度形态学之纹理分割

  • 形态学的纹理分割是以纹理内容为基础,找到两个区域的边界,将图像分割为不同的区域。

  • 本例中的图像是一幅在亮背景上叠加了暗斑点的噪声图像。图像有两个纹理区域,左侧区域包括一些较小的斑点,而右侧区域包括一些较大的斑点。

  • 由于目标斑点比背景暗,可以用一个尺寸大于较小斑点的圆形结构元对图像进行闭运算,删除较小的斑点,就得到只有大斑点的图像。

  • 再用尺寸大于较大斑点的圆形结构元对图像进行开运算,可以删除较大斑点之间的亮间距,整个图像形成左侧亮色和右侧暗色两个区域。通过形态学梯度运算,就得到两个区域的边界。

  • 最后将形态学梯度获得的边界叠加到原图像上,就实现了左右两种不同纹理的区域分割。

  • 需要注意的是,基于形态学的纹理分割,通常是针对特殊问题设计的,具有很大的局限性。

二、例程

  • 10.35:基于灰度形态学的纹理分割
    # 10.35: 基于灰度形态学的纹理分割
    imgGray = cv2.imread("../images/Fig0943a.tif", flags=0)  # flags=0 灰度图像

    # 根据小斑点直径(25) 设计圆形结构元,用闭运算删除小斑点
    kSize = (20, 20)  # 结构元半径 10,小于小斑点半径
    element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, kSize)  # 圆形结构元
    imgClose1 = cv2.morphologyEx(imgGray, cv2.MORPH_CLOSE, element)  # 灰度闭运算

    kSize = (60, 60)  # 结构元半径 30,大于小斑点半径
    element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, kSize)  # 圆形结构元
    imgClose2 = cv2.morphologyEx(imgGray, cv2.MORPH_CLOSE, element)  # 灰度闭运算

    kSize = (120, 120)  # 结构元半径 60,大于大斑点半径
    element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, kSize)  # 圆形结构元
    imgOpen = cv2.morphologyEx(imgClose2, cv2.MORPH_OPEN, element)  # 灰度开运算

    # 形态学梯度得到区域分割的边界
    kSize = (5, 5)  # 结构元的尺寸
    element = cv2.getStructuringElement(cv2.MORPH_RECT, kSize)  # 矩形结构元
    imgGrad = cv2.morphologyEx(imgOpen, cv2.MORPH_GRADIENT, element)  # 形态学梯度

    # 纹理分割图像重建
    imgRebuild = cv2.bitwise_or(imgGray, imgGrad)  # 计算交集

    plt.figure(figsize=(10, 6))
    plt.subplot(231), plt.axis('off'), plt.title("Origin")
    plt.imshow(imgGray, cmap='gray', vmin=0, vmax=255)
    plt.subplot(232), plt.title("Closing (r=10)"), plt.axis('off')
    plt.imshow(imgClose1, cmap='gray', vmin=0, vmax=255)
    plt.subplot(233), plt.title("Closing (r=30)"), plt.axis('off')
    plt.imshow(imgClose2, cmap='gray', vmin=0, vmax=255)
    plt.subplot(234), plt.title("Region connected"), plt.axis('off')
    plt.imshow(imgOpen, cmap='gray', vmin=0, vmax=255)
    plt.subplot(235), plt.title("Region segmented"), plt.axis('off')
    plt.imshow(imgGrad, cmap='gray', vmin=0, vmax=255)
    plt.subplot(236), plt.title("Region rebuilt"), plt.axis('off')
    plt.imshow(imgRebuild, cmap='gray', vmin=0, vmax=255)
    plt.tight_layout()
    plt.show()

三、资料

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

相关文章

  • 医疗图像分割方法综述

    图像分割的目的就是把目标从背景中提取出来, 分割过程主要基于图像的固有特征, 如灰度、纹理、对比度、亮度、彩色特征...

  • 灰度形态学基本运算

    上海交通大学 医学图像处理 与二值形态学相对应另一种形态学运算是灰度形态学。灰度形态学与二值形态学相比,不仅在图像...

  • 工作思考:纹理特征是否在阴影识别中能够有用?

    1.纹理特征的提取 如何提取图像的纹理特征 ? 现有的纹理特征方法包括: 统计型纹理特征:基于像元及其邻域内的灰度...

  • 大米个数opencv

    算法思路: 1图片灰度化 2ostu阈值分割 3形态学处理,去除细小噪声 4使用canny轮廓提取,根据面积大小作...

  • 灰度形态学算法的实现

    前言 灰度形态学算法中介绍了灰度形态学算法的相关原理,本篇文章将会利用python结合numpy和opencv实现...

  • 2022-01-28

    算法思路:1图片灰度化2ostu阈值分割3形态学处理,去除细小噪声4使用canny轮廓提取,根据面积大小作为约束条...

  • 转《传统图像分割算法概述》

    本文转自图像分割之(一)概述 所谓图像分割指的是根据灰度、颜色、纹理和形状等特征把图像划分成若干互不交迭的区域,并...

  • PaddlePaddle图像分割七日打卡营心得体会

    一、图像分割综述 所谓图像分割指的是根据灰度、颜色、纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在...

  • 灰度形态学的基本应用

    上海交通大学 医学图像处理技术 形态学边缘检测(Edge Detection) 用灰度形态学实现的边缘检测,按照...

  • 基于灰度共生矩阵的图形纹理检测及路面状况的SVM分类实现

    基于灰度共生矩阵的图形纹理检测及路面状况的SVM分类实现 源码地址:https://github.com/Groo...

网友评论

      本文标题:144. 基于灰度形态学的纹理分割

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