ASM(Active Shape Model)由Cootes于1995年在论文[1]中提出。
ASM是对图像中的shape进行建模的可变模型(deformable model),得到的形状模型既可以用来分析新的形状(拟合模型到新形状,见第4节),也可以用于生成形状(在给定图像中搜索形状,见第5节)。
首先需要给出shape的定义。给定一幅图片,对感兴趣物体标注landmark points,以人脸为例,就是选择人脸上的关键点,如下图所示:
得到点集合 { (x1,y1),(x2,y2),⋯,(xn,yn)} ,那么这些点在图片中对应的shape就可以表示成 2n 维的向量 x⃗ :
可以看出每个shape都是 R2n 空间中的一个点。并且我们规定对一个形状进行相似变换(Similarity transformation),即旋转R、缩放S、平移T(RST),并不会改变该形状。当然也可以定义形状在其他变换操作下是不变的。
假设现在有 N 个已经标注了landmark点的训练数据,也就是说有了
1、对齐
为了能比较不同shapes,需要将shapes对齐。这是因为不同的形状大小角度等都可能不同,比如一个人脸特写与一张全身照中的人脸,显然,这两个人脸对应的形状是没有可比性的。
ASM中的对齐算法是基于Procrustes Analysis的。Procrustes Analysis在对齐形状时以最小化对齐后的形状和平均形状之间的距离之和为目的:
这个优化目标有意思,首先式中的 x⃗ ′i 是对齐后的第i个形状, x⃗ ¯ 是对齐后的形状的均值。第一项是未知的,而第二项又取决于第一项。假设 x⃗ ′i=T(Θi;x⃗ i) ,这个函数姑且称为对齐函数吧。那么每个形状都对应一个参数 Θi ,上述优化问题就是求使D最小的 Θ={ Θi,i=1,⋯,N} :
这个优化问题有解析解,但是一般采用下面的迭代算法进行对齐:
- 平移每个形状使其重心位于原点
- 选择第一个形状 x⃗ 1 ,对齐进行缩放 x⃗ 1 以使 |x⃗ |=1 ,以缩放后的形状作为初始平均形状 x⃗ 0¯
- 对齐所有形状到平均形状
- 计算对齐后的所有形状的平均形状 x⃗ ¯
- 对 x⃗ ¯ 进行约束:让 x⃗ ¯ 对齐 x⃗ 0¯ 并且缩放到 |x⃗ ¯|=1
- 如果不收敛,返回到(3)
说明:步骤(5)对平均形状进行约束,是为了确保有唯一解(如果不进行约束的话,平均形状可能变得非常离谱)。另外判断是否收敛是看平均形状的变化是否超过某一幅度。
1.1、对齐操作
步骤(3)中的对齐操作可以有多种方式。比如可以移动每个形状使其以原点为中心,缩放使其模为1,旋转使得D最小,这种方式下D的参数只有旋转角度。
文献[1]中介绍的方法是对每个形状进行相似变换 Ts,θ,tx,ty(x⃗ ) 以对齐均值。假设两个形状 x⃗ 1 和 x⃗ 2 ,这两个形状以原点为中心,现在 x⃗ 1 处理做相似变换使其对齐 x⃗ 2 ,相似变换的参数通过最小化