Mastering OpenCV with Practical Computer Vision Projects

感谢翻译,译文原链接 学习了

Chapter 7:3D Head Pose Estimation Using AAM and POSIT

一个好的计算机视觉算法如果没有伟大健壮的功能以及广泛的普遍化和一个坚实的数学基础是不完整的。所有的这些优点伴随着主要由TimCootes开发的主动表观模型(ActiveAppearanceModels)。这一章将教给你怎样使用OpenCV创建一个你自己的主动表观模型以及怎样在一个给出的图像帧中使用它搜索模型所在的最邻近位置。而且你将学习如何使用POSIT算法和如何在你的”posed”图像中拟合你的3D模形。使用这些工具,你将能够实时地在一个视频中跟踪一个3D模型。不是很棒吗?尽管例子的焦点在于头部姿态,事实上,任何可变模型可以采用同样的方法。

当你读这些部分,你将碰到下列主题:

1、主动表观模型概述

2、主动形状模型概述

3、模型实例化——运行主动表观模型

4、AAM搜索和匹配(或拟合,fitting)

5、POIST

下面的列表阐述了本章中你将要碰到的术语:

1、主动表观模型(AAM):一个对象的模型,包含着对象形状和纹理的统计信息。它是捕获对象形状和纹理变化的一个强大的方法。

2、主动形状模型(ASM):对象形状的统计模型。它对于学习形状变化非常有用。

3、主成分分析(PCA):一个正交线性变换。它将数据转换到一个新的坐标系统,满足:数据任何投影产生的最大方差将位于第一个坐标(称为第一个主成分),第二个最大的方差位于第二个坐标上,等等。这个过程通常用在降维。当最初的问题减少了维数,我们可以使用一个更快的匹配(faster-fitting)算法。

4、三角剖分(DT):对于平面上的一组点P,它是一个三角剖分,以使得在三角剖分中P中的任何点都不会在任何三角形的外接圆内。它倾向于避免紧瘦的三角形。三角剖分用来纹理的映射。

5、仿射变换:任何转换都可以用一个矩阵相乘跟着一个矢量的加法的形式来表示。仿射变换可以用来纹理的映射。

6、PosefromOrthographyandScalingwithIterations(POSIT):一个执行3D姿态估计的计算机视觉算法。

主动表观模型概述——ActiveAppearnceModelsoverview

简单地说,主动表观模型是一个组合纹理和形状耦合到一个有效的搜索算法的参数化模型,它可以准确的告诉我们一个模型在一个图像帧中的位置以及如何定位于这个位置。为了做到这一点,我们将以主动形状模型部分开始并且将看到它们与标记的位置紧密关联。主成分分析和一些实践经验将在下面的部分更好的描述。那时,我们将能够从OpenCV的Delaunay函数的获得一些帮助并且学习一些三角剖分。从那起,在三角纹理变换部分,我们将发展到应用分段的仿射变换并且我们可以从一个对象的纹理中获得信息。

当我们获得足够的背景来建立一个好的模型,我们可以在模型的实例部分应用这些技术。然后,我们将能够通过AAM搜索和匹配来解决反问题(theinverseproblem)。对于2D或许甚至3D图像匹配,这些算法本身已经是非常有用的算法。但是当我们能够运用这些算法时,为什么不把它联系到POSIT——3D模型拟合的另一个坚如磐石的算法呢?投入到POSIT部分(DivingintothePOSITsection)我们将获得足够的背景来和它(算法)在OpenCV中一起工作,然后,在下面的部分,我们将学习如何耦合它的一个头部模型。这样,我们可以使用一个3D模型来拟合已匹配的2D图像帧。并且如果一个强烈的读者想知道这将把我们带到哪里,这正是用一个帧到帧的方式组合AAM和Posit,通过可变模型的检测来得到一个实时的3D跟踪。这些细节将在来至网络相机或者视频文件的跟踪部分涉及到。

据说一个照片顶一千个词。想象一下如果我们获得了N个照片。这样,我们先前提到的内容可以在下面截图中简单的跟踪。

本章算法的概述:给出一个图像(先前截图的左上图像),我们可以使用主动表观搜索算法来找到人类头部的2D姿态。截图中右上边的图像展示了先前训练好的用在搜索算法中的一个主动表观模型。找到一个姿态之后,POSIT可以用来推广这个结果到3D姿态。如果这个过程应用到了一个视频序列,将通过检测获得3D跟踪。

主动形状模型——ActiveShapeModels

像先前提到的,AAM需要一个形状模型,这个角色通过ASM扮演(ActiveShapeModels)。在接下来的部分中,我们将创建一个ASM,它是形状变化的统计模型。这个形状模型通过形状变化的组合产生。需要一个标记过的图像训练集,就像文章形状模型——他们的训练和应用(ActiveShapeModels-TheirTrainingandApplication)中描述的那样。为了建立一个人脸形状模型,一些标记了人脸关键位置点的图像用来概述主要的特征。下面的截图展示了一个这样的例子:

一个人脸上有76个标记,这来至于MUCT数据库。这些标记通常是手工标记的并且概述了一些人脸特征,例如嘴的轮廓,鼻子,眼睛,眉毛和脸的形状,因为这些特征易于跟踪。

注释:

Procrustes分析:统计形状分析的一个形式,常用于分析一组形状的分布。Procrustes叠加是通过最优地平移,旋转和一致地缩放对象来执行的。

如果我们有先前提到的图像集,我们可以产生一个形状变化的统计模型。因为标记点在对象上描述了这个对象的形状,如果需要的话,首先我们使用Procrustes分析将这些点集对齐到一个坐标框架,并且通过一个矢量x表示每一个形状。然后,我们对数据应用主成分分析。那么我们可以使用下面的公式估算任何实例:

x = x + Ps bs

在前面的公式中,x是均值形状,Ps是一组变化的正交模式,bs是一组形状参数。好的,为了更好的理解,我们将在本节的剩余部分创建一个简单的应用,这将为我们展示如何处理PCA和形状模型。

使用PCA究竟为什么?因为当减少我们模型参数的数量时,PCA能真正的帮助我们。在本章的后面,我也将看到当在一个给定的图像中搜索它时,它给我们的帮助是多大。下面的引用来至于一个网页:

当人们从目标的丰富信息视点观察时,PCA可以为用户提供一个低维图像——对象的一个“影子”。通过仅使用前几个少量主成分就可以完成,这使得转换后的数据维数减少。

当我们看一个截图时,理解更加清晰,如下:

先前的截图展示了一个中心在(2,3)的多元高斯分布的PCA。所示的向量是协方差矩阵的特征向量。移动向量,这样它们的尾巴在均值处。

没有一种不通过蔑视、忍受和奋斗就可以征服的命运。

Mastering OpenCV with Practical Computer Vision Projects

相关文章:

你感兴趣的文章:

标签云: