6

我有一张脸的形状以及那张脸的重建,我想对初始形状的相应图像进行建模。

基本上,我想将点从原始形状移动到重建面部所指示的位置。我试图通过使用薄板样条翘曲来做到这一点,它的实现:http: //ipwithopencv.blogspot.ro/2010/01/thin-plate-spline-example.html

但是,它并没有像我想要的那样工作。我想固定图像的角,只是移动定义面部的相应点。我可以用两张图片来说明这一点。在第一张图片中,我有原始脸的形状和重建的形状。 在此处输入图像描述

在这里,我有我想要修改的图片和使用上述链接中的代码生成的图片。绿色点标记原始面部点,蓝色点标记它们的新位置以及我想要重新定位它们并伸展我的脸的位置。

在此处输入图像描述

我想要的只是将绿点移动到蓝点,使其看起来变形。您知道您测试过的任何方法吗?

4

1 回答 1

2

固定角落非常容易。只需为四个图像角添加四个额外的对应关系。就你的例子而言:

iP.push_back(cv::Point(0, 0));
iiP.push_back(cv::Point(0, 0));
iP.push_back(cv::Point(0, height-1));
iiP.push_back(cv::Point(0, height-1));
iP.push_back(cv::Point(width-1, 0));
iiP.push_back(cv::Point(width-1, 0));
iP.push_back(cv::Point(width-1, height-1));
iiP.push_back(cv::Point(width-1, height-1));

当然, 宽度是图像宽度,高度是图像高度

于 2012-10-22T21:09:35.857 回答