Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Image Warping - Bulge Effect Algorithm

Can any point to image warping algorithms? Specifically for bulge effect?

like image 518
random Avatar asked Feb 20 '11 06:02

random


2 Answers

See if I understood what you want. Suppose your image coordinates go from 0 to 1.

If you do:

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

And then remap your pixels according to:

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

You get:

enter image description here

You may adjust the parameters to get bigger or smaller bulges.

Edit

Let's see if I understood your comment about warping. The following images are generated using

rn = r^k {k: 1 ... 2}: 

enter image description here

like image 117
Dr. belisarius Avatar answered Sep 25 '22 10:09

Dr. belisarius


GLSL code version:

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

original:

enter image description here

explosion:

enter image description here

implosion:

enter image description here

cheers!

like image 35
Agnius Vasiliauskas Avatar answered Sep 21 '22 10:09

Agnius Vasiliauskas