OpenCV+python膨張と腐食を実現する例


1,概念及び原理:
膨張(Dilating)(または)
(1)画像Aと任意の形状のカーネル(B)は、一般的に正方形または円形で畳み込みます。
(2)カーネルBには定義可能なアンカーポイントがあり、通常はカーネルの中心点と定義されている。
(3)膨張操作を行う場合は、カーネルBを画像Aになぞり、カーネルBの被覆領域の最大の相素値を抽出し、アンカー位置の相素に代えます。この最大化動作は、画像内の明るい領域から「拡張」を開始することになることは明らかである(したがって、用語拡張dilationがある)。
3*3のカーネルを例にとると、
在这里插入图片描述
在这里插入图片描述
腐食(Ending)
(1)形態学的操作家族に腐食し、膨張操作する双子姉妹。それは内核被覆下の相素の最小値を抽出した。
(2)腐食操作を行う場合は、カーネルBを画像に切り、カーネルBの被覆領域の最小の相素値を抽出し、アンカーポイント位置の相素に代えます。
在这里插入图片描述
在这里插入图片描述
注意すべきは、腐食と膨張は白い部分(ハイライト部分)にとって、黒い部分ではありません。膨張とは、画像のハイライト部分を膨張させ、「近傍拡張」となり、効果図は原図よりも大きなハイライト領域を持つ。腐食とは原図のハイライト部分が腐食され、「隣の領域が蚕食されている」というもので、効果図は原図より小さい明るいエリアを持っています。
ソースコード:

import cv2 as cv
import numpy as np


def erode_demo(image):
  # print(image.shape)
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
  #cv.imshow("binary", binary)
  kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))#            
  dst = cv.erode(binary, kernel)#    
  cv.imshow("erode_demo", dst)


def dilate_demo(image):
  #print(image.shape)
  gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
  ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
  #cv.imshow("binary", binary)
  kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))#            
  dst = cv.dilate(binary, kernel)#    
  cv.imshow("dilate_demo", dst)



src = cv.imread("F:/images/test01.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
erode_demo(src)
dilate_demo(src)

cv.waitKey(0)

cv.destroyAllWindows()
実行結果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ここで、OpenCV+pythonの膨張と腐食を実現する例についての記事を紹介します。OpenCVの膨張と腐食に関する詳細については、以前の記事を検索してください。また、下記の関連記事をご覧ください。これからもよろしくお願いします。