classe AprilTag – objeto AprilTag

O objeto apriltag é um attrtuple devolvido por Image.find_apriltags(). Cada instância descreve um AprilTag descodificado: a sua caixa delimitadora, centróide sub-pixel, família/id, métricas de qualidade do descodificador, os quatro cantos detetados e – quando são fornecidos parâmetros intrínsecos a Image.find_apriltags() – uma estimativa de pose com 6 graus de liberdade no referencial da câmara.

Os campos são acessíveis por nome de atributo (tag.id) ou por índice (tag[0]). O objeto não tem construtor público.

class image.apriltag

Por favor, chame Image.find_apriltags() para criar este objeto.

Caixa delimitadora e cantos

x

Coordenada x do canto superior esquerdo da caixa delimitadora, em pixels. Inteiro. Índice [0].

y

Coordenada y do canto superior esquerdo da caixa delimitadora, em pixels. Inteiro. Índice [1].

w

Largura da caixa delimitadora, em pixels. Inteiro. Índice [2].

h

Altura da caixa delimitadora, em pixels. Inteiro. Índice [3].

cx

Coordenada x do centróide, arredondada para inteiro. Inteiro. Índice [4].

cy

Coordenada y do centróide, arredondada para inteiro. Inteiro. Índice [5].

cxf

Coordenada x do centróide como float sub-pixel. Índice [9].

cyf

Coordenada y do centróide como float sub-pixel. Índice [10].

corners

Tuplo de 4 elementos de tuplos inteiros (x, y) para os quatro cantos detetados da etiqueta, ordenados no sentido dos ponteiros do relógio a partir do canto superior esquerdo. Índice [21].

area

Área da caixa delimitadora (w * h). Inteiro. Índice [22].

rect

Tuplo de 4 elementos (x, y, w, h) da caixa delimitadora. Adequado para passar diretamente a métodos de desenho/recorte como Image.draw_rectangle() ou Image.crop(). Índice [23].

Identificação

id

ID numérico da etiqueta dentro da sua família. O intervalo válido depende da família (por ex. 0 – 586 para TAG36H11). Inteiro. Índice [6].

family

Identificador numérico da família, um de:

Inteiro. Índice [7].

name

Nome da família como string, por ex. "TAG36H11". Índice [8].

Qualidade da correspondência

decision_margin

Qualidade da correspondência da etiqueta no intervalo 0.0 – 1.0, onde 1.0 é a melhor. Use este valor para rejeitar deteções com baixa confiança. Float. Índice [12].

hamming

Número de erros de bit que o descodificador aceitou para esta etiqueta. Limitado pela capacidade de correção da família:

  • TAG16H5 -> até 0 erros de bit

  • TAG25H9 -> até 3 erros de bit

  • TAG36H10 -> até 3 erros de bit

  • TAG36H11 -> até 4 erros de bit

Menor é melhor. Inteiro. Índice [13].

goodness

Qualidade de imagem da etiqueta no intervalo 0.0 – 1.0, onde 1.0 é a melhor. Atualmente sempre 0.0 no firmware lançado (o descodificador subjacente deixou de calcular esta métrica). Float. Índice [14].

Estimativa de pose

Os campos de translação e rotação abaixo são preenchidos apenas quando Image.find_apriltags() é chamado com os parâmetros intrínsecos de câmara fx, fy, cx e cy. Sem parâmetros intrínsecos, têm o valor 0.0. A etiqueta é assumida com 1 unidade de largura, pelo que as translações estão em «larguras de etiqueta» – multiplique pelo tamanho real da etiqueta para obter distâncias em unidades métricas.

x_translation

Translação X a partir da câmara (esquerda-direita) em larguras de etiqueta. Float. Índice [15].

y_translation

Translação Y a partir da câmara (cima-baixo) em larguras de etiqueta. Float. Índice [16].

z_translation

Translação Z a partir da câmara (frente-trás) em larguras de etiqueta. Float. Índice [17].

x_rotation

Rotação em torno do eixo X (pitch) em radianos. Float. Índice [18].

y_rotation

Rotação em torno do eixo Y (yaw) em radianos. Float. Índice [19].

z_rotation

Rotação em torno do eixo Z (roll) em radianos. Mesmo valor que rotation – duplicado por simetria com x_rotation e y_rotation. Float. Índice [20].

rotation

Rotação no plano da imagem da etiqueta em radianos. Igual a z_rotation. Float. Índice [11].