簡體   English   中英

將 2D 像素坐標轉換為 3D Azure Kinect

[英]Transforming 2D pixel coordinates to 3D Azure Kinect

我正在使用深度相機檢測矩形。 在這一點上,我正在努力使用 NFOV 深度相機生成所選像素的准確 3d 坐標。 I have tested this by selecting 2 points on a testing board, transforming them using Depth 2d to Color 3d Kinect-SDK C# Wrapper function, calculating the distance between received coordinates, and measuring distance between selected real-world points (918mm). 在 2.7 米距離處,圖像中心出現 2 厘米的誤差,而在角落,誤差達到 6 厘米。

變換函數不應該糾正失真嗎? 我是否錯過了接收准確數據的關鍵步驟? 這可能是別的東西嗎?

謝謝您的幫助!

添加來自 Git 問題的響應:

幾點:

  1. 你是如何選擇二維點的。 是通過手動查看紅外圖像還是手動查看深度圖像? 關鍵是,您應該從與 3d 點完全匹配的准確 2d 像素開始,通過人眼執行此操作時通常需要一些紋理,例如在 IR 光譜中具有可見標記的目標板,然后您可以進行像素檢查(假設人類eye 可以提供足夠的精度)找到標記的中心或使用 CV 算法檢測 2d 點。
  2. 僅嘗試將 2d 深度像素轉換為深度相機空間中的 3d 點(而不是顏色 3d 空間)。 您只需將TransformTo3D的最后一個參數更改為K4A.CalibrationDeviceType.Depth,然后將A點到B點的相對距離與現實世界的測量值進行比較。 這可以幫助縮小是否僅使用深度相機內在函數可以提供更好的結果(而不是一直使用顏色空間)。 如果與來自顏色空間的 3d 點相比,使用來自深度相機空間的 3d 點看到更好的結果,則可能存在與外部或顏色內部相關的一些校准問題。

最后,深度相機相對於 colot 相機傾斜 6 度應該無關緊要。 相機校准內在函數針對每個相機的失真進行校准,而外在因素則針對相機力學進行校准。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM