• 图像运算和图像增强三


    图像运算和图像增强

    1.图像形态学处理之腐蚀和膨胀

    (1)形态学理论知识
    常见的图像形态学运算:腐蚀、开运算(Opening Operation)、闭运算(Closing Operation)、梯度运算(Morphological
    Gradient)、顶帽运算(Top Hat)、黑帽运算(Black Hat)
    dst = cv2.morphologyEx(src, model, kernel)
    (2)图像腐蚀(去噪A-B)
    图像的腐蚀(Erosion)和膨胀(Dilation)是两种基本的形态学运算,主
    要用来寻找图像中的极小区域和极大区域。将图像中的高亮区域或白色部分进行缩减细化,其运行结果比原图的高亮区域更小。
    dst = cv2.erode(src, kernel, iterations)
    src原始图像,kernel卷积核,interations迭代次数1

    import cv2
    import numpy as np
    # 读取图片
    src=cv2.imread('test01.jpg',cv2.IMREAD_UNCHANGED)
    #设置卷积核
    kernel=np.ones((5,5),np.uint8)
    #图像腐蚀处理
    erosion=cv2.erode(src,kernel)
    #显示图像
    cv2.imshow('src',src)
    cv2.imshow('result',erosion)
    #等待显示
    cv2.waitKey(0)
    cv2.destoryAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述
    (3)图像膨胀
    图像膨胀是腐蚀操作的逆操作,类似于“领域扩张”,它将图像中的高亮区域或白色部分进行扩张,其运行结果比原图的高亮区域更大。图像被腐蚀处理后,它将去除噪声,但同时会压缩图像,而图像膨胀操作可以去除噪声并保持原有形状。
    在这里插入图片描述

    import cv2
    import numpy as np
    # 读取图片
    src=cv2.imread('指纹.jpg',cv2.IMREAD_UNCHANGED)
    #设置卷积核
    kernel=np.ones((5,5),np.uint8)
    #图像腐蚀处理
    erosion=cv2.dilate(src,kernel)
    #显示图像
    cv2.imshow('src',src)
    cv2.imshow('result',erosion)
    #等待显示
    cv2.waitKey(0)
    cv2.destoryAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    2.图像形态学处理之开运算、闭运算和梯度运算

    (1)开运算、闭运算
    开运算一般能平滑图像的轮廓,削弱狭窄部分,去掉较细的突出。闭运算也是平滑图像的轮廓,与开运算相反,它一般熔合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。
    图像开运算是图像依次经过腐蚀、膨胀处理的过程,图像被腐蚀后将去除噪声,但同时也压缩了图像,接着对腐蚀过的图像进行膨胀处理,可以在保留原有图像的基础上去除噪声。
    图像闭运算是图像依次经过膨胀、腐蚀处理的过程,先膨胀后腐蚀有助于过滤前景物体内部的小孔或物体上的小黑点。

    import cv2 
    import numpy as np 
    #读取图片
    src = cv2.imread('test01.png', cv2.IMREAD_UNCHANGED)
    #读取图片
    src1 = cv2.imread('test02.png', cv2.IMREAD_UNCHANGED)
    
    #设置卷积核,卷积核越大图像处理越越干净
    kernel = np.ones((5,5), np.uint8)
    kernel1 = np.ones((10,10), np.uint8)
    
    #图像开运算
    result = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)
    #图像闭运算
    result1 = cv2.morphologyEx(src1, cv2.MORPH_CLOSE, kernel1)
    
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    cv2.imshow("src1", src1)
    cv2.imshow("result1", result1)
    
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 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

    在这里插入图片描述
    在这里插入图片描述
    (2)图像梯度运算
    图像梯度运算是图像膨胀处理减去图像腐蚀处理后的结果,从而得到图像的轮廓,主要调用 morphologyEx()实现
    在这里插入图片描述

    import cv2 
    import numpy as np 
    #读取图片
    src = cv2.imread('test03.png', cv2.IMREAD_UNCHANGED)
    #设置卷积核
    kernel = np.ones((10,10), np.uint8)
    #图像梯度运算
    result = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    3.图像形态学处理之顶帽运算和底帽运算

    (1)图像顶帽运算
    图像顶帽运算是用一个结构元通过开运算从一幅图像中删除物体,顶帽运算用于暗背景上的亮物体,它的一个重要用途是校正不均匀光照的影响。dst = cv2.morphologyEx(src,cv2.MORPH_TOPHAT, kernel)
    在这里插入图片描述

    import cv2 
    import numpy as np 
    #读取图片
    src = cv2.imread('test01.png', cv2.IMREAD_UNCHANGED)
    #设置卷积核
    kernel = np.ones((10,10), np.uint8)
    #图像顶帽运算
    result = cv2.morphologyEx(src, cv2.MORPH_TOPHAT, kernel)
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述
    (2)图像底帽运算
    图像底帽运算是用一个结构元通过闭运算从一幅图像中删除物体,常用于校正不均匀光照的影响。dst=cv2.morphologyEx(src,cv2.MORPH_BLACKHAT, kernel)
    在这里插入图片描述

    import cv2 
    import numpy as np
    #读取图片
    src = cv2.imread('test02.png', cv2.IMREAD_UNCHANGED)
    #设置卷积核
    kernel = np.ones((10, 10), np.uint8)
    #图像黑帽运算
    result = cv2.morphologyEx(src, cv2.MORPH_BLACKHAT, kernel)
    #显示图像
    cv2.imshow("src", src)
    cv2.imshow("result", result)
    #等待显示
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

  • 相关阅读:
    G1D6-Intriguing properties of neural networks&&&AttacKG&美亚2021
    哪些数据应该先治理
    10、MySQL——子查询
    2023考研该如何复习备考,需要注意哪些问题
    全息干涉图补零尺寸与三种重构方法重建像间的关系研究
    SQL ZOO —— 6 JOIN
    【数据结构】时间复杂度和空间复杂度的计算
    二、PHP函数
    【Android 屏幕适配】屏幕适配通用解决方案 ② ( 自定义组件解决方案 | 需要解决的问题 : 设计稿坐标数据转为屏幕真实坐标数据 | 实现步骤 )
    shell脚本的变量
  • 原文地址:https://blog.csdn.net/come_closer/article/details/127348956