如何在opencv / face失真中重新定位面部点

时间:2013-02-25 07:13:10

标签: animation opencv image-processing computer-vision face-recognition

我必须在脸部图像上模拟面部表情(比如张开嘴)。为此,我首先提取了面部特征点并找到了嘴角。现在我需要通过向下移动点来变形图像。

enter image description here

在上图中,我需要将点(2)和(3)分别左右移动一些距离。而点(18)和(19)littele位。所以我会得到一个像张开嘴的表情。

我的问题:

1)上述方法是否正确进行模拟面部表情?

2)如果在opencv中移动点并创建新图像是正确的吗?

2 个答案:

答案 0 :(得分:2)

最近的调查和人们在这个领域使用的技术课程在这里: http://old.siggraph.org/publications/2006cn/course30.pdf

TL:DR。没有"权利"在任何绝对意义上,这样做的方式。您需要以可计算的方式定义目标。然后找出除了图像数据本身之外还需要哪些其他(先前)信息。摆弄"纹理变形"或者在你决定你需要做什么之前的其他插值方案是浪费时间。

你提到"一个像张开嘴的表情"并且我认为这意味着你想产生一个类似于真实面孔的图像,如果主题是张开嘴拍照。您发现的标记显然没有提供足够的信息 - 特别是,它们没有表达任何关于"嘴"的概念。事实上,这个概念在图像中找不到。因此,严格来说,除非您向其中提供更多信息,否则您的任务无法解决。

我建议你看一下上面提到的论文,然后重新考虑你的问题。

答案 1 :(得分:0)

所以,我们再来一次......

我见过很多人从这些点开始使用delauny三角测量,然后在opengl甚至opencv中使用纹理变形或失真。

https://github.com/MasteringOpenCV/code/tree/master/Chapter7_HeadPoseEstimation

看起来非常相关,“MasteringOpencv”一书的部分内容在google.books上