zoukankan      html  css  js  c++  java
  • 人脸特征点定位

       other http://www.face-rec.org/algorithms/#Image

    人脸特征点定位——ASM和AAM算法

      (2013-12-15 14:50:59)
       

    人脸特征点定位的目的是在人脸检测的基础上,进一步确定脸部特征点(眼睛、眉毛、鼻子、嘴巴、脸部外轮廓)的位置。定位算法的基本思路是:人脸的纹理特征和各个特征点之间的位置约束结合。经典算法是ASM和AAM。

    1

    1. ASM(Active Shape Model):分为训练和搜索两步。训练时,建立各个特征点的位置约束,构建各个特定点的局部特征。搜索时,迭代的匹配。

       第一步:训练:

                    首先,构建形状模型:  

                             搜集n个训练样本(n=400);

                             手动标记脸部特征点;

                             将训练集中特征点的坐标串成特征向量;

                             对形状进行归一化和对齐(对齐采用Procrustes方法);

                             对对齐后的形状特征做PCA处理。

                    接着,为每个特征点构建局部特征。目的是在每次迭代搜索过程中每个特征点可以寻找新的位置。局部特征一般用梯度特征,以防光照变化。有的方法沿着边缘的法线方向提取,有的方法在特征点附近的矩形区域提取。

       第二步:搜索:

                    首先:计算眼睛(或者眼睛和嘴巴)的位置,做简单的尺度和旋转变化,对齐人脸;

                    接着:匹配每个局部特征点(常采用马氏距离),计算新的位置;

                            得到仿射变换的参数,迭代直到收敛。

      另外,常采用多尺度的方法加速。搜索的过程最终收敛到高分辨率的原图像上。

    2. AAM(Active Appreance Model):ASM只用了形状约束(加上特征点附近的特征),AAM又加入了整个脸部区域的纹理特征。即:Appreance  = Shape + Texture。

        在对形状和纹理特征统一量纲后,建模和搜索过程和ASM基本相同。

        有个区别是纹理特征的搜索过程:由于纹理特征维数较高,搜索过程是一个高维的优化问题。解决方法是事先学习出纹理预测需要的线性模型,根据该模型调整参数,提高搜索效率。

    2

    其中矩阵A就是先验。

        下面是随着迭代次数增加,模型收敛情况示例:

    3

    3. 开源库和SDK

             am_tools(原作者提供的demo)

             Stasm

             Face++ Research Toolkit

    参考:

    Active Shape Models

    Active Appearance Models

    Statistical Models of Appearance for Computer Vision.

    ASM(Active Shape Model)算法介绍

    AAM(Active Appearance Model)算法介绍

    几种关于ASM & AAM 模型代码实现的对比

    Active Shape Models with Stasm

    (学习笔记)Stasm的接口和使用

  • 相关阅读:
    c#下实现ping操作
    DevExpress 经典常用功能代码收集
    WPF – 使用触发器
    XtraGrid使用方法
    [读书笔记]STL源码剖析
    [微软面试100题]6170
    [读书笔记]Thinking in C++
    [转][算法]google page rank算法
    [微软面试100题]7180
    [转][算法]链接分析算法之:HITS算法
  • 原文地址:https://www.cnblogs.com/developer-ios/p/5257113.html
Copyright © 2011-2022 走看看