2012-10-10 23 views
5

我的臉部形狀與該面部的重建一起,我想對初始形狀的相應圖像進行建模。OpenCV - 適用於薄板樣條曲變的實現

基本上,我想將原始形狀的點移動到臉部重建所指示的位置。我試圖通過使用薄板樣條曲線變形來實現這一點,它的這種實現:http://ipwithopencv.blogspot.ro/2010/01/thin-plate-spline-example.html

但是,它不工作,因爲我想。我想要固定圖像的角落,只是爲了移動定義臉部的相應點。我可以用2張照片來說明這一點。在第一張照片中,我將原始人臉的形狀與重建的形狀進行了比較。 enter image description here

在這裏我有我想要修改的圖片和使用上面提到的鏈接代碼生成的圖片。綠色的點標記原來的臉點,藍色的點標記他們的新位置,我想重新定位他們,並伸展我的臉。

enter image description here

所有我想要的就是綠色點移動到藍色的點,所以它看起來變形。你知道有什麼方法可以做到這一點嗎?

回答

1

固定角落很容易。只需爲四個圖像角添加四個附加對應關係即可。在你的例子來說:

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)); 

當然其中,寬度是圖像寬度和高度圖像高度