pose_averageT_pose_averagePoseAveragePoseAveragepose_average (Operator)
Name
pose_averageT_pose_averagePoseAveragePoseAveragepose_average — Berechnet den Mittelwert einer Menge von Posen.
Signatur
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)
static HPose HPose::PoseAverage(const HPoseArray& Poses, const HTuple& Weights, const wchar_t* Mode, double SigmaT, double SigmaR, HTuple* Quality)
(Nur Windows)
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)
def pose_average(poses: Sequence[int], weights: Sequence[Union[float, int]], mode: str, sigma_t: Union[float, int, str], sigma_r: Union[float, int, str]) -> Tuple[Sequence[Union[float, int]], Sequence[float]]
Beschreibung
pose_averagepose_averagePoseAveragePoseAveragePoseAveragepose_average mittelt die Rotation und die Translation der in
PosesPosesPosesPosesposesposes übergebenen Posen und liefert die gemittelte Pose in
AveragePoseAveragePoseAveragePoseAveragePoseaveragePoseaverage_pose 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_averagePoseAveragePoseAveragePoseAveragepose_average 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 direktes Lösungsverfahren, bei dem Translation
und Rotation unabhängig gemittelt werden und das Ergebnis 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 SigmaTSigmaTSigmaTSigmaTsigmaTsigma_t und SigmaRSigmaRSigmaRSigmaRsigmaRsigma_r
gesetzt werden. Jeder der beiden Werte kann auf 'auto'"auto""auto""auto""auto""auto" gesetzt
werden, wodurch er automatisch geschätzt wird. Für SigmaTSigmaTSigmaTSigmaTsigmaTsigma_t wird
dabei die Streuung der Translationen der übergebenen Posen verwendet, für
SigmaRSigmaRSigmaRSigmaRsigmaRsigma_r 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: Mittlerer
quadratischer Translationsfehler, mittlerer quadratischer Rotationsfehler,
maximale Translations- und maximale Rotationsabweichung.
Evtl. in WeightsWeightsWeightsWeightsweightsweights übergebene Gewichte der Posen werden
für die mittlere quadratische Translations- und Rotationsfehler
berücksichtigt, aber nicht für die andere zwei Werte des Qualitätsschätzers.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
PosesPosesPosesPosesposesposes (input_control) pose-array → HPose, HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Liste von Posen deren Mittelwert berechnet wird.
WeightsWeightsWeightsWeightsweightsweights (input_control) number-array → HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (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 → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Art der Mittelwertbildung.
Defaultwert:
'iterative'
"iterative"
"iterative"
"iterative"
"iterative"
"iterative"
Werteliste: 'direct'"direct""direct""direct""direct""direct", 'iterative'"iterative""iterative""iterative""iterative""iterative"
SigmaTSigmaTSigmaTSigmaTsigmaTsigma_t (input_control) number → HTupleUnion[float, int, str]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
Gewicht der Translation.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto""auto", 0.1, 1, 100
SigmaRSigmaRSigmaRSigmaRsigmaRsigma_r (input_control) number → HTupleUnion[float, int, str]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
Gewicht der Rotation.
Defaultwert:
'auto'
"auto"
"auto"
"auto"
"auto"
"auto"
Wertevorschläge: 'auto'"auto""auto""auto""auto""auto", 0.1, 1, 10
AveragePoseAveragePoseAveragePoseAveragePoseaveragePoseaverage_pose (output_control) pose → HPose, HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Gewichteter Mittelwert der Posen.
QualityQualityQualityQualityqualityquality (output_control) number-array → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Abweichung des Mittelwerts von den Eingabeposen.
Zusicherung: length(Quality) == 4
Ergebnis
Sind alle Parameter gültig, dann liefert
pose_averagepose_averagePoseAveragePoseAveragePoseAveragepose_average den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
Vorgänger
read_poseread_poseReadPoseReadPoseReadPoseread_pose,
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose
Siehe auch
read_poseread_poseReadPoseReadPoseReadPoseread_pose,
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPosehom_mat3d_to_pose,
pose_to_hom_mat3dpose_to_hom_mat3dPoseToHomMat3dPoseToHomMat3dPoseToHomMat3dpose_to_hom_mat3d
Modul
Foundation