2

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

所以基本上我有我的脸的形状,就我的图像中的 2D 点而言。

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

在此处输入图像描述

在此处输入图像描述

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

4

1 回答 1

5

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

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

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

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

点约束图像变形 (图片由AAM 幻灯片的 Denis Simakov 提供)

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

于 2012-08-29T15:41:48.873 回答