第九章 形态学图像处理

文章目录

  • 9形态学图像处理
    • 9.2腐蚀与膨胀
      • 9.2.1腐蚀
      • 9.2.2膨胀
    • 9.3开操作和闭操作
    • 9.5一些基本形态学方法
      • 9.3.1边界提取
    • 9.6灰度级形态学
      • 9.6.3一些基本的形态学算法

9形态学图像处理

9.2腐蚀与膨胀

9.2.1腐蚀

img=cv2.imread('dige.png',0)
kernel = np.ones((3,3),np.uint8) 
num=[[]]*6
for i in range(6):
    num[i] = cv2.erode(img,kernel,iterations = i)
plt_show(num[0],num[1],num[2],num[3],num[4],num[5])

第九章 形态学图像处理_第1张图片

可看出腐蚀操作使得线条变细直至消失

9.2.2膨胀

img=cv2.imread('dige.png',0)
kernel = np.ones((3,3),np.uint8) 
num=[[]]*6
for i in range(6):
    num[i] = cv2.dilate(img,kernel,iterations = i)
plt_show(num[0],num[1],num[2],num[3],num[4],num[5])

第九章 形态学图像处理_第2张图片

可看出线条不断变粗

9.3开操作和闭操作

  • 开运算:先腐蚀,后膨胀
  • 闭运算:先膨胀,后腐蚀
kernel = np.ones((5,5),np.uint8) 
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
plt_show(img,opening,closing)

第九章 形态学图像处理_第3张图片

9.5一些基本形态学方法

9.3.1边界提取

β ( A ) = A − ( A ⊖ B ) \beta\left(A\right) =A-\left(A\ominus B\right) β(A)=A(AB)

# 原图-腐蚀
a=cv2.imread('am.png',0)
kernel = np.ones((3,3),np.uint8) 
a2=cv2.erode(a,kernel,iterations = 1)
plt_show(a,a2,a-a2)

第九章 形态学图像处理_第4张图片

9.6灰度级形态学

9.6.3一些基本的形态学算法

形态学梯度:膨胀-腐蚀

img=cv2.imread('am.png',0)
kernel = np.ones((3,3),np.uint8) 
dilate = cv2.dilate(img,kernel,iterations = 1)
erosion = cv2.erode(img,kernel,iterations = 1)
img2=dilate-erosion
plt_show(img,dilate,erosion,img2)

第九章 形态学图像处理_第5张图片

上图中,(膨胀-腐蚀)可得出梯度(最后一幅图)

礼帽与黑帽

  • 礼帽 = 原始输入-开运算结果(取’刺’)
  • 黑帽 = 闭运算-原始输入(取’整体’)
img = cv2.imread('dige.png')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, np.ones((7,7),np.uint8) )
blackhat  = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, np.ones((15,15),np.uint8) )
plt_show(img,tophat,blackhat)

第九章 形态学图像处理_第6张图片

你可能感兴趣的:(图像处理,opencv,计算机视觉)