create_caltab
— Erzeugen der Kalibrierkörperbeschreibungsdatei und der passenden
PostScript-Datei für eine Kalibrierplatte mit hexagonaler Markenanordnung.
create_caltab( : : NumRows, MarksPerRow, Diameter, FinderRow, FinderColumn, Polarity, CalPlateDescr, CalPlatePSFile : )
create_caltab
erzeugt die Kalibrierkörperbeschreibungsdatei eines
Standardkalibrierkörpers für HALCON mit hexagonaler Markenanordnung.
Dieser Kalibrierkörper besteht aus
NumRows
mal MarksPerRow
kreisförmigen Marken. Diese Marken
sind in einem hexagonalen Muster angeordnet, so dass jede Marke
(ausgenommen die am Rand liegenden) sechs Nachbarn mit gleichem Abstand hat.
Der Durchmesser der Marken wird durch den Parameter Diameter
in
Metern festgelegt. Der Abstand zwischen den Zentren der horizontal
benachbarten Marken ist
. Der Abstand zwischen benachbarten Zeilen von
Kalibriermarken ist .
Die Breite und die Höhe der generierten Kalibrierplatte lassen sich mit
den folgenden Formeln ermitteln:
Das Muster des Kalibrierkörpers enthält ein bis fünf Suchmuster. Ein
Suchmuster besteht aus einem speziellen Hexagon von Marken (also
einer Marke und deren sechs Nachbarmarken), das vier oder sechs Marken mit
einem Loch enthält. Jedes dieser bis zu fünf Suchmuster ist eindeutig und
kann dazu verwendet werden die Orientierung des Kalibrierkörpers und die
Lage des Suchmusters auf dem Kalibrierkörper zu bestimmen. Mindestens
eines der Suchmuster muss vollständig sichtbar sein, damit der
Kalibrierkörper von find_calib_object
gefunden werden kann.
Die Position der zentralen Marken der Suchmuster werden in
FinderRow
und FinderColumn
angegeben. Die Länge dieser
Tupel bestimmt somit die Anzahl der Suchmuster auf dem Kalibrierkörper.
Zwei Suchmuster dürfen sich nicht überlappen.
Es wird empfohlen, einen gewissen Abstand zwischen den Suchmustern
einzuhalten.
Als Faustregel gilt: Wenn zu wenig Marken vorhanden sind, um die Suchmuster
an möglichst eindeutigen Stellen zu platzieren, sollte die Anzahl der
Suchmuster reduziert werden, damit sie gleichmäßiger verteilt werden können.
Der Ursprung des Koordinatensystems des Kalibrierkörpers befindet sich in der Mitte der zentralen Marke des ersten Suchmusters.
Abhängig von Polarity
sind die Marken entweder hell auf
dunklem Hintergrund ('light_on_dark' ) oder dunkel auf hellem
Hintergrund ('dark_on_light' ).
Die Datei CalPlateDescr
enthält die Kalibrierkörperbeschreibung,
die bei allen HALCON-Operationen die diesen Kalibrierkörber verwenden,
angegeben werden muss (zum Beispiel in set_calib_data_calib_object
oder sim_caltab
).
Die Dateiendung für eine Beschreibungsdatei eines Kalibrierkörpers
mit hexagonaler Markenanordnung ist 'cpd'.
Eine Kalibrierkörperbeschreibung enthält Informationen über:
die Anzahl der Zeilen und Spalten des Kalibrierkörpers
die Anzahl der Marken pro Zeile und Spalte
die Verschiebung des Koordinatensystems zur Plattenoberfläche in z-Richtung
den Rand des Kalibrierkörpers
die Polarität der Marken
die Anzahl und Position der Suchmuster
die x,y-Koordinaten und den Radius von jeder Kalibriermarke
Eine Datei, die mit create_caltab
erzeugt wurde, sieht z.B.
folgendermaßen aus (Kommentare sind durch ein '#' am Anfang der
Zeile markiert):
# Plate Description Version 3 # HALCON Version 12.0 -- Tue Aug 12 15:40:14 2014 # Description of the standard calibration plate # used for the camera calibration in HALCON # (generated by create_caltab) # # # 27 rows x 31 columns # Width, height of calibration plate [meter]: 0.167742, 0.125846 # Distance between mark centers [meter]: 0.0051613 # Number of marks in y-dimension (rows) r 27 # Number of marks in x-dimension (columns) c 31 # offset of coordinate system in z-dimension [meter] (optional): z 0 # rim of the calibration plate (min x, max y, max x, min y) [meter]: o -0.083871125 0.0645592449151841 0.086451775 -0.0645592449151841 # polarity of the marks (light or dark): p light # number of finder pattern marks: f 5 # position of the finder patterns (central mark): x y [index] 15 13 6 6 24 6 6 20 24 20 # calibration marks: x y radius [meter] # calibration marks at y = -0.0581076 m -0.07483885 -0.0581076199151841 0.001290325 -0.06967755 -0.0581076199151841 0.001290325 -0.06451625 -0.0581076199151841 0.001290325 -0.05935495 -0.0581076199151841 0.001290325 -0.05419365 -0.0581076199151841 0.001290325 -0.04903235 -0.0581076199151841 0.001290325 -0.04387105 -0.0581076199151841 0.001290325 -0.03870975 -0.0581076199151841 0.001290325 -0.03354845 -0.0581076199151841 0.001290325 -0.02838715 -0.0581076199151841 0.001290325 -0.02322585 -0.0581076199151841 0.001290325 -0.01806455 -0.0581076199151841 0.001290325 -0.01290325 -0.0581076199151841 0.001290325 -0.00774195 -0.0581076199151841 0.001290325 -0.00258065 -0.0581076199151841 0.001290325 0.00258065 -0.0581076199151841 0.001290325 0.00774195 -0.0581076199151841 0.001290325 0.01290325 -0.0581076199151841 0.001290325 0.01806455 -0.0581076199151841 0.001290325 0.02322585 -0.0581076199151841 0.001290325 0.02838715 -0.0581076199151841 0.001290325 0.03354845 -0.0581076199151841 0.001290325 0.03870975 -0.0581076199151841 0.001290325 0.04387105 -0.0581076199151841 0.001290325 0.04903235 -0.0581076199151841 0.001290325 0.05419365 -0.0581076199151841 0.001290325 0.05935495 -0.0581076199151841 0.001290325 0.06451625 -0.0581076199151841 0.001290325 0.06967755 -0.0581076199151841 0.001290325 0.07483885 -0.0581076199151841 0.001290325 0.08000015 -0.0581076199151841 0.001290325 # calibration marks at y = -0.0536378 m -0.0774195 -0.0536378029986315 0.001290325 -0.0722582 -0.0536378029986315 0.001290325 -0.0670969 -0.0536378029986315 0.001290325 -0.0619356 -0.0536378029986315 0.001290325 -0.0567743 -0.0536378029986315 0.001290325 -0.051613 -0.0536378029986315 0.001290325 -0.0464517 -0.0536378029986315 0.001290325 -0.0412904 -0.0536378029986315 0.001290325 -0.0361291 -0.0536378029986315 0.001290325 -0.0309678 -0.0536378029986315 0.001290325 -0.0258065 -0.0536378029986315 0.001290325 -0.0206452 -0.0536378029986315 0.001290325 -0.0154839 -0.0536378029986315 0.001290325 -0.0103226 -0.0536378029986315 0.001290325 -0.0051613 -0.0536378029986315 0.001290325 0 -0.0536378029986315 0.001290325 0.0051613 -0.0536378029986315 0.001290325 0.0103226 -0.0536378029986315 0.001290325 0.0154839 -0.0536378029986315 0.001290325 0.0206452 -0.0536378029986315 0.001290325 0.0258065 -0.0536378029986315 0.001290325 0.0309678 -0.0536378029986315 0.001290325 0.0361291 -0.0536378029986315 0.001290325 0.0412904 -0.0536378029986315 0.001290325 0.0464517 -0.0536378029986315 0.001290325 0.051613 -0.0536378029986315 0.001290325 0.0567743 -0.0536378029986315 0.001290325 0.0619356 -0.0536378029986315 0.001290325 0.0670969 -0.0536378029986315 0.001290325 0.0722582 -0.0536378029986315 0.001290325 0.0774195 -0.0536378029986315 0.001290325 # calibration marks at y = -0.049168 m ... # calibration marks at y = -0.0446982 m ... # calibration marks at y = -0.0402284 m ... # calibration marks at y = -0.0357585 m ... # calibration marks at y = -0.0312887 m ... # calibration marks at y = -0.0268189 m ... # calibration marks at y = -0.0223491 m ... # calibration marks at y = -0.0178793 m ... # calibration marks at y = -0.0134095 m ... # calibration marks at y = -0.00893963 m ... # calibration marks at y = -0.00446982 m ... # calibration marks at y = 0 m ... # calibration marks at y = 0.00446982 m ... # calibration marks at y = 0.00893963 m ... # calibration marks at y = 0.0134095 m ... # calibration marks at y = 0.0178793 m ... # calibration marks at y = 0.0223491 m ... # calibration marks at y = 0.0268189 m ... # calibration marks at y = 0.0312887 m ... # calibration marks at y = 0.0357585 m ... # calibration marks at y = 0.0402284 m ... # calibration marks at y = 0.0446982 m ... # calibration marks at y = 0.049168 m ... # calibration marks at y = 0.0536378 m ... # calibration marks at y = 0.0581076 m ...
Es ist zu beachten, dass hier für eine bessere Übersichtlichkeit nur die Koordinaten und Radien der Marken aus den ersten beiden Zeilen vollständig aufgeführt sind. Die entsprechenden Koordinaten und Radien der Marken in den anderen Zeilen wurden daher ausgelassen.
Die Datei CalPlatePSFile
enthält die korrespondierende
PostScript-Beschreibung des Kalibrierkörpers, die zum Ausdrucken des
Kalibrierkörpers verwendet werden kann.
Je nach Genauigkeit des verwendeten Ausgabegeräts
(z.B. Laserdrucker) stimmt der ausgedruckte Kalibrierkörper nicht genau
mit der Kalibrierkörperbeschreibungsdatei CalPlateDescr
überein.
Es müssen daher ggf. die Koordinaten der Kalibrierkörpermarken in der
Kalibrierkörperbeschreibungsdatei an die realen Maße angepasst werden!
NumRows
(input_control) integer →
(integer)
Number of rows.
Defaultwert: 27
Empfohlene Schrittweite: 1
Restriktion: NumRows > 2
MarksPerRow
(input_control) integer →
(integer)
Number of marks per line.
Defaultwert: 31
Empfohlene Schrittweite: 1
Restriktion: MarksPerRow > 2
Diameter
(input_control) real →
(real)
Durchmesser der Marken.
Defaultwert: 0.00258065
Wertevorschläge: 0.00258065, 0.1, 0.0125, 0.00375, 0.00125
FinderRow
(input_control) integer(-array) →
(integer)
Zeilenindizes der Suchmuster.
Defaultwert: [13,6,6,20,20]
FinderColumn
(input_control) integer(-array) →
(integer)
Spaltenindizes der Suchmuster.
Defaultwert: [15,6,24,6,24]
Polarity
(input_control) string →
(string)
Polarität der Marken
Defaultwert: 'light_on_dark'
Wertevorschläge: 'light_on_dark' , 'dark_on_light'
CalPlateDescr
(input_control) filename.write →
(string)
Dateiname der Kalibrierplattenbeschreibung.
Defaultwert: 'calplate.cpd'
Werteliste: 'calplate.cpd'
Dateiendung: .cpd
CalPlatePSFile
(input_control) filename.write →
(string)
Dateiname der PostScript Datei.
Defaultwert: 'calplate.ps'
Dateiendung: .ps
* Parameters to create the descriptor for the 160mm wide calibration * plate. create_caltab (27, 31, 0.00258065, [13, 6, 6, 20, 20], [15, 6, 24, 6, 24], \ 'light_on_dark', 'calplate.cpd', 'caltab.ps')
Sind die Parameterwerte korrekt und konnten beide Dateien erfolgreich
geschrieben werden, dann liefert create_caltab
den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
find_caltab
,
find_marks_and_pose
,
camera_calibration
,
disp_caltab
,
sim_caltab
Foundation