KlassenKlassenKlassenKlassen | | | | Operatoren

binocular_distanceT_binocular_distanceBinocularDistancebinocular_distanceBinocularDistanceBinocularDistance (Operator)

Name

binocular_distanceT_binocular_distanceBinocularDistancebinocular_distanceBinocularDistanceBinocularDistance — Berechnet das Distanzbild für ein rektifiziertes Bildpaar mit Hilfe von Korrelationsmethoden.

Signatur

binocular_distance(ImageRect1, ImageRect2 : Distance, Score : CamParamRect1, CamParamRect2, RelPoseRect, Method, MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, Filter, SubDistance : )

Herror T_binocular_distance(const Hobject ImageRect1, const Hobject ImageRect2, Hobject* Distance, Hobject* Score, const Htuple CamParamRect1, const Htuple CamParamRect2, const Htuple RelPoseRect, const Htuple Method, const Htuple MaskWidth, const Htuple MaskHeight, const Htuple TextureThresh, const Htuple MinDisparity, const Htuple MaxDisparity, const Htuple NumLevels, const Htuple ScoreThresh, const Htuple Filter, const Htuple SubDistance)

Herror binocular_distance(Hobject ImageRect1, Hobject ImageRect2, Hobject* Distance, Hobject* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, const HTuple& Method, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& TextureThresh, const HTuple& MinDisparity, const HTuple& MaxDisparity, const HTuple& NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance)

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, const HTuple& Method, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& TextureThresh, const HTuple& MinDisparity, const HTuple& MaxDisparity, const HTuple& NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance) const

void BinocularDistance(const HObject& ImageRect1, const HObject& ImageRect2, HObject* Distance, HObject* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HTuple& RelPoseRect, const HTuple& Method, const HTuple& MaskWidth, const HTuple& MaskHeight, const HTuple& TextureThresh, const HTuple& MinDisparity, const HTuple& MaxDisparity, const HTuple& NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance)

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HPose& RelPoseRect, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, const HTuple& TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance) const

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HPose& RelPoseRect, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const HString& Filter, const HString& SubDistance) const

HImage HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HPose& RelPoseRect, const char* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const char* Filter, const char* SubDistance) const

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, const HTuple& TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, const HTuple& ScoreThresh, const HTuple& Filter, const HTuple& SubDistance) const

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const HString& Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const HString& Filter, const HString& SubDistance) const

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HTuple& CamParamRect1, const HTuple& CamParamRect2, const char* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const char* Filter, const char* SubDistance) const

void HOperatorSetX.BinocularDistance(
[in] IHUntypedObjectX* ImageRect1, [in] IHUntypedObjectX* ImageRect2, [out] IHUntypedObjectX*Distance, [out] IHUntypedObjectX*Score, [in] VARIANT CamParamRect1, [in] VARIANT CamParamRect2, [in] VARIANT RelPoseRect, [in] VARIANT Method, [in] VARIANT MaskWidth, [in] VARIANT MaskHeight, [in] VARIANT TextureThresh, [in] VARIANT MinDisparity, [in] VARIANT MaxDisparity, [in] VARIANT NumLevels, [in] VARIANT ScoreThresh, [in] VARIANT Filter, [in] VARIANT SubDistance)

IHImageX* HImageX.BinocularDistance(
[in] IHImageX* ImageRect2, [out] IHImageX*Score, [in] VARIANT CamParamRect1, [in] VARIANT CamParamRect2, [in] VARIANT RelPoseRect, [in] BSTR Method, [in] Hlong MaskWidth, [in] Hlong MaskHeight, [in] VARIANT TextureThresh, [in] Hlong MinDisparity, [in] Hlong MaxDisparity, [in] Hlong NumLevels, [in] VARIANT ScoreThresh, [in] VARIANT Filter, [in] VARIANT SubDistance)

IHImageX* HPoseX.BinocularDistance(
[in] IHImageX* ImageRect1, [in] IHImageX* ImageRect2, [out] IHImageX*Score, [in] VARIANT CamParamRect1, [in] VARIANT CamParamRect2, [in] VARIANT RelPoseRect, [in] BSTR Method, [in] Hlong MaskWidth, [in] Hlong MaskHeight, [in] VARIANT TextureThresh, [in] Hlong MinDisparity, [in] Hlong MaxDisparity, [in] Hlong NumLevels, [in] VARIANT ScoreThresh, [in] VARIANT Filter, [in] VARIANT SubDistance)

static void HOperatorSet.BinocularDistance(HObject imageRect1, HObject imageRect2, out HObject distance, out HObject score, HTuple camParamRect1, HTuple camParamRect2, HTuple relPoseRect, HTuple method, HTuple maskWidth, HTuple maskHeight, HTuple textureThresh, HTuple minDisparity, HTuple maxDisparity, HTuple numLevels, HTuple scoreThresh, HTuple filter, HTuple subDistance)

HImage HImage.BinocularDistance(HImage imageRect2, out HImage score, HTuple camParamRect1, HTuple camParamRect2, HPose relPoseRect, string method, int maskWidth, int maskHeight, HTuple textureThresh, int minDisparity, int maxDisparity, int numLevels, HTuple scoreThresh, HTuple filter, HTuple subDistance)

HImage HImage.BinocularDistance(HImage imageRect2, out HImage score, HTuple camParamRect1, HTuple camParamRect2, HPose relPoseRect, string method, int maskWidth, int maskHeight, double textureThresh, int minDisparity, int maxDisparity, int numLevels, double scoreThresh, string filter, string subDistance)

HImage HPose.BinocularDistance(HImage imageRect1, HImage imageRect2, out HImage score, HTuple camParamRect1, HTuple camParamRect2, string method, int maskWidth, int maskHeight, HTuple textureThresh, int minDisparity, int maxDisparity, int numLevels, HTuple scoreThresh, HTuple filter, HTuple subDistance)

HImage HPose.BinocularDistance(HImage imageRect1, HImage imageRect2, out HImage score, HTuple camParamRect1, HTuple camParamRect2, string method, int maskWidth, int maskHeight, double textureThresh, int minDisparity, int maxDisparity, int numLevels, double scoreThresh, string filter, string subDistance)

Beschreibung

binocular_distancebinocular_distanceBinocularDistancebinocular_distanceBinocularDistanceBinocularDistance berechnet das Distanzbild für ein rektifiziertes Bildpaar mit Hilfe von Korrelationsmethoden. Der Operator berechnet zunächst die Disparitäten zwischen den zwei rektifizierten Bildern ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 ähnlich wie in binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity. Die resultierenden Disparitätswerte werden dann wie in disparity_to_distancedisparity_to_distanceDisparityToDistancedisparity_to_distanceDisparityToDistanceDisparityToDistance in Distanzwerte der korrespondierenden 3D Weltpunkte zu dem rektifizierten Stereo-Kamerasystem transformiert. Die Distanzen werden in dem einkanaligen Bild DistanceDistanceDistanceDistanceDistancedistance zurückgegeben, in dem jeder Grauwert den Abstand des jeweiligen 3D Weltpunktes zu dem Stereo-Kamerasystem repräsentiert.

Der Algorithmus benötigt ein Referenzbild ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ein Suchbild ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2, welche entzerrt sein müssen, d.h. korrespondierende Epipolarlinien liegen parallel und haben identische Bildzeilenkoordinaten ( ). Falls diese Annahme nicht zutrifft, können die Bilder durch die Operatoren calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap und map_imagemap_imageMapImagemap_imageMapImageMapImage entzerrt werden. Ausgehend von einem Pixel im Referenzbild ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 kann dann das zugehörige Pixel in ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 durch die Suche entlang der korrespondierenden Zeile in ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 gefunden werden. Eine Übereinstimmung wird gefunden, indem jeweils eine lokale Nachbarschaft um das entsprechende Pixel innerhalb eines Fensters der Größe MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth und MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight in beiden Bildern miteinander verglichen wird. Für jedes definierte Referenzpixel wird die Pixelkorrespondenz in einen Distanzwert des 3D Punktes transformiert, der durch den Schnittpunkt der Sichtstrahlen durch beide korrespondierenden Pixel definiert ist.

Für diese Transformation werden die entzerrten internen Parameter für die Kamera 1 in CamParamRect1CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1 und für die Kamera 2 in CamParamRect2CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2 als auch die relativen externen Kameraparameter RelPoseRectRelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect benötigt, welche die relative Lage der beiden Kamerasysteme zueinander beschreibt und eine Punkttransformation von dem entzerrten Kamerasystem 2 in das entzerrte Kamerasystem 1 definiert. Die Werte für diese Parameter erhält man beispielsweise von den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras und gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap. Ein Qualitätsmaß für jeden Distanzwert wird in ScoreScoreScoreScoreScorescore zurückgegeben, welches jeweils das beste Ergebnis der Korrelationsfunktion S für einen Referenzpixel enthält. Für die Korrelation werden die Grauwerte der originalen, nicht vorverarbeiteten Eingabebilder genutzt.

Die verwendete Korrelationsfunktion wird durch den Parameter MethodMethodMethodMethodMethodmethod bestimmt, welcher drei Arten unterscheidet:

wobei

r1, c1, r2, c2: Zeilen- und Spaltenkoordinaten der korrespondierenden Pixel der beiden Eingabebilder,

g1, g2: Grauwerte der nicht vorverarbeiteten Eingabebilder,

N=(2m+1)(2n+1): Größe des Korrelationsfensters,

mittlerer Grauwert innerhalb eines Korrelationsfensters der Breite 2m+1 und Höhe 2n+1.

Die Methoden 'sad'"sad""sad""sad""sad""sad" und 'ssd'"ssd""ssd""ssd""ssd""ssd" vergleichen direkt die Grauwerte der Pixel innerhalb des Grauwertfensters, wohingegen 'ncc'"ncc""ncc""ncc""ncc""ncc" den mittleren Grauwert und seine Varianz innerhalb des Grauwertfensters ausgleicht. Wenn zwei Bilder in ihrer Helligkeit und ihrem Kontrast unterschiedlich sind, ist daher 'ncc'"ncc""ncc""ncc""ncc""ncc" vorzuziehen. Ansonsten sind 'sad'"sad""sad""sad""sad""sad" und 'ssd'"ssd""ssd""ssd""ssd""ssd" vorzuziehen, da sie aufgrund einfacherer interner Berechnungen schneller sind.

Es muss darauf geachtet werden, dass die Güte der Korrelation für steigende S in den Methoden 'sad'"sad""sad""sad""sad""sad" und 'ssd'"ssd""ssd""ssd""ssd""ssd" fällt (die beste Güte ist 0), während sie in der Methode 'ncc'"ncc""ncc""ncc""ncc""ncc" steigt (die beste Güte ist 1.0).

Die Größe des Korrelationsfensters, welche durch 2m+1 und 2n+1 in obigen Gleichungen referenziert wird, muss ungeradzahlig sein und kann durch die Parameter MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth und MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight festgelegt werden. Der Suchraum wird durch den minimalen und maximalen Disparitätswert MinDisparityMinDisparityMinDisparityMinDisparityMinDisparityminDisparity und MaxDisparityMaxDisparityMaxDisparityMaxDisparityMaxDisparitymaxDisparity festgelegt. Da Grauwerte nicht außerhalb des Bildrandes definiert sind wird die Bildregion des DistanceDistanceDistanceDistanceDistancedistance und ScoreScoreScoreScoreScorescore Bildes am unteren und oberen Bildrand um (MaskHeightMaskHeightMaskHeightMaskHeightMaskHeightmaskHeight-1)/2 sowie am linken und rechten Rand um (MaskWidthMaskWidthMaskWidthMaskWidthMaskWidthmaskWidth-1)/2 beschnitten. Aus dem gleichen Grund wird der maximale Suchraum am linken und rechten Bildrand begrenzt.

Da die Korrelationsverfahren in schwach texturierten Bildregionen im hohen Maße ungenau werden, kann die kleinste, innerhalb eines Korrelationsfensters erlaubte Grauwertstreuung mit Hilfe des Parameters TextureThreshTextureThreshTextureThreshTextureThreshTextureThreshtextureThresh definiert werden. Dieser Schwellwert wird auf beiden Eingabebildern ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 und ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 angewendet. Zusätzlich garantiert ScoreThreshScoreThreshScoreThreshScoreThreshScoreThreshscoreThresh eine Mindestgüte der verwendeten Korrelationsfunktion und legt für die Methoden 'sad'"sad""sad""sad""sad""sad" und 'ssd'"ssd""ssd""ssd""ssd""ssd" den größten, bzw. für 'ncc'"ncc""ncc""ncc""ncc""ncc" den kleinsten zulässigen Korrelationswert fest. Wird ferner FilterFilterFilterFilterFilterfilter auf 'left_right_check'"left_right_check""left_right_check""left_right_check""left_right_check""left_right_check" 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 'none'"none""none""none""none""none" hingegen schaltet dieses Verhalten aus.

Die Anzahl der Pyramidenstufen, welche verwendet werden um das Zeitverhalten von binocular_distancebinocular_distanceBinocularDistancebinocular_distanceBinocularDistanceBinocularDistance zu verbessern, wird durch den Parameter NumLevelsNumLevelsNumLevelsNumLevelsNumLevelsnumLevels bestimmt. Einem grob-zu-fein Schema folgend werden die Disparitätsbilder der höheren Stufen berechnet und in rechteckige Bildteile von ähnlicher Disparität unterteilt um den Suchbereich auf der nächst niedrigeren Stufe für diesen Bildausschnitt einzuschränken. TextureThreshTextureThreshTextureThreshTextureThreshTextureThreshtextureThresh und ScoreThreshScoreThreshScoreThreshScoreThreshScoreThreshscoreThresh werden auf jeder Stufe angewendet, so dass die mit DistanceDistanceDistanceDistanceDistancedistance und ScoreScoreScoreScoreScorescore zurückgegebene Bildregion als die Schnittmenge der Bildregionen auf jeder einzelnen Stufe definiert ist. Im Allgemeinen lohnt sich das Verwenden von Pyramidenstrukturen um so mehr, je mehr das Distanzbild in homogene Bereiche unterteilt werden kann und je größer der Disparitätsbereich definiert werden muss. Auf der anderen Seite können zu hohe Pyramidenstufen durch ihre grobe Auflösung wichtige Texturinformationen verlieren, so dass falsche Distanzwerte zurückgegeben werden können.

Der Wert 'interpolation'"interpolation""interpolation""interpolation""interpolation""interpolation" für den Parameter SubDistanceSubDistanceSubDistanceSubDistanceSubDistancesubDistance schließlich erhöht die Genauigkeit und Unterteilung der Distanzwerte. Das Verhalten wird ausgeschaltet indem der Parameter auf 'none'"none""none""none""none""none" gesetzt wird.

Achtung

Bei der Verwendung von telezentrischen Kameras bezieht sich die Distanz DistanceDistanceDistanceDistanceDistancedistance 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_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap) definiert ist.

Parallelisierung

Parameter

ImageRect1ImageRect1ImageRect1ImageRect1ImageRect1imageRect1 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte)

Rektifiziertes Bild von Kamera 1.

ImageRect2ImageRect2ImageRect2ImageRect2ImageRect2imageRect2 (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte)

Rektifiziertes Bild von Kamera 2.

DistanceDistanceDistanceDistanceDistancedistance (output_object)  singlechannelimage objectHImageHImageHImageHImageXHobject * (real)

Distanzbild.

ScoreScoreScoreScoreScorescore (output_object)  singlechannelimage objectHImageHImageHImageHImageXHobject * (real)

Maß für die Zuverlässigkeit eines Disparitätwertes.

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

Interne Kameraparameter der rektifizierten Kamera 1.

Parameteranzahl: CamParamRect1 == 8 || CamParamRect1 == 12

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

Interne Kameraparameter der rektifizierten Kamera 2.

Parameteranzahl: CamParamRect2 == 8 || CamParamRect2 == 12

RelPoseRectRelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect (input_control)  pose HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Punkttransformation von entzerrter Kamera 2 zu entzerrter Kamera 1.

Parameteranzahl: 7

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

Korrespondenzverfahren.

Defaultwert: 'ncc' "ncc" "ncc" "ncc" "ncc" "ncc"

Werteliste: 'ncc'"ncc""ncc""ncc""ncc""ncc", 'sad'"sad""sad""sad""sad""sad", 'ssd'"ssd""ssd""ssd""ssd""ssd"

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

Breite des Korrelationsfensters.

Defaultwert: 11

Wertevorschläge: 5, 7, 9, 11, 21

Restriktion: 3 <= MaskWidth && odd(MaskWidth)

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

Höhe des Korrelationsfensters.

Defaultwert: 11

Wertevorschläge: 5, 7, 9, 11, 21

Restriktion: 3 <= MaskHeight && odd(MaskHeight)

TextureThreshTextureThreshTextureThreshTextureThreshTextureThreshtextureThresh (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Schwellwert der Grauwertvarianz.

Defaultwert: 0.0

Wertevorschläge: 0.0, 2.0, 5.0, 10.0

Restriktion: 0.0 <= TextureThresh

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

Minimale erwartete Disparität.

Defaultwert: 0

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

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

Anzahl der Pyramidenstufen.

Defaultwert: 1

Werteliste: 1, 2, 3, 4

Restriktion: 1 <= NumLevels

ScoreThreshScoreThreshScoreThreshScoreThreshScoreThreshscoreThresh (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Schwellwert der Korrelationsfunktion.

Defaultwert: 0.0

Werteliste: 0.0, 2.0, 5.0, 10.0

FilterFilterFilterFilterFilterfilter (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

.

Defaultwert: 'none' "none" "none" "none" "none" "none"

Werteliste: 'left_right_check'"left_right_check""left_right_check""left_right_check""left_right_check""left_right_check", 'none'"none""none""none""none""none"

SubDistanceSubDistanceSubDistanceSubDistanceSubDistancesubDistance (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Distanz Interpolation.

Defaultwert: 'none' "none" "none" "none" "none" "none"

Werteliste: 'interpolation'"interpolation""interpolation""interpolation""interpolation""interpolation", 'none'"none""none""none""none""none"

Beispiel (HDevelop)

* read the internal and external stereo parameters
read_cam_par ('cam_left.dat', CamParam1)
read_cam_par ('cam_right.dat', CamParam2)
read_pose ('relpose.dat', RelPose)
* compute the mapping for rectified images
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'geometric', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* compute the distance values in online images
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

Beispiel (HDevelop)

* read the internal and external stereo parameters
read_cam_par ('cam_left.dat', CamParam1)
read_cam_par ('cam_right.dat', CamParam2)
read_pose ('relpose.dat', RelPose)
* compute the mapping for rectified images
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'geometric', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* compute the distance values in online images
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

Beispiel (HDevelop)

* read the internal and external stereo parameters
read_cam_par ('cam_left.dat', CamParam1)
read_cam_par ('cam_right.dat', CamParam2)
read_pose ('relpose.dat', RelPose)
* compute the mapping for rectified images
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'geometric', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* compute the distance values in online images
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

Beispiel (C++ (HALCON 5.0-10.0))

// read the internal and external stereo parameters
read_cam_par("cam_left.dat",CamParam1);
read_cam_par("cam_right.dat",CamParam2);
read_pose("relpose.dat",RelPose);
// compute the mapping for rectified images
gen_binocular_rectification_map(&Map1,&Map2,CamParam1,CamParam2,RelPose,1,
                                "geometric","bilinear",&CamParamRect1,
                                &CamParamRect2,&CamPoseRect1,&CamPoseRect2,
                                &RelPoseRect);
// compute the distance values in online images
while (1)
{
  grab_image_async(&Image1,AcqHandle1,-1);
  map_image(Image1,Map1,&ImageRect1);

  grab_image_async(&Image2,AcqHandle2,-1);
  map_image(Image2,Map2,&ImageRect2);

  binocular_distance(ImageRect1,ImageRect2,&Distance,&Score,
                     CamParamRect1,CamParamRect2,RelPose,"sad",11,11,
                     20,-40,20,2,25,"left_right_check","interpolation");
}

Beispiel (HDevelop)

* read the internal and external stereo parameters
read_cam_par ('cam_left.dat', CamParam1)
read_cam_par ('cam_right.dat', CamParam2)
read_pose ('relpose.dat', RelPose)
* compute the mapping for rectified images
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'geometric', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* compute the distance values in online images
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

Beispiel (HDevelop)

* read the internal and external stereo parameters
read_cam_par ('cam_left.dat', CamParam1)
read_cam_par ('cam_right.dat', CamParam2)
read_pose ('relpose.dat', RelPose)
* compute the mapping for rectified images
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'geometric', 'bilinear', \
                                 CamParamRect1, CamParamRect2, \
                                 Cam1PoseRect1, Cam2PoseRect2, RelPoseRect)
* compute the distance values in online images
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageRect1)

  grab_image_async (Image2, AcqHandle2, -1)
  map_image (Image2, Map2, ImageRect2)

  binocular_distance (ImageRect1, ImageRect2, Distance, Score, \
                      CamParamRect1, CamParamRect2, RelPoseRect, 'sad', \
                      11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

Ergebnis

Sind die Parameterwerte korrekt, dann liefert binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity den Wert 2 (H_MSG_TRUE).

Vorgänger

map_imagemap_imageMapImagemap_imageMapImageMapImage

Nachfolger

thresholdthresholdThresholdthresholdThresholdThreshold

Alternativen

binocular_distance_mgbinocular_distance_mgBinocularDistanceMgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMg, binocular_distance_msbinocular_distance_msBinocularDistanceMsbinocular_distance_msBinocularDistanceMsBinocularDistanceMs, binocular_disparitybinocular_disparityBinocularDisparitybinocular_disparityBinocularDisparityBinocularDisparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMg, binocular_disparity_msbinocular_disparity_msBinocularDisparityMsbinocular_disparity_msBinocularDisparityMsBinocularDisparityMs

Siehe auch

map_imagemap_imageMapImagemap_imageMapImageMapImage, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap, binocular_calibrationbinocular_calibrationBinocularCalibrationbinocular_calibrationBinocularCalibrationBinocularCalibration, distance_to_disparitydistance_to_disparityDistanceToDisparitydistance_to_disparityDistanceToDisparityDistanceToDisparity, disparity_to_distancedisparity_to_distanceDisparityToDistancedisparity_to_distanceDisparityToDistanceDisparityToDistance, disparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyz

Modul

3D Metrology


KlassenKlassenKlassenKlassen | | | | Operatoren