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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
- Automatisch parallelisiert auf interner Datenebene.
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.
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