surface_residual — 3D freeform op

• Datenarten: image2d × image2d × image2d × bspline_surface → measurement

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

• Rückgabewert über das Register: fullseye.ledger.surface_residual(...) liefert nur den Wert des deklarierten Out-Typs measurement (die zugrunde liegende Funktion gibt zusätzlich Hilfsinformationen zurück). Wird das Verworfene gebraucht, nutze fullseye.ledger.surface_residual.raw(...) oder rufe bspline_surf.surface_residual direkt auf.

• Rückgabe der Funktion: {"rms","max","pv"} → pv float

Verwendung

Liefert die Residuenstatistik zwischen verstreuten Daten und einer Fläche tck (der Formfehler = die Abweichung von der Anpassung).

Wertet an jeder Stichprobenposition die Flächenhöhe aus und misst RMS / maximalen Absolutwert / PV (peak-to-valley = Maximum - Minimum) der Differenz zum beobachteten z. In der Prüfung ist dies die quantitative Kennzahl der Abweichung von einer Freiformfläche (Dellen, Welligkeit, Materialfehlstellen).

Returns

dict

{"rms": float, "max": float, "pv": float}. max ist das größte absolute Residuum,

pv ist Maximum - Minimum der vorzeichenbehafteten Residuen (erfasst auch einseitige Erhebungen/Vertiefungen).

Ergänzung:

• Das Vorzeichen des Residuums ist resid = z - zhat (Beobachtung − Fläche). Positiv = höher als die Fläche (Aufwölbung), negativ = niedriger (Materialfehlstelle). max ist ein Absolutwert, die Richtung ist also nicht erkennbar; wird sie gebraucht, zhat mit eval_bspline_surface holen und die Differenz selbst bilden.

• x, y, z akzeptieren beliebige shapes und laufen intern durch eval_bspline_surface(tck, x, y, grid=False) (dort erfolgt auch die Typprüfung von tck; ein Kurven-tck oder Polynom-dict ergibt ValueError). Unterscheiden sich z und x in der Elementzahl, gibt numpy einen Formfehler (eine eigene Prüfung gibt es nicht, und ein z mit 1 Element wird stillschweigend gebroadcastet).

• Die Einheit ist dieselbe wie bei z. rms ist der quadratische Mittelwert über alle Punkte, lokale Dellen werden also durch die Mittelung verdünnt. Lokale Defekte mit max oder pv betrachten.

• Typisch: fit_bspline_surface → dieses op. An den für den Fit verwendeten Punkten ausgewertet, nähert sich das Residuum 0, je kleiner smooth ist (dient auch als Indikator für Überanpassung).

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 measurement als Eingabe)

vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle

Gleiche Kategorie (freeform)

fit_bspline_surface · eval_bspline_surface · 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.