我有个人资料:
和正面脸部图像:
输出:参照正面对齐轮廓面。
想法:我只需要知道我可以采取哪3个共同点,这两个点在两个面上都可见,然后使用affineTransform并显示对齐的轮廓面
OR any other **simple method** of doing so
开发环境:c ++和opencv 2.4.2
我尝试了什么:
答案 0 :(得分:5)
正如@bytefish所讨论的那样here,找到给定图像中眼睛的准确位置远非微不足道。用于在OpenCV中找到眼睛的Haar级联产生了太多的假阳性而且有用,而且这种方法对图像旋转不会很稳健。
您需要稳健的头部姿势估计来对齐脸部图像。这里有两个最强大的(可用代码):
Gary B. Huang,Vidit Jain和Erik Learned-Miller。 复杂图像的无监督联合对齐。 2007年计算机视觉国际会议(ICCV)。(Project page),(PDF Online available),(Source code)
X. Zhu,D. Ramanan。 野外计算机视觉和模式识别中的人脸检测,姿态估计和地标定位(CVPR)2012年6月,罗德岛普罗维登斯。(Project page),(PDF Online available),{{3} }
例如,使用第二篇论文中描述的方法,您将获得更强大的功能,如下图所示。反过来,这些强大的功能将确保产生更强大的面部对齐性能。
答案 1 :(得分:1)
如果你寻找一些非常简单的东西,你可以将你的嘴视为平面物体上的一条线,并通过线缩短来计算旋转量。不管你拍照还是编写代码,都不应该笑。
更酷的方法是将您的脸部作为纹理映射到预定义的3D模型并旋转它,直到它与您的个人资料视图最佳关联。
当然,正确的方法是使用一组不同的头部旋转来训练二元分类器,它只进行Lepetit paper中的成对强度比较。