2

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

4

4 回答 4

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));
        }
于 2015-02-25T13:51:31.180 回答
1

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

于 2015-02-24T13:32:12.937 回答
0

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

于 2015-02-24T13:16:38.057 回答
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

于 2015-05-05T23:59:49.717 回答