在哪里可以找到图像失真的算法?关于模糊和其他经典算法的信息太多,但是对于更复杂的算法却很少。我尤其对涡旋效应图像失真算法感兴趣。
我找不到任何参考,但是我可以给出失真效果如何工作的基本概念。
失真的关键是一个函数,该函数在失真的图像中获取两个坐标(x,y),并将其转换为原始图像中的坐标(u,v)。这指定了失真的反函数,因为它将扭曲的图像带回到原始图像
要生成失真的图像,请在x和y上循环,使用逆失真函数从(x,y)计算点(u,v),并将(x,y)的颜色分量设置为与这些相同位于原始图像的(u,v)。通常使用内插法(例如http://en.wikipedia.org/wiki/Bilinear_interpolation)来确定(u,v)处的颜色,因为(u,v)通常不完全位于像素中心,但是而不是像素之间的某个小数点。
旋流实质上是一种旋转,其中旋转角度取决于距图像中心的距离。一个例子是:
a = amount of rotation b = size of effect angle = a*exp(-(x*x+y*y)/(b*b)) u = cos(angle)*x + sin(angle)*y v = -sin(angle)*x + cos(angle)*y
在这里,为简单起见,我假设漩涡的中心在(0,0)。通过从变形函数之前的x和y中减去旋涡位置坐标,并将其添加到u和v之后,可以将旋涡放置在任何位置。
周围有多种旋涡效果:某些旋涡效果(如上)仅在局部区域旋涡,并且旋涡的数量朝向图像边缘减少。其他的则增加了朝向图像边缘的漩涡。这种事情可以通过用angle =线来完成,例如
angle = a*(x*x+y*y)