Opencv画像形態操作(腐食+拡張)

  • 画像の黒い領域が腐食し、大きくなり
    ます。腐食の影響は、画像を「薄く」することです。原則は、元の画像の小さな領域で極小値をとることです。このカーネルは、モルフォロジー演算が実際には畳み込みによって実装されるため、構造要素とも呼ばれます。構造要素は、長方形/楕円/十字にすることができます。cv2.getStructuringElement()を使用して、次のようなさまざまな形状の構造要素を生成できます。kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 矩形结构 kernel
    ここに画像の説明を挿入
image = imread('image.jpg')
show(image)

ここに画像の説明を挿入

image = imread('image.jpg')
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(image,kernel)

show(erosion)

ここに画像の説明を挿入

  • 画像の拡大は腐食の反対です。極大値が取られます。効果は画像を「太く」することです:(白い領域が大きくなります)
dilation = cv2.dilate(image,kernel)
show(dilation)

ここに画像の説明を挿入

  • 開放操作
    開放操作
    開放操作と呼ばれ(最初の腐食により物体が分離するため覚えやすいため)、その機能は物体を分離して小さな領域を排除することです。この種の形態操作はcv2.morphologyExC関数で実装されます。
image2 = imread('image2.jpg')
show(image2)

ここに画像の説明を挿入

# 开运算去除白点
opening = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel)
show(opening)
  • 閉鎖操作
    閉鎖操作は反対です。最初に膨張してから腐食します(最初に膨張すると白い部分が膨張して、オブジェクトの小さなブラックホールが除去/「閉じ」られるため、閉鎖操作と呼ばれます。
# 闭运算去除黑点
closing = cv2.morphologyEx(image2, cv2.MORPH_CLOSE, kernel)
show(closing)

ここに画像の説明を挿入

# 开闭运算去除黑白点
closing = cv2.morphologyEx(image2, cv2.MORPH_OPEN, kernel)
opening = cv2.morphologyEx(closing, cv2.MORPH_CLOSE, kernel)
show(opening)

ここに画像の説明を挿入

  • 勾配形態勾配
    拡張マップから侵食マップ、膨張-侵食を差し引いたもの。これにより、オブジェクトのホイール鄏が取得されます。
gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)
show(gradient)

ここに画像の説明を挿入

  • 開封操作を差し引いた後の白い帽子の元の画像:src-openingは、開封操作によって除去された白い点を表示することと同じです
# 得到opening去除的部分
tophat = cv2.morphologyEx(image2, cv2.MORPH_TOPHAT, kernel)
show(tophat)

ここに画像の説明を挿入

  • ブラックハットクローズ操作後の画像から元の画像を減算します。closeing-srcは、クローズ操作によって除去された黒い点を表示することと同じです。
# 得到closing去除的部分
blackhat = cv2.morphologyEx(image2, cv2.MORPH_BLACKHAT, kernel)
show(blackhat)

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/cyj5201314/article/details/114990422