class AprilTag – oggetto AprilTag

L’oggetto apriltag è un attrtuple restituito da Image.find_apriltags(). Ciascuna istanza descrive un AprilTag decodificato: il suo bounding box, il centroide sub-pixel, la famiglia/id, le metriche di qualità del decodificatore, i quattro angoli rilevati e – quando vengono forniti i parametri intrinseci a Image.find_apriltags() – una stima della posa a 6 gradi di libertà nel frame della camera.

I campi sono accessibili per nome di attributo (tag.id) o per indice (tag[0]). L’oggetto non ha un costruttore pubblico.

class image.apriltag

Chiama Image.find_apriltags() per creare questo oggetto.

Bounding box e angoli

x

Coordinata x dell’angolo in alto a sinistra del bounding box, in pixel. Intero. Indice [0].

y

Coordinata y dell’angolo in alto a sinistra del bounding box, in pixel. Intero. Indice [1].

w

Larghezza del bounding box, in pixel. Intero. Indice [2].

h

Altezza del bounding box, in pixel. Intero. Indice [3].

cx

Coordinata x del centroide, arrotondata a int. Intero. Indice [4].

cy

Coordinata y del centroide, arrotondata a int. Intero. Indice [5].

cxf

Coordinata x del centroide come float sub-pixel. Indice [9].

cyf

Coordinata y del centroide come float sub-pixel. Indice [10].

corners

Tupla a 4 elementi di tuple intere (x, y) per i quattro angoli rilevati del tag, ordinati in senso orario a partire dall’angolo in alto a sinistra. Indice [21].

area

Area del bounding box (w * h). Intero. Indice [22].

rect

Tupla a 4 elementi (x, y, w, h) del bounding box. Adatta a essere passata direttamente a metodi di disegno/ritaglio come Image.draw_rectangle() o Image.crop(). Indice [23].

Identificazione

id

Id numerico del tag all’interno della sua famiglia. L’intervallo valido dipende dalla famiglia (ad es. da 0 a 586 per TAG36H11). Intero. Indice [6].

family

Identificatore numerico della famiglia, uno tra:

Intero. Indice [7].

name

Nome della famiglia come stringa, ad es. "TAG36H11". Indice [8].

Qualità della corrispondenza

decision_margin

Qualità della corrispondenza del tag nell’intervallo da 0.0 a 1.0 dove 1.0 è la migliore. Usala per scartare i rilevamenti a bassa confidenza. Float. Indice [12].

hamming

Numero di errori di bit che il decodificatore ha accettato per questo tag. Limitato dalla capacità di correzione della famiglia:

  • TAG16H5 -> fino a 0 errori di bit

  • TAG25H9 -> fino a 3 errori di bit

  • TAG36H10 -> fino a 3 errori di bit

  • TAG36H11 -> fino a 4 errori di bit

Più basso è meglio. Intero. Indice [13].

goodness

Qualità dell’immagine del tag nell’intervallo da 0.0 a 1.0 dove 1.0 è la migliore. Attualmente sempre 0.0 nel firmware rilasciato (il decodificatore sottostante non calcola più questa metrica). Float. Indice [14].

Stima della posa

I campi di traslazione e rotazione sottostanti vengono popolati solo quando Image.find_apriltags() viene chiamato con i parametri intrinseci della camera fx, fy, cx e cy. Senza i parametri intrinseci essi valgono 0.0. Si assume che il tag sia largo 1 unità, quindi le traslazioni sono espresse in «larghezze del tag» – scala per la dimensione reale del tag per ottenere distanze metriche.

x_translation

Traslazione X dalla camera (sinistra-destra) in larghezze del tag. Float. Indice [15].

y_translation

Traslazione Y dalla camera (su-giù) in larghezze del tag. Float. Indice [16].

z_translation

Traslazione Z dalla camera (avanti-indietro) in larghezze del tag. Float. Indice [17].

x_rotation

Rotazione attorno all’asse X (pitch) in radianti. Float. Indice [18].

y_rotation

Rotazione attorno all’asse Y (yaw) in radianti. Float. Indice [19].

z_rotation

Rotazione attorno all’asse Z (roll) in radianti. Stesso valore di rotation – duplicato per simmetria con x_rotation e y_rotation. Float. Indice [20].

rotation

Rotazione nel piano dell’immagine del tag in radianti. Uguale a z_rotation. Float. Indice [11].