1
$\begingroup$

I'm trying to modify a function to create fisheye effect on image (i use a software that permit to modify every single pixel of an image).

At the moment i use this function:

float kk=width*0.5;
float ll=height*0.5;
float dx=(x-kk);
float dy=(y-ll);

float aa=atan2(dy,dx);
float rr=hypot(dy,dx);
float rs=rr*rr/hypot(kk,ll);
int px=kk+rs*cos(aa);
int py=ll+rs*sin(aa);

where:

  • width: image width;
  • height: image height;
  • x and y: original pixel position and px and py are pixel from where i take result.

Using this fonction i substitute pixel at {x,y} with pixel at {px,py}. This work,and create a fisheye effect correctly, but i need to add a variable/parameter to control final effect.

Someone could help me to find how to add this parameter on that function ?

1 Answers 1

1

You could multiply rs by a parameter. This corresponds to changing the scale of how close to the center your original pixel is.