如何標註深度圖
深度檔案不攜帶自身的單位,零表示無返回而非很近,而有意義的量程從來不是完整量程。標註深度之前必須搞對的幾件事。
把深度圖當作影像開啟,看到的是一塊黑色矩形;就算不是,你看到的也只是一堆顏色,而不知道其中任何一種代表多遠。 有三條性質把深度與影像區分開,而這三條搞錯時都是無聲的。
檔案本身並不知道自己的單位
RealSense、Azure Kinect 與 NYU-Depth 用毫米。KITTI 補全基準用 1/256 米。任何由浮點陣列寫出的檔案用米。
檔案中沒有任何東西記錄用的是哪一種。depth_scale 表示每個儲存單位對應多少米,而填錯是看不出來的:視窗會重新縮放,畫面看起來一模一樣。唯一能發現它的辦法,是拿以米為單位的讀數去核對某個你已知距離的東西。
零不是一個距離
零幾乎是通用的"無返回"編碼——感測器沒有測到這個畫素。若按深度來讀,它會在覆蓋範圍內的每一個空洞處畫出一堵明亮的牆。
請把非測量值記作 NaN,並塗成任何色彩對映中都不存在的顏色。Potato 使用品紅色,因此空洞不會被誤讀成近處或遠處的深度,同時會報告深度圖中有多少比例是空洞。
這個比例比聽起來更重要。一臺面對無紋理牆面的雙目裝置確實會返回 80% 的空洞,而看不出哪些畫素是缺失的標註者,會把它們當成幾何結構去標註。
有意義的量程從來不是完整量程
一份內容位於 1200 到 1800 之間的 16 位深度圖,在樸素的 8 位轉換下渲染出 255 級灰階中的 4 級區分度,而在百分位視窗下有 254 級。
請把近/遠視窗預設設為有效畫素的第 2 與第 98 百分位——這裡的"有效"指的是排除無返回畫素之後,否則空洞會主導百分位。
配置
instance_display:
fields:
- key: depth
type: depth_map
label: "Depth"可直接讀取的格式:16 位 PNG、16 位 TIFF、NPY 與 NPZ、PFM、EXR。
反投影
在給定相機內參的情況下,深度圖會變成點雲,同樣的三維立方體工具即可使用。對於 RGB-D 資料集,這通常是更高效的標註方式:判斷三維範圍,在三維中比讀色彩對映容易。
在深度圖上標註什麼
- 對照 RGB 幀,對估計出的深度做品質判斷。
- 標出深度出錯的區域標籤,這正是深度補全所需的監督訊號。
- 反投影之後標註三維框。
若是品質判斷任務,請把 RGB 幀並列顯示。深度誤差通常只有在對照之下才明顯。