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