Share via


Usare le funzioni di calibrazione di Azure Kinect

Le funzioni di calibrazione consentono di trasformare i punti tra i sistemi di coordinate di ogni sensore nel dispositivo Azure Kinect. Le applicazioni che richiedono la conversione di immagini intere possono sfruttare le operazioni accelerate disponibili nelle funzioni di trasformazione.

Data calibrazione rilevatore

È necessario recuperare la calibrazione del dispositivo per eseguire trasformazioni del sistema di coordinate. I dati di calibrazione vengono archiviati nel tipo di dati k4a_calibration_t. È ottenuto dal dispositivo tramite la funzione k4a_device_get_calibration(). I dati di calibrazione sono specifici non solo per ogni dispositivo, ma anche per la modalità operativa delle fotocamere. Pertanto, k4a_device_get_calibration() richiede i parametri di input depth_mode e color_resolution.

Compatibilità OpenCV

I parametri di calibrazione sono compatibili con OpenCV. Per ulteriori informazioni sui singoli parametri di calibrazione della fotocamera vedere anche la documentazione di OpenCV. Vedere anche l'esempio di compatibilità di OpenCV dell'SDK, che illustra la conversione tra il tipo di k4a_calibration_t e le strutture di dati OpenCV corrispondenti.

Funzioni di trasformazione delle coordinate

La figura seguente mostra i diversi sistemi di coordinate di Azure Kinect e le funzioni per convertirli. Sono omessi i sistemi di coordinate 3D di giroscopio e accelerometro per semplificare la figura.

Coordinate transformation

Osservazione sulla distorsione dell'obiettivo: le coordinate 2D fanno sempre riferimento all'immagine distorta nell'SDK. L'esempio di annullamento della distorsione dell'SDK illustra l'annullamento della distorsione dell'immagine. In generale, i punti 3D non saranno mai influenzati dalla distorsione dell'obiettivo.

Eseguire la conversione tra sistemi di coordinate 3D

La funzione k4a_calibration_3d_to_3d() converte un punto 3D del sistema di coordinate di origine in un punto 3D del sistema di coordinate di destinazione usando la calibrazione estrinseca della fotocamera. L'origine e la destinazione possono essere impostate su uno dei quattro sistemi di coordinate 3D, ovvero fotocamera a colori, fotocamera di profondità, giroscopio o accelerometro. Se l'origine e la destinazione sono identiche, il punto 3D di input non modificato viene restituito come output.

Eseguire la conversione tra sistemi di coordinate 2D e 3D

La funzione k4a_calibration_3d_to_2d() converte un punto 3D del sistema di coordinate di origine in una coordinata di pixel 2D della fotocamera di destinazione. Questa funzione in genere è chiamata funzione di progetto. Mentre l'origine può essere impostata su uno dei quattro sistemi di coordinate 3D, la destinazione deve essere la fotocamera di profondità o la fotocamera a colori. Se l'origine e la destinazione sono diverse, il punto 3D di input viene convertito nel sistema di coordinate 3D della fotocamera di destinazione usando k4a_calibration_3d_to_3d(). Una volta rappresentato il punto 3D nel sistema di coordinate della fotocamera di destinazione, le coordinate di pixel 2D corrispondenti vengono calcolate usando la calibrazione intrinseca della fotocamera di destinazione. Se un punto 3D non rientra nell'area visibile della fotocamera di destinazione, il valore valido viene impostato su 0.

La funzione k4a_calibration_2d_to_3d() converte una coordinata di pixel 2D della fotocamera di origine in un punto 3D del sistema di coordinate della fotocamera di destinazione. L'origine deve essere la fotocamera di profondità o la fotocamera a colori. La destinazione può essere impostata su uno dei quattro sistemi di coordinate 3D. Oltre alla coordinata di pixel 2D, il valore di profondità dei pixel (in millimetri) nell'immagine della fotocamera di origine è necessario come input per la funzione; un modo per derivare il valore di profondità nella geometria della fotocamera a colori consiste nell'usare la funzione k4a_transformation_depth_image_to_color_camera(). La funzione calcola il raggio 3D che conduce dal punto focale della fotocamera di origine attraverso la coordinata di pixel specificata usando la calibrazione intrinseca della fotocamera di origine. Il valore di profondità viene quindi usato per trovare la posizione esatta del punto 3D su questo raggio. L’operazione viene spesso definita funzione di deprogettazione. Se le fotocamere di origine e destinazione sono diverse, la funzione trasforma il punto 3D nel sistema di coordinate della fotocamera di destinazione tramite k4a_calibration_3d_to_3d(). Se una coordinata di pixel 2D non rientra nell'area visibile della fotocamera di origine, il valore valido viene impostato su 0.

Conversione tra sistemi di coordinate 2D

La funzione k4a_calibration_2d_to_2d() converte una coordinata di pixel 2D della fotocamera di origine in una coordinata di pixel 2D della fotocamera di destinazione. L'origine e la destinazione devono essere impostate su fotocamera a colori o fotocamera di profondità. La funzione richiede come input il valore di profondità dei pixel (in millimetri) nell'immagine della fotocamera di origine; un modo per derivare il valore di profondità nella geometria della fotocamera a colori consiste nell'usare la funzione k4a_transformation_depth_image_to_color_camera(). La funzione chiama k4a_calibration_2d_to_3d() per la conversione in un punto 3D del sistema di fotocamera di origine. Chiama quindi k4a_calibration_3d_to_2d() per la conversione in una coordinata di pixel 2D dell'immagine della fotocamera di destinazione. Il valore valido è impostato su 0, se k4a_calibration_2d_to_3d() o k4a_calibration_3d_to_2d() restituisce un risultato non valido.

Passaggi successivi

Una volta appreso come funziona la calibrazione della fotocamera, si può anche imparare a

È anche possibile esaminare

Sistemi di coordinate