上的图像面比对算法(face alignment algorithm on images)

2019-07-31 02:52发布

我怎样才能做,我有嘴和眼睛的位置/坐标假设一个2维图像上的基本面孔对齐。

有没有办法,我可以实现以校正图像中的面部对准任何算法?

Answer 1:

面(或图像)对准是指(在你的情况或面)相对于另一个(或参考图像/面)对准一个图像。 它也被称为图像配准。 你可以做,使用无论是外形( 基于强度的配准 )或关键点位置( 基于特征的登记 )。 第二类从其中一个图像被认为是其他的移位版本图像运动模型茎。

在你的情况下,具有里程碑意义的地点(3分,眼睛和鼻子?)提供了简单的基于特征的登记一个很好的参考集。 假设你有一组点的位置在这两个2D图像,的x_1x_2可以估算的相似变换 (旋转,平移,比例缩放),即一个平面的2D变换S映射x_1x_2 。 你还可以添加反射来,虽然对于面孔,这将最有可能是不必要的。

估计可以通过形成正规方程和求解线性的最小二乘(LS)的问题进行x_1 = Sx_2使用线性回归系统。 对于5个未知参数(2旋转,平移2,1倍的缩放),就需要3个点(2.5到准确)求解5个方程。 解决上述LS可通过直接线性获得变换(例如通过应用SVD或矩阵伪逆)。 对于足够大数量的基准点的情况下(即自动检测),用于点过滤和不确定性除去RANSAC型方法(尽管这在这里不是你的情况)。

估计后S ,应用第二图像上图像变形,以获得转化的栅格(象素)的整个坐标image 2 。 变换会改变像素位置而不是它们的外观。 不可避免地一些变换的区域的image 2将位于的栅格外面image 1 ,并且可以对那些空位置的值(例如,0,为NaN等)决定。

详情:R. Szeliski,“ 图像对齐和拼接:教程 ”(第4.3节“几何注册”)

在OpenCV中看到: 几何图像变换 ,如cv::getRotationMatrix2D cv::getAffineTransformcv::warpAffine. 不过,请注意,你应该估算和应用的相似性,以维护角度和形状变换(仿射的特殊情况)。



Answer 2:

对于脸上有很多变化的特征点。 因此,这将是不可能仅通过仿射变换做的所有特征点的完美契合。 以完美地对齐所有点的唯一方法是翘曲给出的点的图像。 基本上,你可以做给点图像的三角测量,做好每一个三角形的仿射经获得,所有的点都对准扭曲图像。



Answer 3:

有一个部分对齐 OpenCV中的人脸识别引导人脸图像

  • http://docs.opencv.org/trunk/modules/contrib/doc/facerec/facerec_tutorial.html#aligning-face-images

该脚本对齐在眼里GIVEN影像。 它是用Python编写的,但应该很容易翻译成其他语言。 我知道由索林米伦一个C#实现的:

  • http://code.google.com/p/stereo-face-recognition/


文章来源: face alignment algorithm on images