opencv - 使用openCV上的多个goodfeaturetotrack点进行6自由度检测

标签 opencv computer-vision tracking

我目前正在使用普通网络摄像头进行头部运动跟踪项目。人脸检测和LK跟踪工作正常,但希望构建更全面的东西。是否可以使用一帧到下一帧中特征点的坐标来估计对象的6自由度(缩放,旋转)运动?直觉上,我认为这是可能的,因为我们可以假设所有帧上的特征点都位于同一平面上。我希望测量主题的俯仰偏航,横摇和缩放。如果我们仅通过观察任意两个给定特征点之间的距离差异来假设对象仅经历平移(没有俯仰偏航),则缩放很容易。当它们全部组合在一起时,俯仰偏航和缩放变得棘手。我试图找出Kinect如何捕获运动,因为我的猜测是我可以将特征点视为Kinect的红外图案。

请对此提出建议。在尝试其他方法之前,需要先了解这种方法的可行性。

谢谢,
开尔文

最佳答案

无法完全建议您提出建议的可行性,因为这取决于您的特征提取方法,即如何获得特征点?如果您的对象始终面对相机,则可以将 Activity 的外观模型应用于头部姿势估计,这将告诉您统计计算出的3d面部网格适合新面部图像的位置。一个叫Pedro Martins的家伙在这方面做了很多工作,包括AAM + POSIT跟踪和头部姿势估计http://www2.isr.uc.pt/~pedromartins/我自己也使用AAM提取面部表情,这是一个问题,与6自由度相比,它需要更多的个人面部特征跟踪精度。对于AAM来说,除了跟踪应用程序文献外,还有很多开源实现,包括Pedro Martins本人用于姿势估计的一种。

但是,正如我在上文中所写,我意识到您可能没有头朝摄像机的情况,因此减少了AAM的使用。您的数据看起来如何?你有样本视频吗?

附言至于Kinect,我不知道您的项目条件,但Kinect 2将具有足够的分辨率,可以跟踪整个面部网格,但它将在明年发布。通常,我希望有人可以通过旋转/缩放比例估计来解决头部跟踪问题。

关于opencv - 使用openCV上的多个goodfeaturetotrack点进行6自由度检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154040/

相关文章:

c++ - "Edge Detection"和 "Image Contours"之间的区别

c++ - 使用 C++ REST SDK 将图像从 OpenCV 3 发送到 Cognitive Face API

c++ - 如何可视化 OpenCV 中的内在/外在相机参数?

Java - OpenCv - JavaCv

c - OpenCV Lucas Kanade 光流

opencv - 处理开放式简历人脸跟踪

c++ - -1073741811(0xc000000d)错误opencv

machine-learning - 与继续添加滤波器尺寸增加的层相比,连续添加相同的 CONV2d 层有什么好处

java - 使用 Desktop.getDesktop().edit(File file) 编辑文件时跟踪文件状态

tracking - 在本地主机和开发服务器上停止 Facebook 像素跟踪