Individuelle Kreismuster
Ein individuelles Kreismuster setzt sich aus Kreisen zusammen und bietet die Möglichkeit, die Position und damit die Anordnung der einzelnen Punkte des Musters selbst zu definieren. Dadurch ist es möglich, auch selbst gefertigte komplexe 3D-Muster für die Kalibrierung zu verwenden.
Anforderungen an das Muster
- Die Muster sollten auf möglichst ebenen (planaren) Flächen aufgebracht sein
- Die Kreise sollten möglichst gleich groß sein.
- Ein Muster muss aus mind. 9 Punkten bestehen.
- Der Abstand muss mind. so groß gewählt werden, dass die Kreise sich nicht berühren und als separate Objekte erkannt werden.
- Es muss sich eine Ruhezone in Hintergrundfarbe um das Muster befinden.
Anforderungen an die Bildaufnahme
- Belichtung
- Homogene Ausleuchtung des Musters.
- Guter Kontrast zwischen Kreisen und Hintergrund.
- Abbildung
- Perspektivische Verzerrungen sollten geringgehalten werden.
- Die Standard-Vorgaben der Advanced Calibration Options müssen eingehalten oder angepasst werden. So muss standardmäßig ein Kreis durch eine Fläche von mind. 25 Pixel und max. durch 15000 Pixel abgebildet werden. Die Fläche sollte nicht zu klein gewählt werden, da ansonsten auch Störungen vom Hintergrund erkannt werden.
Anforderung an die Beschreibungsdatei
- Die Beschreibung der Muster muss in einer XML-Datei erfolgen und auf dem Entwicklungsrechner in folgendem Ordner abgelegt werden: C:\Users\Public\TcVision\CalibrationPattern
- Die XML-Datei muss gegen das Schema TcVnCalibrationPattern.xsd im Ordner %TwinCAT3DIR%\Components\Vision\TcVision validiert werden.
- Nach den Vorgaben des Schemas muss die Beschreibungsdatei mindestens den DisplayName, den Origin und die 2D- oder 3D-Koordinaten der Kreispunkte enthalten.
![]() | Mittelpunkt Da der Mittelpunkt automatisch durch die Beschreibung der Punkte gegeben ist, dient die Angabe des Origins nur als weitere Information, wird jedoch nicht in der Berechnung verwertet. |
![]() | 2D-Muster Bei der Angabe von 2D-Mustern wird intern mit einer Z-Koordinate von 0 gerechnet. |
![]() | Konstantes Offset Ein konstantes Offset kann als 3D-Muster mit konstantem Z-Wert realisiert werden. |
Konfiguration im Camera Calibration Assistant
Wenn gültige XML-Beschreibungsdateien in dem genannten Ordner gefunden wurden, werden diese mit dem Ausgelesenen DisplayName angezeigt.
- Dropdown-Menü für individuelle Kreismuster
Auswahl eines individuellen Kreismusters. - Color inverted
Checkbox ob die Farbe des Bildes invertiert werden soll. Im Standard ohne Haken werden schwarze Objekte auf weißem Hintergrund erwartet. - Extrinsic Origin
Wird automatisch auf den Wert gesetzt, der in der Datei des ausgewählten Musters, hinterlegt ist und kann über die Oberfläche nicht verändert werden. - Das optionale Hintergrundbild für die schematische Darstellung des Kalibriermusters wird entsprechend angezeigt, sofern der Bildname inkl. Dateiendung in der Beschreibungsdatei angegeben wurde und die Bilddatei ebenfalls in dem gleichen Ordner liegt.

Beispielvorlage einer Beschreibungsdatei für individuelle Kreismuster
Der folgende Codeblock kann als Vorlage für die Erstellung eigener Beschreibungsdateien verwendet werden und enthält beispielhaft ausgefüllte Metadaten und 2D-Punktbeschreibungen. Die ebenfalls enthaltenen 3D-Punktbeschreibungen sind auskommentiert. Bei Verwendung müsste der Pattern2D Block vollständig durch den Pattern3D Block ersetzt werden, eine Vermischung ist nicht zulässig.
![]() | Zuordnung der Punkte Es ist hilfreich, wenn die Punkte zeilen- oder spaltenweise sortiert sind und direkt zu der Lage der Punkte auf dem Kalibrierbild passen. Dadurch können die Punkte schneller und zuverlässiger zugeordnet werden. |
<?xml version="1.0" encoding="UTF-8"?>
<TcVnCalibrationPattern xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:///C:/TwinCAT/3.1/Components/Vision/TcVision/TcVnCalibrationPattern.xsd">
<MetaData>
<DisplayName>12345</DisplayName>
<Origin>Center</Origin>
<PreviewImage>PreviewImageSample.png</PreviewImage>
<Description>This is a calibration pattern</Description>
<Revision>V1.0</Revision>
<Width>10</Width>
<Height>10</Height>
<Depth>4</Depth>
<NumberOfPoints>9</NumberOfPoints>
<PointDiameter>1</PointDiameter>
</MetaData>
<Pattern2D>
<!-- 1st row -->
<Point2D x="-5" y="-5"/>
<Point2D x="-0" y="-5"/>
<Point2D x="5" y="-5"/>
<!-- 2nd row -->
<Point2D x="-5" y="0"/>
<Point2D x="0" y="0"/>
<Point2D x="5" y="0"/>
<!-- 3rd row -->
<Point2D x="-5" y="5"/>
<Point2D x="0" y="5"/>
<Point2D x="5" y="5"/>
</Pattern2D>
<!-- <Pattern3D> -->
<!-- 1st row -->
<!-- <Point3D x="-5" y="-5" z="-2"/> -->
<!-- <Point3D x="-0" y="-5" z="-2"/> -->
<!-- <Point3D x="5" y="-5" z="-2"/> -->
<!-- 2nd row -->
<!-- <Point3D x="-5" y="0" z="0"/> -->
<!-- <Point3D x="0" y="0" z="0"/> -->
<!-- <Point3D x="5" y="0" z="0"/> -->
<!-- 3rd row -->
<!-- <Point3D x="-5" y="5" z="2"/> -->
<!-- <Point3D x="0" y="5" z="2"/> -->
<!-- <Point3D x="5" y="5" z="2"/> -->
<!-- </Pattern3D> -->
</TcVnCalibrationPattern>