• 形态学操作—膨胀


      在 OpenCV 中,图像形态学操作是一组基于图像形状的处理技术,其中膨胀(Dilation)是其中之一。膨胀操作可用于图像处理中的特征增强、去噪、分割和边缘检测等。其基本原理是利用结构元素(Kernel 或 Structuring Element)对图像进行局部区域的最大值操作,将核与图像进行卷积,用核的最大值替代当前像素值,从而使目标物体区域扩张。膨胀操作可以根据具体的应用场景选择不同的结构元素大小和形状,以达到最佳效果。
      膨胀操作的数学定义为:对于图像 A A A 和结构元素 B B B,膨胀操作可表示为 A ⊕ B A \oplus B AB,其中膨胀操作可以用以下数学公式表示:
    ( A ⊕ B ) ( x , y ) = ⋃ ( i , j ) ∈ B A ( x + i , y + j ) (A \oplus B)(x, y) = \bigcup_{(i, j) \in B} A(x + i, y + j) (AB)(x,y)=(i,j)BA(x+i,y+j)
      其中, ( x , y ) (x, y) (x,y) 是图像 A A A 上的像素坐标, ( i , j ) (i, j) (i,j) 是结构元素 B B B 的坐标。
      在 OpenCV 中,你可以使用 cv2.dilate() 函数来进行图像的膨胀操作。以下是一个简单的 Python 代码示例,演示如何使用 OpenCV 进行图像膨胀操作:

    import cv2
    import numpy as np
    
    def show_images(image):
        cv2.namedWindow('image',cv2.WINDOW_KEEPRATIO)
        cv2.imshow('image',image)
        cv2.waitKey()
        cv2.destroyAllWindows()
    
    def Dilated(image):
        # 定义膨胀操作的结构元素(这里使用3x3的矩形结构元素)
        kernel = np.ones((3, 3), np.uint8)
    
        # 进行膨胀操作
        dilated_image = cv2.dilate(image, kernel, iterations=1)
        return dilated_image
    
    if __name__ == '__main__':
        # 读取图像
        img = cv2.imread('cat-dog.png', flags=0)
        re_img=Dilated(img)
        # top_row = np.hstack((img, re_img[0]))
        # bottom_row = np.hstack((re_img[1], re_img[2])) #水平
        # combined_img = np.vstack((img, re_img))# 垂直
        combined_img=np.hstack((img,re_img))
        show_images(combined_img)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    适用场景:

    • 边缘检测:膨胀操作可以使边缘更加连续和明显,有助于后续的边缘检测。
    • 填充小的空洞:对于目标物体中的小空洞或断裂区域,膨胀操作可以帮助连接这些区域,使其更加完整。
    • 去除小的噪点:可以通过合适的结构元素尺寸,去除图像中的小噪点。
  • 相关阅读:
    ES6数组新增属性
    OpenCore Legacy Patcher 2.0.0 发布,83 款不受支持的 Mac 机型将能运行最新的 macOS Sequoia
    orthofinder直系同源蛋白分析及结果处理
    【OpenCV-Torch-dlib-ubuntu】Vm虚拟机linux环境摄像头调用方法与dilb模型探究
    LwIP介绍
    高项 08 人力资源管理
    微信全场景解决方案 | 竹云IDaaS
    【1day】用友移动管理系统任意文件上传漏洞学习
    SQL高级
    Springboot框架中使用 Redis + Lua 脚本进行限流功能
  • 原文地址:https://blog.csdn.net/qq_50993557/article/details/134560737