Skip to content

daeyun/TPS-Deformation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Thin Plate Spline Interpolation and Deformation

Compute thin plate spline interpolation and deformation on a 3D surface.

Interpolation

  • Control points: points on the surface to perform the interpolation (blue points on Figure 1 and 2).
  • Displacements: displacements of the interpolated control points (red edges on Figure 1 and 2).
  • Lambda: regularization parameter. See page 4 of http://cseweb.ucsd.edu/~sjb/pami_tps.pdf

Usage: [mapping_coeffs, poly_coeffs] = find_tps_coefficients(control_points, displacemets, lambda)

Figure 1: Input data

Deformation

This basically is a 3D version of the function y(x) on this page: https://en.wikipedia.org/wiki/Polyharmonic_spline

  • Mapping coefficients: weights of the basis function. Same as vector w.
  • Polynomial coefficients: weights v of the polynomial. Example: in 3D, v1 + v2 * x + v3 * y + v4 * z.
  • Control points: same as above.

Usage: [fX, fY, fZ] = deform_surface_tps(X, Y, Z, control_points, mapping_coeffs, poly_coeffs)

Figure 2: Result

Output of demos/tps_interp_demo.m using 20 randomly chosen control points and displacements.

Exact interpolation (lambda = 0)

Regularized interpolation (lambda = 0.2)

Documentation

find_tps_coefficients.m

% FIND_TPS_COEFFICIENTS - Given a set of control points and their
% displacements, compute the coefficients of the TPS interpolant f(S)
% deforming surface S.
%
% Usage:    [mapping_coeffs, poly_coeffs] = ...
%               find_tps_coefficients(control_points, displacemets);
%
% Arguments:
%           control_points - p by d vector of control points.
%           displacemets   - p by d vector of displacements of
%                            corresponding control points in the mapping
%                            function f(S).
%
% Returns:
%           mapping_coeffs - p by d vector of TPS mapping coefficients.
%           poly_coeffs    - d+1 by d vector of TPS polynomial weights.
%
% References:
%           1. http://en.wikipedia.org/wiki/Polyharmonic_spline
%           2. http://en.wikipedia.org/wiki/Thin_plate_spline

deform_surface_tps.m

% DEFORM_SURFACE_TPS - Given a set of control points and mapping
% coefficients, compute a deformed surface f(S) using a thin plate spline
% radial basis function phi(r) as shown in [1].
%
% Usage:    [fX, fY, fZ] = deform_surface_tps(X, Y, Z, control_points, ...
%               mapping_coeffs, poly_coeffs)
%
% Arguments:
%           X, Y, Z        - h by w matrices of X, Y, Z components of the
%                            surface.
%           control_points - p by 3 vector of control points. Same as
%                            vector c in [1].
%           mapping_coeffs - p by 3 vector of weights of the basis
%                            functions. Same as vector w in [1].
%           poly_coeffs    - 4 by 3 vector of weights of the polynomial.
%                            Same as vector v in [1].
%
% Returns:
%           fX, fY, fZ     - h by w vectors of X, Y, Z compoments of the
%                            deformed surface.
%
% References:
%           1. http://en.wikipedia.org/wiki/Polyharmonic_spline

About

Thin plate spline interpolation and deformation.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages