我正在尝试在Photoshop中构建类似Liquify过滤器的东西.我一直在阅读图像失真代码,但我正在努力找出会产生类似效果的内容.我能找到的最接近的参考是Gimp中的iWarp过滤器,但其代码根本没有评论.
我也看过像ImageMagick这样的地方,但他们在这方面没有任何东西
任何指针或算法描述都将非常感激.
如果我让这听起来有点简单,请原谅,我不确定您对 gfx 编程了解多少,甚至不确定您正在使用什么技术(我自己会使用 HLSL 来完成)。
我解决这个问题的方法是生成一个纹理,其中包含 r/g 通道中 x/y 坐标的偏移量。那么像素的输出颜色将是:
纹理 inputImage
纹理失真映射
color(x,y) = inputImage(x + 失真映射(x, y).R, y + 失真映射(x, y).G)
(说实话这不太正确,直接使用颜色作为偏移意味着你只能表示正向量,很简单减去 0.5 这样你就可以表示负向量)
现在剩下的唯一问题是如何生成这个扭曲图,这完全是一个不同的问题(任何图像都会产生某种扭曲,显然,处理适当的液化效果是相当复杂的,我将把它留给某人更有资格)。