Image Warping-Algorytm Efektu Wybrzuszenia
Czy można wskazać algorytmy wypaczania obrazu? Specjalnie dla efektu wybrzuszenia?
18
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:
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}:
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
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:
Eksplozja:
Implozja:
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
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