KlassenKlassenKlassenKlassen | | | | Operatoren

pose_averageT_pose_averagePoseAveragepose_averagePoseAveragePoseAverage (Operator)

Name

pose_averageT_pose_averagePoseAveragepose_averagePoseAveragePoseAverage — Berechnet den Mittelwert einer Menge von Posen.

Signatur

pose_average( : : Poses, Weights, Mode, SigmaT, SigmaR : AveragePose, Quality)

Herror T_pose_average(const Htuple Poses, const Htuple Weights, const Htuple Mode, const Htuple SigmaT, const Htuple SigmaR, Htuple* AveragePose, Htuple* Quality)

Herror pose_average(const HTuple& Poses, const HTuple& Weights, const HTuple& Mode, const HTuple& SigmaT, const HTuple& SigmaR, HTuple* AveragePose, HTuple* Quality)

void PoseAverage(const HTuple& Poses, const HTuple& Weights, const HTuple& Mode, const HTuple& SigmaT, const HTuple& SigmaR, HTuple* AveragePose, HTuple* Quality)

static HPose HPose::PoseAverage(const HPoseArray& Poses, const HTuple& Weights, const HString& Mode, const HTuple& SigmaT, const HTuple& SigmaR, HTuple* Quality)

static HPose HPose::PoseAverage(const HPoseArray& Poses, const HTuple& Weights, const HString& Mode, double SigmaT, double SigmaR, HTuple* Quality)

static HPose HPose::PoseAverage(const HPoseArray& Poses, const HTuple& Weights, const char* Mode, double SigmaT, double SigmaR, HTuple* Quality)

void HOperatorSetX.PoseAverage(
[in] VARIANT Poses, [in] VARIANT Weights, [in] VARIANT Mode, [in] VARIANT SigmaT, [in] VARIANT SigmaR, [out] VARIANT* AveragePose, [out] VARIANT* Quality)

VARIANT HPoseX.PoseAverage(
[in] VARIANT Poses, [in] VARIANT Weights, [in] BSTR Mode, [in] VARIANT SigmaT, [in] VARIANT SigmaR, [out] VARIANT* Quality)

static void HOperatorSet.PoseAverage(HTuple poses, HTuple weights, HTuple mode, HTuple sigmaT, HTuple sigmaR, out HTuple averagePose, out HTuple quality)

static HPose HPose.PoseAverage(HPose[] poses, HTuple weights, string mode, HTuple sigmaT, HTuple sigmaR, out HTuple quality)

static HPose HPose.PoseAverage(HPose[] poses, HTuple weights, string mode, double sigmaT, double sigmaR, out HTuple quality)

Beschreibung

pose_averagepose_averagePoseAveragepose_averagePoseAveragePoseAverage mittelt die Rotation und die Translation der in PosesPosesPosesPosesPosesposes übergebenen Posen und liefert die gemittelte Pose in AveragePoseAveragePoseAveragePoseAveragePoseAveragePoseaveragePose zurück. Die Posen können über den Parameter WeightsWeightsWeightsWeightsWeightsweights gewichtet werden. Wird ein leeres Tupel übergeben, so haben alle Posen den gleichen Einfluss und werden gleich behandelt. Andernfalls muss ein Tupel übergeben werden dessen Länge der Anzahl der Posen entspricht und welches für jede Pose ein positives Gewicht enthält. Ein höheres Gewicht entspricht einem stärkeren Einfluss der Pose auf den Mittelwert.

pose_averagepose_averagePoseAveragepose_averagePoseAveragePoseAverage unterstützt zwei Verfahren zur Mittelung der Posen, welche über den Parameter ModeModeModeModeModemode ausgewählt werden können. 'direct'"direct""direct""direct""direct""direct" wählt ein direkes Lösungsverfahren, bei dem Translation und Rotation unabhängig gemittelt werden und das Ergebniss unmittelbar zurückgegeben wird. 'iterative'"iterative""iterative""iterative""iterative""iterative" verwendet die mit 'direct'"direct""direct""direct""direct""direct" ermittelte Pose als Startwert für ein iteratives Verfahren, welches den lokalen Modus der Posen bestimmt. Das iterative Verfahren ist langsamer als das direkte Verfahren, liefert aber vor allem beim Vorhandensein von Ausreißern genauere Ergebnisse zurück. Dabei werden Posen, die von der mittleren Pose stark abweichen, geringer gewichtet.

Für das iterative Verfahren kann die relative Gewichtung der Rotation und der Translation über die Parameter SigmaTSigmaTSigmaTSigmaTSigmaTsigmaT und SigmaRSigmaRSigmaRSigmaRSigmaRsigmaR gesetzt werden. Jeder der beiden Werte kann auf 'auto'"auto""auto""auto""auto""auto" gesetzt werden, wodurch er automatisch geschätzt wird. Für SigmaTSigmaTSigmaTSigmaTSigmaTsigmaT wird dabei die Streuung der Translationen der übergebenen Posen verwendet, für SigmaRSigmaRSigmaRSigmaRSigmaRsigmaR wird eine fester Wert verwendet. Die Werte beschreiben die erwartete Streuung der Translation bzw. Rotation. Für das direkte Verfahren werden die beiden Parameter ignoriert.

In QualityQualityQualityQualityQualityquality wird ein Maß für die Qualität der gefundenen Pose zurückgegeben. QualityQualityQualityQualityQualityquality ist stets ein vierelementiges Tupel, welches die mittlere und maximale Abweichung der Translation und Rotation der gemittelten Pose von den übergebenen Posen zurückgibt. Die Rotation wird dabei in Grad angegeben. Die Reihenfolge der Werte ist: Mittlere Translations-, mittlere Rotations-, maximale Translations- und maximale Rotationsabweichung. Evtl. in WeightsWeightsWeightsWeightsWeightsweights übergebene Gewichte der Posen werden für diesen Qualitätsschätzer nicht berücksichtigt.

Parallelisierung

Parameter

PosesPosesPosesPosesPosesposes (input_control)  pose-array HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Liste von Posen deren Mittelwert berechnet wird.

WeightsWeightsWeightsWeightsWeightsweights (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Gewichte der Posen, oder ein leeres Tupel.

Defaultwert: []

Restriktion: Weights > 0 && length(Weights) == 0 || length(Weights) == length(Poses) / 7

ModeModeModeModeModemode (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Art der Mittelwertbildung.

Defaultwert: 'iterative' "iterative" "iterative" "iterative" "iterative" "iterative"

Werteliste: 'direct'"direct""direct""direct""direct""direct", 'iterative'"iterative""iterative""iterative""iterative""iterative"

SigmaTSigmaTSigmaTSigmaTSigmaTsigmaT (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*) (double / Hlong / BSTR) (double / Hlong / char*)

Gewicht der Translation.

Defaultwert: 'auto' "auto" "auto" "auto" "auto" "auto"

Werteliste: 0.1, 1, 100, 'auto'"auto""auto""auto""auto""auto"

SigmaRSigmaRSigmaRSigmaRSigmaRsigmaR (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*) (double / Hlong / BSTR) (double / Hlong / char*)

Gewicht der Rotation.

Defaultwert: 'auto' "auto" "auto" "auto" "auto" "auto"

Werteliste: 0.1, 1, 10, 'auto'"auto""auto""auto""auto""auto"

AveragePoseAveragePoseAveragePoseAveragePoseAveragePoseaveragePose (output_control)  pose HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Gewichteter Mittelwert der Posen.

QualityQualityQualityQualityQualityquality (output_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Abweichung des Mittelwerts von den Eingabeposen.

Zusicherung: length(Quality) == 4

Ergebnis

Sind alle Parameter gültig, dann liefert pose_averagepose_averagePoseAveragepose_averagePoseAveragePoseAverage den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

read_poseread_poseReadPoseread_poseReadPoseReadPose, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose

Siehe auch

read_poseread_poseReadPoseread_poseReadPoseReadPose, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose, pose_to_hom_mat3dpose_to_hom_mat3dPoseToHomMat3dpose_to_hom_mat3dPoseToHomMat3dPoseToHomMat3d

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren