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

Intelligent Scissors による画像セグメンテーション(領域分割)。 続きを読む...

#include <opencv2/photo/segmentation.hpp>

Collaboration diagram for cv::segmentation::IntelligentScissorsMB:

公開メンバ関数

 IntelligentScissorsMB ()
 
IntelligentScissorsMBapplyImage (InputArray image)
 入力画像を指定し、画像特徴を抽出する。
 
IntelligentScissorsMBapplyImageFeatures (InputArray non_edge, InputArray gradient_direction, InputArray gradient_magnitude, InputArray image=noArray())
 入力画像のカスタム特徴を指定する。
 
void buildMap (const Point &sourcePt)
 画像上の指定された始点に対する最適経路のマップを準備する。
 
void getContour (const Point &targetPt, OutputArray contour, bool backward=false) const
 画像上の指定された目標点に対する最適輪郭を抽出する。
 
IntelligentScissorsMBsetEdgeFeatureCannyParameters (double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false)
 エッジ特徴抽出器をCannyエッジ検出器を使用するように切り替える。
 
IntelligentScissorsMBsetEdgeFeatureZeroCrossingParameters (float gradient_magnitude_min_value=0.0f)
 "Laplacian Zero-Crossing" エッジ特徴抽出器に切り替え、その引数を指定する。
 
IntelligentScissorsMBsetGradientMagnitudeMaxLimit (float gradient_magnitude_threshold_max=0.0f)
 勾配強度の最大値しきい値を指定する。
 
IntelligentScissorsMBsetWeights (float weight_non_edge, float weight_gradient_direction, float weight_gradient_magnitude)
 特徴関数の重みを指定する。
 

詳細説明

Intelligent Scissors による画像セグメンテーション(領域分割)。

このクラスは、画像セグメンテーション(領域分割)に利用できる、2点間の経路(輪郭)を求めるために使用する。

使用例:

tool.setEdgeFeatureCannyParameters(16, 100) // using Canny() as edge feature extractor
// calculate image features
tool.applyImage(image);
// calculate map for specified source point
Point source_point(200, 100);
tool.buildMap(source_point);
// fast fetching of contours
// for specified target point and the pre-calculated map (stored internally)
Point target_point(400, 300);
std::vector<Point> pts;
tool.getContour(target_point, pts);

参考文献: Eric N. Mortensen と William A. Barrett(ブリガムヤング大学)によって設計された "Intelligent Scissors for Image Composition" アルゴリズム [206]

構築子と解体子の詳解

◆ IntelligentScissorsMB()

cv::segmentation::IntelligentScissorsMB::IntelligentScissorsMB ( )
Python:
cv.segmentation.IntelligentScissorsMB() -> <segmentation_IntelligentScissorsMB object>

メンバ関数詳解

◆ applyImage()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImage ( InputArray image)
Python:
cv.segmentation.IntelligentScissorsMB.applyImage(image) -> retval

入力画像を指定し、画像特徴を抽出する。

引数
image入力画像。型は CV_8UC1 / CV_8UC3

◆ applyImageFeatures()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImageFeatures ( InputArray non_edge,
InputArray gradient_direction,
InputArray gradient_magnitude,
InputArray image = noArray() )
Python:
cv.segmentation.IntelligentScissorsMB.applyImageFeatures(non_edge, gradient_direction, gradient_magnitude[, image]) -> retval

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

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

引数
non_edge非エッジピクセルのコストを指定する。型は CV_8UC1。期待される値は {0, 1}
gradient_direction勾配方向の特徴を指定する。型は CV_32FC2。値は正規化されていることが期待される: x^2 + y^2 == 1
gradient_magnitude勾配強度関数のコストを指定する: 型は CV_32FC1。値は [0, 1] の範囲内であること。
image省略可能な引数。特徴のサブセットを指定する場合は指定しなければならない(指定されなかった特徴は内部で計算される)
この関数の呼び出しグラフ:

◆ buildMap()

void cv::segmentation::IntelligentScissorsMB::buildMap ( const Point & sourcePt)
Python:
cv.segmentation.IntelligentScissorsMB.buildMap(sourcePt) -> None

画像上の指定された始点に対する最適経路のマップを準備する。

覚え書き
この呼び出しの前に applyImage() / applyImageFeatures() を呼び出さなければならない
引数
sourcePt経路を求めるために使用する始点

◆ getContour()

void cv::segmentation::IntelligentScissorsMB::getContour ( const Point & targetPt,
OutputArray contour,
bool backward = false ) const
Python:
cv.segmentation.IntelligentScissorsMB.getContour(targetPt[, contour[, backward]]) -> contour

画像上の指定された目標点に対する最適輪郭を抽出する。

覚え書き
この呼び出しの前に buildMap() を呼び出さなければならない
引数
targetPt目標点
[out]contour画像の始点と目標点の間の最適経路を構成するピクセルのリスト。型は CV_32SC2(std::vector<Point> と互換)
backward取得するピクセルを逆順にするかどうかを示すフラグ(目標点から始点へ点を取得するには "true" を使用する)

◆ setEdgeFeatureCannyParameters()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureCannyParameters ( double threshold1,
double threshold2,
int apertureSize = 3,
bool L2gradient = false )
Python:
cv.segmentation.IntelligentScissorsMB.setEdgeFeatureCannyParameters(threshold1, threshold2[, apertureSize[, L2gradient]]) -> retval

エッジ特徴抽出器をCannyエッジ検出器を使用するように切り替える。

覚え書き
デフォルトでは "Laplacian Zero-Crossing" 特徴抽出器が使用される(原著論文に従う)
参照
Canny

◆ setEdgeFeatureZeroCrossingParameters()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureZeroCrossingParameters ( float gradient_magnitude_min_value = 0.0f)
Python:
cv.segmentation.IntelligentScissorsMB.setEdgeFeatureZeroCrossingParameters([, gradient_magnitude_min_value]) -> retval

"Laplacian Zero-Crossing" エッジ特徴抽出器に切り替え、その引数を指定する。

この特徴抽出器は論文に従ってデフォルトで使用される。

実装には、低振幅ノイズを持つ領域に対する追加のフィルタリングがある。このフィルタリングは最小勾配振幅の引数(4、8、16 などの小さな値を使用する)を通じて有効化される。

覚え書き
この特徴抽出器の現在の実装は、グレースケール画像の処理に基づいている(カラー画像はまずグレースケール画像に変換される)。
Cannyエッジ検出器は少し遅いが、より良い結果を提供する(特にカラー画像で): setEdgeFeatureCannyParameters() を使用する。
引数
gradient_magnitude_min_valueエッジピクセルの最小勾配強度値(デフォルト: 0、チェックは無効)

◆ setGradientMagnitudeMaxLimit()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setGradientMagnitudeMaxLimit ( float gradient_magnitude_threshold_max = 0.0f)
Python:
cv.segmentation.IntelligentScissorsMB.setGradientMagnitudeMaxLimit([, gradient_magnitude_threshold_max]) -> retval

勾配強度の最大値しきい値を指定する。

ゼロの制限値は勾配強度のしきい値処理を無効にするために使用される(原著論文で説明されているデフォルトの動作)。それ以外の場合、gradient magnitude >= threshold のピクセルはコストがゼロになる。

覚え書き
しきい値処理は、不規則な領域を持つ画像に対して使用すべきである(埋め込みロゴのような高コントラスト領域の引数で行き詰まるのを避けるため)。
引数
gradient_magnitude_threshold_max勾配強度の最大値しきい値を指定する(デフォルト: 0、無効)

◆ setWeights()

IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setWeights ( float weight_non_edge,
float weight_gradient_direction,
float weight_gradient_magnitude )
Python:
cv.segmentation.IntelligentScissorsMB.setWeights(weight_non_edge, weight_gradient_direction, weight_gradient_magnitude) -> retval

特徴関数の重みを指定する。

重みは正規化された状態(重みの合計が 1.0 に等しい)に保つことを検討する。離散動的計画法 (DP) の目標は、ピクセル間のコストの最小化である。

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

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