2011-05-18 67 views
2

我想实现一个滤波器,通过移动一些标记边缘和切线方向的控制点来重新采样图像。目标是当你使用“Free Transform”并选择Warpmode“Custom”时,能够自由地转换Photoshop中看到的图像。该图像适用于某种可以操纵的Spline-Patch(如果这是一个有效的名称)。图像扭曲滤波器 - 算法和光栅化

我明白样条曲线(路径)是如何工作的,但是如何将它们连接起来形成一个补丁? 你如何取样这样的补丁来渲染变形的图像?对于目标中的每个像素,我需要知道源图像中的哪个像素对应。我甚至不知道从哪里开始搜索...

任何有用的信息(关键字,链接,论文,参考实现)非常感谢!

回答

3

本文将让你一个很好的洞察翘曲:http://www.gson.org/thesis/warping-thesis.pdf

然而,这将包括滤除高频,这将使实现变得更复杂了,但会给一个更好的结果。

一个简单的方法来完成你想要做的事情就是循环遍历最终图像中的每个像素,将坐标插入到样条曲线中并检索原始图像中的像素。该像素可能具有0.4/1.2的坐标,因此您可以在0/1,1/1,0/2和1/2之间进行双线性插值。

至于样条:在线案例有很多资源和解决方案。对于2D来说,找到有用的资源有点棘手。 的1D情况下一个简单的例子:http://www-users.cselabs.umn.edu/classes/Spring-2009/csci2031/quad_spline.pdf

下面是2D情况有很大指导:http://en.wikipedia.org/wiki/Bicubic_interpolation

基于此,你可以得到一个自己的方案,样条曲线的2D情况。定义一个双变量(带有x和y)多项式并设置您的约束来求解多项式的系数。 请记住,样条补丁的边界必须一致(包括数值和微分)以避免丑陋的跳跃。

祝你好运!