| Operatoren |
query_calib_data_observ_indices — Abfragen von Information zur Beziehung zwischen Kameras, Kalibrierkörpern und Kalibrierkörperposen.
query_calib_data_observ_indices( : : CalibDataID, ItemType, ItemIdx : Index1, Index2)
Ein Kalibrierdatenmodell (CalibDataID) speichert einen Satz von Beobachtungsdaten, die mit set_calib_data_observ_points zum Modell hinzugefügt werden. Jede Beobachtung wird einer Kamera und einer Kalibrierkörperpose zugeordnet. Der Operator query_calib_data_observ_indices liefert die Indizes von Beobachtungsdaten zurück, welche einer bestimmten Kamera bzw. einer bestimmten Kalibrierkörperpose zugeordnet sind.
Für ItemType='camera' muss ein gültiger Kameraindex in ItemIdx eingegeben werden. Das ist eine Zahl, die zwischen 0 und NumCameras-1 liegt, wobei NumCameras mit dem Operator create_calib_data bereits bei der Erstellung des Modells gesetzt wurde. Dann liefern die Ausgabeparameter Index1 und Index2 eine Liste von Kalibrierkörperindizes bzw. eine Liste von Poseindizes zurück. Die Einträge beider Listen bilden Schlüsselpaare [Index1[I],Index2[I]] der 'beobachteten' Kalibrierkörperposen mit I=0..|Index1|-1 und |Index1| = |Index2|.
Für ItemType='calib_obj_pose' muss ein gültiger Kalibrierkörperindex in ItemIdx eingegeben werden. Das ist eine Zahl, die zwischen 0 und NumCalibObjects-1 liegt, wobei NumCalibObjects mit dem Operator create_calib_data bereits bei der Erstellung des Modells gesetzt wurde. Dann liefern die Ausgabeparameter Index1 und Index2 eine Liste von Kameraindizes bzw. eine Liste von Kalibrierkörperposen-Indizes zurück. Jedes Paar [Index1[I],Index2[I]] mit I=0..|Index1|-1 und |Index1| = |Index2|, bedeutet, dass die Kamera Index1[I] die Kalibrierkörperpose [ItemIdx, Index2[I]] 'beobachtet'.
Dieser Operator ist insbesondere dann nützlich, wenn die Beobachtungsdaten eines Kalibrierdatenmodells untersucht werden sollen. Das ist typischerweise der Fall bei Kalibrierdatenmodellen, die aus einer Datei gelesen werden und deren Konfiguration und Inhalt noch unbekannt sind. Darüber hinaus wird der Operator zum Abfragen einer Liste aller Posen, welche einem Kalibrierkörper zugeordnet sind, benutzt (siehe Beispiel).
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Der Wert dieses Parameters darf nicht über mehrere Threads verwendet werden.Handle des Kalibrierdatenmodells.
Typ des abgefragten Elements.
Defaultwert: 'camera'
Werteliste: 'calib_obj', 'camera'
Index einer Kamera ID oder eines Kalibrierkörpers (je nach Auswahl in ItemType).
Defaultwert: 0
Wertevorschläge: 0, 1, 2
Liste von Kalibriermarkennummer oder Liste von Kameranummer (je nach Auswahl in ItemType).
Kalibrierkörpernummer.
* Read a calibration model from a file.
read_calib_data ('calib_data.ccd',CalibDataID)
* Get calibration object indices assigned to calibration object 0.
query_calib_data_observ_indices (CalibDataID, 'calib_obj', 0, _, \
CalibObjPoseIndices)
* CalibObjPoseIndices contains the list of pose indices of calibration
* object 0. In order to be stored in the model, each calibration object
* needs to be observed by at least one camera in the setup (a calibration
* object pose that is not observed by any camera cannot be stored in
* the model). Typically, a calibration object pose can be observed by more
* than one camera. Hence, some calibration object pose indices might appear
* repeatedly in CalibObjPoseIndices. We use tuple_sort and tuple_uniq to
* extract a unique list of calibration object pose indices for calibration
* object 0.
tuple_sort (CalibObjPoseIndices, CalibObjPoseIndices)
tuple_uniq (CalibObjPoseIndices, CalibObjPoseIndices)
* Get poses of calibration objects observed by camera 2.
calibrate_cameras (CalibDataID, Error)
query_calib_data_observ_indices (CalibDataID, 'camera', 2, CalibObjIndices,\
CalibObjPoseIndices)
for I := 0 to |CalibObjIndices|-1 by 1
get_calib_data (CalibDataID, 'calib_obj_pose', \
[CalibObjIndices[I], CalibObjPoseIndices[I]], \
'pose', CalibObjPose)
endfor
Calibration
| Operatoren |