薄板样条函数Thin Plate Spline

TPS薄板样条函数是一种插值算法,用于图像变形(image warping)等,通过少量控制点就可以驱动图像进行变化

我在自己的课题中要用到的是基于2D插值,图像配准。两张图像中已知有N个匹配点,应用TPS可以将N个点形变到对应位置,同时给出整个图像的插值。当前已知同名点的坐标对应关系,但是利用全局单应性无法得到有效的一一对应,因此利用TPS将两幅图像上的同名点在配准的时候进一步可能的重合

给定基准影像上L个点\LARGE _{\left \{ xi,yi \right \}}\large _{i=1}^{L} 以及他们对应的另一幅影像的同名点作为\large _{vi,i=1,2,...,L}.

即TPS插值目标就是求解函数\large f(x,y)=v,并且使得弯曲能量函数最小。我们把插值函数想象成用力去弯折一块薄钢板,使这块钢板穿过给定的L个点,弯曲这块钢板所需的力或者能量可以表示为:

可以证明TPS的插值函数就是使得这个弯曲能量最小的函数,即在保证最平滑变换的情况下使得所有的控制点都经过这个弯曲面

再定义

其中\large \phi (s)为样条函数,其中s为各个点之间的2-范数,即距离

phi(s)=s*s*log(s)

TPS插值函数有L+3个参数,而已知条件只有L个,因此需要添加三个约束条件,再求解

三个约束项,即可用于求解

将各个点的x分量和y分量分开求解,其中S为L*L矩阵,Q为L*3矩阵,O为3*3的零矩阵,u,v分别为对应同名点的x,y坐标值

求x对应的插值系数时,a矩阵有3个解,相应的求y的插值系数时,也有3个解,这6个自由度代表了控制点的仿射变换

即f(x,y)=仿射变换+delt(d)来实现整一个TPS变换

最后利用这L+3个解,就能求出新的TPS插值坐标点,即用来替换当前已知的非基准影像上的同名点

注意:这里的控制点必须是参考影像的控制点

文献:https://blog.csdn.net/kill201115/article/details/77575074

                  https://elonen.iki.fi/code/tpsdemo/

                  http://blog.sina.com.cn/s/blog_8f27ff8d0101qrii.html

第一篇博客里面的插值函数a系数矩阵少了x,y,有点错误,第二篇较为正统

你可能感兴趣的:(TPS)