OpenCV 4.5.3(日本語機械翻訳)
|
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]を参照してください。
CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::applyImage | ( | InputArray | image | ) |
入力画像の指定と画像特徴の抽出
image | 入力画像を指定します。種類は #CV_8UC1 / #CV_8UC3 です。 |
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 | オプションパラメータ. 特徴のサブセットを指定する場合には,必ず指定しなければいけません(指定しない特徴は,内部で計算されます). |
CV_WRAP void cv::segmentation::IntelligentScissorsMB::buildMap | ( | const Point & | sourcePt | ) |
画像上の与えられたソースポイントに対する最適なパスのマップを作成します.
sourcePt | パスの探索に使われるソースポイント |
CV_WRAP void cv::segmentation::IntelligentScissorsMB::getContour | ( | const Point & | targetPt, |
OutputArray | contour, | ||
bool |
backward
=
false |
||
) | const |
画像上の指定されたターゲット点に対する最適な輪郭を抽出します.
targetPt | ターゲットポイント | |
[out]. | contour | 画像上のソースポイントとターゲットポイントの間の最適なパスを含むピクセルのリスト.型は CV_32SC2 (と互換性があります).std::vector<Point> ) |
backward | 取得されるピクセルの順序が逆であることを示すフラグ(ターゲット点からソース点に向かってポイントを取得する場合は,"true "を利用します). |
CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureCannyParameters | ( | double | threshold1, |
double | threshold2, | ||
int |
apertureSize
=
3 ,
|
||
bool |
L2gradient
=
false |
||
) |
エッジ特徴抽出器を,Cannyエッジ検出器に切り替えます.
CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setEdgeFeatureZeroCrossingParameters | ( | float |
gradient_magnitude_min_value
=
0.0f
|
) |
エッジ特徴抽出器を "Laplacian Zero-Crossing "に切り替え、そのパラメータを指定する
記事によると、この特徴抽出器はデフォルトで使用されています。
この実装では、低振幅のノイズがある領域に対する追加のフィルタリングが行われています。このフィルタリングは、最小グラデーション振幅のパラメータで有効になります(小さな値4、8、16を使用)。
gradient_magnitude_min_value | エッジピクセルに対するグラデーションの大きさの最小値 (デフォルト: 0, チェックは無効) |
CV_WRAP IntelligentScissorsMB & cv::segmentation::IntelligentScissorsMB::setGradientMagnitudeMaxLimit | ( | float |
gradient_magnitude_threshold_max
=
0.0f
|
) |
グラディエントマグニチュード最大値の閾値を指定
0の限界値は、グラデーションマグニチュードのしきい値を無効にするために使用されます(デフォルトの動作、オリジナルの記事に記載されています)。それ以外の場合、ピクセルにgradient magnitude >= threshold
はコストゼロです。
gradient_magnitude_threshold_max | グラデーションの大きさの最大値のしきい値を指定します(デフォルト:0、無効)。 |
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) |