我有一张带脸的图像数据集。我还为数据集中的每个面部提供了一组66个2D点,这些点对应于我的脸部标志(鼻子,眼睛,脸部,嘴巴)。
所以基本上我的形象就是我的形象中的2D点。
你知道我可以使用的任何算法,它可以旋转我的形状,使脸部形状是直的吗?假设摇摄角度是30度,我希望它旋转到30度,使其在摇摄角度上定位在0度。我已经说明了我想说的话。
基本上你可以考虑我的图像的上述形状轮廓,用2D表示。我想旋转我的第一个形状点,使它们看起来像第二个形状。形状由一组66 2D points which are basically pixel coordinates
组成。我想做的就是找到每个66 points
的对应关系,以便新的形状在平移角度上旋转一定程度。
答案 0 :(得分:5)
根据你的问题,我可以假设你有旋转参数(例如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页面包含二进制文件和背景材料)。