Utilizar funções de calibragem do Azure Kinect

As funções de calibragem permitem transformar pontos entre os sistemas de coordenadas de cada sensor no dispositivo Azure Kinect. As aplicações que exigem a conversão de imagens inteiras podem tirar partido das operações aceleradas disponíveis nas funções de transformação.

Obter dados de calibragem

É necessário obter a calibragem do dispositivo para efetuar transformações de sistema coordenadas. Os dados de calibragem são armazenados no tipo de dados k4a_calibration_t . É obtido a partir do dispositivo através da função k4a_device_get_calibration(). Os dados de calibragem não são apenas específicos de cada dispositivo, mas também do modo operacional das câmaras. Assim , k4a_device_get_calibration() requer os depth_mode parâmetros e color_resolution como entrada.

Compatibilidade openCV

Os parâmetros de calibragem são compatíveis com o OpenCV. Para obter mais informações sobre os parâmetros de calibragem da câmara individual, veja também a documentação do OpenCV. Veja também o exemplo de compatibilidade OpenCV do SDK que demonstra a conversão entre o tipo de k4a_calibration_t e as estruturas de dados OpenCV correspondentes.

Coordenar Funções de Transformação

A figura abaixo mostra os diferentes sistemas de coordenadas do Azure Kinect, bem como as funções a converter entre eles. Omitemos os sistemas de coordenadas 3D do giroscópio e do acelerómetro para manter a figura simples.

Coordenar a transformação

Observação sobre distorção da lente: as coordenadas 2D referem-se sempre à imagem distorcida no SDK. O exemplo indistordo do SDK demonstra a indisposição da imagem. Em geral, os pontos 3D nunca serão afetados pela distorção da lente.

Converter entre sistemas de coordenadas 3D

A função k4a_calibration_3d_to_3d() converte um ponto 3D do sistema de coordenadas de origem num ponto 3D do sistema de coordenadas de destino com a calibragem extrínseca da câmara. A origem e o destino podem ser definidos para qualquer um dos quatro sistemas de coordenadas 3D, ou seja, câmara de cores, câmara de profundidade, giroscópio ou acelerómetro. Se a origem e o destino forem idênticos, o ponto 3D de entrada não modificado é devolvido como saída.

Converter entre sistemas de coordenadas 2D e 3D

A função k4a_calibration_3d_to_2d() converte um ponto 3D do sistema de coordenadas de origem numa coordenada de pixel 2D da câmara de destino. Esta função é frequentemente denominada função de projeto. Embora a origem possa ser definida para qualquer um dos quatro sistemas de coordenadas 3D, o destino tem de ser a câmara de profundidade ou cor. Se a origem e o destino forem diferentes, o ponto 3D de entrada é convertido no sistema de coordenadas 3D da câmara de destino com k4a_calibration_3d_to_3d(). Assim que o ponto 3D estiver representado no sistema de coordenadas da câmara de destino, as coordenadas de 2D pixel correspondentes são calculadas com a calibragem intrínseca da câmara de destino. Se um ponto 3D sair da área visível da câmara de destino, o valor válido será definido como 0.

A função k4a_calibration_2d_to_3d() converte uma coordenada 2D pixel da câmara de origem num ponto 3D do sistema de coordenadas da câmara de destino. A origem tem de ser a câmara de cor ou profundidade. O destino pode ser definido como qualquer um dos quatro sistemas de coordenadas 3D. Além da coordenada 2D pixel, o valor de profundidade do pixel (em milímetros) na imagem da câmara de origem é necessário como uma entrada para a função, uma forma de derivar o valor de profundidade na geometria da câmara de cor é utilizar a função k4a_transformation_depth_image_to_color_camera(). A função calcula o raio 3D que conduz a partir do ponto focal da câmara de origem através da coordenada de píxeis especificada com a calibragem intrínseca da câmara de origem. Em seguida, o valor de profundidade é utilizado para encontrar a localização exata do ponto 3D neste raio. Esta operação é frequentemente referida como função de desprojeto. Se as câmaras de origem e de destino forem diferentes, a função transforma o ponto 3D no sistema de coordenadas do destino através de k4a_calibration_3d_to_3d(). Se uma coordenada de 2D pixel sair da área visível da câmara de origem, o valor válido será definido como 0.

Converter entre sistemas de coordenadas 2D

A função k4a_calibration_2d_to_2d() converte uma coordenada de 2D pixel da câmara de origem numa coordenada de 2D pixel da câmara de destino. A origem e o destino têm de ser definidos como câmara de cor ou profundidade. A função requer o valor de profundidade do pixel (em milímetros) na imagem da câmara de origem como uma entrada, uma forma de derivar o valor de profundidade na geometria da câmara de cor é utilizar a função k4a_transformation_depth_image_to_color_camera(). Chama k4a_calibration_2d_to_3d() converter num ponto 3D do sistema de câmara de origem. Em seguida, chama k4a_calibration_3d_to_2d() para converter numa coordenada de 2D pixel da imagem da câmara de destino. O valor válido é definido como 0, se k4a_calibration_2d_to_3d() ou k4a_calibration_3d_to_2d() devolver um resultado inválido.

Passos seguintes

Agora que sabe mais sobre calibragem de câmaras, também pode aprender a

Também pode rever

Sistemas de coordenadas