ASM(active shape model)算法简介(一)

本文来源于我个人博客www.chenbiaolong.com

概要

ASM是一种基于点分布模型(Point Distribution Model,PDM)的算法。在PDM中,外形相似的物体,例如人脸、人手、心脏、肺部等的几何形状可以通过若干关键特征点(landmarks)的坐标依次串联形成一个形状向量来表示。ASM算法需要通过人工标定的方法先标定训练集,经过训练获得形状模型,再通过关键点的匹配实现特定物体的匹配。ASM 的优点是
能根据训练数据对于参数的调节加以限制,从而将形状的改变限制在一个合理的范围内。本文将根据ASM的原始论文和一些资料,整理ASM算法的数学原理。

训练图像的标定

为了建立ASM,需要一组标有n个特征点的N幅人脸图象(包括多个人的不同表情和姿态)作为训练数据。特征点可以标记在脸的外部轮廓和器官的边缘,如下图所示。
ASM(active shape model)算法简介(一)_第1张图片
这张图中有67个标定点,需要注意的是各个标定点的顺序在训练集中的各张照片需要一致。比如212这两点分别对应脸和耳朵的连接处,在其他的训练图像中也要有一样的标定点。
假设我们一共有N张的训练图,每一张图都有n个点,第i张图像的第k点坐标表示为

(xi,j,yi,j)

对于第i张图像,各个标定点可以用一个矩阵表示:
Xi=[xi0,yi0,xi1,yi1,...xi(n1),yi(n1)]T

其中1<= i<=N;

训练图像的对齐

为了研究训练图象的形状变化,比较不同形状中相对应的点,应先对这些图象进行对齐。对齐是指以某个形状为基准,对其它形状进行旋转,缩放和平移使其尽可能的与基准形状接近的过程。
与基准形状尽可能接近,在数学上我们经常用欧式距离的大小衡量接近的程度。假设图像i的标定点矩阵为Xi,图像j的标定点矩阵为Xj,二者的欧式距离大小为

dik=(xi0xk0)2+(yi0yk0)2+(xi1xk1)2+(yi1yk1)2+...+(xi(n1)xk(n1))2+(yi(n1)yk(n1))2

也可以用如下的矩阵运算形式表示:
d2ik=(XiXk)T(XiXk)

有时我们需要对各个点加上不同的权值,设加权矩阵为 W,加权的欧式距离为
dik=w0(xi0xk0)2+w0(yi0yk0)2+w1(xi1xk1)2+w1(yi1yk1)2+...+wn1(xi(n1)xk(n1))2+wn1(yi(n1)yk(n1))2

或者用矩阵运算方式表示:
d2ik=(XiXk)TW(XiXk)

其中 W是对角矩阵
W=diag(w0,w0,w1,w1,...wj,wj,...wn1,wn1)

为了实现训练图像的对齐,我们首先选择一幅基准图像,一般选择第一张图像 X1。训练集中其他图片经过变换尽可能的接近该基准图像,具体的变化过程可以用一个缩放幅度参数 s,旋转参数 theta以及平移参数矩阵 t表示。假设我们要将第2幅图像经过变换尽可能的接近第1幅图像,变换后的图像矩阵表示为:
M(s,θ)[X2]t

变换后的图像矩阵与基准矩阵 X1的加权欧式距离平方表示为:
E=X1M(s,θ)[X2]tTWX1M(s,θ)[X2]t

其中
M(s,θ)[xjkyjk]=((scosθ)xjk(ssinθ)yjk(ssinθ)xjk+(scosθ)yjk)t=(tx,ty,tx,ty,...tx,ty)T

假设:
ax=scosθay=ssinθ

为了得到最好的对齐结果,我们必须计算出缩放幅度参数 s,旋转参数 theta以及平移参数矩阵 t使 E达到最小,利用加权最小二乘法可以获得以下方程:
Eax=0Eay=0Etx=0Ety=0

分别将 E代入上面的式子,可以得到下面的矩阵方程:
X2Y2Z0Y2X20ZW0X2Y20WY2X2axaytxty=X1Y1C1C2

其中
Xi=k=0n1WkxikYi=k=0n1wkyikZ=k=0n1Wk(x22k+y22k)W=k=0n1WkC1=k=0n1Wk(x1kx2k+y1ky2k)C2=k=0n1Wk(y1kx2k+x1ky2k)

通过以上方程就可以求出
ax,ay,tx,ty
这4个变量的值,对应的也就能将图像2对齐到图像1了。
在上面的方程中我们还没有讨论如何确定权重矩阵 W。在训练集的各个点中,权重越高的点对结果的影响也就越大。那么如何确定一个点应该拥有多大的权重呢?在ASM的原始论文中作者选择了趋向比较 稳定的点。一个稳定的点就是在训练集中与其他点的距离变化不大的点。
假设 Rkl代表一张图片中 k点和 l点的距离, VRkl表示这个距离在所有训练图像中的变化量(原文是let VRkl be the variance in this distance over the set of shapes)。在原始论文中并没给出 VRkl的计算表达式,但按照它的定义应该是可以表示为各张训练图像中 Rkl组成的数组的方差形式。

VRkl表示在训练集中k点和l点距离的变化程度,如果将k点与其他所有点的距离变化程度进行累加,就可以判断出k点的稳定程度。对于权重W的确定有如下式子:

wk=l=0n1VRkl1

其中n为模型点的个数。
可以看出k点越稳定 ,wk越大, k点也就有越大的权重。

综合前面的分析,我们可以将训练集中的第2,3,…,(N-1)张图片分别与第一张图像进行对齐,对齐完成后就可以进行下一步的图像分析了。

图像的PCA分析

前面已经将训练集中的所有图像进行对齐了,接下来将根据对齐后的图像数据进行PCA分析,最终得到训练好的形状模型。

假设我们已经有了N张已经对齐好的图像数据,第i张图像的数据表示为Xi,计算其平均形状为

X¯=1Ni=1NXi

由于图像的采样点可能比较多,如果直接全部计算所需耗费的计算时间比较大。因此可以利用PCA算法对图像数据进行降维处理。关于PCA的基础理论可以参考 这篇文章。

将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)。

这是原始的定义,但实际上我们对一个形状各个点的原始坐标位置不感兴趣,我们感兴趣的是训练集中各张图像的各个形状点偏离平均形状的大小。因此,在这里我们映射到新空间的不是原始点坐标,而是各个点偏离平均形状的偏离坐标。偏离坐标的协方差矩阵为:

S=1Ni=1NdXidXTi

其中dX i为各张图片的形状与平均形状的偏差。
dXi=XiX¯

假设新空间的正交基表示为 P
P=p0p1...p2k1

根据PCA的相关知识, PS的特征向量组成的矩阵,有
Spk=λkpk

当映射到新的空间后,各个形状偏离平均形状的向量可以用新空间的特征向量线性表达。

dXi=bi0p0+bi1p1+...+bi(2n1)p2n1

bil是第i张图 pl向量的幅度值。至此我们有以下公式
Xi=X¯+dXi=X¯+Pbi

根据以上公式可以得到
bi=P1(XiX¯)=PT(XiX¯)

这里的b i表示第i张图片形状与平均形状的偏离程度。对于一种形状,它在不同图片的表现形式可以用如下公式表示:
X=X¯+Pb

这里 X表示形状允许的表现形式。比如我们做人脸识别,虽然各个人的长相不一样,并且拍照的角度不一样,但无论如何人脸的形状都是在平均脸的基础上进行一些形变得到的。我们可以规定向量 b在一个区间范围之内,只要 b不脱离这个区间,我们就能认为检测到一张人脸。这也是ASM做形状匹配的基础原理。至于 b的区间范围,在ASM的原始论文中取
3λkbk3λk

现在我们已经分析了ASM的图像对齐以及图像形状的PCA分析,在下一篇中我们将介绍如何进行形状的搜索。

参考文献

active shape models their training and application(原始论文)
An Introduction to Active Shape Models
ASM(Active Shape Model)算法介绍

你可能感兴趣的:(ASM)