OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
Hit-or-Miss変換

前のチュートリアル: さらなるモルフォロジー変換
次のチュートリアル: モルフォロジー演算を用いた水平・垂直線の抽出

原著者Lorena García
互換性OpenCV >= 3.0

目標

このチュートリアルでは、Hit-or-Miss変換(Hit-and-Miss変換とも呼ばれる)を用いて、二値画像の中から指定された構成やパターンを見つける方法を学ぶ。この変換は、細線化やプルーニングといったより高度なモルフォロジー演算の基礎にもなっている。

OpenCVの関数 morphologyEx() を使用する。

Hit-or-Missの理論

モルフォロジー演算子は、画像をその形状に基づいて処理する。これらの演算子は、入力画像に1つ以上の構造化要素 (structuring element)を適用して出力画像を得る。基本となる2つのモルフォロジー演算は収縮 (erosion)膨張 (dilation)である。この2つの演算を組み合わせることで、オープニング (opening)クロージング (closing)トップハット (top-hat)変換といった高度なモルフォロジー変換が生成される。これらおよびその他の基本的なモルフォロジー演算について詳しく知りたい場合は、以前のチュートリアル(収縮と膨張)および(より発展的なモルフォロジー変換)を参照すること。

Hit-or-Miss変換は、二値画像の中からパターンを見つけるのに有用である。具体的には、近傍が第1の構造化要素 \(B_1\) の形状に一致し、かつ同時に第2の構造化要素 \(B_2\) の形状には一致しないようなピクセルを見つける。数学的には、画像 \(A\) に適用される演算は次のように表せる。

\[ A\circledast B = (A\ominus B_1) \cap (A^c\ominus B_2) \]

したがって、hit-or-miss演算は次の3つのステップから成る。

  1. 画像 \(A\) を構造化要素 \(B_1\) で収縮する。
  2. 画像 \(A\) の補集合(\(A^c\))を構造化要素 \(B_2\) で収縮する。
  3. ステップ1とステップ2の結果のANDをとる。

構造化要素 \(B_1\) と \(B_2\) は、単一の要素 \(B\) に結合できる。例を見てみよう。

この場合、中心のピクセルが背景に属し、北・南・東・西のピクセルが前景に属するようなパターンを探している。近傍の残りのピクセルはどのような種類でもよく、それらは考慮しない。では、このカーネルを入力画像に適用してみよう。

パターンが画像内のただ1か所で見つかることがわかる。

コード

前の例に対応するコードを以下に示す。

ご覧のとおり、関数 morphologyEx() を演算タイプ MORPH_HITMISS と選択したカーネルとともに使うだけと、非常にシンプルである。

その他の例

以前に使用したのと同じ入力画像に異なるカーネルを適用した出力結果を、ここで確認できる。

では、自分自身のパターンを試してみよう!