【问题标题】:Align profile face image with its frontal face image将侧面图像与其正面图像对齐
【发布时间】:2014-04-13 07:31:44
【问题描述】:

我有一张头像:

还有一张正面图像:

输出:将侧面与正面对齐。

想法:我只需要知道我可以采取哪些 3 个共同点,这将在两个面上都可见,然后使用 affineTransform 并显示对齐的轮廓面

      OR any other **simple method** of doing so

开发环境。:c++和opencv 2.4.2

我尝试了什么:

  1. haarcascade 特征检测(两个图像中的共同检测点=眼睛);它不会检测到正面的耳朵
  2. OpenCV: Shift/Align face image relative to reference Image (Image Registration)(我收到错误消息)

【问题讨论】:

  • 一般来说,如果可以正确提取和匹配特征,拼接器应该适用于所有类型的图像。 estimateTransform 返回一个 cv::Status 值,你能检查一下吗?
  • 在命令窗口中,在“成对匹配,时间=”处停止处理图像。它无法进行estimateTransform
  • 你遇到了什么错误?
  • 我更正了。但是,我无法继续主要pastebin.com/S2etkzrC
  • @Steph,你为什么不使用 STASM 或 Flandmark 检测器检测一些面部特征(眼睛、鼻子、下巴)?

标签: c++ opencv image-processing computer-vision


【解决方案1】:

正如@bytefish here 所讨论的,在给定图像中找到眼睛的准确位置绝非易事。在 OpenCV 中用于寻找眼睛的 Haar-cascades 会产生太多的误报而无用,而且这种方法对图像旋转不具有鲁棒性。

您需要可靠的头部姿势估计来对齐人脸图像。这里有两个最健壮的(代码可用):


例如,使用第二篇论文中描述的方法,您将获得更强大的功能,如下图所示。反过来,这些强大的功能将确保产生更强大的人脸对齐性能。

【讨论】:

  • 感谢@herohuyongtao,但我需要一个更简单的方法,它可能不一定很健壮
【解决方案2】:

如果您要寻找一些非常简单的东西,您可以将您的嘴巴视为平面对象上的一条线,并通过线的缩短量来计算旋转。不过,当你拍照或写代码时,你永远不应该微笑。

不过,一种更酷的方法是将您的面部作为纹理映射到预定义的 3D 模型并旋转它,直到它与您的个人资料视图最相关。

当然,正确的做法是使用一组不同的头部旋转来训练一个二元分类器,该分类器只进行成对强度比较,如Lepetit paper

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2011-01-25
    • 1970-01-01
    • 2022-08-02
    • 2015-03-22
    • 2016-07-11
    • 1970-01-01
    相关资源
    最近更新 更多