c++ - 将侧面图像与其正面图像对齐

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

我有一张侧脸:

enter image description here

和一张正面图片:

enter image description here

输出:引用正面对齐的侧面。

想法:我只需要知道我可以取哪 3 个公共(public)点,它们在两个面上都可见,然后使用 affineTransform 并显示对齐的轮廓面

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

开发环境:c++和opencv 2.4.2

我尝试了什么:

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

最佳答案

讨论 here通过@bytefish,在给定图像中找到眼睛的准确位置绝非易事。在 OpenCV 中寻找眼睛的 Haar 级联会产生太多误报而无用,而且这种方法对图像旋转不稳健。

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


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

enter image description here

enter image description here

关于c++ - 将侧面图像与其正面图像对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296058/

相关文章:

c++ - 如何在 vtk 中的 3D 表面渲染输出中获取 2D dicom 图像切片的位置

opencv - 是否可以在图像中的一个点运行 filter2D(卷积)?

opencv - 如何在opencv中访问红外传感器图像

image-processing - 在opencv中,如何将灰度图像复制并缩放到另一个彩色图像

image - 平均任意对象的形状(边界点)

c++ - 下面这句话在c++中是什么意思

c++ - 参数包扣减规则是什么

android c++ 未定义对 eglGetCurrentContext 的引用

python - 使用opencv和python计算相机到物体的距离

opencv - OpenCL无法使用OpenCV检测我的AMD GPU