1、图像如下。
2、我想凸鹣沮北把像素[i,j]变到[int(i**2-j**2),int(2*i*j)]的位置上,并把图形缩放到和原图大小一样的形状。结果如下。
3、为此,我需要确定变换之后的图像的[i,j]位置上的像素,在原图中的位置。这可以通过求解方程组,来获取逆变换来实现。
4、选择第一组解作为逆变换,需要套上绝对值符号。因为原图中的像素的位置坐标都是不小于0的。
5、但是,如果逆变换得到的像素的位置坐标不是整数,怎么办?这就需要用到一种双线性插撕良滤儆值的算法: X=int(x) Y=int(y) x0=x-X y0=y-Y i熠硒勘唏f 0<X<a-1 and 0<Y<b-1: kk=(1-x0)*(1-y0)*img[X,Y]+x0*y0*img[X+1,Y+1] kkk=(1-x0)*y0*img[X,Y+1]+x0*(1-y0)*img[X+1,Y] img0[i,j]=kk+kkk
6、运行结果,就是下图。