如何使用 Matlab 对齐人脸图像?

How to align Face Images using Matlab?

我在matlab.Can中寻找人脸图像对齐代码,有人帮忙吗?

谢谢。

这是我使用的方法,可能不是唯一的方法,但这是我能想到的:

  1. Select 一张图片作为参考。
  2. 应用点特征算法。举个例子,左眼三点,右眼三点。所以现在,我们有 reference = [x1,y1; x2,y2; x3,y3;.....;x6,y6];
  3. 接下来,将所有图像一张一张循环,得到与参考图像完全相同位置的点特征。 move = [X1,Y1; X2,Y2; X3,Y3;.....;X6,Y6]
  4. 计算几何变换使用:[tform,inlierPtsDistorted,inlierPtsOriginal] = estimateGeometricTransform(move,reference,'similarity');.

  5. 然后,将两张图片变形如下:outputView = imref2d(size(referenceImage)); Ir = imwarp(probeImage,tform,'OutputView',outputView);

这是显示参考图像和探测图像之间的点匹配的图像:

参考(第一张图片)和输出:

此方法还会裁剪掉背景和头发,因为我的参考图像不包含背景和头发部分。