我正在尝试进行一些人脸识别和幻觉实验,为了获得最佳效果,我首先需要确保所有面部图像都对齐。我正在使用数千张图像进行试验。
过去几天我一直在网上搜索,并发现许多不同的程序声称这样做,但由于Matlabs的向后兼容性差,许多程序不再有效。我已经尝试了几个不运行的程序,因为它们调用的Matlab函数已被删除。
我发现最接近的是使用SIFT算法,此处的代码
http://people.csail.mit.edu/celiu/ECCV2008/
这有助于对齐图像,但不幸的是它也会对图像进行缩减采样,因此结果会非常模糊,这会对我运行的任何实验产生负面影响。
有没有人有任何Matlab代码示例,或者能够指出我正确的代码方向,实际上对齐数据库中的面。
非常感谢任何帮助。
答案 0 :(得分:3)
您可以在Face Detection, Pose Estimation and Landmark Localization in the Wild找到最近的这项工作。它有一个有效的Matlab实现,这是一个很好的方法 一旦确定了所有面部上的关键点,就可以将它们变形为单个参考,并从那里开始工作。
答案 1 :(得分:2)
使用PCA和特征向量的最简单方法。找到X和Y最具代表性的数据。所以你会得到面部的方向。
您可以在本文档中找到解释:PCA Aligment
答案 2 :(得分:2)
您是否需要先检测面部,或者它们是否已被裁剪?如果需要检测面,可以在计算机视觉系统工具箱中使用vision.CascadeObjectDetector
对象。
要对齐面,您可以尝试图像处理工具箱中的imregister
功能。或者,您可以使用基于功能的方法。计算机视觉系统工具箱包括许多兴趣点检测器,特征描述符和matchFeatures
函数,以匹配一对图像之间的描述符。然后,您可以使用estimateGeometricTransform
函数来估计两个图像之间的仿射或甚至投影变换。有关详细信息,请参阅此example。