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

Class, allowing the load and matching 3D models. Typical Use: [詳解]

#include <ppf_match_3d.hpp>

公開メンバ関数

CV_WRAP PPF3DDetector ()
空のコンストラクタ。デフォルト引数の設定
CV_WRAP PPF3DDetector (const double relativeSamplingStep, const double relativeDistanceStep=0.05, const double numAngles=30)
void setSearchParams (const double positionThreshold=-1, const double rotationThreshold=-1, const bool useWeightedClustering=false)
CV_WRAP void trainModel (const Mat &Model)
新しいモデルをトレーニングします。[【詳解】(英語]
CV_WRAP void match (const Mat &scene, CV_OUT std::vector< Pose3DPtr > &results, const double relativeSceneSampleStep=1.0/5.0, const double relativeSceneDistance=0.03)
与えられたシーンに対して、学習されたモデルをマッチングさせます。[【詳解】(英語]
void read (const FileNode &fn)
void write (FileStorage &fs) const

限定公開メンバ関数

void clearTrainingModels ()

限定公開変数類

double angle_step
double angle_step_radians
double distance_step
double sampling_step_relative
double angle_step_relative
double distance_step_relative
Mat sampled_pc
Mat ppf
int num_ref_points
hashtable_int * hash_table
THash * hash_nodes
double position_threshold
double rotation_threshold
bool use_weighted_avg
int scene_sample_step

詳解

3Dモデルの読み込みとマッチングを行うクラスです。典型的な使用例です。

// Train a model
ppf_match_3d::PPF3DDetector detector(0.05, 0.05);
detector.trainModel(pc);
// Search the model in a given scene
vector<Pose3DPtr> results;
detector.match(pcTest, results, 1.0/5.0,0.05);

構築子と解体子

PPF3DDetector()

CV_WRAP cv::ppf_match_3d::PPF3DDetector::PPF3DDetector ( const double relativeSamplingStep,
const double relativeDistanceStep = 0.05,
const double numAngles = 30
)

コンストラクタと引数

引数
[in]. relativeSamplingStep オブジェクトの直径に対するサンプリング距離。モデルはまず、効率を上げるために一様にサンプリングされます。この値を小さくすると、モデルの密度が高くなり、より正確なポーズ推定が可能になりますが、モデルが大きくなると、トレーニングに時間がかかります。この値を大きくすると、ポーズ計算の精度は下がりますが、モデルが小さくなり、モデルの生成とマッチングが速くなります。小さな値を使う場合は、メモリの消費量に注意してください。
[in]. relativeDistanceStep モデルの直径に対するポイントペアの距離の離散化距離です。この値は、ハッシュ化に直接影響します。小さな値を使用すると、離散化が細かすぎて、ハッシュテーブルのビンが曖昧になってしまいます。大きすぎる値を使用すると、特徴ベクトルの識別ができなくなり、異なるポイントペアの特徴が同じビンに割り当てられてしまいます。この引数のデフォルトは、RelativeSamplingStepの値です。ノイズの多いシーンでは、この値を大きくすることで、ノイズの多いポイントに対するマッチングのロバスト性を向上させることができます。
[in]. numAngles 点のペアの向きの離散化を、角度の細分化の数として設定する。この値は、方位の RelativeDistanceStep に相当します。この値を大きくすると、マッチングの精度が向上しますが、誤った法線方向に対するロバスト性は低下します。値を小さくすると、マッチングの精度は低下しますが、誤った法線方向に対するロバスト性は向上します。法線方向が正確に計算できないような非常にノイズの多いシーンでは、この値を25または20に設定できます。

関数詳解

match()

CV_WRAP void cv::ppf_match_3d::PPF3DDetector::match ( const Mat & scene,
CV_OUT std::vector< Pose3DPtr > & results,
const double relativeSceneSampleStep = 1.0/5.0,
const double relativeSceneDistance = 0.03
)

与えられたシーンに対して、学習されたモデルをマッチングさせます。

引数
[in]. scene シーンの点群
[out]. results 出力ポーズのリスト
[in]. relativeSceneSampleStep relativeSceneDistanceでサンプリングした後、マッチングに使用するシーンポイントの比率。例えば、この値が1.0/5.0に設定されている場合、シーンから5番目のポイントがポーズ推定に使用されます。このパラメータを使用すると、マッチングの速度と精度を簡単にトレードオフすることができます。この値を大きくすると、使用されるポイントが少なくなり、ポーズ計算は速くなりますが、精度は低くなります。値を小さくすると、その逆の効果があります。
[in]. relativeSceneDistance モデルの直径に対する距離のしきい値を設定します。このパラメータは、トレーニングステージにおけるrelativeSamplingStepに相当します。このパラメータは、relativeSceneSampleStepパラメータによる先行サンプリングのような働きをします。

setSearchParams()

void cv::ppf_match_3d::PPF3DDetector::setSearchParams ( const double positionThreshold = -1,
const double rotationThreshold = -1,
const bool useWeightedClustering = false
)

探索のためのパラメータの設定

引数
[in]. positionThreshold 翻訳の類似性を制御する位置のしきい値。校正/モデルの単位に依存します。
[in]. rotationThreshold 回転の類似性を制御する位置のしきい値。このパラメータは、角度の差に対するしきい値と考えることができます。
[in]. useWeightedClustering アルゴリズムのデフォルトでは、重み付けなしでポーズをクラスタリングします。0以外の値を設定すると、ポーズのクラスタリングにおいて、投票数を重みとして考慮し、単純な平均化ではなく、重み付き平均化を行う必要があることを示します。

trainModel()

CV_WRAP void cv::ppf_match_3d::PPF3DDetector::trainModel ( const Mat & Model )

新しいモデルをトレーニングします。

引数
[in]. Model 法線付きの入力点群(Nx6)。

コンストラクタで設定したパラメータを使用して、ダウンサンプリングを行い、新しいモデルを学習します。モデルが学習されると、インスタンスは "match "を呼び出すための準備をします。


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