KlassenKlassenKlassenKlassen | | | | Operatoren

find_calib_objectT_find_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject (Operator)

Name

find_calib_objectT_find_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject — Finden der Standard-Kalibrierplatte im Bild, Extrahieren der Kalibriermarken und ihrer Konturen sowie Speichern dieser im Kalibrierdatenmodell.

Signatur

find_calib_object(Image : : CalibDataID, CameraIdx, CalibObjIdx, CalibObjPoseIdx, GenParamName, GenParamValue : )

Herror T_find_calib_object(const Hobject Image, const Htuple CalibDataID, const Htuple CameraIdx, const Htuple CalibObjIdx, const Htuple CalibObjPoseIdx, const Htuple GenParamName, const Htuple GenParamValue)

Herror find_calib_object(Hobject Image, const HTuple& CalibDataID, const HTuple& CameraIdx, const HTuple& CalibObjIdx, const HTuple& CalibObjPoseIdx, const HTuple& GenParamName, const HTuple& GenParamValue)

void HCalibData::FindCalibObject(const HImage& Image, const HTuple& CameraIdx, const HTuple& CalibObjIdx, const HTuple& CalibObjPoseIdx, const HTuple& GenParamName, const HTuple& GenParamValue) const

void FindCalibObject(const HObject& Image, const HTuple& CalibDataID, const HTuple& CameraIdx, const HTuple& CalibObjIdx, const HTuple& CalibObjPoseIdx, const HTuple& GenParamName, const HTuple& GenParamValue)

void HCalibData::FindCalibObject(const HImage& Image, Hlong CameraIdx, Hlong CalibObjIdx, Hlong CalibObjPoseIdx, const HTuple& GenParamName, const HTuple& GenParamValue) const

void HOperatorSetX.FindCalibObject(
[in] IHUntypedObjectX* Image, [in] VARIANT CalibDataID, [in] VARIANT CameraIdx, [in] VARIANT CalibObjIdx, [in] VARIANT CalibObjPoseIdx, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

void HCalibDataX.FindCalibObject(
[in] IHImageX* Image, [in] Hlong CameraIdx, [in] Hlong CalibObjIdx, [in] Hlong CalibObjPoseIdx, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

static void HOperatorSet.FindCalibObject(HObject image, HTuple calibDataID, HTuple cameraIdx, HTuple calibObjIdx, HTuple calibObjPoseIdx, HTuple genParamName, HTuple genParamValue)

void HCalibData.FindCalibObject(HImage image, int cameraIdx, int calibObjIdx, int calibObjPoseIdx, HTuple genParamName, HTuple genParamValue)

Beschreibung

find_calib_objectfind_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject sucht im Bild ImageImageImageImageImageimage nach einer Standard-Kalibrierplatte, welche der Beschreibung des CalibObjIdxCalibObjIdxCalibObjIdxCalibObjIdxCalibObjIdxcalibObjIdx-ten Kalibrierobjekts des Kalibrierdatenmodells CalibDataIDCalibDataIDCalibDataIDCalibDataIDCalibDataIDcalibDataID entspricht. Wird die Platte gefunden, extrahiert find_calib_objectfind_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject die Kalibriermarkenzentren und -konturen und schätzt die Lage der Platte relativ zur beobachtenden Kamera CameraIdxCameraIdxCameraIdxCameraIdxCameraIdxcameraIdx. Zum Schluss wird diese Information im Kalibrierdatenmodell für die CalibObjPoseIdxCalibObjPoseIdxCalibObjPoseIdxCalibObjPoseIdxCalibObjPoseIdxcalibObjPoseIdx-te Pose des Kalibrierkörpers gespeichert.

find_calib_objectfind_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject sammelt Beobachtungen und speichert diese im Kalibrierdatenmodell (siehe set_calib_data_observ_pointsset_calib_data_observ_pointsSetCalibDataObservPointsset_calib_data_observ_pointsSetCalibDataObservPointsSetCalibDataObservPoints für eine Beschreibung der Kalibrierdatenbeobachtungen). Der Operator entspricht im Wesentlichen einer Sequenz aus den drei Operatoren find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab, find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose und set_calib_data_observ_pointsset_calib_data_observ_pointsSetCalibDataObservPointsset_calib_data_observ_pointsSetCalibDataObservPointsSetCalibDataObservPoints und erspart dem Benutzer den Umgang mit einer Reihe von Parametern. Darüberhinaus speichert er zusätzliche Informationen für die Beobachtungen wie die Konturen der Kalibrierplatte und der einzelnen Marken, welche dem Modell nicht mit set_calib_data_observ_pointsset_calib_data_observ_pointsSetCalibDataObservPointsset_calib_data_observ_pointsSetCalibDataObservPointsSetCalibDataObservPoints zugefügt werden können. Es ist zu beachten, dass find_calib_objectfind_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject die volle Beschreibung der Kalibrierplatte benötigt. D.h., wenn dem Operator set_calib_data_calib_objectset_calib_data_calib_objectSetCalibDataCalibObjectset_calib_data_calib_objectSetCalibDataCalibObjectSetCalibDataCalibObject bei der Definition des CalibObjIdxCalibObjIdxCalibObjIdxCalibObjIdxCalibObjIdxcalibObjIdx-ten Kalibrierkörpers kein gültiger Name einer Beschreibungsdatei übergeben wird, liefert find_calib_objectfind_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject einen Fehler zurück. Soll eine Beobachtung eines benutzerdefinierten Kalibierkörpers aufgezeichnet werden, steht dementsprechend nur der Operator set_calib_data_observ_pointsset_calib_data_observ_pointsSetCalibDataObservPointsset_calib_data_observ_pointsSetCalibDataObservPointsSetCalibDataObservPoints zur Verfügung.

Mit GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue können die folgenden zusätzlichen Parameternamen und -werte eingestellt werden:

'gap_tolerance'"gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance":

Toleranzfaktor für den Abstand zwischen einzelnen Marken. Falls die Marken dichter aneinander erscheinen als erwartet, kann man 'gap_tolerance'"gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance" < 1.0 setzen, um zu vermeiden, dass Störungsmuster außerhalb der Kalibrierplatte mit der Kalibrierplatte assoziiert werden. Dies ist z.B. dann sinnvoll, wenn die Platte gekippt aufgenommen wird und der Hintergrund Muster aufweist, die den Kalibriermarken ähneln. Wenn die Abstände zwischen einzelnen Marken sehr stark variieren, z.B., wenn die Platte stark perspektivisch verzerrt im Bild erscheint, kann man 'gap_tolerance'"gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance" > 1.0 setzen und so auch die Gruppierung über größere Distanzen ermöglichen. (siehe auch find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab)

Wertevorschläge: 0.75, 0.9, 1.0 (default), 1.1, 1.2, 1.5

'alpha'"alpha""alpha""alpha""alpha""alpha":

Glättungsfaktor für die Markenkonturextraktion. 'alpha'"alpha""alpha""alpha""alpha""alpha" < 0.9 kann für defokussierte Bilder erforderlich sein, während 'alpha'"alpha""alpha""alpha""alpha""alpha" > 0.9 für Bilder erforderlich sein kann, die zwar scharf sind, aber ein sehr starkes Rauschen aufweisen (siehe auch find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose).

Wertevorschläge: 0.5, 0.7, 0.9 (default), 1.0, 1.2, 1.5

'max_diam_marks'"max_diam_marks""max_diam_marks""max_diam_marks""max_diam_marks""max_diam_marks":

Maximal erwarteter Durchmesser der Marken (intern benötigt von find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose). Standardmäßig wird dieser Wert durch einen vorhergehenden internen Aufruf von find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab geschätzt. Wenn allerdings die Schätzung fehlerhaft ist, der interne Aufruf von find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab scheitert oder übersprungen wird (siehe 'skip_find_caltab'"skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab"), kann eine separate Anpassung dieses Parameterwerts notwendig sein.

Wertevorschläge: 50.0, 100.0, 150.0, 200.0, 300.0

'skip_find_caltab'"skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab":

Überspringen des internen Aufrufs von find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab. Wenn 'skip_find_caltab'"skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab"='true'"true""true""true""true""true", wird nur die Bildregion des Bildes ImageImageImageImageImageimage zum Begrenzen der Markensuche in find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose berücksichtigt. Über diesen Mechanismus kann ein benutzerdefiniertes Suchen der Kalibrierkörperregion nach Bedarf implementiert werden.

Werteliste: 'false'"false""false""false""false""false" (default), 'true'"true""true""true""true""true"

Wir empfehlen, bei Nutzung einer HALCON-Kalibrierplatte als Kalibrierkörper möglichst immer den Operator find_calib_objectfind_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject statt set_calib_data_observ_pointsset_calib_data_observ_pointsSetCalibDataObservPointsset_calib_data_observ_pointsSetCalibDataObservPointsSetCalibDataObservPoints zu verwenden, da durch die zusätzlich extrahierte Kontureninformation genauere Kalibrierberechnungen durch den Operator calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras möglich sind.

Nach einem erfolgreichen Aufruf von find_calib_objectfind_calib_objectFindCalibObjectfind_calib_objectFindCalibObjectFindCalibObject können die extrahierten Punkte und Konturen mit dem Operator get_calib_data_observ_pointsget_calib_data_observ_pointsGetCalibDataObservPointsget_calib_data_observ_pointsGetCalibDataObservPointsGetCalibDataObservPoints bzw. get_calib_data_observ_contoursget_calib_data_observ_contoursGetCalibDataObservContoursget_calib_data_observ_contoursGetCalibDataObservContoursGetCalibDataObservContours abgefragt werden.

Achtung

Ein Kalibrierdatenmodell CalibDataID kann nur von einem Thread aus verwendet werden. Verschiedene Kalibrierdatenmodelle können dagegen in unterschiedlichen Threads genutzt werden.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / uint2)

Eingabebild.

CalibDataIDCalibDataIDCalibDataIDCalibDataIDCalibDataIDcalibDataID (input_control)  calib_data HCalibData, HTupleHTupleHCalibData, HTupleHCalibDataX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des Kalibrierdatenmodells.

CameraIdxCameraIdxCameraIdxCameraIdxCameraIdxcameraIdx (input_control)  number HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Index der beobachtenden Kamera.

Defaultwert: 0

Wertevorschläge: 0, 1, 2

CalibObjIdxCalibObjIdxCalibObjIdxCalibObjIdxCalibObjIdxcalibObjIdx (input_control)  number HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Index des beobachteten Kalibrierkörpers.

Defaultwert: 0

Wertevorschläge: 0, 1, 2

CalibObjPoseIdxCalibObjPoseIdxCalibObjPoseIdxCalibObjPoseIdxCalibObjPoseIdxcalibObjPoseIdx (input_control)  number HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Index der beobachteten Pose.

Defaultwert: 0

Wertevorschläge: 0, 1, 2

Restriktion: CalibObjPoseIdx >= 0

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name-array HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Namen der generischen Parameter.

Defaultwert: []

Werteliste: 'alpha'"alpha""alpha""alpha""alpha""alpha", 'gap_tolerance'"gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance""gap_tolerance", 'max_diam_marks'"max_diam_marks""max_diam_marks""max_diam_marks""max_diam_marks""max_diam_marks", 'skip_find_caltab'"skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab""skip_find_caltab"

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value-array HTupleHTupleHTupleVARIANTHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong) (BSTR / double / Hlong) (char* / double / Hlong)

Werte der generischen Parameter.

Defaultwert: []

Wertevorschläge: 0.5, 0.9, 1.0, 1.2, 1.5, 2.0, 'true'"true""true""true""true""true", 'false'"false""false""false""false""false"

Vorgänger

read_imageread_imageReadImageread_imageReadImageReadImage, find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose, set_calib_data_cam_paramset_calib_data_cam_paramSetCalibDataCamParamset_calib_data_cam_paramSetCalibDataCamParamSetCalibDataCamParam, set_calib_data_calib_objectset_calib_data_calib_objectSetCalibDataCalibObjectset_calib_data_calib_objectSetCalibDataCalibObjectSetCalibDataCalibObject

Nachfolger

set_calib_dataset_calib_dataSetCalibDataset_calib_dataSetCalibDataSetCalibData, calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras

Alternativen

find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab, find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose, set_calib_data_observ_pointsset_calib_data_observ_pointsSetCalibDataObservPointsset_calib_data_observ_pointsSetCalibDataObservPointsSetCalibDataObservPoints

Modul

Calibration


KlassenKlassenKlassenKlassen | | | | Operatoren