Google project tango 谷歌探戈:调整深度和颜色框架

Google project tango 谷歌探戈:调整深度和颜色框架,google-project-tango,Google Project Tango,我想使用Google Tango平板电脑对齐一个同步深度/颜色帧对,这样,假设两个帧具有相同的分辨率,深度帧中的每个像素对应于颜色帧中的相同像素,也就是说,我想实现一个主题映射。如何使用最新的C API Hilbert版本1.6实现这一点?对此的任何帮助都将不胜感激。您的条件之一是不可能的-如果tango无法看到,则不能保证它会向您提供视野中某个物体的点云测量值-而且像素和深度帧之间没有1:1的对应关系,因为深度信息是3D的标记,谢谢你的快速回复。也许我的问题有点不准确。当然,你说得很对,2D和

我想使用Google Tango平板电脑对齐一个同步深度/颜色帧对,这样,假设两个帧具有相同的分辨率,深度帧中的每个像素对应于颜色帧中的相同像素,也就是说,我想实现一个主题映射。如何使用最新的C API Hilbert版本1.6实现这一点?对此的任何帮助都将不胜感激。

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

标记,谢谢你的快速回复。也许我的问题有点不准确。当然,你说得很对,2D和3D图像之间的主题映射无法建立。我真丢脸。尽管如此
我需要的是一个映射,其中所有深度样本x_n,y_n,d_n,1生成简单的粗略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));
        }

我没有尝试过,但我们可能可以: 对于点云的每个X、Y、Z:

u_pixel = -(X/Z)* Fx, v_pixel = -(Y/Z)* Fy.
x = (u-cx)/Fx, y = (v-cy)/Fy.
对于畸变校正k1、k2、k2,可以从Tangointristics的畸变[]部分开始,r=Math.sqrtx^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

Ah的相反方向,将标准化的x_corrected、y_corrected转换为x_光栅、y_光栅-如果您使用点云,并且不应用矩阵堆栈,然后你得到了XYZ作为数据的基本向量-这是我在纹理应用程序中使用的-计算水平轴和垂直轴上的镜头视场,现在你可以将相机的图像与点云对齐-它们将相互重叠-真正的任务是划分Z,因为数学很完美,镜头也不是这个标记,再次感谢。。。但是,嗯,我在这方面有点新手。。。使用相机内部,使用FOVx=2*atan0.5*width/Fx和FOVy=2*atan0.5*height/Fy,如上所示,我分别获得彩色相机的FOVx=63.127079°和FOVy=38.110836°,深度相机的FOVx=63.126976°和FOVy=38.110699°。我该怎么办?彩色帧的图像分辨率为1280x720,深度帧的图像分辨率为320x180。。。。一个伪代码片段或一个到教程的链接会很好…这就是我现在正在使用的-这是懒惰的粗制滥造的工艺,但它工作得足够好-你可以搞乱如何划分Z,我正在做的是公认的钝器创伤-哦,代码是没有效率的,因为Calc真的应该结合起来,但这意味着一天有一个合法的便笺簿,一盒铅笔和镜头畸变系数-实际代码作为新的答案添加到formatHi Mark,这太好了,非常感谢。。。我假设imagePlaneLocation的组件值是TangoXYZij结构的xyz字段的直接副本,对吗?此外,实际像素坐标分别通过x=u-cx/fx和y=v-cy/fy计算,对吗?是的,它们是直接从点云获取的点,无需进一步转换-这是一个粗略的映射,但是它会让你继续-更复杂的映射需要考虑镜头畸变和Z的非线性移除-顺便说一下,如果你把其中一个或多个标记为答案,如果它们有用的话,它会帮助我you@MarkMullin,我是一个后来者,但你们能解释一下什么是视野吗?我不太理解那个部分?。