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