get_line_of_sightT_get_line_of_sightGetLineOfSightGetLineOfSightget_line_of_sight (Operator)

Name

get_line_of_sightT_get_line_of_sightGetLineOfSightGetLineOfSightget_line_of_sight — Berechnen des zu einem Bildpunkt gehörenden Sichtstrahls.

Signatur

get_line_of_sight( : : Row, Column, CameraParam : PX, PY, PZ, QX, QY, QZ)

Herror T_get_line_of_sight(const Htuple Row, const Htuple Column, const Htuple CameraParam, Htuple* PX, Htuple* PY, Htuple* PZ, Htuple* QX, Htuple* QY, Htuple* QZ)

void GetLineOfSight(const HTuple& Row, const HTuple& Column, const HTuple& CameraParam, HTuple* PX, HTuple* PY, HTuple* PZ, HTuple* QX, HTuple* QY, HTuple* QZ)

void HCamPar::GetLineOfSight(const HTuple& Row, const HTuple& Column, HTuple* PX, HTuple* PY, HTuple* PZ, HTuple* QX, HTuple* QY, HTuple* QZ) const

static void HOperatorSet.GetLineOfSight(HTuple row, HTuple column, HTuple cameraParam, out HTuple PX, out HTuple PY, out HTuple PZ, out HTuple QX, out HTuple QY, out HTuple QZ)

void HCamPar.GetLineOfSight(HTuple row, HTuple column, out HTuple PX, out HTuple PY, out HTuple PZ, out HTuple QX, out HTuple QY, out HTuple QZ)

def get_line_of_sight(row: Sequence[float], column: Sequence[float], camera_param: Sequence[Union[int, float, str]]) -> Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float]]

Beschreibung

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

Der Vorteil der Darstellung der Geraden durch zwei Punkte ist, dass es hiermit einfacher wird, die Gerade im Raum zu transformieren. Es muss lediglich der Operator affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3daffine_trans_point_3d auf die beiden Punkte angewandt werden.

Ausführungsinformationen

Parameter

RowRowRowRowrowrow (input_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Zeilenkoordinate des Pixels.

ColumnColumnColumnColumncolumncolumn (input_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Spaltenkoordinate des Pixels.

CameraParamCameraParamCameraParamCameraParamcameraParamcamera_param (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.

PXPXPXPXPXpx (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

X-Koordinate des ersten Punktes auf dem Sichtstrahl im Kamerakoordinatensystem.

PYPYPYPYPYpy (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Y-Koordinate des ersten Punktes auf dem Sichtstrahl im Kamerakoordinatensystem.

PZPZPZPZPZpz (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Z-Koordinate des ersten Punktes auf dem Sichtstrahl im Kamerakoordinatensystem.

QXQXQXQXQXqx (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

X-Koordinate des zweiten Punktes auf dem Sichtstrahl im Kamerakoordinatensystem.

QYQYQYQYQYqy (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Y-Koordinate des zweiten Punktes auf dem Sichtstrahl im Kamerakoordinatensystem.

QZQZQZQZQZqz (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

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.

Vorgänger

read_cam_parread_cam_parReadCamParReadCamParReadCamParread_cam_par, camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibrationcamera_calibration

Nachfolger

affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3daffine_trans_point_3d

Siehe auch

camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibrationcamera_calibration, disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltabdisp_caltab, read_cam_parread_cam_parReadCamParReadCamParReadCamParread_cam_par, project_3d_pointproject_3d_pointProject3dPointProject3dPointProject3dPointproject_3d_point, affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3daffine_trans_point_3d

Modul

Calibration