根据标记点对齐2个人脸图像

时间:2014-01-27 08:38:15

标签: c++ opencv alignment computer-vision

我正在使用open cv和C ++。我有2张脸部图像,上面有标记点。我已经找到了标记点的坐标。现在我需要根据这些坐标对齐这两个面部图像。这两个图像可能不一定具有相同的高度,这就是为什么我无法弄清楚如何开始对齐它们,应该做什么等等。

2 个答案:

答案 0 :(得分:2)

在您的情况下,您无法应用基于单应性的对齐程序。为什么不?因为它不适合这个用例。它被设计成对齐平面。在不同位置和深处具有标记的面(3D对象)显然不是平面。

相反,你可以:

  1. 尝试匹配图像之间的标记,然后插入其他像素的位移场。经典的方法包括moving least squares插值或RBF;
  2. 否则,更多的“面部处理”方式是使用纹理和面部模型之间的面部图像分解(如AAM那样)并使用面部的分解工作设置。

答案 1 :(得分:1)

定义“对齐”。

或者更确切地说,注意到没有与正面图像的重叠部分匹配的正面图像的独特扭曲 - 这意味着存在无限的这种扭曲。

因此除了图像和一些匹配点之外,您还需要更好地指定目标是什么,以及您拥有哪些额外信息。例如,您的相机设置是否已校准?你知道相机的焦距及其相对位置和姿势吗?

您是否正在尝试构建纹理贴图(例如投影贴图),以便您可以在已有的3D模型上涂抹“合并”的面部图像?然后,您可能需要查看圆柱形或球形地图,并根据校准姿势构建图像的圆柱形或球形投影。

或者您是否尝试根据这2个视图重建头部的整个3d形状?显然你只能在两个图像重叠的小条上做到这一点,而且你发布的图像的质量看起来有点太差了。

还是...?