gen_binocular_rectification_mapT_gen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap (Operator)

Name

gen_binocular_rectification_mapT_gen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMap — Berechnet die Abbildung der beiden Bildebenen eines binokularen Stereosystems in eine gemeinsame Bildebene.

Signatur

gen_binocular_rectification_map( : Map1, Map2 : CamParam1, CamParam2, RelPose, SubSampling, Method, MapType : CamParamRect1, CamParamRect2, CamPoseRect1, CamPoseRect2, RelPoseRect)

Herror T_gen_binocular_rectification_map(Hobject* Map1, Hobject* Map2, const Htuple CamParam1, const Htuple CamParam2, const Htuple RelPose, const Htuple SubSampling, const Htuple Method, const Htuple MapType, Htuple* CamParamRect1, Htuple* CamParamRect2, Htuple* CamPoseRect1, Htuple* CamPoseRect2, Htuple* RelPoseRect)

void GenBinocularRectificationMap(HObject* Map1, HObject* Map2, const HTuple& CamParam1, const HTuple& CamParam2, const HTuple& RelPose, const HTuple& SubSampling, const HTuple& Method, const HTuple& MapType, HTuple* CamParamRect1, HTuple* CamParamRect2, HTuple* CamPoseRect1, HTuple* CamPoseRect2, HTuple* RelPoseRect)

HImage HImage::GenBinocularRectificationMap(const HCamPar& CamParam1, const HCamPar& CamParam2, const HPose& RelPose, double SubSampling, const HString& Method, const HString& MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect)

HImage HImage::GenBinocularRectificationMap(const HCamPar& CamParam1, const HCamPar& CamParam2, const HPose& RelPose, double SubSampling, const char* Method, const char* MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect)

HImage HImage::GenBinocularRectificationMap(const HCamPar& CamParam1, const HCamPar& CamParam2, const HPose& RelPose, double SubSampling, const wchar_t* Method, const wchar_t* MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect)   (Nur Windows)

HImage HCamPar::GenBinocularRectificationMap(HImage* Map2, const HCamPar& CamParam2, const HPose& RelPose, double SubSampling, const HString& Method, const HString& MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect) const

HImage HCamPar::GenBinocularRectificationMap(HImage* Map2, const HCamPar& CamParam2, const HPose& RelPose, double SubSampling, const char* Method, const char* MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect) const

HImage HCamPar::GenBinocularRectificationMap(HImage* Map2, const HCamPar& CamParam2, const HPose& RelPose, double SubSampling, const wchar_t* Method, const wchar_t* MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect) const   (Nur Windows)

HImage HPose::GenBinocularRectificationMap(HImage* Map2, const HCamPar& CamParam1, const HCamPar& CamParam2, double SubSampling, const HString& Method, const HString& MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect) const

HImage HPose::GenBinocularRectificationMap(HImage* Map2, const HCamPar& CamParam1, const HCamPar& CamParam2, double SubSampling, const char* Method, const char* MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect) const

HImage HPose::GenBinocularRectificationMap(HImage* Map2, const HCamPar& CamParam1, const HCamPar& CamParam2, double SubSampling, const wchar_t* Method, const wchar_t* MapType, HCamPar* CamParamRect1, HCamPar* CamParamRect2, HPose* CamPoseRect1, HPose* CamPoseRect2, HPose* RelPoseRect) const   (Nur Windows)

static void HOperatorSet.GenBinocularRectificationMap(out HObject map1, out HObject map2, HTuple camParam1, HTuple camParam2, HTuple relPose, HTuple subSampling, HTuple method, HTuple mapType, out HTuple camParamRect1, out HTuple camParamRect2, out HTuple camPoseRect1, out HTuple camPoseRect2, out HTuple relPoseRect)

HImage HImage.GenBinocularRectificationMap(HCamPar camParam1, HCamPar camParam2, HPose relPose, double subSampling, string method, string mapType, out HCamPar camParamRect1, out HCamPar camParamRect2, out HPose camPoseRect1, out HPose camPoseRect2, out HPose relPoseRect)

HImage HCamPar.GenBinocularRectificationMap(out HImage map2, HCamPar camParam2, HPose relPose, double subSampling, string method, string mapType, out HCamPar camParamRect1, out HCamPar camParamRect2, out HPose camPoseRect1, out HPose camPoseRect2, out HPose relPoseRect)

HImage HPose.GenBinocularRectificationMap(out HImage map2, HCamPar camParam1, HCamPar camParam2, double subSampling, string method, string mapType, out HCamPar camParamRect1, out HCamPar camParamRect2, out HPose camPoseRect1, out HPose camPoseRect2, out HPose relPoseRect)

Beschreibung

Stereobildpaare werden rektifiziert, indem eine Transformationsvorschrift für jede Bildebene bestimmt wird, so dass Paare von korrespondierenden Epipolarlinien kollinear sind und parallel zur X-Achse des Bildkoordinatensystems verlaufen. Diese Bildgeometrie ist eine Voraussetzung für eine effiziente Berechnung von Disparitäten oder Distanzen mit Operatoren wie z.B. binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparity oder binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistance. Man kann sich die rektifizierten Bilder vorstellen, als würden sie von einem neuen Stereoaufbau aufgenommen, welchen man durch eine Rotation (und Translation bei telezentrischen Kameras) der ursprünglichen Kameras erhalten würde. Die Projectionszentren (bzw. bei telezentrischen Kameras die Richtung der optischen Achse) werden beibehalten. Bei perspektivischen Kameras werden zusätzlich die Bildebenen in eine gemeinsame Ebene transformiert. Letzteres ist gleichbedeutend mit der Gleichsetzung der Bildweiten und der Gleichrichtung der optischen Achsen. Für ein Stereosystem gemischten Typs (d.h. eine perspektivische und eine telezentrische Kamera) werden die Bildebenen auch, wie unten beschrieben, in eine gemeinsame Ebene transformiert.

Um die Abbildungsvorschrift für rektifizierte Bilder zu erhalten verlangt gen_binocular_rectification_mapgen_binocular_rectification_mapGenBinocularRectificationMapGenBinocularRectificationMapGenBinocularRectificationMap die internen Kameraparameter CamParam1CamParam1CamParam1CamParam1camParam1 von Kamera 1 und CamParam2CamParam2CamParam2CamParam2camParam2 von Kamera 2. Ebenso wird die relative 3D-Lage RelPoseRelPoseRelPoseRelPoserelPose, , benötigt. Diese 3D-Lage beschreibt die Transformation eines Punktes vom Kamerakoordinatensystem 2 (ccs2) nach Kamerakoordinatensystem 1 (ccs 1), siehe auch Transformationen / Posen und „Solution Guide III-C - 3D Vision“. Die Werte für diese Parameter kann man beispielsweise vom Operator calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCameras erhalten.

Die für die Rektifizierung modifizierten internen Kameraparameter werden in CamParamRect1CamParamRect1CamParamRect1CamParamRect1camParamRect1 und CamParamRect2CamParamRect2CamParamRect2CamParamRect2camParamRect2 ausgegeben. Die Rotation (und bei telezentrischen Kameras die Translation) des entzerrten Kamerasystems bezüglich des ursprünglichen Systems wird durch eine Punkttransformation vom entzerrten System ins originale System in CamPoseRect1CamPoseRect1CamPoseRect1CamPoseRect1camPoseRect1 und CamPoseRect2CamPoseRect2CamPoseRect2CamPoseRect2camPoseRect2 zurückgegeben. Diese 3D-Lagen sind in der Form . Dabei steht ccsX für das Kamerakoordinatensystem von Kamera X und ccsRX für das entzerrtes Kamerakoordinatensystem von Kamera X. Schließlich gibt RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect die relative 3D-Lage der entzerrten Koordinatensysteme, , zurück. Diese 3D-Lage beschreibt eine Punkttransformation vom entzerrten Kamerakoordinatensystem 2 ins entzerrte Kamerakoordinatensystem 1.

Rektifizierungsmethode

Bei perspektivischen Kameras ist dies lediglich eine Verschiebung in der x Richtung. Im Allgemeinen werden die Abbildungsvorschriften so festgelegt, dass sich das entzerrte Kamerasystem 1 links von dem entzerrten Kamerasystem 2 befindet. Dies bedeutet, dass das optische Zentrum der entzerrten Kamera 2 eine positive X-Koordinate im entzerrten Koordinatensystem von Kamera 1 besitzt.

Die Projektion auf eine gemeinsame Ebene hat mehrere Freiheitsgrade, welche implizit durch die Auswahl einer bestimmten Methode in MethodMethodMethodMethodmethod bestimmt werden können:

Bei telezentrischen Kameras wird der Parameter MethodMethodMethodMethodmethod ignoriert. Die relative Lage beider Kameras ist in einem solchen Aufbau nicht eindeutig bestimmt, da die Kameras entlang ihrer optischen Achse verschoben die gleichen Aufnahmen liefern. Um trotzdem eine absolute Distanzmessung zur Kamera zu ermöglichen, wird intern angenommen, dass die Kameras einen festen Abstand und Orientierung zueinander haben. Hierfür werden sie entlang ihrer optischen Achse derart verschoben, dass ihr Abstand ein Meter beträgt und die Gerade auf der beide Kameras liegen (Basis) die optischen Achsen beider Kameras im gleichen Winkel schneiden (Die Basis und die optischen Achsen bilden ein gleichschenkliges Dreieck). Die optischen Achsen bleiben dabei erhalten. Die relative Lage der rektifizierten Kameras RelPoseRectRelPoseRectRelPoseRectRelPoseRectrelPoseRect kann sich von der relativen Lage der ursprünglichen Kameras RelPoseRelPoseRelPoseRelPoserelPose dadurch stark unterscheiden.

Für ein Stereosystem gemischten Typs (d.h. eine perspektivische und eine telezentrische Kamera) wird der Parameter MethodMethodMethodMethodmethod ignoriert. Die gemeinsame rektifizierende Bildebene ist eindeutig aus der Geometrie der perspektivischen Kamera und der relativen Lage der beiden Kameras bestimmt. Die Normale der rektifizierenden Bildebene ist der Vektor, der vom Projektionszentrum der perspektivischen Kamera zum Punkt auf der optischen Achse der telezentrischen Kamera zeigt, der den kürzesten Abstand zum Projektionszentrum der perspektivischen Kamera besitzt. Dies ist gleichzeitig die z-Achse der rektifizierten perspektivischen Kamera. Die geometrische Basis des gemischten Stereosystems ist eine Gerade, die durch das Projektionszentrum der perspektivischen Kamera verläuft und dieselbe Richtung wie die z-Achse der telezentrischen Kamera besitzt, d.h. die Basis ist parallel zur Blickrichtung der telezentrischen Kamera. Die x-Achse der rektifizierten perspektivischen Kamera ist durch die Basis gegeben und die y-Achse wird so konstruiert, dass sich eine rechtshändiges Koordinatensystem ergibt. Um die telezentrische Kamera zu rektifizieren, muss ihre optische Achse auf die Basis verschoben werden und die Bildebene muss um oder verkippt werden. Um dies zu erreichen, muss ein spezieller Typ von objektseitig telezentrischer Kamera, der diese spezielle Geometrie darstellen kann (gekennzeichnet durch den negativen Abstand der verkippten Bildebene ImagePlaneDistImagePlaneDistImagePlaneDistImagePlaneDistimagePlaneDist), für die rektifizierte telezentrische Kamera verwendet werden. Die Repräsentation dieses speziellen Kameratyps sollte als Blackbox betrachtet werden, da sie ausschließlich zum Zwecke der Rektifizierung in HALCON verwendet wird (und daher auch nicht in camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibration beschrieben wird). Die rektifizierte telezentrische Kamera hat dieselbe Orientierung wie die ursprüngliche telezentrische Kamera. Ihr Referenzpunkt ist aber auf einen Punkt auf der Basis verschoben worden.

Abbildungsvorschrift für die Bilder (Rectification Maps)

Die Abbildungsvorschriften für die Bilder von Kamera 1 und Kamera 2 werden in Map1Map1Map1Map1map1 und Map2Map2Map2Map2map2 in Form von Bildmatritzen zurückgegeben. Der Parameter MapTypeMapTypeMapTypeMapTypemapType gibt an, in welchem Typ die Abbildungsvorschrift gespeichert werden sollen. Wurde 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor" gewählt, so bestehen beide Abbildungsvorschriften aus einem Bild mit einem Kanal, in dem für jedes Pixel des Ergebnisbildes die linearen Koordinaten desjenigen Pixels des Eingabebildes stehen, welches den transformierten Koordinaten am nächsten liegt. Wurde die bilineare Interpolation ('bilinear'"bilinear""bilinear""bilinear""bilinear") gewählt, so bestehen beide Abbildungsvorschriften aus einem Bild mit fünf Kanälen. Der erste Kanal enthält für jedes Pixel des Ergebnisbildes die linearen Koordinaten desjenigen Pixels des Eingabebildes, welches links oberhalb von den transformierten Koordinaten liegt. Die übrigen vier Kanäle enthalten die Gewichte der einzelnen vier Nachbarpixel der transformierten Koordinaten für die bilineare Interpolation in folgender Reihenfolge:

2 3
4 5

Der zweite Kanal z.B. enthält die Gewichte der Pixel, die links oberhalb der transformierten Koordinaten liegen. Wurde 'coord_map_sub_pix'"coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix" gewählt, bestehen beide Abbildungsvorschriften aus einem Vektorfeld, welches für jedes Pixel des Ergebnisbildes die subpixelgenauen Koordinaten im Eingabebild enthält.

Die Größe und Auflösung der Abbildungen und transformierten Bilder kann mit dem Parameter SubSamplingSubSamplingSubSamplingSubSamplingsubSampling bestimmt werden, welcher einen Abtastfaktor auf die Originalbilder beschreibt.

Wenn die erzeugte Abbildung in einem anderen Programm wiederverwendet werden soll, kann man sie mit dem Operator write_imagewrite_imageWriteImageWriteImageWriteImage als Mehrkanalbild abgespeichern (Format: 'tiff'"tiff""tiff""tiff""tiff").

Achtung

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

Ausführungsinformationen

Parameter

Map1Map1Map1Map1map1 (output_object)  (multichannel-)image objectHImageHImageHobject * (int4 / uint2 / vector_field)

Abbildungsvorschrift für Bilder von Kamera 1.

Map2Map2Map2Map2map2 (output_object)  (multichannel-)image objectHImageHImageHobject * (int4 / uint2 / vector_field)

Abbildungsvorschrift für Bilder von Kamera 2.

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

Interne Parameter der Kamera 1.

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

Interne Parameter der Kamera 2.

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

Punkttransformation von Kamera 2 zu Kamera 1.

Parameteranzahl: 7

SubSamplingSubSamplingSubSamplingSubSamplingsubSampling (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Abtastfaktor.

Defaultwert: 1.0

Wertevorschläge: 0.5, 0.66, 1.0, 1.5, 2.0, 3.0, 4.0

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

Art der Entzerrung.

Defaultwert: 'viewing_direction' "viewing_direction" "viewing_direction" "viewing_direction" "viewing_direction"

Werteliste: 'geometric'"geometric""geometric""geometric""geometric", 'viewing_direction'"viewing_direction""viewing_direction""viewing_direction""viewing_direction"

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

Art der Abbildungsvorschrift.

Defaultwert: 'bilinear' "bilinear" "bilinear" "bilinear" "bilinear"

Werteliste: 'bilinear'"bilinear""bilinear""bilinear""bilinear", 'coord_map_sub_pix'"coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix""coord_map_sub_pix", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor"

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

Interne Parameter der entzerrten Kamera 1.

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

Interne Parameter der entzerrten Kamera 2.

CamPoseRect1CamPoseRect1CamPoseRect1CamPoseRect1camPoseRect1 (output_control)  pose HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Punkttransformation von der entzerrten Kamera 1 zur ursprünglichen Kamera 1.

Parameteranzahl: 7

CamPoseRect2CamPoseRect2CamPoseRect2CamPoseRect2camPoseRect2 (output_control)  pose HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Punkttransformation von der entzerrten Kamera 2 zur ursprünglichen Kamera 2.

Parameteranzahl: 7

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

Punkttransformation von der entzerrten Kamera 2 zur entzerrten Kamera 1.

Parameteranzahl: 7

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, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)

* Compute the disparities in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageMapped1)

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

  binocular_disparity(ImageMapped1, ImageMapped2, Disparity, Score, \
                      '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, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)

* Compute the disparities in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageMapped1)

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

  binocular_disparity(ImageMapped1, ImageMapped2, Disparity, Score, \
                      '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, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)

* Compute the disparities in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageMapped1)

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

  binocular_disparity(ImageMapped1, ImageMapped2, Disparity, Score, \
                      '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, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)

* Compute the disparities in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageMapped1)

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

  binocular_disparity(ImageMapped1, ImageMapped2, Disparity, Score, \
                      '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, \
                                 CamPoseRect1, CamPoseRect2, \
                                 RelPoseRect)

* Compute the disparities in online images.
while (1)
  grab_image_async (Image1, AcqHandle1, -1)
  map_image (Image1, Map1, ImageMapped1)

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

  binocular_disparity(ImageMapped1, ImageMapped2, Disparity, Score, \
                      'sad', 11, 11, 20, -40, 20, 2, 25, \
                      'left_right_check', 'interpolation')
endwhile

Ergebnis

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

Vorgänger

binocular_calibrationbinocular_calibrationBinocularCalibrationBinocularCalibrationBinocularCalibration

Nachfolger

map_imagemap_imageMapImageMapImageMapImage

Alternativen

gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapGenImageToWorldPlaneMap

Siehe auch

map_imagemap_imageMapImageMapImageMapImage, binocular_disparitybinocular_disparityBinocularDisparityBinocularDisparityBinocularDisparity, binocular_distancebinocular_distanceBinocularDistanceBinocularDistanceBinocularDistance, binocular_disparity_mgbinocular_disparity_mgBinocularDisparityMgBinocularDisparityMgBinocularDisparityMg, binocular_distance_mgbinocular_distance_mgBinocularDistanceMgBinocularDistanceMgBinocularDistanceMg, binocular_disparity_msbinocular_disparity_msBinocularDisparityMsBinocularDisparityMsBinocularDisparityMs, binocular_distance_msbinocular_distance_msBinocularDistanceMsBinocularDistanceMsBinocularDistanceMs, gen_image_to_world_plane_mapgen_image_to_world_plane_mapGenImageToWorldPlaneMapGenImageToWorldPlaneMapGenImageToWorldPlaneMap, contour_to_world_plane_xldcontour_to_world_plane_xldContourToWorldPlaneXldContourToWorldPlaneXldContourToWorldPlaneXld, image_points_to_world_planeimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlaneImagePointsToWorldPlane

Modul

3D Metrology