get_line_of_sightget_line_of_sightGetLineOfSightGetLineOfSightGetLineOfSightget_line_of_sight berechnet für ein Pixel (RowRowRowRowrowrow,
ColumnColumnColumnColumncolumncolumn) im Bild den zugehörigen Sichtstrahl. Der
Sichtstrahl ist eine Gerade im Kamerakoordinatensystem, die durch
zwei auf ihr liegende Punkte (PXPXPXPXPXpx,PYPYPYPYPYpy,PZPZPZPZPZpz)
und (QXQXQXQXQXqx,QYQYQYQYQYqy,QZQZQZQZQZqz) beschrieben wird. Die
Kamera wird durch die internen Kameraparameter CameraParamCameraParamCameraParamCameraParamcameraParamcamera_param
beschrieben (siehe Kalibrierung). Falls eine Lochkamera
verwendet wird, liegt der zweite Punkt in der Brennpunktebene, d.h.
bei Flächenkameras entspricht der Ausgabeparameter QZQZQZQZQZqz der
Brennweite der Kamera, wohingegen QZQZQZQZQZqz bei Zeilenkameras
zusätzlich noch von der Relativbewegung zwischen Kamera und Objekt
abhängt. Die Geradengleichung des Sichtstrahls ist gegeben durch
Z-Koordinate des zweiten Punktes auf dem Sichtstrahl im
Kamerakoordinatensystem.
Beispiel (HDevelop)
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
Beispiel (HDevelop)
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
Beispiel (C++)
HTuple CameraParam, Row, Column, PX, PY, PZ, QX, QY, QZ;
// Set internal camera parameters.
// Note the, typically, these values are the result of a prior
// calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006,
640, 480, 1280, 960, &CameraParam);
// Inverse projection.
Row[1] = 100;
Row[0] = 50;
Column[1] = 200;
Column[0] = 100;
get_line_of_sight(Row, Column, CameraParam, &PX, &PY, &PZ, &QX, &QY, &QZ);
Beispiel (HDevelop)
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
Beispiel (HDevelop)
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
get_line_of_sightget_line_of_sightGetLineOfSightGetLineOfSightGetLineOfSightget_line_of_sight den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.