OCV_Watershedプラグイン

 17th October 2021 at 1:34pm

原理の説明、サンプルマクロの画像と画像処理アルゴリズムは、Image Segmentation with Watershed Algorithmを元にしています。

「Watershedアルゴリズム」の原理の説明

グレースケール画像は、高輝度ピクセルは山頂や丘を、低輝度ピクセルは谷を、示す地形図として見ることができます。

孤立したすべての谷(領域の最小輝度ピクセル)に異なる色の水(ラベル)を塗りつぶし始めます。近くの山(勾配)に応じて、水位が上がるにつれて、異なる色の異なる谷の水が合流し始めます。それを避けるために、水が合流する場所に壁を作ります。

すべてのピークが水面に達するまで、壁を埋める作業を続けます。作成した壁によって地形図(画像)を分割することができます。これが「Watershedアルゴリズム」です。(the CMM HomepageのアニメーションGIFを見ると理解しやすいと思います。)

ただし、画像内のノイズやその他の不規則性により、セグメント化が失敗する場合(過分割など)があります。

そこで、OpenCVはマーカーベースの「Watershedアルゴリズム」を実装しています。マーカーは、すべての谷の位置がマージされるかどうかを指定します。

具体的には、それぞれの谷に異なるラベルを与えます。フォアグラウンドであると確定している各領域と、背景であると確定している領域にラベルを付けます。そして、不確定な領域を0でラベル付けします。OpenCVの「Watershedアルゴリズム」を適用すると、マーカーは与えられたラベルで更新され、オブジェクトの境界は-1の値になります。

サンプル

サンプルマクロを用意しました。以下の手順で試してください。

  • こちらからzipファイルをダウンロードしてください。
  • 全て展開します。
  • water_coins.pngOCV_Watershed_Macro.txt、「File -> Open」で開きます。
  • OCV__LoadLibraryを実行します。
  • OCV_Watershed_Macro.txtを、「Macros -> Run Macro」で実行してください。


HomeへIJToolsUsingOpenCVへ