Image Warping-Algorytm Efektu Wybrzuszenia

Czy można wskazać algorytmy wypaczania obrazu? Specjalnie dla efektu wybrzuszenia?

Author: Tshepang, 2011-02-20

2 answers

Zobacz, czy rozumiem, czego chcesz. Załóżmy, że współrzędne obrazu wynoszą od 0 do 1.

Jeśli zrobisz:

r = Sqrt[(x - .5)^2 + (y - .5)^2]
a = ArcTan[x - .5, y - .5]
rn = r^2.5/.5 

A następnie zmapuj swoje piksele zgodnie z:

  x -> rn*Cos[a] + .5 
  y -> rn*Sin[a] + .5  

Otrzymujesz:

Tutaj wpisz opis obrazka

Możesz dostosować parametry, aby uzyskać większe lub mniejsze wybrzuszenia.

Edit

Zobaczmy, czy zrozumiałem twój komentarz o wypaczaniu. Poniższe obrazy są generowane za pomocą
rn = r^k {k: 1 ... 2}: 

Tutaj wpisz opis obrazka

 21
Author: Dr. belisarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-21 15:58:23

Wersja kodu GLSL:

uniform sampler2D tex;

void main()
{
 vec2 cen = vec2(0.5,0.5) - gl_TexCoord[0].xy;
 vec2 mcen = - // delete minus for implosion effect
      0.07*log(length(cen))*normalize(cen);
 gl_FragColor = texture2D(tex, gl_TexCoord[0].xy+mcen);
}

Oryginalny:

Tutaj wpisz opis obrazka

Eksplozja:

Tutaj wpisz opis obrazka

Implozja:

Tutaj wpisz opis obrazka

Zdrówko!
 13
Author: Agnius Vasiliauskas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-20 12:45:38