人脸识别的姿势校正

Posted

技术标签:

【中文标题】人脸识别的姿势校正【英文标题】:Pose correction for face recognition 【发布时间】:2012-08-23 23:18:51 【问题描述】:

我有一个带有人脸的图像数据集。对于数据集中的每张脸,我还有一组 66 个 2D 点,这些点对应于我的脸标志(鼻子、眼睛、脸的形状、嘴巴)。

所以基本上我的脸的形状是我图像中的 2D 点。

你知道我可以使用什么算法并且可以旋转我的形状以使脸型变直吗?假设平移角度为 30 度,我希望它旋转 30 度,使其定位在平移角度的 0 度处。我已经说明了我想说的话。

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

【问题讨论】:

你知道每个二维点的深度吗?你的旋转看起来像这样的唯一原因是鼻子和嘴巴实际上在下巴线的前面。 您想旋转形状点坐标(即 66 个 2D 地标),这样您将拥有正面形状(轮廓)还是将图像(对应于那些 2D 点)扭曲为正面看姿势?换种说法:您是要转换点坐标(“形状”)还是扭曲图像强度值(“纹理”)。 【参考方案1】:

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

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

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

从旋转或点对应到扭曲图像:从相似性变换,使用整个图像网格的基础坐标变换映射图像值(考虑插值或非值)。

(图片由 Denis Simakov 提供,AAM Slides)

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

【讨论】:

以上是关于人脸识别的姿势校正的主要内容,如果未能解决你的问题,请参考以下文章

有没有支持多人人脸识别的算法,要识别的人脸比较多

人脸识别的主要用途是啥?

描述人脸识别的过程

人脸识别原理及处理流程

人脸识别开发套件中的在线版本与离线版人脸识别的区别及详解

人脸识别的一些资源