画像処理: 形態学的処理

一般的な基本的なモルフォロジー操作は次のとおりです。

skimage には、0 ~ 1 のバイナリ イメージ用に最適化されたモルフォロジー演算が含まれており、より高速に実装できます。

骨抽出(画像間引き・画像間引き)

これはモルフォロジー処理の一種で、手書きの骨を抽出するときに使用しました。骨の抽出は、構造的な接続性を確保するという前提の下で画像を洗練します。

API 呼び出し

パッケージにはscikit-image2 つの実装があり、使用方法は次のとおりです。

  • skimage.morphology.skeletonize: 2D、3D、ndarray画像の骨抽出に使用可能
  • skimage.morphology.thin: バイナリ イメージのみ
  • skimage.morphology.medial_axis: バイナリ イメージ。オブジェクトの境界に最も近い点が 1 つ以上ある点のコレクションです。多くの場合、トポロジー ボーンと呼ばれます
from skimage import morphology
import cv2

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转成灰度图
_, img_bin = cv2.threshold(img_gray, 100, 255, cv2.THRESH_BINARY_INV)  # 二值化处理
img_bin[img_bin == 255] = 1  # 将值变成0-1,骨骼提取函数必须要输入01的二值化图象
# 方法一 skeletonize
img_skeleton = morphology.skeletonize(img_bin)  # 骨骼提取
img = img_skeleton.astype(np.uint8) * 255  # 值从01重新映射回0-255
# 方法二 thin
img_thin = thin(img_bin)
img = img_thin.astype(np.uint8)
# 方法三 medial_axis
img_

応用

  1. 手書きの洗練: 数式を認識するとき、プラス記号と除算記号を混同して認識することがよくあるため、除算記号の 2 点ができるだけ離れているように数式イメージを洗練して、それらがとして認識されないようにします。プラス記号 . それは機能しますが、それほど多くはありません。

拡張する

腐食(浸食)

オープン操作→白いシルクハット変身

白いシルクハット:

構造化要素よりも小さい画像内の明るいスポットを返します

クローズドオペレーション→黒シルクハット変身

0 ~ 1 のバイナリ イメージの場合、閉じる操作が速くなります。skimage.morphology.binary_closing

Black Top Hat: Closed Operation - 元の画像

  • skimage.morphology.black_tophat

構造化要素よりも小さい画像内の黒い点を返します

おすすめ

転載: blog.csdn.net/Jiangnan_Cai/article/details/127323342