0%

薄板样条插值

Thin Plate

薄板样条插值可以为一组对应的控制点提供光滑的插值结果,通过一组控制点,可以得到一个“平面”(不一定是二维平面),穿过这组控制点,并使得“平面”的弯曲能量(bending energy)最小。


穿过一组特征点的2D平面

图示的弯曲屏幕可以通过如下公式得到:

f(xi,yi)=a1+a2xi+a3yi+j=1nwiU(|pipj|)

前三个参数a1,a2,a3可以看作是仿射变换, 第四个变换参数是关于使得“平面”弯曲以通过给定控制点。U(r)=r2logr是径向基函数。|pipj|中的pipj都是控制点坐标,(1)总共有N个弯曲参数wi1+D个仿射参数,其中D为控制点的维度。

我们可以化简公式(1)为:f(xi,yi)=Li(Wi|a1,ia2,ia3,i)T, 其中L=[U(|pip1|),U(|pip2],,U(|pipj|),U(|pipn),pi,1n]。我们接着定义P=[1x1y11x2y21x3y31xnyn], K=[U(r11)U(r12)U(r1n)U(r21)U(r22)U(r2n)U(rn1)U(rn2)U(rnn)]。其中(x1,y1)表示控制点的坐标(以二维为例),r1n=|pipn|。我们可以将PK组合得到:L=[KPPT0]。这时,从公式(2)就可以推广到N个控制点的情形:

V=L[W|a1a2a3]T

其中LR(n+3)×(n+3), WRn×1, KRn×n, PRn×3, aiRV=[v1,v2,,vn,0,0,0]T, vi=f(xi,yi)表示在控制点(xi,yi)的“高度”

Deformation

How to calculate the TPS parameters

由于L是一个对称矩阵,[W|a1a2a3]T=VL1,我们可以得到一组控制点关于某个维度的TPS参数(如上图所示,我们有7个控制点,每个控制点f(xi,yi)都有其“高度”,我们便可通过TPS拟合出一个平面,通过这些高度值)。但如果是Deformaition的话(假设我们将img1“扭曲”得到img2),我们已知的是一组控制点的对应关系,即(x1,1,y1,1)(x2,1,y2,1)是对应的,我们便需要两组TPS参数来将图片“扭曲”。

[X2,Y2]=L[WxWya1,xa1,ya2,xa2,ya3,xa3,y]


左图是原图,右图是扭曲之后的图片

左图是表示x方向的形变,右图表示y方向形变(与上图对应)

以嘴角为例,可以看到x方向上的“高度”为0,而y方向上的“高度”却有很大的值。

How to conduct image warping

现假设我们已经求得了一组图片之间的TPS参数cxR(N+3)×1,cyR(N+3)×1分别代表x方向和y方向。我们可以根据下面这个公式求得“扭曲”之后的点的位置(其实就是公式(1))。

[xy]=[U(||(xi,1,yi,1)(xt,m,yt,n)||2)P]T[cx,cy]

其中,(xi,1,yi,1)i[1N]表示上面提到的img1中的控制点,而(xt,m,yt,n)表示任意一组待扭曲的图片初始像素坐标,我们这里记为img3。而||(xi,1,yi,1)(xt,m,yt,n)||2则表示两个点之间的欧式距离。如果img3有M个点,则||||2得到的值其维度是N×M。那么就可以得到扭曲后的坐标:[xy]RM×2。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
% MATLAB
[N1,N2]=size(img3); % 获取img3的高,宽
[x,y]=meshgrid(1:N2,1:N1); % 由于初始图像未扭曲,其做为整数,可以这样获取
x=x(:);y=y(:);M=length(x);
% cx: 为x方向形变参数,其维度与img1中控制点个数有关,这里就是n_good+3,n_good就是控制点个数
fx_aff=cx(n_good+1:n_good+3)'*[ones(1,M); x'; y']; %公式(1)前三个项的实现
d2=dist2(X3b,[x y]); %X3b: (n_good * 2) d2: (n_good * N)
fx_wrp=cx(1:n_good)'*(d2.*log(d2+eps)); %fx_wrp: (1 * N)
fx=fx_aff+fx_wrp;
fy_aff=cy(n_good+1:n_good+3)'*[ones(1,M); x'; y'];
fy_wrp=cy(1:n_good)'*(d2.*log(d2+eps));
fy=fy_aff+fy_wrp;

%%
%% 接下来就是根据扭曲后的坐标【fx, fy】进行插值
%%

Reference

Manual Registration with Thin Plates