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

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

来源:网络收集 时间:2026-01-19
导读: trianglePoints[2] = dstTri[2]; warp_dst = Mat::zeros(originalImage.rows, originalImage.cols, //存储仿射变换后图像 originalImage.type()); warp_mask = Mat::zeros(originalImage.rows, originalImage.cols,

trianglePoints[2] = dstTri[2];

warp_dst = Mat::zeros(originalImage.rows, originalImage.cols, //存储仿射变换后图像 originalImage.type());

warp_mask = Mat::zeros(originalImage.rows, originalImage.cols, originalImage.type());

/// Get the Affine Transform //获取仿射变换 warp_mat = getAffineTransform(srcTri, dstTri);

/// Apply the Affine Transform to the src image //对图像应用仿射变化 warpAffine(originalImage, warp_dst, warp_mat, warp_dst.size()); cvFillConvexPoly(new IplImage(warp_mask), trianglePoints, 3, CV_

RGB(255,255,255), CV_AA, 0); //new IplImage是一个指针指向warp_mask

warp_dst.copyTo(warp_final, warp_mask);//效果参考下图(除三角剖分映射的地方,其他均为白色)。 }

先前的代码假定我们有了三角形顶点,并且存储 在srcTri数组中以及目的点存储在dstTri数组中。2×3的warp_mat矩阵用来获取从源三角形到目的三角形的仿射变换。更多的信息可以OpenCV的cvGetAffineTransform文献中引用。

函数cvGetAffineTransform计算一个仿射变换的矩阵,如下:

在前面的等式中,目的(i)等于(x’i,y’i),源(i)等于(xi,yi),i等于0,1,2.

获得仿射矩阵之后,我们可以应用仿射变换到源图像。这通过warpAffine函数实现。因为我们不像在整个图像上进行——我们想关注我们的三角形——掩码可以用来完成这个任务。 这样,最后一行代码仅拷贝带有刚才创建的掩码的源图像上的三角形,掩码通过函数cvFillConvexPoly调用填充。

下面的截图展示了应用这个过程到注释图像中的每一个三角形的结果。注意这些三角形映射到匹配的框架,他们的脸朝向视者。这个过程用于创建AAM的统计纹理。

前面的截图展示了将左图像中所有的三角形映射到了一个均值参考框架。

模型实例化——使用主动表观模型——Model Instantiation-playing with the Active Appearance Model

AAM有趣的一面是它们能够简单地插值我们训练图像的模型。通过一对形状或者模型参数的调整,我们可以习惯于他们表现出的惊人的力量。当我们改变形状参数时,根据训练形状数据我们的变化方向发生了变化。另一方面,当表观参数修改时,基于形状的纹理也发生修改。我们的扭曲变换将每一个三角形从基本形状变换到修改的目的形状,因为我们可以 在一个张开的嘴上组合一个关闭的嘴,将像下面截图展示的那样:

前面的截图展示了一个组合的闭合嘴,它是通过另外一个图像上的主动表观形状的实例化获得的。它表明我们是怎样组合一个微笑的嘴和一个钦佩的脸,推断训练的图像。

前面的截图是通过仅改变形状的三个参数和纹理的3个参数获得的,这是AAM的目标。对于想使用AAM的读者,一个简单的应用的开发可以在http://www.packtpub.com/访问的到。实例化一个模型仅是简单的滑动等式参数的问题,就像Getting the feel of PCA部分定义的那样。你应当注意AAM搜索和匹配依赖这种灵活性为给定的模型捕获到帧找到最佳匹配,我们的模型的来至于训练集中的不同位置。我们将在接下来的部分看到。

AAM搜索和匹配——AAM search and fitting

带着新的组合的形状和纹理,我们发现了一个很好的方式来描述人脸不仅在形状上而且在表观上是怎样变化的。现在我们想找一组p形状参数和lambda个表观参数,能将我们的模型尽可能的接近于一个给定的输入图像I(x)。自然地,我们可以在I(x)的坐标框架内计算我们的实例化模型和给定输入图像之间的误差,或者将这些点投影到基本表观并且计算那里的差异。我们将使用后面的这个方法。这样,我们想最小化下面的函数:

在上面的等式中,S0表示像素集x等于(x,y)T,(x,y)T位于AAM基本网格的内部。A0x是我们基本网格的纹理。Ai(x)是来至PCA的表观图像,W(x:p)是像素从输入图像投影到基本网格框架的变换。

通过多年的研究,提出了几个能够实现这个最小化的方法。第一个思想是使用一个增加的方法,其中 ?pi和?λi作为误差图像的线性函数来计算。然后,形状参数p和表观λ在第i次迭代中作为 pi← pi+ ?pi和 λi← λi+ ?λi来更新。尽管收敛有时发生,delta不总是依赖于当前的参数,并且这可能导致发散。另外一个方法非常慢,它是基于梯度下降法的研究,因此寻找另外一个收敛的方法被找到。替代更新参数,可以更新整体变换。

这样,Ian Mathews 和Simon Baker在他们著名的论文称为:再去访问主动表观模型(Active Appeance Models Revisited)中提出。更多的细节可以在这篇论文中找到,它给匹配的一个重要的贡献是它将大部分的密集型计算带到了预计算步骤,就像下面的截图所看到的那样:

注意更新发生在组合步骤(9)(看上面的截图)。等式(40)和(41)来至论文,可以在下面的截图看到:

尽管算法仅提到从一个位置靠近最后一个位置大部分收敛的很好。当在旋转、平移和尺度上存在一个大的差异时,这可能不适应于这样的情况。我们可以通过一个全局的2D相似变换的参数化将更多的信息带到收敛。这是论文中的等式42,展示如下:

在上面的等式中,这四个参数q=(a,b,tx,ty)T有下面的阐述。第一对(a,b)与尺度k和旋转

θ相关,a等于kcos(theta)-1,b=ksin(theta)。第二对(tx,ty)是x,y上的平移。就像在再次访问主动形状模型文章中提到的那样。

带有更多的数学变换,最终我们可以使用前面的算法来找到和一个全局2D变换最匹配的图像。

因为变形(warp)组合算法有几个性能优点,我们将使用在AAM Revisited论文中描述的那个,反向组合投影算法(inverse compositional project-out algorithm)。记住在这个方法中, 匹配时表观的效果可以预先处理,或者投射出——提升AAM匹配性能。

下面的截图展示了使用反向组合投射AAM匹配算法得到的来至MUCT数据库不同图像的收敛。

先前的截图现实了成功的收敛——脸的外部AAM训练集——使用了inverse compositional project-out AAM fitting algorithm。

POSIT——姿态

我们找到我们标记点的2D位置之后,我们可以使用POSIT获得我们模型的3D姿态。 一个3D对象的姿态P定义为3×3的旋转矩阵R和3D平移向量T,因此P等于[R|T]。

注释:

这节大部分是基于Javier Barandiaran编写的OpenCV POSIT手册。

像名字暗示的那样,在若干次迭代中,POSTI使用“姿态来至于正交和尺度”算法,因此,它是POS和迭代的缩写。它假设我们可以在图像中检测和匹配四个或者更多的目标的非共面特征点并且我们知道这个目标上的相关几何。

该算法的主要思想是我们可以找到一个关于目标姿态的好的近,这假定所有模型点在同一个平面内。因为如果我们比较相机到一个人脸的距离,这些点的深度将非常不同。初始化姿态

获得之后,通过解决一个线性系统找到目标的旋转矩阵和平移向量。然而,近似的估计迭代地用来更好地计算特征点的尺度化正交投影,跟随着这些投影(而不是原始点)的POS应用。为了获得更多的信息,我们可以参考: the paper by DeMenton, Model-Based Object Pose in 25 Lines of Code. …… 此处隐藏:1924字,全部文档内容请下载后查看。喜欢就下载吧 ……

第七章 采用AAM和POSIT的3D头部姿态估计(4).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)