OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
cv::segmentation::IntelligentScissorsMB クラス

Intelligent Scissors image segmentation [詳解]

#include <segmentation.hpp>

公開メンバ関数

CV_WRAP IntelligentScissorsMB & setWeights (float weight_non_edge, float weight_gradient_direction, float weight_gradient_magnitude)
特徴関数の重みを指定[【詳解】(英語]
CV_WRAP IntelligentScissorsMB & setGradientMagnitudeMaxLimit (float gradient_magnitude_threshold_max=0.0f)
グラディエントマグニチュード最大値の閾値を指定[【詳解】(英語]
CV_WRAP IntelligentScissorsMB & setEdgeFeatureZeroCrossingParameters (float gradient_magnitude_min_value=0.0f)
エッジ特徴抽出器を "Laplacian Zero-Crossing "に切り替え、そのパラメータを指定する[【詳解】(英語]
CV_WRAP IntelligentScissorsMB & setEdgeFeatureCannyParameters (double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false)
エッジ特徴抽出器を,Cannyエッジ検出器に切り替えます.[【詳解】(英語]
CV_WRAP IntelligentScissorsMB & applyImage (InputArray image)
入力画像の指定と画像特徴の抽出[【詳解】(英語]
CV_WRAP IntelligentScissorsMB & applyImageFeatures (InputArray non_edge, InputArray gradient_direction, InputArray gradient_magnitude, InputArray image=noArray())
入力画像のカスタム特徴を指定[【詳解】(英語]
CV_WRAP void buildMap (const Point &sourcePt)
画像上の与えられたソースポイントに対する最適なパスのマップを作成します.[【詳解】(英語]
CV_WRAP void getContour (const Point &targetPt, OutputArray contour, bool backward=false) const
画像上の指定されたターゲット点に対する最適な輪郭を抽出します.[【詳解】(英語]
Impl * getImpl () const

限定公開変数類

std::shared_ptr< Impl > impl

詳解

インテリジェントシザース画像分割

このクラスは、画像のセグメンテーションに使用できる2点間のパス(輪郭)を見つけるために使用します。

使用例です。

参考までに"Intelligent Scissors for Image Composition"Eric N. MortensenとWilliam A. Barrett(Brigham Young University)が考案したアルゴリズム[Mortensen95intelligentscissors]を参照してください。

関数詳解

applyImage()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImage ( InputArray image )

入力画像の指定と画像特徴の抽出

引数
image 入力画像を指定します。種類は #CV_8UC1 / #CV_8UC3 です。

applyImageFeatures()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImageFeatures ( InputArray non_edge,
InputArray gradient_direction,
InputArray gradient_magnitude,
InputArray image = noArray()
)

入力画像のカスタム特徴を指定

カスタマイズされた高度なバリアントのapplyImage()を呼び出します。

引数
non_edge 非エッジピクセルのコストを指定します.タイプは CV_8UC1 です.期待される値は{0, 1}.
gradient_direction グラデーション方向の特徴を指定します.タイプは CV_32FC2 です.期待される値は,正規化されます.x^2 + y^2 == 1
gradient_magnitude 勾配の大きさを表す関数のコストを指定します.タイプは CV_32FC1.値は,範囲内でなければいけません.[0, 1].
image オプションパラメータ. 特徴のサブセットを指定する場合には,必ず指定しなければいけません(指定しない特徴は,内部で計算されます).

buildMap()

CV_WRAP void cv::segmentation::IntelligentScissorsMB::buildMap ( const Point & sourcePt )

画像上の与えられたソースポイントに対する最適なパスのマップを作成します.

覚え書き
applyImage()/applyImageFeatures()は,この呼び出しの前に呼び出される必要があります.
引数
sourcePt パスの探索に使われるソースポイント

getContour()

CV_WRAP void cv::segmentation::IntelligentScissorsMB::getContour ( const Point & targetPt,
OutputArray contour,
bool backward = false
) const

画像上の指定されたターゲット点に対する最適な輪郭を抽出します.

覚え書き
buildMap()は,この呼び出しの前に呼び出される必要があります.
引数
targetPt ターゲットポイント
[out]. contour 画像上のソースポイントとターゲットポイントの間の最適なパスを含むピクセルのリスト.型は CV_32SC2 (と互換性があります).std::vector<Point>)
backward 取得されるピクセルの順序が逆であることを示すフラグ(ターゲット点からソース点に向かってポイントを取得する場合は,"true "を利用します).

setEdgeFeatureCannyParameters()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureCannyParameters ( double threshold1,
double threshold2,
int apertureSize = 3,
bool L2gradient = false
)

エッジ特徴抽出器を,Cannyエッジ検出器に切り替えます.

覚え書き
"Laplacian Zero-Crossing" feature extractor is used by default (following to original article)
参照
Canny

setEdgeFeatureZeroCrossingParameters()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureZeroCrossingParameters ( float gradient_magnitude_min_value = 0.0f )

エッジ特徴抽出器を "Laplacian Zero-Crossing "に切り替え、そのパラメータを指定する

記事によると、この特徴抽出器はデフォルトで使用されています。

この実装では、低振幅のノイズがある領域に対する追加のフィルタリングが行われています。このフィルタリングは、最小グラデーション振幅のパラメータで有効になります(小さな値4、8、16を使用)。

覚え書き
この特徴抽出器の現在の実装は、グレースケール画像の処理に基づいています(カラー画像はまずグレースケール画像に変換されます)。
Cannyエッジ検出器は,やや低速ですが,より良い結果が得られます(特にカラー画像の場合):以下を利用しますsetEdgeFeatureCannyParameters().
引数
gradient_magnitude_min_value エッジピクセルに対するグラデーションの大きさの最小値 (デフォルト: 0, チェックは無効)

setGradientMagnitudeMaxLimit()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setGradientMagnitudeMaxLimit ( float gradient_magnitude_threshold_max = 0.0f )

グラディエントマグニチュード最大値の閾値を指定

0の限界値は、グラデーションマグニチュードのしきい値を無効にするために使用されます(デフォルトの動作、オリジナルの記事に記載されています)。それ以外の場合、ピクセルにgradient magnitude >= thresholdはコストゼロです。

覚え書き
しきい値は、不規則な領域を持つ画像に使用する必要があります(埋め込まれたロゴのように、高契約領域からのパラメータに固執するのを避けるため)。
引数
gradient_magnitude_threshold_max グラデーションの大きさの最大値のしきい値を指定します(デフォルト:0、無効)。

setWeights()

CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setWeights ( float weight_non_edge,
float weight_gradient_direction,
float weight_gradient_magnitude
)

特徴関数の重みを指定

重みを正規化しておくことを検討します(重みの合計が1.0になるように) 離散ダイナミックプログラミング(DP)の目標は、ピクセル間のコストの最小化です。

引数
weight_non_edge 非エッジピクセルのコストを指定 (デフォルト: 0.43f)
weight_gradient_direction 勾配方向関数のコストを指定 (デフォルト: 0.43f)
weight_gradient_magnitude 勾配の大きさの関数のコストを指定 (デフォルト: 0.14f)

このクラス詳解は次のファイルから抽出されました: