measure op• Datenarten: depth → table
• Aufruf: import fullseye as fs; fs.ledger.surface_params(z, dx=1.0, dy=None, assume_filtered=False) (die Implementierung direkt: import roughness; roughness.surface_params(z, dx=1.0, dy=None, assume_filtered=False); aus dem Register: opsroughness.get("surface_params"))
Flächenhafte Rauheitskenngrößen Sa/Sq/Sp/Sv/Sz/Ssk/Sku/Sdq/Sdr (ISO 25178-2).
Argumente
z bandbearbeitetes Höhenfeld (Form und Welligkeit entfernt).
dx, dy Abtastabstände. dy=None bedeutet quadratische Pixel.
assume_filtered True überspringt die Bandprüfung. Standard ist False = prüfen.
Rückgabe ist ein dict. Neben den 9 Parametern enthält es, um die Entscheidungsgrundlage als Zahlen festzuhalten, band_long_wave_fraction / band_form_ptv_over_sq / n_points / assume_filtered.
★ Warum standardmäßig abgelehnt wird (gemessen)
Eine synthetische Fläche 512x512, dx=1 µm (selbstaffine PSD + Bearbeitungsspuren λ=32 µm + tiefe Kratzer
x4 + Welligkeit λ=256 µm + Neigung 0.050/-0.025), mit verschiedenen Abläufen ausgewertet.
Die Ground Truth ist "Kratzer, Bearbeitungsspuren und PSD, bei λc=80 µm geschnitten":
Ablauf Sq Sq-Fehler Sa Ssk Sku
rohes Höhenfeld unverändert 8.3057 +1931.4 % 6.9089 +0.05 2.26
nur LS-Ebene entfernt 0.7520 +83.9 % 0.5273 -2.04 10.21
Ebene + λc=80µm-Hochpass 0.4104 +0.4 % 0.2501 -2.88 18.76
Ground Truth 0.4089 — 0.2502 -2.80 18.52
Nennt man den rohen rms Sq, ergibt sich das 20.3-fache. Ssk wird von -2.80 zu +0.05, wobei sogar das Vorzeichen verschwindet, und Sku wird von 18.5 zu 2.26 (unter dem Gaußschen Wert 3). Dominieren Welligkeit und
Neigung die Verteilung, verschwindet die Information der tiefen Kratzer spurlos.
Entfernt man nur die Ebene, liegt es immer noch um das 1.8-fache daneben. Einen Ausweg "welcher Parameter
ist sicher" gibt es nicht — Zahlen, die ohne Angabe des Bands entstehen, lassen sich durch die Wahl des
Parameters nicht retten.
★ Inhalt der Prüfung und Begründung der Schwellen (gemessen)
2 Belege. Langwellenanteil = Anteil der Varianz, den Wellen länger als 1/4 der Messstrecke tragen.
Form-PTV/Sq = Höhendifferenz der LS-Ebene selbst, geteilt durch den rms.
Fläche Langwelle Form-PTV/Sq Urteil
rohes Höhenfeld 0.9714 4.62 ablehnen
nur LS-Ebene entfernt 0.4415 0.00 ablehnen
nur Welligkeit belassen (andere Fläche) 0.5539 0.15 ablehnen
Ebene + λc=80µm-Hochpass 0.0086 0.00 zulassen
Ground Truth (λc=80µm) 0.0042 0.00 zulassen
reiner Sinus λ=32 (256 im Quadrat) 0.0038 0.03 zulassen
Bleibt die Reserve auf der Zulassungsseite erhalten, wie weit man λc auch anhebt? — wichtiger ist zu bestätigen, dass legitime Nutzung nicht fälschlich abgelehnt wird, daher wurde λc variiert und gemessen
(512², Fläche mit Bearbeitungsspuren + 1 Kratzer):
λc 16 32 64 80 128 170 256(=L/2)
Langwelle 0.0005 0.0011 0.0044 0.0085 0.0306 0.0563 0.1056
Selbst wenn λc bis auf die halbe Messstrecke angehoben wird, steigt er nur bis 0.106.
Die kleinste abzulehnende Fläche liegt bei 0.4415. Die Schwelle 0.25 liegt dazwischen (2.4-fach über der Zulassungsseite,
1.8-fach unter der Ablehnungsseite). Form-PTV/Sq wiederum ergibt auf bandbearbeiteten Flächen
gemessen nur 0.001 bis 0.03, auf Flächen mit verbliebener Neigung 3.46 / 4.62.
Die Schwelle 1.0 liegt dazwischen (33-fach über der Zulassungsseite, 3.5-fach unter der Ablehnungsseite).
Diese 2 werden mit or verknüpft — eine Fläche ohne Neigung, aber mit verbliebener Welligkeit
("nur Welligkeit belassen" in der Tabelle oben) wird von Form-PTV nicht erfasst; nur der Langwellenanteil
schlägt an. Einer allein lässt eine Lücke.
Damit die Entscheidung dennoch nicht ganz der Maschine überlassen wird, lässt sich die Prüfung mit assume_filtered=True
explizit abschalten (sie schaltet sich nie stillschweigend ab). Auch die Belegwerte selbst werden als
band_long_wave_fraction / band_form_ptv_over_sq zurückgegeben.
★ Falle (a) — Sz misst nicht "eine Eigenschaft der Fläche", sondern "wie lange man hingesehen hat"
Bei gleichem Abtastabstand (1 µm) und nur vergrößertem Auswertefenster läuft Sz nicht in eine Sättigung, sondern
steigt monoton an (gemessen, Fläche ohne Kratzer):
Fenster 32² 64² 128² 256² 512²
Anzahl 256 64 16 4 1
Sz-Mittel 0.7112 0.8011 0.8693 0.9248 1.0058
Mess/Prog 0.5204 0.5295 0.5314 0.5287 0.5420
+41.4 % bei 256-facher Fläche. Die Prognose ist der Gaußsche Extremwert 2√(2 ln M) · Sq.
Das Verhältnis ist nahezu fensterunabhängig konstant (0.520 bis 0.542, ±2.0 % um den Mittelwert), daher
stimmt die Form des Anstiegs (Logarithmus der Fläche), der Absolutwert liegt aber um das 1.9-fache daneben —
weil die Fläche korreliert ist und die Zahl unabhängiger Stichproben kleiner ist als die Punktzahl M.
Da es keine Sättigung gibt, existiert kein "wahres Sz". Wer Sz berichtet, muss stets Fenstergröße und Fensteranzahl angeben.
★ Falle (b) — am robustesten gegenüber dem Abtastabstand ist nicht Sa, sondern Sq
Dieselbe Fläche, durch Punktabtastung ausgedünnt und jedes Mal mit demselben Ablauf (Neigungsentfernung → λc=80 µm-Hochpass)
ausgewertet; relativer Fehler gegenüber der Ground Truth (gemessen):
dx Sa Sq Sz Ssk Sku
1 µm -0.0 % +0.4 % +0.2 % +2.8 % +1.3 %
2 µm -0.1 % +0.4 % -0.2 % +3.0 % +1.4 %
4 µm -0.3 % +0.4 % -1.3 % +3.4 % +1.7 %
8 µm -3.4 % +0.6 % -19.8 % +2.3 % -3.9 %
16 µm +23.5 % +1.6 % -29.1 % -38.4 % -40.8 %
Als Erstes überschreitet Sz bei dx=8 µm 10 %, Sa / Ssk / Sku bei dx=16 µm;
Sq überschreitet sie bis zuletzt nicht (maximal 1.6 %). Sq hält stand, weil Aliasing
Energie nur zurückfaltet und das 2. Moment erhält. Sa bewegt sich, wenn sich die Form der Verteilung
ändert, und Sz ist ein Extremwert, der davon abhängt, "ob der Grund eines Kratzers zufällig auf einen Abtastpunkt fällt".
Bei dx=8 µm besteht Sa mit ±5 %, Sz fällt durch — bei denselben Daten
kehrt sich das Ergebnis allein dadurch um, welche Zahl man angesehen hat.
★ Falle (c) — Sdq / Sdr hängen sowohl vom Abtastabstand als auch von den Einheiten ab
Sdq ist der rms des Gradienten, Sdr das entwickelte Grenzflächenverhältnis mean(√(1+|∇z|²)) - 1. Beide
werden mit zentralen Differenzen berechnet, daher fallen sie für einen Sinus der Wellenlänge λ um den Faktor sinc(2 dx/λ)
zu niedrig aus (gemessen, λ=32 µm, Amplitude 1, analytisch Sdq=0.138840):
dx Sdq gemessen Messfehler Prognose sinc(2dx/λ)
1 µm 0.138471 -0.27 % -0.64 %
2 µm 0.136212 -1.89 % -2.55 %
4 µm 0.126004 -9.25 % -9.97 %
8 µm 0.088388 -36.34 % -36.34 %
Je gröber man misst, desto glatter wirkt die Fläche. Sdr selbst hat die richtige Form
und stimmt bei ausreichend feiner Abtastung auf +0.116 % mit dem analytischen Wert überein (gemessen mit λ=32, dx=0.25).
Haben Höhe und dx unterschiedliche Einheiten, bricht nur dies stillschweigend (Sa/Sq
verwenden nur die Höheneinheit, daher bemerkt man es nicht).
Die äußerste 1 Zeile und 1 Spalte nutzen einseitige Differenzen und sind daher von der Auswertung ausgenommen.
fail-closed
• nicht 2-D / kleiner als 8x8 / enthält NaN oder Inf.
• dx oder dy nicht positiv oder nicht endlich.
• sieht nicht bandbearbeitet aus (bei assume_filtered=False).
• alle Punkte gleich hoch (Sq=0, daher sind Ssk/Sku nicht definiert).
• Leitfaden zur Familie surface_roughness
• 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.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• poc_polish_wipe_measure — py -3.11 examples/poc_polish_wipe_measure.py
• poc_surface_roughness — py -3.11 examples/poc_surface_roughness.py
table als Eingabe)—
measure)*Provenance: roughness.py — ROUGHNESS 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.