freeform op• Data kinds: bspline_surface × image2d × image2d → image2d
• Call: import fullseye as fs; fs.ledger.eval_bspline_surface(tck, x, y, grid=False) (to call the implementation directly, import bspline_surf; bspline_surf.eval_bspline_surface(tck, x, y, grid=False); from the registry, ops3d.get("eval_bspline_surface"))
Evaluate a fitted surface tck (bisplev). Two modes: scattered points (the default) or a grid.
tck : list
The [tx, ty, c, kx, ky] returned by fit_bspline_surface.
x, y : array_like
grid=False (default): scattered/corresponding points of the same shape. Evaluates at each (x[i], y[i]) and
returns z with the same shape as the input (measurement = surface height at each sample position).
grid=True: treats x, y as ascending 1-D axes and evaluates on the tensor grid
(len(x), len(y)) (for dense visualisation and resampling).
grid : bool
Evaluation mode. Use False for point-wise comparisons such as surface residuals.
z : numpy.ndarray
Same shape as x if grid=False, (len(x), len(y)) if grid=True.
ValueError
If tck is not a surface model ([tx,ty,c,kx,ky]) (including a curve tck / polynomial dict),
or x, y have mismatched shapes or are empty.
Notes:
• With grid=True, x, y are sorted ascending internally before calling bisplev, and the result is returned in the input order. So out[i, j] is always the value at (x[i], y[j]), and passing the axes in descending order does not break it.
• grid=False is a Python loop that calls bisplev per point, so it is slow in proportion to the point count. For evaluating many points, lean on grid=True where possible.
• Outside the knot range (the range of x, y used for the fit) it extrapolates, and those values are not guaranteed.
• The return value is float64. With grid=False it has the same shape as x (passing a scalar gives a 0-dimensional array).
• Typical: fit_bspline_surface → this op (resampling, visualisation). For residual evaluation, surface_residual calls this internally.
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• bspline_freeform — py -3.11 examples_3d/bspline_freeform.py
image2d as input)fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade
freeform)fit_bspline_surface · surface_residual · fit_bspline_curve · eval_bspline_curve
*Provenance: bspline_surf.py — 3D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.