Google Tango:对齐深度和颜色框

Google Tango: Aligning Depth and Color Frames

我想使用 Google Tango 平板对齐(同步)depth/color 帧对,这样,假设两个帧具有相同的分辨率,深度帧中的每个像素对应于颜色帧中的相同像素,即我想实现视网膜专题映射。如何使用最新的 C API(Hilbert Release Version 1.6)来实现?对此的任何帮助将不胜感激。

您的条件之一是不可能的 - 如果探戈无法看到它,不能保证探戈会为您提供视野中某些东西的点云测量 - 而且没有 1:1像素和深度帧的对应关系,因为深度信息是 3D

马克,感谢您的快速回复。可能我的问题有点不准确。你说的 2D 和 3D 图像之间的视网膜专题映射无法建立当然是对的。我真丢人。尽管如此, 我需要的是一个映射,其中所有深度样本(x_n、y_n、d_n)、1<=n<=N,N 是深度值的数量,对应于(同步)彩色帧中的相同像素(x_n、y_n)。深度传感器不能为视野中的麻烦区域提供深度信息,这是很好的。

生成简单粗略的 UV 坐标以将探戈点云点映射回源图像(纹理坐标)- 有关更多详细信息,请参阅上面的评论,我们已经搞砸了这个线程但是很好:-((语言是 C#,类 are .Net) Field of view calculate FOV horizo​​ntal (true) or vertical (false)

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));
        }

我没试过这个,但我们可以这样做: 对于来自点云的每个 (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_corrected, y_corrected转换为x_raster, y_raster 反推上面的公式(x_raster = x_correct*Fx+cx)