Thin Plate Spline TPS薄板样条变换基础理解

什么是图像扭曲问题?

给定控制点(x_i, y_i)​​​​​​​和相应位移点(\Delta{x_i}, \Delta{y_i})稀疏对应集,我们需要找到一个映射,且两点之间的(x_i + \Delta{x_i}, y_i + \Delta{y_i})尽可能平滑。

一维空间举例,绿色为对应集,需找到蓝色曲线映射,满足形变后控制点重合且之间连线平滑
一维空间举例,绿色为对应集,需找到蓝色曲线映射,满足形变后控制点重合且之间连线平滑

径向基函数插值

起初,我们只有一组稀疏的控制点对应信息。最简单的方法来推断其他点是一个线性插值,插值点将沿着连接最近的控制点的分段移动,如下所示。

线性插值,插值点将沿着连接最近的控制点的分段移动

然而,我们想要的是一个通过紧密控制点得到的平滑的插值函数,这就是径向基函数作用。

以每个控制点为中心放一个核函数R,那么中间的点由f(z)=\sum\alpha_iR(z, x_i)得到。其中\alpha_ix_i点周围径向基核函数r(x,x_i)的权重。待变化的点x离控制点x_i越远,受内核影响的程度就越小。一些核由于其中心周围邻近点的密度和大小较大,对整体光滑轮廓的影响比其他核大。

经向基函数控制下
经向基函数控制下

 假设有三个控制点,权重 \alpha_0 ,\alpha_1 , \alpha_2将是下列线性系统的解

\left[ \begin{array}{c} x'_0 \\ x'_1 \\ x'_2 s\end{array} \right] = \begin{bmatrix} R(x_0, x_0) & R(x_0, x_1) & R(x_0, x_2)\\ R(x_1, x_0) & R(x_1, x_1) & R(x_0, x_2)\\ R(x_2, x_0) & R(x_2, x_1) & R(x_0, x_2) \end{bmatrix} \times \left[ \begin{array}{c} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{array} \right]

\vec{\alpha} = R^{-1}\times \vec{x}

径向基函数可以是高斯核e^{\frac{-r^2}{2\sigma}}r^2 log(r),这是一维情况下的TPS薄板样条函数。

Thin Plate Spline

现在,介绍二维warp下的Thin Plate Spline warping。

给定红色叉点和预期移动到的蓝色圆点,我们想解得两个光滑函数,采样后使得其他离散点可沿x和y方向位移(图中箭头)。

两个光滑函数如下所示

f_{x'}(x,y) = a_1 + a_xx +a_yy + \sum_{i=1}^N{w_i U(||(x_i, y_i) - (x,y)||)} \\ f_{y'}(x,y) = a_1 + a_xx +a_yy + \sum_{i=1}^N{w_i U(||(x_i, y_i) - (x,y)||)}

其中前三个系数(a_1, a_x, a_y)表示能通过所有控制点(x_i, y_i)最逼近x'(或y')的线性平面,w_i表示每个控制点的控制权重,U(||((x_i, y_i) - (x,y))||)表示核函数,例如薄板样条核U(r) = r^2log(r),接受的参数为待移动点与控制点的距离||((x_i, y_i) - (x,y))||,下图为薄板样条核可视化,待变换点离内核中心(控制点)越近,它的高度或返回值就越高。 

薄板样条核可视化

所有的核函数乘以它们相应的权值后的样子

 How to solve

每个薄板样条函数的系数(a,a_x,a_y,w_i)由以下线性系统解出

\begin{bmatrix}K & P \\ P^T & O \\ \end{bmatrix} \times \begin{bmatrix}w\\a\end{bmatrix} =\begin{bmatrix}v\\o\end{bmatrix}

其中K_{ij} = U(distance((x_i,y_i), (x_j, y_j)),P(1,x_i,y_i)组成

v是所有控制点组成的向量。第一行[K \ \ P]\times[v, o]^T表示由所有(x_i,y_i)替代得到的函数f_{x'}f_{y'}

f_{x'}(x,y) = a_1 + a_xx +a_yy + \sum_{i=1}^N{w_i U(||(x_i, y_i) - (x,y)||)} \\ f_{y'}(x,y) = a_1 + a_xx +a_yy + \sum_{i=1}^N{w_i U(||(x_i, y_i) - (x,y)||)}

第二行[P^T\ \ O]表示系统的额外约束,解释见原paper

\sum_{i=1}^N{w_i} = 0 \ \ \ \ \ \ (1) \\ \sum_{i=1}^N{w_ix_i} = \sum_{i=1}^N{w_iy_i} = 0 \ \ \ \ \ \ (2)

假设有三个控制点,则线性系统如下

\begin{bmatrix} K_{00} & K_{10} & K_{20}&1&x_0&y_0 \\ K_{01} & K_{11} & K_{21}&1&x_1&y_1 \\ K_{02} & K_{12} & K_{22}&1&x_2&y_2 \\ 1 & 1 & 1&0&0&0\\ x_0&x_1&x_2&0&0&0\\ y_0&y_1&y_2&0&0&0\\ \end{bmatrix} \times \begin{bmatrix} w_0\\w_1\\w_2\\a_0\\a_x\\a_y \end{bmatrix} =\begin{bmatrix}x'_0\\x'_1\\x'_2\\0\\0\\0\end{bmatrix}

\begin{bmatrix} K_{00} & K_{10} & K_{20}&1&x_0&y_0 \\ K_{01} & K_{11} & K_{21}&1&x_1&y_1 \\ K_{02} & K_{12} & K_{22}&1&x_2&y_2 \\ 1 & 1 & 1&0&0&0\\ x_0&x_1&x_2&0&0&0\\ y_0&y_1&y_2&0&0&0\\ \end{bmatrix} \times \begin{bmatrix} w_0\\w_1\\w_2\\a_0\\a_x\\a_y \end{bmatrix} =\begin{bmatrix}y'_0\\y'_1\\y'_2\\0\\0\\0\end{bmatrix}

总结如下:

由LW=Y解得W矩阵: 

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值