将面从非正面旋转到正面opencv

Posted

技术标签:

【中文标题】将面从非正面旋转到正面opencv【英文标题】:rotate face from non-front to front opencv 【发布时间】:2016-08-25 07:11:06 【问题描述】:

一个星期以来,我一直在努力解决一个问题,即我无法将一张脸从image 中的左脸等非正面旋转到同一张图片中的右脸等正面。

1)。我在learnopencv网站上使用了一个关于delaunay的教程来获取左脸的所有三角形(大约138个三角形),如下所示:

...

triangle num 4: [100, 383] | [120, 374] | [112, 385]

triangle num 5: [120, 374] | [100, 383] | [92, 345]

triangle num 6: [136, 396] | [137, 379] | [151, 394]

triangle num 7: [137, 379] | [136, 396] | [118, 395]

triangle num 8: [92, 345] | [86, 414] | [80, 451]

triangle num 9: [86, 414] | [92, 345] | [100, 383]

triangle num 10: [86, 414] | [100, 383] | [118, 395]

triangle num 11: [116, 336] | [120, 374] | [92, 345]

triangle num 12: [120, 374] | [116, 336] | [133, 344]

...

2)。和这个库:https://github.com/chili-epfl/attention-tracker(可以估计头部姿势)得到左脸头部姿势的4x4矩阵变换,这个矩阵似乎是opencv中Rodrigues函数的结果。

 0.659585  -0.749291 -0.0592507  0.0591621 

-0.0327269 -0.107385 0.993679    -0.00523744 

-0.750917  -0.653477 -0.0953513  -0.280204 

 0         0         0           1 

所以我不知道下一步如何使用步骤 2 中的 4x4 矩阵旋转步骤 1 中的所有三角形以获得右脸的结果。 请帮忙!

【问题讨论】:

也许一些代码和图像会有助于获得答案...... 代码真的很长,所以我想我的代码的结果会更清楚。更具体地说,我的三角形列表声明如下: cv::vector<:vector> > list_tri_points 所以每个项目都是二维点的列表,如步骤 1 中的结果和步骤 2 中的矩阵 4x4我存储在 cv::Mat 类型的变量中我想要实现的是通过使用矩阵 4x4 以某种方式将 list_tri_points 中的所有三角形转换为新的三角形列表。这个新的三角形列表将呈现在正面 【参考方案1】:

如何将人脸从非正面投影到正面是一个复杂的问题,即使您已经投影了人脸的地标位置。 我建议使用我之前使用的两个开源库。

第一个由 MIT 提供。此代码不仅是面部前置器,而且可以用于任何对象。 https://bitbucket.org/gbhuang/congealreal

第二个库链接在下面,仅用于面部投影。

https://github.com/eranid/adience_align

我认为第二个库是最有用的。

【讨论】:

感谢 Zangeneh 回答我的问题。我的目的是通过比较输入图像(非正面图像)的所有可能的标志点对之间的比率与存储图像(正面图像)的比率来进行人脸识别。但是对于非正面,比率不可能正确,所以我必须将其转换为正面,然后计算比率。但是,如果如您所说,这是一个复杂的问题,是否有任何其他解决方案可以正确比较 2 个面的比率,这可以算作姿势差异但没有面部投影? 如果你想实现人脸识别系统,可以识别不同姿势的人脸,你有两种方法。第一种方法是使用正面化模块,第二种方法是使用面部姿势估计来告诉我们面部是否是非正面的,丢弃它 嗨,Zangeneh,您能否更具体地解释一下在人脸识别中使用姿势估计?我还是不明白。谢谢!

以上是关于将面从非正面旋转到正面opencv的主要内容,如果未能解决你的问题,请参考以下文章

CSS3习题2(卡牌旋转)

手势识别 翻转算法

android 上下滑动按钮 按钮图片翻转180度从正面到反面 再滑动回到正面 如此循环 就代码 先谢谢了

Cordova如何翻转整个屏幕正面到背面的3D效果

OpenGL 深度/剔除问题

Dlib 正面人脸检测在 IOS 中不起作用。?