![]() |
OpenCV 5.0.0
Open Source Computer Vision
|
前のチュートリアル: さらなるモルフォロジー変換
次のチュートリアル: モルフォロジー演算を用いた水平・垂直線の抽出
| 原著者 | Lorena García |
| 互換性 | OpenCV >= 3.0 |
このチュートリアルでは、Hit-or-Miss変換(Hit-and-Miss変換とも呼ばれる)を用いて、二値画像の中から指定された構成やパターンを見つける方法を学ぶ。この変換は、細線化やプルーニングといったより高度なモルフォロジー演算の基礎にもなっている。
OpenCVの関数 morphologyEx() を使用する。
モルフォロジー演算子は、画像をその形状に基づいて処理する。これらの演算子は、入力画像に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つのステップから成る。
構造化要素 \(B_1\) と \(B_2\) は、単一の要素 \(B\) に結合できる。例を見てみよう。
この場合、中心のピクセルが背景に属し、北・南・東・西のピクセルが前景に属するようなパターンを探している。近傍の残りのピクセルはどのような種類でもよく、それらは考慮しない。では、このカーネルを入力画像に適用してみよう。
パターンが画像内のただ1か所で見つかることがわかる。
前の例に対応するコードを以下に示す。
ご覧のとおり、関数 morphologyEx() を演算タイプ MORPH_HITMISS と選択したカーネルとともに使うだけと、非常にシンプルである。
以前に使用したのと同じ入力画像に異なるカーネルを適用した出力結果を、ここで確認できる。
では、自分自身のパターンを試してみよう!