Usar funções de calibragem do Azure Kinect
As funções de calibragem permitem a transformação de pontos entre os sistemas de coordenadas de cada sensor no dispositivo Azure Kinect. Aplicativos que exigem conversão de imagens inteiras podem aproveitar as operações aceleradas disponíveis em funções de transformação.
Recuperar dados de calibragem
É necessário recuperar a calibragem do dispositivo para executar as transformações do sistema de coordenadas. Os dados de calibragem são armazenados no tipo de dados k4a_calibration_t. Ele é obtido do dispositivo por meio da função k4a_device_get_calibration(). Os dados de calibragem não são específicos apenas para cada dispositivo, mas também para o modo de operação das câmeras. Portanto, k4a_device_get_calibration() requer os parâmetros depth_mode
e color_resolution
como entrada.
Compatibilidade do OpenCV
Os parâmetros de calibragem são compatíveis com OpenCV. Para obter mais informações sobre os parâmetros individuais de calibragem da câmera, confira também Documentação do OpenCV. Confira também o exemplo de compatibilidade do OpenCV do SDK que demonstra a conversão entre o tipo k4a_calibration_t e as estruturas de dados OpenCV correspondentes.
Coordenar funções de transformação
A figura a seguir mostra os diferentes sistemas de coordenadas do Azure Kinect, bem como as funções a serem convertidas entre eles. Nós omitimos os sistemas de coordenadas 3D do giroscópio e do acelerômetro para manter a figura simples.
Comentário sobre distorção de lentes: coordenadas 2D sempre se referem à imagem distorcida no SDK. O exemplo de distorção do SDK demonstra a distorção da imagem. Em geral, os pontos 3D nunca serão afetados pela distorção de lentes.
Converter entre sistemas de coordenadas 3D
A função k4a_calibration_3d_to_3d() converte um ponto 3D do sistema de coordenadas de origem em um ponto 3D do sistema de coordenadas de destino usando a calibragem extrínseca da câmera. A origem e o destino podem ser definidos como qualquer um dos quatro sistemas de coordenadas 3D, ou seja, câmera colorida, câmera de profundidade, giroscópio ou acelerômetro. Se a origem e o destino forem idênticos, o ponto 3D de entrada não modificado será retornado 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 em uma coordenada de pixel 2D da câmera de destino. Essa função é geralmente conhecida como função de projeto. Embora a origem possa ser definida como qualquer um dos quatro sistemas de coordenadas 3D, o destino precisa ser a câmera de profundidade ou colorida. Se a origem e o destino forem diferentes, o ponto 3D de entrada será convertido no sistema de coordenadas 3D da câmera de destino usando k4a_calibration_3d_to_3d(). Depois que o ponto 3D é representado no sistema de coordenadas da câmera de destino, as coordenadas de pixels 2D correspondentes são computadas usando a calibragem intrínseca da câmera de destino. Se um ponto 3D ficar fora da área visível da câmera de destino, o valor válido será definido como 0.
A função k4a_calibration_2d_to_3d() converte uma coordenada de pixels 2D da câmera de origem em um ponto 3D do sistema de coordenadas da câmera de destino. A origem precisa ser uma câmera colorida ou de profundidade. O destino pode ser definido como qualquer um dos quatro sistemas de coordenadas 3D. Além da coordenada de pixels 2D, o valor de profundidade do pixel (em milímetros) na imagem da câmera de origem é necessário como uma entrada para a função; uma forma de derivar o valor de profundidade na geometria da câmera colorida é usar a função k4a_transformation_depth_image_to_color_camera(). A função computa o raio 3D que leva do ponto focal da câmera de origem por meio da coordenada de pixel especificada usando a calibragem intrínseca da câmera de origem. Em seguida, o valor de profundidade é usado para localizar a localização exata do ponto 3D nesse raio. Essa operação é geralmente conhecida como função para cancelar projeto. Se as câmeras de origem e de destino forem diferentes, a função transformará o ponto 3D no sistema de coordenadas do destino via k4a_calibration_3d_to_3d(). Se uma coordenada de pixels 2D ficar fora da área visível da câmera de origem, o valor válido será definido como 0.
Como converter entre sistemas de coordenadas 2D
A função k4a_calibration_2d_to_2d() converte uma coordenada de pixels 2D da câmera de origem em uma coordenada de pixels 2D da câmera de destino. A origem e o destino precisam ser definidos para a câmera colorida ou de profundidade. A função requer o valor de profundidade do pixel (em milímetros) na imagem da câmera de origem como uma entrada; uma forma de derivar o valor de profundidade na geometria da câmera colorida é usar a função k4a_transformation_depth_image_to_color_camera(). Ela chama k4a_calibration_2d_to_3d() para converter em um ponto 3D do sistema de câmera de origem. Em seguida, ela chama k4a_calibration_3d_to_2d() para converter em uma coordenada de pixels 2D da imagem da câmera de destino. O valor válido é definido como 0 se k4a_calibration_2d_to_3d() ou k4a_calibration_3d_to_2d() retorna um resultado inválido.
Exemplos relacionados
Próximas etapas
Agora que você sabe sobre calibragens de câmera, também pode aprender a
Além disso, você pode examinar