在哪里可以找到图像失真的算法?有这么多的信息,模糊和其他经典算法,但很少有更复杂的。特别是,我对涡流效应图像失真算法很感兴趣。
发布于 2008-10-22 12:41:10
我找不到任何参考,但我可以给出一个基本的想法,扭曲的影响如何工作。
畸变的关键是将畸变图像中的两个坐标(x,y)转换为原始图像中的坐标(u,v)。这指定了失真的反函数,因为它将扭曲的图像带回原始图像。
为了生成畸变图像,一个循环在x和y上,使用反失真函数计算(x,y)的点(u,v),并将(x,y)处的颜色分量设置为与原始图像中(u,v)处的颜色分量相同。通常使用插值(例如内插 )来确定(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)发布于 2008-10-22 16:28:40
在曾傑瑞的Java图像滤波器上有很多图像过滤器/效果的Java实现。也许你可以从中吸取灵感。
发布于 2008-10-22 12:44:56
漩涡和其他类似的元素是像素位置上的矩阵变换。您将生成一个新图像,并从图像上的一个位置获取颜色,该位置是通过将当前位置乘以矩阵得到的。
矩阵取决于当前位置。
下面是一个很好的CodeProject,展示了如何做到这一点
http://www.codeproject.com/KB/GDI-plus/displacementfilters.aspx
https://stackoverflow.com/questions/225548
复制相似问题