教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

第七章 采用AAM和POSIT的3D头部姿态估计(6)

来源:网络收集 时间:2026-01-19
导读: TERMCRIT_ITER, 100, 1.0e-4f); cvPOSIT( positObject, 迭代完成之后,cvPOSIT将结果存储在rotation_matrix和translation_vector.下面的截图展示了带有白色圆圈的scrImgePoints,以及一个坐标轴来表明旋转和平移的

TERMCRIT_ITER, 100, 1.0e-4f);

cvPOSIT( positObject, &srcImagePoints[0], FOCAL_LENGTH, criteria, rotation_matrix, translation_vector );

迭代完成之后,cvPOSIT将结果存储在rotation_matrix和translation_vector.下面的截图展示了带有白色圆圈的scrImgePoints,以及一个坐标轴来表明旋转和平移的结果。

参考前面的截图,让我们看一下输入的点和运行POSIT算法的结果: 1、白色圆圈表示输入点,同时坐标轴表示结果模型的姿态。

2、当通过一般标定过程获得焦距时,请确保你的相机使用了焦距。你可能想检查一下标定的过程可以访问:in the Camera calibrationsection in Chapter 2, Markerbased Augmented Reality on iPhone or iPad. POSIT当前的实现仅允许正方形的像素,因为对于焦距的长度没有余地在x和y轴上。

3、期望的旋转矩阵为下面的格式:

4、平移矢量为下面的格式:

POSIT和头部模型

为了使用POSIT作为姿态估计的一个工具,我们将使用一个3D头部模型。 There is one available from the Institute of Systems and Robotics of the University of Coimbra and can be found at http://aifi.isr.uc.pt/Downloads/OpenGL/ glAnthropometric3DModel.cpp

注意这个模型可以在它描述的地方获得:

float Model3D[58][3]= {{-7.308957,0.913869,0.000000}, ...

这个模型可以通过下面的截图看到:

先前的截图展示了POSIT可利用的一个58个点的3D头部模型。

为了使POSIT工作,相对于3D头部模型的点必须相应地匹配。注意,至少需要4个非共面的点和它们相应的2D投影来使POSIT工作,因此,它们必须作为参数传递,大致上和Diving into POSIT部分描述的那样。注意这个算法在匹配点的数量方面是线性的。下面的截图展示了匹配是怎么样完成的:

先前的截图展示了一个3D头部模型和一个AAM网格的正确的匹配点。

从网络摄像机或者视频文件跟踪

既然我们已经收集了所有的工具来获得6个自由度的人脸跟踪。我们可以应用它到一个相机流或者视频文件。OpenCV提供了VideoCapture类,这个类可以用下面的方式使用(获取跟到的信息,可以看:see the Accessing the webcamsection in Chapter 1, Cartoonifier and Skin Changer for Android)

#include \

#include %using namespace cv; int main(int, char**) {

VideoCapture cap(0);// opens the default camera, could use a //打开默认相机,可以使用一个视频文件路径替代

// video file path instead

if(!cap.isOpened()) // check if we succeeded //检查是否成功 return -1;

AAM aam = loadPreviouslyTrainedAAM(); //导入先前训练的AAM HeadModel headModel = load3DHeadModel();//导入3D头部模型

Mapping mapping = mapAAMLandmarksToHeadModel();//将AAM投影到头部模型 Pose2D pose = detectFacePosition();//检测人脸的位置 while(1) {

Mat frame;

cap >> frame; // get a new frame from camera

Pose2D new2DPose = performAAMSearch(pose, aam);

Pose3D new3DPose = applyPOSIT(new2DPose, headModel, mapping);

if(waitKey(30) >= 0) break; }

// the camera will be deinitialized automatically in VideoCapture // destructor return 0; }

算法是这样运作的。一个视频捕捉通过VideoCapture(0)来初始化,因此将使用默认的相机。既然我们使得视频捕捉工作了,同样地我们需要我们训练的主动表观模型,这在伪代码load PreviouslyTrainedAAM mapping中实现。我们同样为POIST算法导入3D头部模型并且导入存储在映射变量中的标记点到3D头部点的映射。

我们需要的所有事情导入之后,我们将从一个已知的姿态初始化算法,这是一个已知的3D姿态,已知的旋转和已知的一组AAM参数。这将通过OpenCV详细记载的Haar特征分类人脸检测器自动的完成(更多的细节在第六章非刚性人脸跟踪中的人脸检测器部分,或者OpenCV的级联分类器文献),或者我们可能手动地从先前标记的框架中初始化一个姿态。 同样可以使用一个brute-force方法,它将为每一个矩形运行一个AAM匹配,因为仅在第一帧的搜索中它很慢。注意通过初始化,我们想要通过它们的参数找到AAM的2D标记。

当所有的事情导入了之后,我们可以通过while 循环限定的主循环来进行迭代。在这个循环中,我们首先访问下一个获取的视频帧,然后我们运行一个主动表观模型,以便我们可以在下一帧图像中找到标记。既然在这一步,当前位置非常重要,我们将它作为一个参数传递给伪代码函数performAASearch(pose,aam)。如果我们找到了当前姿态,它通过误差图像收敛传递了一个信号,我们将获取下一个标记位置,因此我们可以将它们提供给POSIT。这发生在下面的命令行:applyPOSIT(new2DPose,headModel,mapping),这里新的2D姿态作为一个参数传递,同样地像我们先前导入的headModel和mapping。之后,我们可以在获得姿态中渲染任何3D模型,如一个坐标系轴或者一个增强现实的模型。当我们有了标记,通过模型的参数化可以获得更多有趣的效果,例如张开嘴或者改变眉毛的位置。

总结:

在这一章,我们已经讨论了主动表观模型是怎么样和POSIT组合来获得一个3D头部姿态。关于如何创建,训练和操作AAM的概述已经给出,读者可以使用这些背景到任何领域,例如医疗,图像处理,或者企业。进一步处理AAMs,我们熟悉了Delaunay三角剖分并且学习了如何使用这样有趣的结构作为一个三角剖分的网格。我们同样展示了如何OpenCV函数在三角形上执行纹理映射。另外一个感兴趣的主题是AMM匹配的方法。尽管只描述了反向组合投影算法,我们可以简单的通过使用它的输出来获得多年研究的结果。

学习了充足的理论和AAM的实践之后,我们投入到POSIT的细节来结合2D测量到3D测量,来阐述如何使用两个模型点之间的匹配来适配(拟合)一个3D模型。我们通过展示如何使用所有的工作到一个在线的人脸跟踪,这产生了6个自由度的头部姿态——个3的旋转度——3个平移。本章完整的代码可以从http://www.packtpub.com/下载。

References

? Active Appearance Models, T.F. Cootes, G. J. Edwards, and C. J. Taylor, ECCV, 2:484–498, 1998(http://www.cs.cmu.edu/~efros/courses/AP06/Papers/ cootes-eccv-98.pdf)

? Active Shape Models – Their Training and Application, T.F. Cootes, C.J. Taylor, D.H. Cooper, and J. Graham, Computer Vision and Image Understanding, (61): 38–59, 1995(http://www.wiau.man.ac.uk/~bim/Papers/cviu95.pdf)

? The MUCT Landmarked Face Database, S. Milborrow, J. Morkel, and F. Nicolls, Pattern Recognition Association of South Africa, 2010(http://www.milbo.org/ muct/)

? The IMM Face Database – An Annotated Dataset of 240 Face Images, Michael M. Nordstrom, Mads Larsen, Janusz Sierakowski, and Mikkel B. Stegmann,

Informatics and Mathematical Modeling, Technical University of Denmark, 2004, (http://www2.imm.dtu.dk/~aam …… 此处隐藏:3150字,全部文档内容请下载后查看。喜欢就下载吧 ……

第七章 采用AAM和POSIT的3D头部姿态估计(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/593685.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)