class AprilTag – AprilTag-Objekt

Das apriltag-Objekt ist ein attrtuple, das von Image.find_apriltags() zurückgegeben wird. Jede Instanz beschreibt einen dekodierten AprilTag: seinen Begrenzungsrahmen, den Subpixel-Schwerpunkt, Familie/ID, Qualitätsmetriken des Decoders, die vier erkannten Ecken und – wenn Image.find_apriltags() Intrinsics übergeben werden – eine 6-DoF-Lageschätzung im Kamerabezugssystem.

Felder sind über den Attributnamen (tag.id) oder über den Index (tag[0]) zugänglich. Das Objekt hat keinen öffentlichen Konstruktor.

class image.apriltag

Rufen Sie bitte Image.find_apriltags() auf, um dieses Objekt zu erstellen.

Begrenzungsrahmen und Ecken

x

x-Koordinate der oberen linken Ecke des Begrenzungsrahmens, in Pixeln. Integer. Index [0].

y

y-Koordinate der oberen linken Ecke des Begrenzungsrahmens, in Pixeln. Integer. Index [1].

w

Breite des Begrenzungsrahmens, in Pixeln. Integer. Index [2].

h

Höhe des Begrenzungsrahmens, in Pixeln. Integer. Index [3].

cx

x-Koordinate des Schwerpunkts, auf int gerundet. Integer. Index [4].

cy

y-Koordinate des Schwerpunkts, auf int gerundet. Integer. Index [5].

cxf

x-Koordinate des Schwerpunkts als Subpixel-Float. Index [9].

cyf

y-Koordinate des Schwerpunkts als Subpixel-Float. Index [10].

corners

4-Tupel aus (x, y)-Integer-Tupeln für die vier erkannten Ecken des Tags, im Uhrzeigersinn sortiert beginnend mit der oberen linken Ecke. Index [21].

area

Fläche des Begrenzungsrahmens (w * h). Integer. Index [22].

rect

(x, y, w, h)-4-Tupel des Begrenzungsrahmens. Geeignet zur direkten Übergabe an Zeichnungs-/Zuschneidemethoden wie Image.draw_rectangle() oder Image.crop(). Index [23].

Identifikation

id

Numerische ID des Tags innerhalb seiner Familie. Der gültige Bereich hängt von der Familie ab (z. B. 0 – 586 für TAG36H11). Integer. Index [6].

family

Numerischer Familienbezeichner, einer von:

Integer. Index [7].

name

Familienname als String, z. B. "TAG36H11". Index [8].

Übereinstimmungsqualität

decision_margin

Qualität der Tag-Übereinstimmung im Bereich 0.0 – 1.0, wobei 1.0 der beste Wert ist. Verwenden Sie dies, um Erkennungen mit geringer Konfidenz abzulehnen. Float. Index [12].

hamming

Anzahl der Bitfehler, die der Decoder für dieses Tag akzeptiert hat. Begrenzt durch die Korrekturfähigkeit der Familie:

  • TAG16H5 -> bis zu 0 Bitfehler

  • TAG25H9 -> bis zu 3 Bitfehler

  • TAG36H10 -> bis zu 3 Bitfehler

  • TAG36H11 -> bis zu 4 Bitfehler

Niedriger ist besser. Integer. Index [13].

goodness

Bildqualität des Tags im Bereich 0.0 – 1.0, wobei 1.0 der beste Wert ist. In der veröffentlichten Firmware derzeit immer 0.0 (der zugrunde liegende Decoder berechnet diese Metrik nicht mehr). Float. Index [14].

Lageschätzung

Die unten aufgeführten Translations- und Rotationsfelder werden nur ausgefüllt, wenn Image.find_apriltags() mit den Kamera-Intrinsics fx, fy, cx und cy aufgerufen wird. Ohne Intrinsics sind sie 0.0. Es wird angenommen, dass das Tag 1 Einheit breit ist, sodass Translationen in „Tag-Breiten“ angegeben werden – skalieren Sie mit der realen Tag-Größe, um metrische Entfernungen zu erhalten.

x_translation

X-Translation von der Kamera (links-rechts) in Tag-Breiten. Float. Index [15].

y_translation

Y-Translation von der Kamera (oben-unten) in Tag-Breiten. Float. Index [16].

z_translation

Z-Translation von der Kamera (vorne-hinten) in Tag-Breiten. Float. Index [17].

x_rotation

Rotation um die X-Achse (Nicken) in Radiant. Float. Index [18].

y_rotation

Rotation um die Y-Achse (Gieren) in Radiant. Float. Index [19].

z_rotation

Rotation um die Z-Achse (Rollen) in Radiant. Derselbe Wert wie rotation – aus Symmetriegründen mit x_rotation und y_rotation dupliziert. Float. Index [20].

rotation

Rotation des Tags in der Bildebene in Radiant. Gleich z_rotation. Float. Index [11].