| Operatoren |
read_cam_par — Lesen der internen Kameraparameter aus einer Textdatei.
read_cam_par( : : CamParFile : CameraParam)
read_cam_par dient zum Einlesen der internen Kameraparameter CameraParam aus einer Textdatei mit dem Namen CamParFile. Die Dateiendung für die Kameraparameter ist in HALCON 'dat'. CameraParam ist ein Tupel, das die internen Kameraparameter in der folgenden Reihenfolge enthält (siehe calibrate_cameras oder camera_calibration für eine Beschreibung der zu Grunde liegenden Kameramodelle):
Für Kameras mit Flächensensor (Divisionsmodell der Objektivverzeichnung): [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight] Für Kameras mit Flächensensor (Polynomialmodell der Objektivverzeichnung): [Focus, Poly1, Poly2, Poly3, Poly4, Poly5, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight] Für Kameras mit Zeilensensor: [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
Das Format der Textdatei ist eine (von HALCON unabhängige) generische Parameterbeschreibung, die beliebige Gruppen von Parametern zu hierarchisch organisierten Parametergruppen (Struktur ParGroup) zusammenfasst. Die Beschreibung eines Parameters innerhalb einer ParGroup enthält in 3 Zeilen folgende Einträge:
Name : Kurzname : aktueller Wert ;
Typ : Untere Grenze (optional) : Obere Grenze (optional) ;
Beschreibung (optional) ;
Kommentare werden durch ein '#' am Zeilenanfang markiert.
read_cam_par erwartet in der Datei CamParFile eine der beiden folgenden Parametergruppen.
Die Parametergruppe Camera:Parameter enthält die 8 (Divisionsmodell) oder 12 (Polynomialmodell) Parameter für Kameras mit Flächensensor. Eine solche Datei hat für eine Kamera mit Flächensensor und dem Divisionsmodell z.B. folgendes Aussehen:
# INTERNAL CAMERA PARAMETERS
ParGroup: Camera: Parameter;
"Internal camera parameters";
Focus:foc: 0.00806039;
DOUBLE:0.0:;
"Focal length of the lens [meter]";
Kappa:kappa: -2253.5;
DOUBLE::;
"Radial distortion coefficient [1/(meter*meter)]";
Sx:sx: 1.0629e-05;
DOUBLE:0.0:;
"Width of a cell on the sensor [meter]";
Sy:sy: 1.1e-05;
DOUBLE:0.0:;
"Height of a cell on the sensor [meter]";
Cx:cx: 378.236;
DOUBLE:0.0:;
"X-coordinate of the image center [pixel]";
Cy:cy: 297.587;
DOUBLE:0.0:;
"Y-coordinate of the image center [pixel]";
ImageWidth:imgw: 768;
INT:1:32767;
"Width of the images [pixel]";
ImageHeight:imgh: 576;
INT:1:32767;
"Height of the images [pixel]";
Für eine Kamera mit Flächensensor und dem Polynomialmodell kann sie z.B. folgendermaßen aussehen:
# INTERNAL CAMERA PARAMETERS
ParGroup: Camera: Parameter;
"Internal camera parameters";
Focus:foc: 0.025;
DOUBLE:0.0:;
"Focal length of the lens [meter]";
Poly1:poly1: 0;
DOUBLE::;
"1st polynomial distortion coefficient";
Poly2:poly2: 0;
DOUBLE::;
"2nd polynomial distortion coefficient";
Poly3:poly3: 0;
DOUBLE::;
"3rd polynomial distortion coefficient";
Poly4:poly4: 0;
DOUBLE::;
"4th polynomial distortion coefficient";
Poly5:poly5: 0;
DOUBLE::;
"5th polynomial distortion coefficient";
Sx:sx: 1.1e-005;
DOUBLE:0.0:;
"Width of a cell on the sensor";
Sy:sy: 1.1e-005;
DOUBLE:0.0:;
"Height of a cell on the sensor";
Cx:cx: 384;
DOUBLE::;
"X-coordinate of the image center";
Cy:cy: 288;
DOUBLE::;
"Y-coordinate of the image center";
ImageWidth:imgw: 768;
INT:1:32768;
"Width of the images";
ImageHeight:imgh: 576;
INT:1:32768;
"Height of the images";
Die Parametergruppe LinescanCamera:Parameter enthält zusätzlich zu den 8 Parametern der Parametergruppe Camera:Paramter mit Divisionsmodell noch 3 Parameter, die die Bewegung der Kamera in Bezug auf das Objekt beschreiben. Somit enthält die Parametergruppe LinescanCamera:Parameter die 11 Parameter Focus, Kappa , Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy und Vz. Eine solche Datei hat z.B. folgendes Aussehen:
# INTERNAL CAMERA PARAMETERS
ParGroup: LinescanCamera: Parameter;
"Internal camera parameters";
Focus:foc: 0.061;
DOUBLE:0.0:;
"Focal length of the lens [meter]";
Kappa:kappa: -16.9761;
DOUBLE::;
"Radial distortion coefficient [1/(meter*meter)]";
Sx:sx: 1.06903e-05;
DOUBLE:0.0:;
"Width of a cell on the sensor [meter]";
Sy:sy: 1e-05;
DOUBLE:0.0:;
"Height of a cell on the sensor [meter]";
Cx:cx: 930.625;
DOUBLE:0.0:;
"X-coordinate of the image center [pixel]";
Cy:cy: 149.962;
DOUBLE:0.0:;
"Y-coordinate of the image center [pixel]";
ImageWidth:imgw: 2048;
INT:1:32767;
"Width of the images [pixel]";
ImageHeight:imgh: 3840;
INT:1:32767;
"Height of the images [pixel]";
Vx:vx: 1.41376e-06;
DOUBLE::;
"X-component of the motion vector [meter/scanline]";
Vy:vy: 5.45756e-05;
DOUBLE::;
"Y-component of the motion vector [meter/scanline]";
Vz:vz: 3.45872e-06;
DOUBLE::;
"Z-component of the motion vector [meter/scanline]";
Dateiname der Kameraparameterdatei.
Defaultwert: 'campar.dat'
Werteliste: 'campar.dat', 'campar.final', 'campar.initial'
Dateiendung: .dat
Interne Kameraparameter.
Parameteranzahl: CameraParam == 8 || CameraParam == 11 || CameraParam == 12
* get internal camera parameters:
read_cam_par('campar.dat', CameraParam)
Sind die Parameterwerte korrekt und konnte die Datei erfolgreich gelesen werden, dann liefert read_cam_par den Wert 2 (H_MSG_TRUE).
find_marks_and_pose, sim_caltab, gen_caltab, disp_caltab, camera_calibration
find_caltab, find_marks_and_pose, camera_calibration, disp_caltab, sim_caltab, write_cam_par, write_pose, read_pose, project_3d_point, get_line_of_sight
Foundation
| Operatoren |