eval_bspline_surface — 3D freeform op

• Datenarten: bspline_surface × image2d × image2d → image2d

• Aufruf: import fullseye as fs; fs.ledger.eval_bspline_surface(tck, x, y, grid=False) (die Implementierung direkt: import bspline_surf; bspline_surf.eval_bspline_surface(tck, x, y, grid=False); aus dem Register: ops3d.get("eval_bspline_surface"))

Verwendung

Wertet eine angepasste Fläche tck aus (bisplev). Zwei Modi: verstreute Punkte (Standard) oder ein Gitter.

Parameters

tck : list

Das von fit_bspline_surface zurückgegebene [tx, ty, c, kx, ky].

x, y : array_like

grid=False (Standard): gestreute/korrespondierende Punkte gleicher shape. Wertet an jedem (x[i], y[i]) aus und

gibt z mit derselben shape wie die Eingabe zurück (Messung = Flächenhöhe an jeder Stichprobenposition).

grid=True: behandelt x, y als aufsteigende 1-D-Achsen und wertet auf dem Tensorgitter

(len(x), len(y)) aus (für dichte Visualisierung und Neuabtastung).

grid : bool

Auswertungsmodus. Für punktweise Vergleiche wie Flächenresiduen False.

Returns

z : numpy.ndarray

Bei grid=False dieselbe shape wie x, bei grid=True (len(x), len(y)).

Raises

ValueError

Wenn tck kein Flächenmodell ([tx,ty,c,kx,ky]) ist (einschließlich Kurven-tck / Polynom-dict)

oder x, y nicht übereinstimmende shapes haben bzw. leer sind.

Ergänzung:

• Bei grid=True werden x, y intern aufsteigend sortiert, dann wird bisplev aufgerufen und das Ergebnis in der Eingabereihenfolge zurückgegeben. out[i, j] ist also immer der Wert bei (x[i], y[j]); auch absteigend übergebene Achsen machen nichts kaputt.

• grid=False ist eine Python-Schleife, die bisplev pro Punkt aufruft, und wird proportional zur Punktzahl langsamer. Viele Punkte möglichst mit grid=True auswerten.

• Außerhalb des Knotenbereichs (Bereich der für den Fit verwendeten x, y) wird extrapoliert; diese Werte sind nicht garantiert.

• Der Rückgabewert ist float64. Bei grid=False dieselbe shape wie x (ein Skalar ergibt ein 0-dimensionales Array).

• Typisch: fit_bspline_surface → dieses op (Neuabtastung, Visualisierung). Für die Residuenbewertung ruft surface_residual es intern auf.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• bspline_freeform — py -3.11 examples_3d/bspline_freeform.py

Typkompatible Folge-Operatoren (nehmen image2d als Eingabe)

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

Gleiche Kategorie (freeform)

fit_bspline_surface · surface_residual · fit_bspline_curve · eval_bspline_curve


*Provenance: bspline_surf.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.