RM新时代网站

校準函數

本文內容

● 獲取校準數據

● 坐標轉換函數

● 相關(guān)示例

● 后續步驟


本文完全復用Azure kinect 的校準函數,使用校準函數可以轉換Femto Mega設備上每個(gè)傳感器的坐標系之間的點(diǎn)。 需要轉換整個(gè)圖像的應用程序可以利用圖像轉換提供的加速操作。



獲取校準數據

需要獲取設備校準數據才能執行坐標系轉換。 校準數據存儲在 k4a_calibration_t 數據類(lèi)型中。 該數據通過(guò) k4a_device_get_calibration() 函數,從設備中獲取。 校準數據針對不同設備,或同一個(gè)設備的不同工作模式都不一樣。 因此,k4a_device_get_calibration() 需要使用 depth_mode 和 color_resolution 參數作為輸入。


OpenCV 兼容性

校準參數與 OpenCV 兼容。 有關(guān)各個(gè)相機校正參數的詳細信息,另請參閱 OpenCV 文檔。 另請參閱 SDK 的 OpenCV 兼容性示例,其中演示了 k4a_calibration_t 類(lèi)型與相應 OpenCV 數據結構之間的轉換。



坐標轉換函數

下圖顯示了 Femto Mega的不同坐標系,以及用于在這些坐標系之間轉換的函數。 為了使插圖顯得簡(jiǎn)潔,我們省略了陀螺儀和加速度傳感器的 3D 坐標系。

有關(guān)鏡頭失真的備注:2D 坐標始終引用 SDK 中失真的圖像。 SDK 的失真矯正示例 演示了圖像失真矯正。 一般情況下,3D 點(diǎn)永遠不會(huì )受到鏡頭失真的影響。


在 3D 坐標系之間轉換

函數 k4a_calibration_3d_to_3d() 使用相機的外部校準將源坐標系的 3D 點(diǎn)轉換為目標坐標系的 3D 點(diǎn)。 源和目標可設置為四個(gè) 3D 坐標系中的任何一個(gè),即,彩色相機、深度相機、陀螺儀或加速度傳感器。 如果源和目標相同,則返回未修改的輸入 3D 點(diǎn)作為輸出。


在 2D 與 3D 坐標系之間轉換

函數 k4a_calibration_3d_to_2d() 將源坐標系的 3D 點(diǎn)轉換為目標相機的 2D 像素坐標。 此函數通常稱(chēng)為投影函數。 盡管源可以設置為四個(gè) 3D 坐標系中的任何一個(gè),但目標必須是深度相機或彩色相機。 如果源和目標不同,則會(huì )使用 k4a_calibration_3d_to_3d() 將輸入的 3D 點(diǎn)轉換為目標相機的 3D 坐標系。 以目標相機坐標系表示 3D 點(diǎn)后,將使用目標相機的內部校準計算相應的 2D 像素坐標。 如果 3D 點(diǎn)超出了目標相機的可視區域,則有效值將設置為 0。


函數 k4a_calibration_2d_to_3d() 將源相機的 2D 像素坐標轉換為目標相機坐標系的 3D 點(diǎn)。 源必須是彩色相機或深度相機。 目標可設置為四個(gè) 3D 坐標系中的任何一個(gè)。 除了 2D 像素坐標外,源相機圖像中像素的深度值(以毫米為單位)也需要作為函數的輸入,在彩色相機幾何中推導出深度值的一種方法是使用函數 k4a_transformation_depth_image_to_color_camera()。 該函數使用源相機的內部校準通過(guò)指定的像素坐標計算源相機焦點(diǎn)引出的 3D 射線(xiàn)。 然后,使用深度值查找此射線(xiàn)的確切 3D 點(diǎn)位置。 此操作通常稱(chēng)為取消投影函數。 如果源和目標相機不同,該函數會(huì )通過(guò) k4a_calibration_3d_to_3d() 將 3D 點(diǎn)轉換為目標的坐標系。 如果 2D 像素坐標超出了源相機的可視區域,則有效值將設置為 0。


在 2D 坐標系之間轉換

函數 k4a_calibration_2d_to_2d() 將源相機的 2D 像素坐標轉換為目標相機的 2D 像素坐標。 源和目標必須設置為彩色相機或深度相機。 該函數需要將源相機圖像中像素的深度值(以毫米為單位)作為輸入,在彩色相機幾何中推導出深度值的一種方法是使用函數 k4a_transformation_depth_image_to_color_camera()。 它將調用 k4a_calibration_2d_to_3d() 轉換為源相機系統的 3D 點(diǎn)。 然后,它將調用 k4a_calibration_3d_to_2d() 轉換為目標相機圖像的 2D 像素坐標。 如果 k4a_calibration_2d_to_3d() 或 k4a_calibration_3d_to_2d() 返回無(wú)效的結果,則有效值將設置為 0。



相關(guān)示例

● OpenCV 兼容性示例

● 失真矯正示例

● 快速點(diǎn)云示例



后續步驟

了解相機校正后,接下來(lái)還可以了解設備同步。

RM新时代网站