def b_spline_centerline(x_centerline,y_centerline,z_centerline): """Give a better fitting of the centerline than the method 'spline_centerline' using b-splines""" points = [[x_centerline[n],y_centerline[n],z_centerline[n]] for n in range(len(x_centerline))] nurbs = NURBS(3,1000,points) # for the third argument (number of points), give at least len(z_centerline) # (len(z_centerline)+500 or 1000 is ok) P = nurbs.getCourbe3D() x_centerline_fit=P[0] y_centerline_fit=P[1] return x_centerline_fit, y_centerline_fit
def b_spline_centerline(x_centerline,y_centerline,z_centerline): print '\nFitting centerline using B-spline approximation...' points = [[x_centerline[n],y_centerline[n],z_centerline[n]] for n in range(len(x_centerline))] nurbs = NURBS(3,3000,points) # BE very careful with the spline order that you choose : if order is too high ( > 4 or 5) you need to set a higher number of Control Points (cf sct_nurbs ). For the third argument (number of points), give at least len(z_centerline)+500 or higher P = nurbs.getCourbe3D() x_centerline_fit=P[0] y_centerline_fit=P[1] Q = nurbs.getCourbe3D_deriv() x_centerline_deriv=Q[0] y_centerline_deriv=Q[1] z_centerline_deriv=Q[2] return x_centerline_fit, y_centerline_fit,x_centerline_deriv,y_centerline_deriv,z_centerline_deriv
def b_spline_nurbs(x,y,z,degree = 3,point_number = 3000): from sct_nurbs import NURBS print '\nFitting centerline using B-spline approximation...' data = [[x[n],y[n],z[n]] for n in range(len(x))] nurbs = NURBS(degree,point_number,data) # BE very careful with the spline order that you choose : if order is too high ( > 4 or 5) you need to set a higher number of Control Points (cf sct_nurbs ). For the third argument (number of points), give at least len(z_centerline)+500 or higher P = nurbs.getCourbe3D() x_fit=P[0] y_fit=P[1] Q = nurbs.getCourbe3D_deriv() x_deriv=Q[0] y_deriv=Q[1] z_deriv=Q[2] return x_fit, y_fit,x_deriv,y_deriv,z_deriv