首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强现实眼镜+深度相机->立体视觉

增强现实眼镜+深度相机->立体视觉
EN

Stack Overflow用户
提问于 2014-03-10 14:22:56
回答 1查看 500关注 0票数 0

在我们目前的项目中,我们使用安装在用户头部上方的深度摄像机来识别手指、手和触摸事件。这是相当好的工作,并已经可以作为一种新型的输入设备。

下一步是使用增强现实眼镜将按钮/控件显示在用户的手掌上。对于这一步,我们需要转换我们的识别数据(指尖,掌心四边形的角点),将它们显示在增强现实眼镜上的正确位置上。在未来,我们将使用一个真正的3D输出场景,但就目前而言,我们只是简单地用我们的眼镜显示2D图像。您可以想象整个设置为立体视图与深度相机和用户眼睛作为相机。

为了得到变换矩阵,我们连续地在输出图像上显示一个随机点,用户必须将他的指尖放在那个位置上。由此我们得到了输入图像(深度摄像机)和输出图像(增强现实眼镜)之间的点对应关系。我们目前使用其中的20个对应,然后使用Emgu的FindHomography()方法获得转换矩阵。

对于我们的第一次努力,这已经是正常的,但它并不完美。我们应该如何取得更好的结果?

我们有什么

  • 输入图像中的2D像素坐标(深度摄像机320x240)
  • 3D坐标(相对于我们的深度相机)
  • (输出图像中对应的2D像素坐标)

我们需要什么

一种将与我们的深度相机相关的2D像素坐标或3D坐标映射到输出图像的方法(目前是2D的,也许是以后的3D )。

问题:

我们应该在这里使用哪种类型的转换?FindHomography(),GetPerspectiveTransformation(),fundamentalMatrix,essentialMatrix?

任何帮助/建议都是非常感谢的。提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-10 14:55:46

首先,FindHomography()、GetPerspectiveTransformation()是相同的转换,除非前者在Ransac框架的后面重复尝试。它们在飞机之间匹配点,因此不适合你的3d任务。FundamentalMatrix和essentialMatrix不是转换--它们是你听到的热门词;)如果你试图重新投影一个虚拟物体从相机系统到眼镜的角度,你只需应用旋转和三维转换到你的对象坐标,然后重新投影他们。

步骤顺序如下:

  1. 使用立体声相机找到地标的三维坐标(比如说你的手);
  2. 将你的控制放置在3D空间中的地标附近(一些虚拟按钮?)
  3. 计算每个护目镜视点的相对平移和旋转;例如,您可能会发现,从立体摄像机到右侧的右护目镜焦点是3cm,并且围绕y轴旋转10度左右;重要的是,左、右护目镜焦点将在空间中移动,在重投影过程中产生图像差异(深度越大,视差越小),大脑将其解释为显示深度的立体提示。请注意,还有很多关于深度的其他线索(例如模糊、透视、已知的大小、眼睛的收敛性等)。这可能与不一致,也可能不符合差异提示。
  4. 将视点变换的逆变换应用于虚拟三维物体,例如,如果观看者的眼镜向右移动(wrt立体声摄像机),它就像一个物体向左移动;
  5. 将这些新的3D坐标投影到图像中,如col=xf/z+w/2和row=h/2-yf/z;使用openGL可以帮助使投影看起来更好。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22302801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档