binocular_distanceT_binocular_distanceBinocularDistanceBinocularDistancebinocular_distance (Operator)

Name

binocular_distanceT_binocular_distanceBinocularDistanceBinocularDistancebinocular_distance — 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)

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 HCamPar& CamParamRect1, const HCamPar& 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 HCamPar& CamParamRect1, const HCamPar& 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 HCamPar& CamParamRect1, const HCamPar& 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 HImage::BinocularDistance(const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const wchar_t* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const wchar_t* Filter, const wchar_t* SubDistance) const   (Nur Windows)

HImage HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& 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 HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& 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 HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& 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 HCamPar::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect2, const HPose& RelPoseRect, const wchar_t* Method, Hlong MaskWidth, Hlong MaskHeight, double TextureThresh, Hlong MinDisparity, Hlong MaxDisparity, Hlong NumLevels, double ScoreThresh, const wchar_t* Filter, const wchar_t* SubDistance) const   (Nur Windows)

HImage HPose::BinocularDistance(const HImage& ImageRect1, const HImage& ImageRect2, HImage* Score, const HCamPar& CamParamRect1, const HCamPar& 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 HCamPar& CamParamRect1, const HCamPar& 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 HCamPar& CamParamRect1, const HCamPar& 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

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

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, HCamPar camParamRect1, HCamPar 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, HCamPar camParamRect1, HCamPar camParamRect2, HPose relPoseRect, string method, int maskWidth, int maskHeight, double textureThresh, int minDisparity, int maxDisparity, int numLevels, double scoreThresh, string filter, string subDistance)

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

HImage HCamPar.BinocularDistance(HImage imageRect1, HImage imageRect2, out HImage score, HCamPar 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, HCamPar camParamRect1, HCamPar 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, HCamPar camParamRect1, HCamPar camParamRect2, string method, int maskWidth, int maskHeight, double textureThresh, int minDisparity, int maxDisparity, int numLevels, double scoreThresh, string filter, string subDistance)

def binocular_distance(image_rect_1: HObject, image_rect_2: HObject, cam_param_rect_1: Sequence[Union[int, float, str]], cam_param_rect_2: Sequence[Union[int, float, str]], rel_pose_rect: Sequence[Union[int, float]], method: str, mask_width: int, mask_height: int, texture_thresh: Union[float, int], min_disparity: int, max_disparity: int, num_levels: int, score_thresh: Union[float, int], filter: MaybeSequence[str], sub_distance: MaybeSequence[str]) -> Tuple[HObject, HObject]

Beschreibung

binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistancebinocular_distance 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 ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 und ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 ähnlich wie in binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity. Die resultierenden Disparitätswerte werden dann wie in disparity_to_distancedisparity_to_distanceDisparityToDistanceDisparityToDistanceDisparityToDistancedisparity_to_distance 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 ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 und ein Suchbild ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2, 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_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map und map_imagemap_imageMapImageMapImageMapImagemap_image entzerrt werden. Ausgehend von einem Pixel im Referenzbild ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 kann dann das zugehörige Pixel in ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 durch die Suche entlang der korrespondierenden Zeile in ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 gefunden werden. Eine Übereinstimmung wird gefunden, indem jeweils eine lokale Nachbarschaft um das entsprechende Pixel innerhalb eines Fensters der Größe MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width und MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height 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 CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1cam_param_rect_1 und für die Kamera 2 in CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2cam_param_rect_2 als auch die relativen externen Kameraparameter RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRectrel_pose_rect benötigt. Letzteres ist eine Pose der Form , welche die relative Lage der beiden Kamerasysteme zueinander beschreibt. Genauer gesagt definiert sie eine Punkttransformation von dem entzerrten Kamerakoordinatensystem 2 (ccsR2) in das entzerrte Kamerakoordinatensystem 1 (ccsR1). Siehe auch Transformationen / Posen und „Solution Guide III-C - 3D Vision“. Die Werte für diese Parameter erhält man beispielsweise von den Operatoren calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras und gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map. Ein Qualitätsmaß für jeden Distanzwert wird in ScoreScoreScoreScorescorescore zurückgegeben, welches jeweils das beste Ergebnis der Korrelationsfunktion 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

, , , : Zeilen- und Spaltenkoordinaten der korrespondierenden Pixel der beiden Eingabebilder,

, :: Grauwerte der nicht vorverarbeiteten Eingabebilder,

: Größe des Korrelationsfensters,

: mittlerer Grauwert innerhalb eines Korrelationsfensters der Breite und Höhe .

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. Für weitere Details siehe binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity.

Es muss darauf geachtet werden, dass die Güte der Korrelation für steigende 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 und in obigen Gleichungen referenziert wird, muss ungeradzahlig sein und kann durch die Parameter MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width und MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height festgelegt werden. Der Suchraum wird durch den minimalen und maximalen Disparitätswert MinDisparityMinDisparityMinDisparityMinDisparityminDisparitymin_disparity und MaxDisparityMaxDisparityMaxDisparityMaxDisparitymaxDisparitymax_disparity festgelegt. Da Grauwerte nicht außerhalb des Bildrandes definiert sind wird die Bildregion des DistanceDistanceDistanceDistancedistancedistance und ScoreScoreScoreScorescorescore Bildes am unteren und oberen Bildrand um (MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height-1)/2 sowie am linken und rechten Rand um (MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width-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 TextureThreshTextureThreshTextureThreshTextureThreshtextureThreshtexture_thresh definiert werden. Dieser Schwellenwert wird auf beiden Eingabebildern ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 und ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 angewendet. Zusätzlich garantiert ScoreThreshScoreThreshScoreThreshScoreThreshscoreThreshscore_thresh 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 ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 in ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 als auch von ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 in ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 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_distanceBinocularDistanceBinocularDistanceBinocularDistancebinocular_distance zu verbessern, wird durch den Parameter NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels 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. TextureThreshTextureThreshTextureThreshTextureThreshtextureThreshtexture_thresh und ScoreThreshScoreThreshScoreThreshScoreThreshscoreThreshscore_thresh 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 SubDistanceSubDistanceSubDistanceSubDistancesubDistancesub_distance 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_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map) 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_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map), 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_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistancebinocular_distance Stereosysteme gemischten Typs nicht. Für Stereosysteme gemischten Typs sollte stattdessen reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereoreconstruct_surface_stereo verwendet werden. Dort kann das Referenzkoordinatensystem beliebig gewählt werden. Alternativ können eventuell binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity und disparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyzDisparityImageToXyzdisparity_image_to_xyz verwendet werden.

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

Ausführungsinformationen

Parameter

ImageRect1ImageRect1ImageRect1ImageRect1imageRect1image_rect_1 (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte)

Rektifiziertes Bild von Kamera 1.

ImageRect2ImageRect2ImageRect2ImageRect2imageRect2image_rect_2 (input_object)  singlechannelimage objectHImageHObjectHImageHobject (byte)

Rektifiziertes Bild von Kamera 2.

DistanceDistanceDistanceDistancedistancedistance (output_object)  singlechannelimage objectHImageHObjectHImageHobject * (real)

Distanzbild.

ScoreScoreScoreScorescorescore (output_object)  singlechannelimage objectHImageHObjectHImageHobject * (real)

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

CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1cam_param_rect_1 (input_control)  campar HCamPar, HTupleSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter der rektifizierten Kamera 1.

CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2cam_param_rect_2 (input_control)  campar HCamPar, HTupleSequence[Union[int, float, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Interne Kameraparameter der rektifizierten Kamera 2.

RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRectrel_pose_rect (input_control)  pose HPose, HTupleSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Punkttransformation von entzerrter Kamera 2 zu entzerrter Kamera 1.

Parameteranzahl: 7

MethodMethodMethodMethodmethodmethod (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (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"

MaskWidthMaskWidthMaskWidthMaskWidthmaskWidthmask_width (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite des Korrelationsfensters.

Defaultwert: 11

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

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

MaskHeightMaskHeightMaskHeightMaskHeightmaskHeightmask_height (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe des Korrelationsfensters.

Defaultwert: 11

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

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

TextureThreshTextureThreshTextureThreshTextureThreshtextureThreshtexture_thresh (input_control)  real HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Schwellenwert der Grauwertvarianz.

Defaultwert: 0.0

Wertevorschläge: 0.0, 2.0, 5.0, 10.0

Restriktion: 0.0 <= TextureThresh

MinDisparityMinDisparityMinDisparityMinDisparityminDisparitymin_disparity (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Minimale erwartete Disparität.

Defaultwert: 0

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

MaxDisparityMaxDisparityMaxDisparityMaxDisparitymaxDisparitymax_disparity (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Maximale erwartete Disparität.

Defaultwert: 30

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

NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Anzahl der Pyramidenstufen.

Defaultwert: 1

Wertevorschläge: 1, 2, 3, 4

Restriktion: 1 <= NumLevels

ScoreThreshScoreThreshScoreThreshScoreThreshscoreThreshscore_thresh (input_control)  real HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Schwellenwert der Korrelationsfunktion.

Defaultwert: 0.0

Wertevorschläge: 0.0, 2.0, 5.0, 10.0

FilterFilterFilterFilterfilterfilter (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Verwendeter Filter.

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"

SubDistanceSubDistanceSubDistanceSubDistancesubDistancesub_distance (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (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)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 '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)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 '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++)

// Set internal and external stereo parameters.
// Note that, typically, these values are the result of a prior
// calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006,
                                622, 517, 1280, 1024, &CamParam1);
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006,
                                654, 519, 1280, 1024, &CamParam2);
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89,
             "Rp+T", "gba", "point", &RelPose);
// Compute the mapping for rectified images.
gen_binocular_rectification_map(&Map1,&Map2,CamParam1,CamParam2,
                                RelPose,1,"viewing_direction",
                                "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)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 '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)

* Set internal and external stereo parameters.
* Note that, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, -665, 5.2e-006, 5.2e-006, \
                                622, 517, 1280, 1024, CamParam1)
gen_cam_par_area_scan_division (0.01, -731, 5.2e-006, 5.2e-006, \
                                654, 519, 1280, 1024, CamParam2)
create_pose (0.1535,-0.0037,0.0447,0.17,319.84,359.89, \
             'Rp+T', 'gba', 'point', RelPose)
* Compute the mapping for rectified images.
gen_binocular_rectification_map (Map1, Map2, CamParam1, CamParam2, \
                                 RelPose, 1, 'viewing_direction', \
                                 '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_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity den Wert TRUE.

Vorgänger

map_imagemap_imageMapImageMapImageMapImagemap_image

Nachfolger

thresholdthresholdThresholdThresholdThresholdthreshold

Alternativen

binocular_distance_mgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMgBinocularDistanceMgbinocular_distance_mg, binocular_distance_msbinocular_distance_msBinocularDistanceMsBinocularDistanceMsBinocularDistanceMsbinocular_distance_ms, binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparitybinocular_disparity, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMgbinocular_disparity_mg, binocular_disparity_msbinocular_disparity_msBinocularDisparityMsBinocularDisparityMsBinocularDisparityMsbinocular_disparity_ms

Siehe auch

map_imagemap_imageMapImageMapImageMapImagemap_image, gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMapgen_binocular_rectification_map, binocular_calibrationbinocular_calibrationBinocularCalibrationBinocularCalibrationBinocularCalibrationbinocular_calibration, distance_to_disparitydistance_to_disparityDistanceToDisparityDistanceToDisparityDistanceToDisparitydistance_to_disparity, disparity_to_distancedisparity_to_distanceDisparityToDistanceDisparityToDistanceDisparityToDistancedisparity_to_distance, disparity_image_to_xyzdisparity_image_to_xyzDisparityImageToXyzDisparityImageToXyzDisparityImageToXyzdisparity_image_to_xyz

Modul

3D Metrology