我有一个包含人脸的图像数据集。对于数据集中的每个人脸,我还拥有一组66个2D点,这些点对应于我的面部标志(鼻子、眼睛、脸型、嘴巴)。
所以基本上我有我的脸的形状,根据我的图像中的2D点。
你知道我可以使用什么算法来旋转我的形状,这样脸型就变直了吗?假设摇摄角度是30度,我想把它旋转到30度,这样它就定位在平移角度上的0度。我已经说明了我想说的话。


基本上你可以为我的图像考虑上面所示的形状轮廓,它们是用2D表示的。我想旋转我的第一个形状点,这样它们看起来就像第二个形状。形状是由一组66 2D points which are basically pixel coordinates组成的。我所要做的就是找到每一个66 points的对应关系,这样新的形状就会在平移角度上旋转一定的角度。
发布于 2012-08-29 23:41:49
从你的问题中,我可以假设你有旋转参数(例如x,y中的度数)或点对应(因为你有一个匹配点的数据库)。因此,您需要应用或估计(并应用) 2D相似性转换来进行图像对齐/配准。另请参阅对此问题的回答:face alignment algorithm on images
从旋转角度和到新的点位置:您可以定义2D旋转矩阵R并使用它变换点坐标。
从形状A和形状B之间的点对应到旋转对齐():使用3个或更多匹配点估计2D相似性转换(图像对齐)。
从旋转或点对应到扭曲图像:从相似性变换中,使用整个图像网格的底层坐标变换映射图像值(考虑插值或非值)。

(图片由Denis Simakov,提供)
其中大部分已经在OpenCV和MATLAB中实现。另请参阅围绕活动Shape和Active Appearance Models的背景和相关方法(Tim Cootes页面包括二进制文件和背景材料)。
https://stackoverflow.com/questions/12176377
复制相似问题