形态学图像处理

形态学图像处理

  • 图像腐蚀和膨胀

  腐蚀和膨胀是对二值图像的白色部分(高亮部分)而言的,不是黑色部分而言。

  腐蚀就是原图中的高亮部分被腐蚀即“领域被蚕食”,效果图拥有比原图更小的高亮区域。

  膨胀就是图像中的高亮部分进行膨胀即“领域扩张”,效果图拥有比原图更大的高亮区域。

  按数学方面来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,我们称之为A)与核(我们称之为B)进行卷积。

    •腐蚀

  cv2.erode(img,kernel,iterations=1)参数
  img指要进行处理的二值图像
  kernel是核的大小
  iterations是指要进行腐蚀的次数
import cv2
import numpy as np

def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

img = cv2.imread('pic.png')
kernel = np.ones((3,3),np.uint8)
erode = cv2.erode(img,kernel,iterations=1)
res = np.hstack((img,erode))
cv_show('res',res)

pie = cv2.imread('pie.png')
cv_show('img',pie)
kernel = np.ones((30,30),np.uint8)
erosion_1 = cv2.erode(pie,kernel,iterations=1)
erosion_2 = cv2.erode(pie,kernel,iterations=2)
res = np.hstack((img,erosion_1,erosion_2))
cv_show('img',res)

      •膨胀

      膨胀跟腐蚀对偶

img = cv2.imread('pic.png')
kernel = np.ones((3,3),np.uint8)
dilate = cv2.dilate(img,kernel,iterations=1)
res = np.hstack((img,dilate))
cv_show('res',res)

pie = cv2.imread('pie.png')
cv_show('img',pie)
kernel = np.ones((30,30),np.uint8)
erosion_1 = cv2.dilate(pie,kernel,iterations=1)
erosion_2 = cv2.dilate(pie,kernel,iterations=2)
res = np.hstack((pie,erosion_1,erosion_2))
cv_show('img',res)

  • 开运算和闭运算

    • 开运算

    开运算是图像先腐蚀后膨胀

img = cv2.imread('pic.png')
kernel = np.ones((5,5),np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)
cv_show('img',opening)

    • 闭运算

    闭运算是图像先膨胀后腐蚀

img = cv2.imread('pic.png')
kernel = np.ones((5,5),np.uint8)
closeing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)
cv_show('img',closeing)

  • 梯度运算

  梯度运算是(膨胀-腐蚀)

pie = cv2.imread('pie.png')
kernel = np.ones((7,7),np.uint8)
gradient = cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)
cv_show('img',gradient)

  • 礼帽和黑帽

     • 礼帽

     礼帽是原始输入-开运算

img = cv2.imread('dige.png')
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
res = np.hstack((img,tophat))
cv_show('res',res)

    • 黑帽

    黑帽是闭运算-原始输入

img = cv2.imread('dige.png')
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
res = np.hstack((img,blackhat))
cv_show('res',res)

 

posted @ 2021-02-07 21:05  MMMMinoz  阅读(192)  评论(0编辑  收藏  举报