OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
画像セグメンテーション(領域分割)

詳細説明

関数

void cv::grabCut (InputArray img, InputOutputArray mask, Rect rect, InputOutputArray bgdModel, InputOutputArray fgdModel, int iterCount, int mode=GC_EVAL)
 GrabCutアルゴリズムを実行する。
 
void cv::watershed (InputArray image, InputOutputArray markers)
 watershedアルゴリズムを用いてマーカーベースの画像領域分割を行う。
 

関数詳解

◆ grabCut()

void cv::grabCut ( InputArray img,
InputOutputArray mask,
Rect rect,
InputOutputArray bgdModel,
InputOutputArray fgdModel,
int iterCount,
int mode = GC_EVAL )
Python:
cv.grabCut(img, mask, rect, bgdModel, fgdModel, iterCount[, mode]) -> mask, bgdModel, fgdModel

#include <opencv2/imgproc.hpp>

GrabCutアルゴリズムを実行する。

この関数は GrabCut画像セグメンテーションアルゴリズムを実装している。

引数
img入力の8ビット3チャンネルの画像。
mask入出力用の8ビットシングルチャンネルのマスク。mode が GC_INIT_WITH_RECT に設定されている場合、このマスクは関数によって初期化される。その要素は GrabCutClasses のいずれかの値を取りうる。
rectセグメンテーション対象の物体を含むROI。ROIの外側のピクセルは「明らかな背景」としてマークされる。この引数は mode==GC_INIT_WITH_RECT の場合にのみ使用される。
bgdModel背景モデル用の一時配列。同じ画像を処理している間は変更しないこと。
fgdModel前景モデル用の一時配列。同じ画像を処理している間は変更しないこと。
iterCount結果を返す前にアルゴリズムが行う反復回数。結果は mode==GC_INIT_WITH_MASK または mode==GC_EVAL でさらに呼び出すことで精緻化できることに注意。
modeGrabCutModes のいずれかとなる動作モード

◆ watershed()

void cv::watershed ( InputArray image,
InputOutputArray markers )
Python:
cv.watershed(image, markers) -> markers

#include <opencv2/imgproc.hpp>

watershedアルゴリズムを用いて、マーカーベースの画像セグメンテーションを行う。

この関数は、[197] で説明されている、watershed(分水嶺)アルゴリズムの一種であるノンパラメトリックなマーカーベースのセグメンテーション(領域分割)アルゴリズムを実装したものである。

関数に画像を渡す前に、目的とする領域を画像 markers 内で正のインデックス(>0)でおおまかに描いておく必要がある。したがって、各領域はピクセル値1、2、3などを持つ1つ以上の連結成分として表される。このようなマーカーは、findContoursdrawContours を使ってバイナリマスクから取得できる(watershed.cpp のデモを参照)。マーカーは将来の画像領域の「種(シード)」である。markers 内のその他すべてのピクセル(描画された領域との関係が不明で、アルゴリズムによって定義されるべきもの)は0に設定する必要がある。関数の出力では、markers 内の各ピクセルは「シード」成分の値に設定されるか、領域間の境界では-1に設定される。

覚え書き
隣接する2つの連結成分が、必ずしもwatershed境界(-1のピクセル)で分離されるとは限らない。例えば、関数に渡された初期のマーカー画像で互いに接していることがある。
引数
image入力の8ビット3チャンネルの画像。
markersマーカーの入出力用32ビットシングルチャンネル画像(マップ)。image と同じサイズである必要がある。
参照
findContours