binocular_distance_mgT_binocular_distance_mgBinocularDistanceMgBinocularDistanceMg (Operator)

Name

binocular_distance_mgT_binocular_distance_mgBinocularDistanceMgBinocularDistanceMg — Berechnet das Distanzbild für ein rektifiziertes Bildpaar mit Hilfe von Mehrgitter-Verfahren.

Signatur

binocular_distance_mg(ImageRect1, ImageRect2 : Distance, Score : CamParamRect1, CamParamRect2, RelPoseRect, GrayConstancy, GradientConstancy, Smoothness, InitialGuess, CalculateScore, MGParamName, MGParamValue : )

Herror T_binocular_distance_mg(const Hobject ImageRect1, const Hobject ImageRect2, Hobject* Distance, Hobject* Score, const Htuple CamParamRect1, const Htuple CamParamRect2, const Htuple RelPoseRect, const Htuple GrayConstancy, const Htuple GradientConstancy, const Htuple Smoothness, const Htuple InitialGuess, const Htuple CalculateScore, const Htuple MGParamName, const Htuple MGParamValue)

void BinocularDistanceMg(const HObject& ImageRect1, const HObject& ImageRect2, HObject* Distance, HObject* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, const HTuple& GrayConstancy, const HTuple& GradientConstancy, const HTuple& Smoothness, const HTuple& InitialGuess, const HTuple& CalculateScore, const HTuple& MGParamName, const HTuple& MGParamValue)

HImage HImage::BinocularDistanceMg(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const HString& CalculateScore, const HTuple& MGParamName, const HTuple& MGParamValue) const

HImage HImage::BinocularDistanceMg(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const HString& CalculateScore, const HString& MGParamName, const HString& MGParamValue) const

HImage HImage::BinocularDistanceMg(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const char* CalculateScore, const char* MGParamName, const char* MGParamValue) const

HImage HImage::BinocularDistanceMg(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const wchar_t* CalculateScore, const wchar_t* MGParamName, const wchar_t* MGParamValue) const   (Nur Windows)

HImage HCamPar::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const HString& CalculateScore, const HTuple& MGParamName, const HTuple& MGParamValue) const

HImage HCamPar::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const HString& CalculateScore, const HString& MGParamName, const HString& MGParamValue) const

HImage HCamPar::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const char* CalculateScore, const char* MGParamName, const char* MGParamValue) const

HImage HCamPar::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const wchar_t* CalculateScore, const wchar_t* MGParamName, const wchar_t* MGParamValue) const   (Nur Windows)

HImage HPose::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const HString& CalculateScore, const HTuple& MGParamName, const HTuple& MGParamValue) const

HImage HPose::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const HString& CalculateScore, const HString& MGParamName, const HString& MGParamValue) const

HImage HPose::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const char* CalculateScore, const char* MGParamName, const char* MGParamValue) const

HImage HPose::BinocularDistanceMg(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, double GrayConstancy, double GradientConstancy, double Smoothness, double InitialGuess, const wchar_t* CalculateScore, const wchar_t* MGParamName, const wchar_t* MGParamValue) const   (Nur Windows)

static void HOperatorSet.BinocularDistanceMg(HObject imageRect1, HObject imageRect2, out HObject distance, out HObject score, HTuple camParamRect1, HTuple camParamRect2, HTuple relPoseRect, HTuple grayConstancy, HTuple gradientConstancy, HTuple smoothness, HTuple initialGuess, HTuple calculateScore, HTuple MGParamName, HTuple MGParamValue)

HImage HImage.BinocularDistanceMg(HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, HPose relPoseRect, double grayConstancy, double gradientConstancy, double smoothness, double initialGuess, string calculateScore, HTuple MGParamName, HTuple MGParamValue)

HImage HImage.BinocularDistanceMg(HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, HPose relPoseRect, double grayConstancy, double gradientConstancy, double smoothness, double initialGuess, string calculateScore, string MGParamName, string MGParamValue)

HImage HCamPar.BinocularDistanceMg(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect2, HPose relPoseRect, double grayConstancy, double gradientConstancy, double smoothness, double initialGuess, string calculateScore, HTuple MGParamName, HTuple MGParamValue)

HImage HCamPar.BinocularDistanceMg(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect2, HPose relPoseRect, double grayConstancy, double gradientConstancy, double smoothness, double initialGuess, string calculateScore, string MGParamName, string MGParamValue)

HImage HPose.BinocularDistanceMg(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, double grayConstancy, double gradientConstancy, double smoothness, double initialGuess, string calculateScore, HTuple MGParamName, HTuple MGParamValue)

HImage HPose.BinocularDistanceMg(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar camParamRect1, HCamPar camParamRect2, double grayConstancy, double gradientConstancy, double smoothness, double initialGuess, string calculateScore, string MGParamName, string MGParamValue)

Beschreibung

binocular_distance_mgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMgBinocularDistanceMg berechnet das Distanzbild für ein rektifiziertes Bildpaar mit Hilfe von Mehrgitter-Verfahren. Der Operator berechnet zunächst die Disparitäten zwischen den zwei rektifizierten Bildern ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 ähnlich wie in binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMg. Die resultierenden Disparitätswerte werden dann wie in disparity_to_distancedisparity_to_distanceDisparityToDistanceDisparityToDistanceDisparityToDistance in Distanzwerte der korrespondierenden 3D Weltpunkte zu dem rektifizierten Stereo-Kamerasystem transformiert. Die Distanzen werden in dem einkanaligen Bild DistanceDistanceDistanceDistancedistance zurückgegeben, in dem jeder Grauwert den Abstand des jeweiligen 3D Weltpunktes zu dem Stereo-Kamerasystem repräsentiert. Anders als in binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistance verwendet dieser Operator Variationsmethoden basierend auf Mehrgitter-Verfahren. Damit können auch Distanzwerte für Bildbereiche bestimmt werden, die keine oder kaum Testur aufweisen.

Die Eingabeparameter ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 müssen ein Paar rektifizierte Stereobilder darstellen, d.h. korrespondierende Punkte müssen diesselbe Zeilen-Koordinate haben. Falls diese Annahme nicht zutrifft, können die Bilder mit den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCameras, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMap und map_imagemap_imageMapImageMapImageMapImage rektifiziert werden.

Für die Transformation der Disparität in den Abstand werden die internen Parameter für die rektifizierte Kamera 1 in CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1 und für die rektifizierte Kamera 2 in CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2 sowie die relativen Lage der Kameras in RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect benötigt. Die relative Lage definiert eine Punkttransformation von dem entzerrten Kamerasystem 2 in das entzerrte Kamerasystem 1. Die Werte für diese Parameter erhält man beispielsweise von den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCameras und gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMap.

Die Beschreibung des Verfahrens sowie der weiteren Parameter findet sich in der Dokumentation von binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMg.

Achtung

Bei der Verwendung von telezentrischen Kameras bezieht sich die Distanz DistanceDistanceDistanceDistancedistance nicht auf die Entfernung eines Punktes zum Projektionszentrum einer Kamera. Die Entfernung wird zu der Ebene gemessen, die durch die y-Achse beider Kameras und der Basis (siehe gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMap) definiert ist.

Für Stereosysteme gemischten Typs (d.h., falls das ursprüngliche Stereosystem aus einer perspektivischen und einer telezentrischen Kamera bestand; siehe gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMap), ist die rektifizierende Ebene der zwei Kameras in einer Lage relativ zum Objekt, die zu sehr unintuitiven Distanzen führen würde. Daher unterstützt binocular_distance_mgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMgBinocularDistanceMg Stereosysteme gemischten Typs nicht. Für Stereosysteme gemischten Typs sollte stattdessen reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereo verwendet werden. Dort kann das Referenzkoordinatensystem beliebig gewählt werden. Alternativ können eventuell binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMg und disparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyzDisparityImageToXyz verwendet werden.

Auch Stereosysteme, die sowohl Kameras mit hyperzentrischen Objektiven als auch Kameras ohne hyperzentrische Objektive enthalten, werden nicht unterstützt.

Ausführungsinformationen

Parameter

ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte / uint2 / real)

Rektifiziertes Bild von Kamera 1.

ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte / uint2 / real)

Rektifiziertes Bild von Kamera 2.

DistanceDistanceDistanceDistancedistance (output_object)  singlechannelimage(-array) objectHImageHImageHobject * (real)

Abstandsbild.

ScoreScoreScoreScorescore (output_object)  singlechannelimage(-array) objectHImageHImageHobject * (real)

Güte der berechneten Disparität wenn CalculateScoreCalculateScoreCalculateScoreCalculateScorecalculateScore auf 'true'"true""true""true""true" gesetzt ist.

CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1 (input_control)  campar HCamPar, HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter der rektifizierten Kamera 1.

CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2 (input_control)  campar HCamPar, HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter der rektifizierten Kamera 2.

RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect (input_control)  pose HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Punkttransformation von entzerrter Kamera 2 zu entzerrter Kamera 1.

Parameteranzahl: 7

GrayConstancyGrayConstancyGrayConstancyGrayConstancygrayConstancy (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Gewicht der Grauwerterhaltung im Datenterm.

Defaultwert: 1.0

Wertevorschläge: 0.0, 1.0, 2.0, 10.0

Restriktion: GrayConstancy >= 0.0

GradientConstancyGradientConstancyGradientConstancyGradientConstancygradientConstancy (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Gewicht der Gradientenerhaltung im Datenterm.

Defaultwert: 30.0

Wertevorschläge: 0.0, 1.0, 5.0, 10.0, 30.0, 50.0, 70.0

Restriktion: GradientConstancy >= 0.0

SmoothnessSmoothnessSmoothnessSmoothnesssmoothness (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Gewicht des Glattheitsterms bezüglich des Datenterms.

Defaultwert: 5.0

Wertevorschläge: 1.0, 3.0, 5.0, 10.0

Restriktion: Smoothness > 0.0

InitialGuessInitialGuessInitialGuessInitialGuessinitialGuess (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Startwert für die Disparität.

Defaultwert: 0.0

Wertevorschläge: -30.0, -20.0, -10.0, 0.0, 10.0, 20.0, 30.0

CalculateScoreCalculateScoreCalculateScoreCalculateScorecalculateScore (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Soll die Qualitätsschätzung in ScoreScoreScoreScorescore zurückgegeben werden?.

Defaultwert: 'false' "false" "false" "false" "false"

Wertevorschläge: 'true'"true""true""true""true", 'false'"false""false""false""false"

MGParamNameMGParamNameMGParamNameMGParamNameMGParamName (input_control)  attribute.name(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Parametername(n) für das Mehrgitterverfahren.

Defaultwert: 'default_parameters' "default_parameters" "default_parameters" "default_parameters" "default_parameters"

Werteliste: 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters", 'initial_level'"initial_level""initial_level""initial_level""initial_level", 'iterations'"iterations""iterations""iterations""iterations", 'mg_cycle_type'"mg_cycle_type""mg_cycle_type""mg_cycle_type""mg_cycle_type", 'mg_post_relax'"mg_post_relax""mg_post_relax""mg_post_relax""mg_post_relax", 'mg_pre_relax'"mg_pre_relax""mg_pre_relax""mg_pre_relax""mg_pre_relax", 'mg_solver'"mg_solver""mg_solver""mg_solver""mg_solver", 'pyramid_factor'"pyramid_factor""pyramid_factor""pyramid_factor""pyramid_factor"

MGParamValueMGParamValueMGParamValueMGParamValueMGParamValue (input_control)  attribute.value(-array) HTupleHTupleHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong)

Parameterwert(e) für das Mehrgitterverfahren.

Defaultwert: 'fast_accurate' "fast_accurate" "fast_accurate" "fast_accurate" "fast_accurate"

Wertevorschläge: 'very_accurate'"very_accurate""very_accurate""very_accurate""very_accurate", 'accurate'"accurate""accurate""accurate""accurate", 'fast_accurate'"fast_accurate""fast_accurate""fast_accurate""fast_accurate", 'fast'"fast""fast""fast""fast", 'v'"v""v""v""v", 'w'"w""w""w""w", 'none'"none""none""none""none", 'gauss_seidel'"gauss_seidel""gauss_seidel""gauss_seidel""gauss_seidel", 'multigrid'"multigrid""multigrid""multigrid""multigrid", 'full_multigrid'"full_multigrid""full_multigrid""full_multigrid""full_multigrid", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, -1, -2, -3, -4, -5

Ergebnis

Sind die Parameterwerte korrekt, dann liefert binocular_distance_mgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMgBinocularDistanceMg den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

map_imagemap_imageMapImageMapImageMapImage

Nachfolger

thresholdthresholdThresholdThresholdThreshold

Alternativen

binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistance, binocular_distance_msbinocular_distance_msBinocularDistanceMsBinocularDistanceMsBinocularDistanceMs, binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMg, binocular_disparity_msbinocular_disparity_msBinocularDisparityMsBinocularDisparityMsBinocularDisparityMs

Siehe auch

map_imagemap_imageMapImageMapImageMapImage, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMap, binocular_calibrationbinocular_calibrationBinocularCalibrationBinocularCalibrationBinocularCalibration, disparity_to_distancedisparity_to_distanceDisparityToDistanceDisparityToDistanceDisparityToDistance, distance_to_disparitydistance_to_disparityDistanceToDisparityDistanceToDisparityDistanceToDisparity, disparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyzDisparityImageToXyz

Modul

3D Metrology