KlassenKlassenKlassenKlassen | | | | Operatoren

binocular_disparity_msbinocular_disparity_msBinocularDisparityMsbinocular_disparity_msBinocularDisparityMsBinocularDisparityMs (Operator)

Name

binocular_disparity_msbinocular_disparity_msBinocularDisparityMsbinocular_disparity_msBinocularDisparityMsBinocularDisparityMs — Berechnet die Disparität für ein rektifiziertes Stereobildpaar mit Hilfe von Multi-Scanline-Optimierung.

Signatur

binocular_disparity_ms(ImageRect1, ImageRect2 : Disparity, Score : MinDisparity, MaxDisparity, SurfaceSmoothing, EdgeSmoothing, GenParamName, GenParamValue : )

Herror binocular_disparity_ms(const Hobject ImageRect1, const Hobject ImageRect2, Hobject* Disparity, Hobject* Score, const Hlong MinDisparity, const Hlong MaxDisparity, const Hlong SurfaceSmoothing, const Hlong EdgeSmoothing, const char* GenParamName, const char* GenParamValue)

Herror T_binocular_disparity_ms(const Hobject ImageRect1, const Hobject ImageRect2, Hobject* Disparity, Hobject* Score, const Htuple MinDisparity, const Htuple MaxDisparity, const Htuple SurfaceSmoothing, const Htuple EdgeSmoothing, const Htuple GenParamName, const Htuple GenParamValue)

Herror binocular_disparity_ms(Hobject ImageRect1, Hobject ImageRect2, Hobject* Disparity, Hobject* Score, const HTuple& MinDisparity, const HTuple& MaxDisparity, const HTuple& SurfaceSmoothing, const HTuple& EdgeSmoothing, const HTuple& GenParamName, const HTuple& GenParamValue)

HImage HImage::BinocularDisparityMs(const HImage& ImageRect2, HImage* Score, const HTuple& MinDisparity, const HTuple& MaxDisparity, const HTuple& SurfaceSmoothing, const HTuple& EdgeSmoothing, const HTuple& GenParamName, const HTuple& GenParamValue) const

void BinocularDisparityMs(const HObject& ImageRect1, const HObject& ImageRect2, HObject* Disparity, HObject* Score, const HTuple& MinDisparity, const HTuple& MaxDisparity, const HTuple& SurfaceSmoothing, const HTuple& EdgeSmoothing, const HTuple& GenParamName, const HTuple& GenParamValue)

HImage HImage::BinocularDisparityMs(const HImage& ImageRect2, HImage* Score, Hlong MinDisparity, Hlong MaxDisparity, Hlong SurfaceSmoothing, Hlong EdgeSmoothing, const HTuple& GenParamName, const HTuple& GenParamValue) const

HImage HImage::BinocularDisparityMs(const HImage& ImageRect2, HImage* Score, Hlong MinDisparity, Hlong MaxDisparity, Hlong SurfaceSmoothing, Hlong EdgeSmoothing, const HString& GenParamName, const HString& GenParamValue) const

HImage HImage::BinocularDisparityMs(const HImage& ImageRect2, HImage* Score, Hlong MinDisparity, Hlong MaxDisparity, Hlong SurfaceSmoothing, Hlong EdgeSmoothing, const char* GenParamName, const char* GenParamValue) const

void HOperatorSetX.BinocularDisparityMs(
[in] IHUntypedObjectX* ImageRect1, [in] IHUntypedObjectX* ImageRect2, [out] IHUntypedObjectX*Disparity, [out] IHUntypedObjectX*Score, [in] VARIANT MinDisparity, [in] VARIANT MaxDisparity, [in] VARIANT SurfaceSmoothing, [in] VARIANT EdgeSmoothing, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

IHImageX* HImageX.BinocularDisparityMs(
[in] IHImageX* ImageRect2, [out] IHImageX*Score, [in] Hlong MinDisparity, [in] Hlong MaxDisparity, [in] Hlong SurfaceSmoothing, [in] Hlong EdgeSmoothing, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

static void HOperatorSet.BinocularDisparityMs(HObject imageRect1, HObject imageRect2, out HObject disparity, out HObject score, HTuple minDisparity, HTuple maxDisparity, HTuple surfaceSmoothing, HTuple edgeSmoothing, HTuple genParamName, HTuple genParamValue)

HImage HImage.BinocularDisparityMs(HImage imageRect2, out HImage score, int minDisparity, int maxDisparity, int surfaceSmoothing, int edgeSmoothing, HTuple genParamName, HTuple genParamValue)

HImage HImage.BinocularDisparityMs(HImage imageRect2, out HImage score, int minDisparity, int maxDisparity, int surfaceSmoothing, int edgeSmoothing, string genParamName, string genParamValue)

Beschreibung

binocular_disparity_msbinocular_disparity_msBinocularDisparityMsbinocular_disparity_msBinocularDisparityMsBinocularDisparityMs berechnet die Disparität zwischen zwei rektifizierten Stereobildern ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 mit Hilfe von Multi-Scanline-Optimierung. Das resultierende Disparitätsbild wird in DisparityDisparityDisparityDisparityDisparitydisparity zurückgegeben. Im Gegensatz zu binocular_distance_msbinocular_distance_msBinocularDistanceMsbinocular_distance_msBinocularDistanceMsBinocularDistanceMs wird das Ergebnis nicht in Abstandswerte umgerechnet.

Für diese Aufgabe können die drei Operatoren binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMg und binocular_disparity_msbinocular_disparity_msBinocularDisparityMsbinocular_disparity_msBinocularDisparityMsBinocularDisparityMs verwendet werden. binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity liefert robuste Ergebnisse in gut texturierten Bereichen, doch scheitert auf schwachen Texturen. binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMg interpoliert schwach texturierte Bereiche, doch glättet Disparitätssprünge. binocular_disparity_msbinocular_disparity_msBinocularDisparityMsbinocular_disparity_msBinocularDisparityMsBinocularDisparityMs bewahrt Disparitätssprünge und interpoliert teilweise.

Die Eingabeparameter ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 müssen ein Paar rektifizierter Stereobilder darstellen, d.h. korrespondierende Punkte müssen in derselben Zeile liegen. Falls diese Annahme nicht zutrifft, können die Bilder mit den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap und map_imagemap_imageMapImagemap_imageMapImageMapImage rektifiziert werden.

Die Breiten von ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 können sich unterscheiden, die Höhe muss jedoch übereinstimmen. Für ein Pixel in ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 wird das homologe Pixel in ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 ausgewählt, indem die entsprechende Zeile in ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 abgesucht wird und beide Pixel basierend auf einem Ähnlichkeitsmaß gematcht werden. Die Disparität ist die Anzahl der Pixel, welche ein Pixel in ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 verschoben werden muss, um das homologe Pixel in ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 zu erreichen. Der Suchbereich wird durch den minimalen und maximalen Disparitätswert MinDisparityMinDisparityMinDisparityMinDisparityMinDisparityminDisparity und MaxDisparityMaxDisparityMaxDisparityMaxDisparityMaxDisparitymaxDisparity festgelegt. Die Differenz der beiden Werte darf 255 nicht überschreiten.

Das Ähnlichkeitsmaß kann festgelegt werden, indem GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName auf 'similarity_measure'"similarity_measure""similarity_measure""similarity_measure""similarity_measure""similarity_measure" und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue auf den gewünschten Wert gesetzt wird. In den beiden Fällen 'census_dense'"census_dense""census_dense""census_dense""census_dense""census_dense" (default) und 'census_sparse'"census_sparse""census_sparse""census_sparse""census_sparse""census_sparse" basiert das Ähnlichkeitsmaß auf der Census-Transformation. Ein transformiertes Bild enthält für jedes Pixel Information über die Topologie der Intensitäten innerhalb eines Supportfensters. 'census_dense'"census_dense""census_dense""census_dense""census_dense""census_dense" verwendet ein Fenster von 9 x 7 Pixeln. 'census_sparse'"census_sparse""census_sparse""census_sparse""census_sparse""census_sparse" verwendet ein Fenster von 15 x 15 Pixeln, von welchen jedoch nur ein Teil ausgewertet wird. Während 'census_dense'"census_dense""census_dense""census_dense""census_dense""census_dense" besser für feine Strukturen geeignet ist, liefert 'census_sparse'"census_sparse""census_sparse""census_sparse""census_sparse""census_sparse" robustere Ergebnisse in schwach texturierten Bereichen.

Um aus dem Ähnlichkeitsmaß die Disparitäten zu berechnen, werden die Zwischenergebnisse mit Hilfe einer Multi-Scanline-Methode optimiert. Die Optimierung steigert die Robustheit in schwach texturierten Bereichen ohne Disparitätssprünge zu glätten. Die Optimierung wird durch die beiden Parameter SurfaceSmoothingSurfaceSmoothingSurfaceSmoothingSurfaceSmoothingSurfaceSmoothingsurfaceSmoothing und EdgeSmoothingEdgeSmoothingEdgeSmoothingEdgeSmoothingEdgeSmoothingedgeSmoothing gesteuert. SurfaceSmoothingSurfaceSmoothingSurfaceSmoothingSurfaceSmoothingSurfaceSmoothingsurfaceSmoothing steuert die Glattheit innerhalb von Oberflächen. Hohe Werte unterdrücken Disparitätsdifferenzen von einem Pixel. EdgeSmoothingEdgeSmoothingEdgeSmoothingEdgeSmoothingEdgeSmoothingedgeSmoothing steuert die Häufigkeit und die Form von Kanten. Niedrige Werte lassen viele Kanten zu, hohe Werte führen zu weniger und runderen Kanten. Für beide Parameter liegt ein sinnvoller Wertebereich üblicherweise zwischen 0 und 100. Sind beide Parameter auf null gesetzt, wird keine Optimierung durchgeführt.

Die resultierende Disparität wird in dem einkanaligen Bild DisparityDisparityDisparityDisparityDisparitydisparity zurückgegeben. Ein Qualitätsmaß für jeden Disparitätswert wird in ScoreScoreScoreScoreScorescore ausgegeben. Es enthält das beste (niedrigste) Ergebnis des optimierten Ähnlichkeitsmaßes eines Referenzpixels.

Schließlich gibt es zwei optionale Nachbearbeitungsschritte. Wird GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName auf 'consistency_check'"consistency_check""consistency_check""consistency_check""consistency_check""consistency_check" und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue auf 'true'"true""true""true""true""true" (default) gesetzt, werden nur noch diejenigen Disparitätswerte zurückgegeben, die übereinstimmend bei einer Suche eines Referenzmusters von ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 in ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 als auch von ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 in ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 gefunden werden. Der Wert 'false'"false""false""false""false""false" schaltet dieses Verhalten aus.

Wird GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName auf 'sub_disparity'"sub_disparity""sub_disparity""sub_disparity""sub_disparity""sub_disparity" und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue auf 'true'"true""true""true""true""true" (default) gesetzt, werden kontinuierliche Werte für die bisher ganzzahligen Disparitätswerte geschätzt. Der Wert 'false'"false""false""false""false""false" schaltet dieses Verhalten aus.

Die Laufzeit des Operators verhält sich in etwa linear zur Bildbreite, zur Bildhöhe und zum Disparitätsbereich. Folglich sollte der Disparitätsbereich für große Bilder so klein wie möglich gewählt werden.

Parallelisierung

Parameter

ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte*) *erlaubt für Compute Devices

Rektifiziertes Bild von Kamera 1.

ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte*) *erlaubt für Compute Devices

Rektifiziertes Bild von Kamera 2.

DisparityDisparityDisparityDisparityDisparitydisparity (output_object)  singlechannelimage objectHImageHImageHImageHImageXHobject * (real)

Disparität.

ScoreScoreScoreScoreScorescore (output_object)  singlechannelimage objectHImageHImageHImageHImageXHobject * (real)

Güte der berechneten Disparität.

MinDisparityMinDisparityMinDisparityMinDisparityMinDisparityminDisparity (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Minimale erwartete Disparität.

Defaultwert: -30

Typischer Wertebereich: -32768 ≤ MinDisparity MinDisparity MinDisparity MinDisparity MinDisparity minDisparity ≤ 32767

MaxDisparityMaxDisparityMaxDisparityMaxDisparityMaxDisparitymaxDisparity (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Maximale erwartete Disparität.

Defaultwert: 30

Typischer Wertebereich: -32768 ≤ MaxDisparity MaxDisparity MaxDisparity MaxDisparity MaxDisparity maxDisparity ≤ 32767

Restriktion: MinDisparity <= MaxDisparity && MaxDisparity <= MinDisparity + 255

SurfaceSmoothingSurfaceSmoothingSurfaceSmoothingSurfaceSmoothingSurfaceSmoothingsurfaceSmoothing (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Glättung von Oberflächen.

Defaultwert: 50

Wertevorschläge: 20, 50, 100

Restriktion: SurfaceSmoothing >= 0

EdgeSmoothingEdgeSmoothingEdgeSmoothingEdgeSmoothingEdgeSmoothingedgeSmoothing (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Glättung von Kanten.

Defaultwert: 50

Wertevorschläge: 20, 50, 100

Restriktion: EdgeSmoothing >= 0

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Parametername(n) für das Multi-Scanline-Verfahren.

Defaultwert: []

Werteliste: 'consistency_check'"consistency_check""consistency_check""consistency_check""consistency_check""consistency_check", 'similarity_measure'"similarity_measure""similarity_measure""similarity_measure""similarity_measure""similarity_measure", 'sub_disparity'"sub_disparity""sub_disparity""sub_disparity""sub_disparity""sub_disparity"

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Parameterwert(e) für das Multi-Scanline-Verfahren.

Defaultwert: []

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

Beispiel (HDevelop)

read_image (BaseballL, 'stereo/epipolar/baseball_l')
read_image (BaseballR, 'stereo/epipolar/baseball_r')
binocular_disparity_ms (BaseballL, BaseballR, Disparity, Score, \
                        -40, -10, 50, 50, [], [])

Ergebnis

Sind die Parameterwerte korrekt, dann liefert binocular_disparity_msbinocular_disparity_msBinocularDisparityMsbinocular_disparity_msBinocularDisparityMsBinocularDisparityMs 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>)set_system("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_imageMapImagemap_imageMapImageMapImage

Nachfolger

thresholdthresholdThresholdthresholdThresholdThreshold, disparity_to_distancedisparity_to_distanceDisparityToDistancedisparity_to_distanceDisparityToDistanceDisparityToDistance, disparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyz

Alternativen

binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMg, binocular_distancebinocular_distanceBinocularDistancebinocular_distanceBinocularDistanceBinocularDistance, binocular_distance_mgbinocular_distance_mgBinocularDistanceMgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMg, binocular_distance_msbinocular_distance_msBinocularDistanceMsbinocular_distance_msBinocularDistanceMsBinocularDistanceMs

Siehe auch

map_imagemap_imageMapImagemap_imageMapImageMapImage, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap, binocular_calibrationbinocular_calibrationBinocularCalibrationbinocular_calibrationBinocularCalibrationBinocularCalibration

Modul

3D Metrology


KlassenKlassenKlassenKlassen | | | | Operatoren