morphing obrazka 2D (przejście jednej twarzy w drugą)

0

witam,
muszę zrobić morphing jednej twarzy w druga... sprawa była by prosta gdyby nie to, że nie mogę korzystać z żadnych bibliotek graficznych.
Generalnie chodzi o to żeby znaleźć piksele dla trójkąta po przejściu w inny ;)

Jeśli z ktoś zna jakieś dobre strony na ten temat albo artykuły to bardzo proszę o linki.

0

Zadanie jest bardzo proste. Zalozmy, ze chcesz przeksztalcic trojkat ABC na DEF.
Dla kazdego piksela Z = (X,Y) nalezacego do DEF wykonujesz nastepujace operacje:

  • wyznaczasz prosta przechodzaca przez punkt D oraz punkt Z;
  • wyznaczasz w ten sposob punkt D', w ktorym prosta ta przecina odcinek EF;
  • zapamietujesz proporcje odcinka ED' do EF;
  • zapamietujesz proporcje odcinka DZ do DD';
  • w trojkacie ABC na boku BC wyznaczasz taki punkt A', ze BA' do BC jest rowne proporcji ED' do EF;
  • w trojkacie ABC na odcinku AA' wyznaczasz taki punkt Z', ze AZ' do AA' jest rowne DZ do DD';
  • ustawiasz kolor piksela Z na kolor piksela Z'.

Jesli brzmi skomplikowanie, nie przejmuj sie - po rozpisaniu na rownania matematyczne wiele rzeczy powinno sie poskracac.

0

y na moje oko to sie da zrobic jednym mnozeniem punktu przez macierz, tylkoe nie bardzo wiem jak taka macierz wyznaczyc (macierz przeksztalcenia ort! DEF na ABC).

0

Wlasciwie to wynik zaproponowanych przez mnie przeksztalcen po uproszczeniu mozna przedstawic wlasnie w postaci takowej macierzy (ale nawet nie liczylem, ze fdaras jest zainteresowany takim podejsciem).

0

Dzięki wielkie za odpowiedź,
zrobiłem sposobem bardzo podobnym do tego który opisałeś (albo nawet takim samym;) do tego interpolacja i wszystko pięknie sie zmienia;)

pozdrawiam

0

Można skorzystać ze współrzędnych barycentrycznych:
http://en.wikipedia.org/wiki/Barycentric_coordinates_(mathematics)

1 użytkowników online, w tym zalogowanych: 0, gości: 1