typed op• Datenarten: points → signal
• Aufruf: fullseye.apply(img, "tb_iss_keypoints", a=0.5, b=0.5) (das 2-D-Modell ist ein Bild plus zwei skalare Regler a,b∈[0,1])

*Die Abbildung ist die tatsächliche Ausgabe auf einer synthetischen 128×128-Eingabe. Links Eingabe, rechts Ausgabe. Punktwolken als Draufsicht-Streudiagramm (Helligkeit = z), 1-D-Reihen als Linie, Volumen als Maximum-Projektion entlang z, Videos als mittleres Bild, komplexe Bilder als Betrag; Rückgabewerte, die kein Bild ergeben, werden als Werte gezeigt.*
Regler a durchfahren (0,1 / 0,5 / 0,9, der andere Regler auf Standard):
▸ tb_iss_keypoints: Regler a durchfahren (Doku-Website)
Regler b durchfahren (0,1 / 0,5 / 0,9, der andere Regler auf Standard):
▸ tb_iss_keypoints: Regler b durchfahren (Doku-Website)
Stufen (die vorangehenden Ops → dieser Op, von links nach rechts):
▸ tb_iss_keypoints: Stufen (Doku-Website)
Auf anderen Bildern (synthetische Szene / Foto / Münzen. Obere Reihe: Eingaben, untere Reihe: deren Ausgaben. Regler auf Standard):
▸ tb_iss_keypoints: andere Eingaben (Doku-Website)
ISS-Keypoint-Detektor (Intrinsic Shape Signatures, entspricht einem 3D-Harris). Der kleinste Eigenwert λ3 der lokalen Kovarianz dient als Saliency; nur Punkte mit distinct Eigenwerten (also well-defined Orientierung) werden als Kandidaten zugelassen und per NMS spärlich ausgewählt. Rotationsinvariant. Rückgabe = Array der Punktindizes.
Argumente:
• points (N,3). radius: Radius der Nachbarschaftskugel für die saliency (gleiche Einheit wie die Punktwolke).
• nms_radius: Abstand der Non-Maximum-Suppression. Bei None 0.6*radius.
• gamma21 / gamma32: Obergrenzen der Eigenwertverhältnisse λ2/λ1, λ3/λ2 (Standard 0.99). Nur Punkte, bei denen beide
darunter liegen, sind Kandidaten (Punkte mit Verhältnis nahe 1 = isotrop, ohne bestimmte Orientierung, fallen weg).
• max_kp: Obergrenze der Rückgabe. min_neighbors: Punkte mit weniger Nachbarn als diesem Wert sind keine Kandidaten (Standard 8).
Ablauf: An jedem Punkt werden die Nachbarn innerhalb von radius gesammelt, und von der Momentmatrix 2. Ordnung mit dem betrachteten Punkt als Ursprung, (qᵀq)/n, werden die Eigenwerte λ1≥λ2≥λ3 bestimmt (ausgeschlossen, wenn λ1 höchstens 1e-12 ist). Mit λ3 als saliency wird absteigend durchlaufen; Greedy-NMS verwirft, was näher als nms_radius an einem bereits übernommenen Punkt liegt. Rückgabewert ist ein int64-Array von Punktindizes (absteigende saliency). Länge 0, wenn es keine Kandidaten gibt.
Hinweis: Die Nachbarn werden auf den betrachteten Punkt zentriert (nicht auf den Schwerpunkt). Bei einem Punkt auf einer Ebene liegt auch der betrachtete Punkt in dieser Ebene, daher ist λ3 theoretisch 0, und Rundungsreste (λ3/λ1 ≤ 1e-9) werden aus den Kandidaten entfernt. Da es eine Python-Schleife mit Nachbarschaftssuche für alle Punkte ist, sollten Wolken mit mehr als einigen zehntausend Punkten vorher mit voxel_grid_downsample ausgedünnt werden. Es speist direkt die Keypoint-Eingabe von shot_descriptor, und register_shot ruft es mit dem Saliency-Radius 0.6*radius und dem NMS-Radius 0.3*radius auf (radius ist der Stützradius von register_shot).
Die in die 2-D-Evolutionsregistrierung überbrückte 3d-op iss_keypoints. Die Implementierung ist dieselbe, nur die Aufrufkonvention ist an op(v, a, b) angepasst. a variiert gamma21 (Standard 0.99), b variiert gamma32 (Standard 0.99).
• 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.
Das Programm unten ist nachweislich lauffähig (gleiche Eingabe wie die Abbildung). In der Studio-Hilfe wird dieser Block zu Schaltflächen, die es sofort laden und ausführen.
img_to_points 0.50 0.50 tb_iss_keypoints 0.50 0.50
▸ Diese Pipeline laden · Laden & ausführen
Die folgenden Beispiele rufen den zugrunde liegenden Ledger-Op iss_keypoints auf. Dieser Brücken-Op ist dieselbe Implementierung, angepasst an die Konvention fn(v, a, b); das Verhalten gilt unverändert (nur die Aufrufform unterscheidet sich).
• feature_register — py -3.11 examples_3d/feature_register.py
signal als Eingabe)identity · tb_create_funct_1d_array · tb_smooth_funct_1d_gauss · tb_smooth_funct_1d_mean · tb_derivate_funct_1d · tb_integrate_funct_1d · tb_zero_crossings_funct_1d · tb_abs_funct_1d
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample · tb_mls_smooth
*Provenance: ops.py — 2D 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.