您好,我正在使用Google Tango的深度和彩色图像,以便我可以将图像加载到Meshlab中。有一个related question,其目标是找到Tango Point Cloud中每个点的颜色。但是,我想走另一条路。对于彩色图像的每个像素,我如何找到相应的深度?
我已经对深度图像进行了上采样并将结果保存在TangoDepthBuffer中。我使用了OpenGL readPixels()方法来获取彩色图像并将RGB值存储在一个名为pixels []的数组中。然后,我使用以下代码将x,y,z值与RGB值相关联:
index_rgb = 0;
index_pixels = 0;
for(int i = 0; i < color_camera_width; i++)
{
for(int j = 0; j < color_camera_height; j++)
{
red [index_rgb] = pixels[color_camera_width * color_camera_height * 3 - 3 - index_pixels];
green [index_rgb] = pixels[color_camera_width * color_camera_height * 3 - 2 - index_pixels];
blue [index_rgb] = pixels[color_camera_width * color_camera_height * 3 - 1 - index_pixels];
z[index_rgb] = render_point_cloud_buffer->depths[j * color_camera_width + i];
x[index_rgb] = (double) (i - color_camera_width/2);
y[index_rgb] = (double) (j - color_camera_height/2);
x[index_rgb] = (x[index_rgb] / color_camera_width) * depth_camera_horizontal_fov;
y[index_rgb] = (y[index_rgb] / color_camera_height) * depth_camera_vertical_fov;
x[index_rgb] = z[index_rgb] * tan(x[index_rgb]);
y[index_rgb] = z[index_rgb] * tan(y[index_rgb]);
index_rgb++;
index_pixels += 3;
}
}
我希望结果能够对齐深度和彩色图像。但是,当我将结果加载到Meshlab中时,深度像素向下移动并移动到相应颜色像素的左侧。发生这种变化的方式根据深度而变化。但是,我找不到没有移位的深度。
您如何找到解决此问题所需的转换?它适用于任何深度吗?或者,如何在每个特定颜色像素处找到深度?