0
kinect v2提供了一個深度幀,分辨率爲512 x 424
像素,其中fov爲70.6 x 60 degrees
,從而得到平均每度約7 x 7
像素。 [Source]。Kinect V2深度幀像素尺寸
但是我無法找到關於深度幀的像素大小的任何信息,或者是否有任何種類的方法可以根據給定的信息計算像素大小?
kinect v2提供了一個深度幀,分辨率爲512 x 424
像素,其中fov爲70.6 x 60 degrees
,從而得到平均每度約7 x 7
像素。 [Source]。Kinect V2深度幀像素尺寸
但是我無法找到關於深度幀的像素大小的任何信息,或者是否有任何種類的方法可以根據給定的信息計算像素大小?
你問你如何映射深度數據中像素的大小?
depth coordinate system與KINECT傳感器的原點和方向正交。 基本trigonometry告訴我們在一個直角三角形中對邊和相鄰邊之間的關係是Tan A = a/b
,所以水平我們有tan(FOV/2) = (FrameWidth/2)/depth
,因此FrameWidth = 2*depth*tan(35.3)
,所以width of 1px = depth*2*tan(35.3)/512
,同樣地height of 1px = depth*2*tan(30)/414
。
const int FRAME_WIDTH = 512;
const int FRAME_HEIGHT = 424;
const float FOV_HORIZONTAL = 70.6 * PI/180.0; // convert to radians
const float FOV_VERTICAL = 60.0 * PI/180.0; // convert to radians
const float HORIZONTAL_SCALING = 2 * std::tan(FOV_HORIZONTAL/2.0)/(float)FRAME_WIDTH;
const float VERTICAL_SCALING = 2 * std::tan(FOV_VERTICAL/2.0)/(float)FRAME_HEIGHT;
你可以做一個簡單的比例計算它的寬度和高度,每個深度像素:
width = HORIZONTAL_SCALING * (float)depth;
height = VERTICAL_SCALING * (float)depth;
謝謝你真的太多你的答案,可你也許解釋一下你的代碼或鏈接到源? – Kev1n91
非常感謝您的進一步解釋,謝謝您的回覆。如果我理解正確,這隻適用於Kinect的深度圖像,對吧?因此,如果我有一個從Z緩衝圖像渲染的深度圖像,其中一個像素離中心越遠,則z值越高,此機制不起作用,因此首先像素將不得不投影到相機? – Kev1n91
是的,這是針對KINECT深度數據來的,這些數據來自於鏈接的doc頁面中描述的「預先計劃」。 – zeFrenchy