create_caltabcreate_caltabCreateCaltabCreateCaltab (Operator)

Name

create_caltabcreate_caltabCreateCaltabCreateCaltab — Erzeugen der Kalibrierkörperbeschreibungsdatei und der passenden PostScript-Datei für eine Kalibrierplatte mit hexagonaler Markenanordnung.

Signatur

create_caltab( : : NumRows, MarksPerRow, Diameter, FinderRow, FinderColumn, Polarity, CalPlateDescr, CalPlatePSFile : )

Herror create_caltab(const Hlong NumRows, const Hlong MarksPerRow, double Diameter, const Hlong FinderRow, const Hlong FinderColumn, const char* Polarity, const char* CalPlateDescr, const char* CalPlatePSFile)

Herror T_create_caltab(const Htuple NumRows, const Htuple MarksPerRow, const Htuple Diameter, const Htuple FinderRow, const Htuple FinderColumn, const Htuple Polarity, const Htuple CalPlateDescr, const Htuple CalPlatePSFile)

void CreateCaltab(const HTuple& NumRows, const HTuple& MarksPerRow, const HTuple& Diameter, const HTuple& FinderRow, const HTuple& FinderColumn, const HTuple& Polarity, const HTuple& CalPlateDescr, const HTuple& CalPlatePSFile)

static void HMisc::CreateCaltab(Hlong NumRows, Hlong MarksPerRow, double Diameter, const HTuple& FinderRow, const HTuple& FinderColumn, const HString& Polarity, const HString& CalPlateDescr, const HString& CalPlatePSFile)

static void HMisc::CreateCaltab(Hlong NumRows, Hlong MarksPerRow, double Diameter, Hlong FinderRow, Hlong FinderColumn, const HString& Polarity, const HString& CalPlateDescr, const HString& CalPlatePSFile)

static void HMisc::CreateCaltab(Hlong NumRows, Hlong MarksPerRow, double Diameter, Hlong FinderRow, Hlong FinderColumn, const char* Polarity, const char* CalPlateDescr, const char* CalPlatePSFile)

static void HMisc::CreateCaltab(Hlong NumRows, Hlong MarksPerRow, double Diameter, Hlong FinderRow, Hlong FinderColumn, const wchar_t* Polarity, const wchar_t* CalPlateDescr, const wchar_t* CalPlatePSFile)   (Nur Windows)

static void HOperatorSet.CreateCaltab(HTuple numRows, HTuple marksPerRow, HTuple diameter, HTuple finderRow, HTuple finderColumn, HTuple polarity, HTuple calPlateDescr, HTuple calPlatePSFile)

static void HMisc.CreateCaltab(int numRows, int marksPerRow, double diameter, HTuple finderRow, HTuple finderColumn, string polarity, string calPlateDescr, string calPlatePSFile)

static void HMisc.CreateCaltab(int numRows, int marksPerRow, double diameter, int finderRow, int finderColumn, string polarity, string calPlateDescr, string calPlatePSFile)

Beschreibung

create_caltabcreate_caltabCreateCaltabCreateCaltabCreateCaltab erzeugt die Kalibrierkörperbeschreibungsdatei eines Standardkalibrierkörpers für HALCON mit hexagonaler Markenanordnung. Dieser Kalibrierkörper besteht aus NumRowsNumRowsNumRowsNumRowsnumRows mal MarksPerRowMarksPerRowMarksPerRowMarksPerRowmarksPerRow 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.

image/svg+xml
Ein Standard-HALCON-Kalibrierkörper mit hexagonaler Markenanordnung und sein Koordinatensystem

Der Durchmesser der Marken wird durch den Parameter DiameterDiameterDiameterDiameterdiameter 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_objectfind_calib_objectFindCalibObjectFindCalibObjectFindCalibObject gefunden werden kann. Die Position der zentralen Marken der Suchmuster werden in FinderRowFinderRowFinderRowFinderRowfinderRow und FinderColumnFinderColumnFinderColumnFinderColumnfinderColumn 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 PolarityPolarityPolarityPolaritypolarity sind die Marken entweder hell auf dunklem Hintergrund ('light_on_dark'"light_on_dark""light_on_dark""light_on_dark""light_on_dark") oder dunkel auf hellem Hintergrund ('dark_on_light'"dark_on_light""dark_on_light""dark_on_light""dark_on_light").

Die Datei CalPlateDescrCalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescr 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_objectset_calib_data_calib_objectSetCalibDataCalibObjectSetCalibDataCalibObjectSetCalibDataCalibObject oder sim_caltabsim_caltabSimCaltabSimCaltabSimCaltab). Die Dateiendung für eine Beschreibungsdatei eines Kalibrierkörpers mit hexagonaler Markenanordnung ist 'cpd'.

Eine Kalibrierkörperbeschreibung enthält Informationen über:

Eine Datei, die mit create_caltabcreate_caltabCreateCaltabCreateCaltabCreateCaltab 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 CalPlatePSFileCalPlatePSFileCalPlatePSFileCalPlatePSFilecalPlatePSFile enthält die korrespondierende PostScript-Beschreibung des Kalibrierkörpers, die zum Ausdrucken des Kalibrierkörpers verwendet werden kann.

Achtung

Je nach Genauigkeit des verwendeten Ausgabegeräts (z.B. Laserdrucker) stimmt der ausgedruckte Kalibrierkörper nicht genau mit der Kalibrierkörperbeschreibungsdatei CalPlateDescrCalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescr überein. Es müssen daher ggf. die Koordinaten der Kalibrierkörpermarken in der Kalibrierkörperbeschreibungsdatei an die realen Maße angepasst werden!

Ausführungsinformationen

Parameter

NumRowsNumRowsNumRowsNumRowsnumRows (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Number of rows.

Defaultwert: 27

Empfohlene Schrittweite: 1

Restriktion: NumRows > 2

MarksPerRowMarksPerRowMarksPerRowMarksPerRowmarksPerRow (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Number of marks per line.

Defaultwert: 31

Empfohlene Schrittweite: 1

Restriktion: MarksPerRow > 2

DiameterDiameterDiameterDiameterdiameter (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Durchmesser der Marken.

Defaultwert: 0.00258065

Wertevorschläge: 0.00258065, 0.1, 0.0125, 0.00375, 0.00125

FinderRowFinderRowFinderRowFinderRowfinderRow (input_control)  integer(-array) HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zeilenindizes der Suchmuster.

Defaultwert: [13,6,6,20,20]

FinderColumnFinderColumnFinderColumnFinderColumnfinderColumn (input_control)  integer(-array) HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Spaltenindizes der Suchmuster.

Defaultwert: [15,6,24,6,24]

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

Polarität der Marken

Defaultwert: 'light_on_dark' "light_on_dark" "light_on_dark" "light_on_dark" "light_on_dark"

Wertevorschläge: 'light_on_dark'"light_on_dark""light_on_dark""light_on_dark""light_on_dark", 'dark_on_light'"dark_on_light""dark_on_light""dark_on_light""dark_on_light"

CalPlateDescrCalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescr (input_control)  filename.write HTupleHTupleHtuple (string) (string) (HString) (char*)

Dateiname der Kalibrierplattenbeschreibung.

Defaultwert: 'calplate.cpd' "calplate.cpd" "calplate.cpd" "calplate.cpd" "calplate.cpd"

Werteliste: 'calplate.cpd'"calplate.cpd""calplate.cpd""calplate.cpd""calplate.cpd"

Dateiendung: .cpd

CalPlatePSFileCalPlatePSFileCalPlatePSFileCalPlatePSFilecalPlatePSFile (input_control)  filename.write HTupleHTupleHtuple (string) (string) (HString) (char*)

Dateiname der PostScript Datei.

Defaultwert: 'calplate.ps' "calplate.ps" "calplate.ps" "calplate.ps" "calplate.ps"

Dateiendung: .ps

Beispiel (HDevelop)

* 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')

Ergebnis

Sind die Parameterwerte korrekt und konnten beide Dateien erfolgreich geschrieben werden, dann liefert create_caltabcreate_caltabCreateCaltabCreateCaltabCreateCaltab den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

read_cam_parread_cam_parReadCamParReadCamParReadCamPar, caltab_pointscaltab_pointsCaltabPointsCaltabPointsCaltabPoints

Alternativen

gen_caltabgen_caltabGenCaltabGenCaltabGenCaltab

Siehe auch

find_caltabfind_caltabFindCaltabFindCaltabFindCaltab, find_marks_and_posefind_marks_and_poseFindMarksAndPoseFindMarksAndPoseFindMarksAndPose, camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibration, disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltab, sim_caltabsim_caltabSimCaltabSimCaltabSimCaltab

Modul

Foundation