csapsPar
Below is a demonstration of the features of the csapsPar function
Contents
clear; close all; clc;
Syntax
p=csapsPar(varargin);
Description
This function aims to compute the cubic smoothing spline parameter p for the MATLAB csaps function. The input features the curve vertices V and the parameter pw. The smoothing parameter p is derived using:
p=1./(1+(((h.^3)/6)*f));
Where h is the point spacing (derived from V) and f is defined as:
f=(1/pw)-1;
See also MATLAB's csaps documentation:
The interesting range for p is close to 1./(1+((h.^3)/6)). The following form is used introducing the factor f: p=1./(1+(((h.^3)/6)*f)). By using f=10 we obtain p=1./(1+((h.^3)/60)) which should result in a close following of the data. If instead f=0.1 is used, leading to p=1./(1+((h.^3)/0.6)), a smoother result is obtained.
Examples
Create saw-tooth example curve
V=[0 0 0; 1 2 0; 2 0 0; 3 -2 0; 4 0 0]; n1=2; n2=2*n1; [V1]=subCurve(V,n1); [V2]=subCurve(V,n2);
Computing p parameters for the cubic smoothing spline based resampling
pw=0.5;
p1=csapsPar(V1,pw)
p2=csapsPar(V2,pw)
% Resample curves using smoothing parameters
n=100;
V1f=evenlySampleCurve(V1,n,p1,0);
V2f=evenlySampleCurve(V2,n,p2,0);
p1 = 0.9354 p2 = 0.9853
Visualizing curves
cFigure; subplot(1,2,1); hold on; title(['Input curve with ',num2str(size(V1,1)),' points']) plotV(V1,'k.-','LineWidth',1,'MarkerSize',25); plotV(V1f,'b-','LineWidth',3); axis tight; axis equal; grid on; box on; subplot(1,2,2); hold on; title(['Input curve with ',num2str(size(V2,1)),' points']) plotV(V2,'k.-','LineWidth',1,'MarkerSize',25); plotV(V2f,'r-','LineWidth',3); axis tight; axis equal; grid on; box on; drawnow;
GIBBON www.gibboncode.org
Kevin Mattheus Moerman, [email protected]
GIBBON footer text
License: https://github.com/gibbonCode/GIBBON/blob/master/LICENSE
GIBBON: The Geometry and Image-based Bioengineering add-On. A toolbox for image segmentation, image-based modeling, meshing, and finite element analysis.
Copyright (C) 2006-2022 Kevin Mattheus Moerman and the GIBBON contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.