我有一张侧脸:
和一张正面图片:
输出:引用正面对齐的侧面。
想法:我只需要知道我可以取哪 3 个公共(public)点,它们在两个面上都可见,然后使用 affineTransform 并显示对齐的轮廓面
OR any other **simple method** of doing so
开发环境:c++和opencv 2.4.2
我尝试了什么:
- haarcascade 特征检测(两个图像中的公共(public)检测点=眼睛);它不会在正面检测到耳朵
- OpenCV: Shift/Align face image relative to reference Image (Image Registration) (我收到错误信息)
最佳答案
讨论 here通过@bytefish,在给定图像中找到眼睛的准确位置绝非易事。在 OpenCV 中寻找眼睛的 Haar 级联会产生太多误报而无用,而且这种方法对图像旋转不稳健。
您需要可靠的头部姿势估计来对齐面部图像。这里有两个最强大的(有代码可用):
Gary B. Huang , Vidit Jain , 和 Erik Learned-Miller . 复杂图像的无监督 union 对齐。 计算机视觉国际 session (ICCV),2007 年。(Project page) , (PDF Online available) , (Source code)
X. Zhu , D. Ramanan . 野外人脸检测、姿势估计和地标定位 计算机视觉和模式识别 (CVPR),罗德岛普罗维登斯,2012 年 6 月。(Project page) , (PDF Online available) , (Source code)
例如,使用第二篇论文中描述的方法,您将获得更强大的功能,如下图所示。这些强大的功能反过来将确保产生更强大的面部对齐性能。
关于c++ - 将侧面图像与其正面图像对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296058/