detect op• Datenarten: voxel → primitive
• Aufruf: import fullseye as fs; fs.ledger.hough_plane_3d(vol, device='cpu', ndir=200, nd=128, mc=0.0, iso=0.5, tol=1.0) (die Implementierung direkt: import match3d; match3d.hough_plane_3d(vol, device='cpu', ndir=200, nd=128, mc=0.0, iso=0.5, tol=1.0); aus dem Register: ops3d.get("hough_plane_3d"))
• GPU: Dieser Operator hat einen GPU-Pfad (device="cuda")
Ebenendetektion (der 3-D-Lift der 2-D-Hough-Geraden). Nutzt den Gradienten als Normale und stimmt in den (Normale n, Abstand d)-Raum ab.
Jedes Voxel der dünnen Grenzfläche stimmt für sein eigenes Normalenrichtungs-Bin und d=n·p → Peak = dominante Ebene. Die Normale wird durch Mittelung der tatsächlichen Normalen im Gewinner-Bin verfeinert, d durch den Modus der Projektion. Zum Extrahieren von Boden oder Wänden aus Punktwolken/Voxeln. Rückgabewert (n(3,), d, inliers, total).
Ablauf: die 1 Voxel dicke Grenzfläche von (vol > iso) nehmen (belegte Voxel, die bei einer 3³-erosion verschwinden), und den Einheitsgradienten dieser Voxel (sobel3d; mc ist ein Schwellwert auf die Rohausgabe) als Normale n verwenden. n wird in die Hemisphäre gefaltet, in der die Komponente von Achse 0 nicht negativ ist, d = n·p (p ist der ganzzahlige Voxel-Index (z,y,x)). Abgestimmt wird über ndir Referenzrichtungen (bis 26 die 26er-Nachbarschaft, darüber eine fibonacci-Kugel) und nd d-Bins; n wird durch den Mittelwert der tatsächlichen Normalen im meistgewählten Bin verfeinert, d durch den Median nahe dem Modus des Projektionshistogramms auf dieses n. Rückgabewert (n(3,), d, inliers, total): n ist die Einheitsnormale in (z,y,x)-Reihenfolge (numpy float32), die Ebene ist n·(z,y,x) = d (Voxel-Einheiten). inliers ist die Anzahl der Grenzvoxel mit |n·p − d| < tol, total die Gesamtzahl der Grenzvoxel (inliers/total ist der Anteil der dominanten Ebene).
• Bei weniger als 10 Grenzvoxeln wird None geliefert (keine Ausnahme).
• Dichte-Voxel werden mit iso binarisiert (2-wertig) (bei Anzahldichte bedeutet 0.5 "1 Punkt oder mehr").
• Liefert nur 1 Ebene. Für mehrere Ebenen die Inlier entfernen und erneut ausführen, oder bei Punktwolken plane_segmentation
/ ransac_plane.
Nachgelagert: messen mit distance_point_plane / angle_between_planes.
• 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.
• detect_primitives_3d — py -3.11 examples_3d/detect_primitives_3d.py
primitive als Eingabe)fuse_to_voxel · angle_between_lines · angle_between_planes · angle_line_plane · distance_point_plane · distance_point_line · distance_line_line · distance_segment_segment
detect)*Provenance: match3d.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.