面部识别的姿势校正

时间:2012-08-29 10:57:27

标签: opencv computer-vision face-recognition

我有一张带脸的图像数据集。我还为数据集中的每个面部提供了一组66个2D点,​​这些点对应于我的脸部标志(鼻子,眼睛,脸部,嘴巴)。

所以基本上我的形象就是我的形象中的2D点。

你知道我可以使用的任何算法,它可以旋转我的形状,使脸部形状是直的吗?假设摇摄角度是30度,我希望它旋转到30度,使其在摇摄角度上定位在0度。我已经说明了我想说的话。

enter image description here

enter image description here

基本上你可以考虑我的图像的上述形状轮廓,用2D表示。我想旋转我的第一个形状点,使它们看起来像第二个形状。形状由一组66 2D points which are basically pixel coordinates组成。我想做的就是找到每个66 points的对应关系,以便新的形状在平移角度上旋转一定程度。

1 个答案:

答案 0 :(得分:5)

根据你的问题,我可以假设你有旋转参数(例如x,y度)或点对应(因为你有一个匹配点的数据库)。因此,您需要应用或估计(并应用)2D相似变换以进行图像对齐/配准。另请参阅有关此问题的回复:face alignment algorithm on images

从旋转角度到新点位置:您可以定义2D旋转矩阵R并使用它转换点坐标。

从形状A和形状B之间的点对应关系到旋转:使用3个或更多个匹配点估计2D相似性变换(图像对齐)。

从旋转或点对应到变形图像:从相似变换中,使用整个图像网格的基础坐标变换来映射图像值(计算插值或非值)。

point-constrained image warping (图片由Denis Simakov提供,AAM Slides

其中大部分已在OpenCV和MATLAB中实现。另请参阅Active Shape和Active Appearance Models的背景和相关方法(Tim Cootes页面包含二进制文件和背景材料)。