Google Tango:对齐深度和颜色框架

时间:2015-02-24 10:55:25

标签: google-project-tango

我想使用Google Tango平板电脑对齐(同步)深度/颜色帧对,这样,假设两个帧具有相同的分辨率,深度帧中的每个像素对应于颜色中的相同像素框架,即,我想实现视网膜测绘。如何使用最新的C API(希尔伯特发布版本1.6)实现这一目标?任何有关这方面的帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

生成简单的原始UV坐标以将探戈点云点映射回源图像(纹理坐标) - 请参阅上面的注释以获取更多详细信息,我们已经搞砸了这个线程但很好:-((语言是C#,类是.Net)视野计算FOV水平(真)或垂直(假)

public PointF PictureUV(Vector3D imagePlaneLocation)
        {
            // u is a function of x where y is 0
            double u = Math.Atan2(imagePlaneLocation.X, imagePlaneLocation.Z);
            u += (FieldOfView(true) / 2.0);
            u = u/FieldOfView(true);
            double v = Math.Atan2(imagePlaneLocation.Y, imagePlaneLocation.Z);
            v += (FieldOfView() / 2.0);
            v = v / FieldOfView();

            return new PointF((float)u, (float)(1.0 - v));
        }

答案 1 :(得分:1)

马克,谢谢你的快速反应。可能我的问题有点不精确。你当然可以说,无法建立2D和3D图像之间的视网膜映射。对我感到羞耻。尽管如此, 我需要的是一种映射,其中所有深度样本(x_n,y_n,d_n),1< = n< = N,N是深度值的数量,对应于(同步的)中的相同像素(x_n,y_n)彩色框架。很明显,深度传感器无法为视野中的麻烦区域提供深度信息。

答案 2 :(得分:0)

你的一个条件是不可能的 - 无法保证探戈如果看不到它就会在视野中对你进行点云测量 - 也就是说像素之间没有1:1的对应关系和深度帧作为深度信息是3D

答案 3 :(得分:0)

我没试过,但我们可以这样做: 对于来自点云的每个(X,Y,Z):

u_pixel = -(X/Z)* Fx, v_pixel = -(Y/Z)* Fy.
x = (u-cx)/Fx, y = (v-cy)/Fy.

用于失真校正(k1,k2,k2可以来自TangoInstrinsics的失真[]部分,r = Math.sqrt(x ^ 2 + y ^ 2)))

x_corrected = x * (1 + k1 * r2 + k2 * r4 + k3 * r6) 
y_corrected = y * (1 + k1 * r2 + k2 * r4 + k3 * r6) 

然后我们可以通过使用上面公式的反向(x_raster = x_correct * Fx + cx)将标准化的x_corrected,y_corrected转换为x_raster,y_raster