2012-10-10 13 views
5

Bu yüzün yeniden oluşturulmasıyla birlikte bir yüz şekli var ve ilk şeklin karşılık gelen görüntüsünü modellemek istiyorum.OpenCV - İnce Plaka Spline Çözgü için uygun uygulama

Temel olarak, noktaları orijinal şeklinden yüzün yeniden oluşturulmasıyla gösterilen konuma hareket ettirmek istiyorum. Bunu ince plaka spline çözgü kullanarak, bu uygulamanın: http://ipwithopencv.blogspot.ro/2010/01/thin-plate-spline-example.html kullanarak yapmaya çalıştım. Bununla birlikte, istediğim gibi çalışmıyordur. Resmin köşelerini sabitlemek ve yüzünü tanımlayan ilgili noktaları taşımak istiyorum. Bunu 2 resim ile gösterebilirim. İlk resimde, yeniden oluşturulmuş şekliyle orijinal yüzün şekli var. enter image description here

Burada, değiştirmek istediğim resmi ve sonuçta görüntülenen kodu yukarıda belirtilen bağlantıdan kullanarak aldım. Yeşil noktalar orijinal yüz noktalarını işaretler ve mavi noktalar yeni konumlarını gösterir ve onları yeniden konumlandırmak ve yüzümü germek istediğimde.

enter image description here

Bütün istediğim o deforme görünüyor ki mavi noktalara yeşil noktaları taşımak için adildir. Bunu test ettiğiniz herhangi bir yöntemi biliyor musunuz?

cevap

1

Köşelerin sabitlenmesi oldukça kolaydır. Dört görüntü köşesi için sadece dört ek yazışmaları ekleyin. senin örnekte açısından:

elbette genişliği görüntü genişlik ve yükseklik olduğunu
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)); 

görüntü yüksekliği

olduğunu