将轮廓面部图像与其正面图像对齐

时间:2014-03-10 09:13:24

标签: c++ opencv image-processing computer-vision

我有个人资料:

enter image description here

和正面脸部图像:

enter image description here

输出:参照正面对齐轮廓面。

想法:我只需要知道我可以采取哪3个共同点,这两个点在两个面上都可见,然后使用affineTransform并显示对齐的轮廓面

      OR any other **simple method** of doing so

开发环境:c ++和opencv 2.4.2

我尝试了什么:

  1. haarcascade特征检测(两个图像中的常见检测点=眼睛);它不会检测到正面的耳朵
  2. OpenCV: Shift/Align face image relative to reference Image (Image Registration)(收到错误消息)

2 个答案:

答案 0 :(得分:5)

正如@bytefish所讨论的那样here,找到给定图像中眼睛的准确位置远非微不足道。用于在OpenCV中找到眼睛的Haar级联产生了太多的假阳性而且有用,而且这种方法对图像旋转不会很稳健。

您需要稳健的头部姿势估计来对齐脸部图像。这里有两个最强大的(可用代码):


例如,使用第二篇论文中描述的方法,您将获得更强大的功能,如下图所示。反过来,这些强大的功能将确保产生更强大的面部对齐性能。

enter image description here

enter image description here

答案 1 :(得分:1)

如果你寻找一些非常简单的东西,你可以将你的嘴视为平面物体上的一条线,并通过线缩短来计算旋转量。不管你拍照还是编写代码,都不应该笑。

更酷的方法是将您的脸部作为纹理映射到预定义的3D模型并旋转它,直到它与您的个人资料视图最佳关联。

当然,正确的方法是使用一组不同的头部旋转来训练二元分类器,它只进行Lepetit paper中的成对强度比较。