华硕Zenfone AR关联深度和彩色图像

时间:2017-12-11 21:59:59

标签: c++ image colors google-project-tango

您好,我正在使用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中时,深度像素向下移动并移动到相应颜色像素的左侧。发生这种变化的方式根据深度而变化。但是,我找不到没有移位的深度。

您如何找到解决此问题所需的转换?它适用于任何深度吗?或者,如何在每个特定颜色像素处找到深度?

0 个答案:

没有答案