hx_nonmax_dir — 2D halcon_ext op

• Datenarten: image → image

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

• HALCON-Äquivalent: nonmax_suppression_dir (Bedeutung und Parameter sind in der HALCON-Referenz nachzulesen)

hx_nonmax_dir: input → output

*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):

▸ hx_nonmax_dir: Regler a durchfahren (Doku-Website)

*Regler b ändert die Ausgabe nicht (gemessen: identisch bei 0,1 / 0,5 / 0,9).*

Auf anderen Bildern (synthetische Szene / Foto / Münzen. Obere Reihe: Eingaben, untere Reihe: deren Ausgaben. Regler auf Standard):

▸ hx_nonmax_dir: andere Eingaben (Doku-Website)

*Die 4. Spalte ist eine Farb-Eingabe (H,W,3). Dieser Op verarbeitet Farbe, ohne Kanäle zu vermischen (er faltet den Farbkanal nicht als dritte Raumachse).*

Verwendung

Nicht-Maximum-Unterdrückung entlang der Gradientenrichtung (Cannys NMS-Stufe). Dünnt Kanten auf ein Pixel aus.

Bestimmt mit Sobel gx (Spaltenrichtung) und gy (Zeilenrichtung) und berechnet die Amplitude hypot(gx, gy) und die Richtung arctan2(gy, gx) mod 180°. Die Richtung wird in 4 Sektoren in 45°-Schritten quantisiert, jedes Pixel wird mit den 2 Nachbarpixeln seines Sektors verglichen, und nur Pixel mit mag >= both neighbours bleiben erhalten (alle anderen werden 0). Die verbleibende Amplitude wird per min-max auf [0,1] normiert, und Werte unter a*0.3 werden auf 0 gesetzt.

• a → Schwellwert für schwache Kanten a*0.3 (auf den normierten Wert bezogen; bei a=0 kein Schwellwert).

• b wird nicht verwendet.

Hinweise:

• Der Nachbarvergleich nutzt np.roll, am Bildrand wird daher mit Pixeln der Gegenseite verglichen (dem 1-Pixel-Rand nicht trauen).

• Da mit >= verglichen wird, bleibt eine ideale Stufenkante mit gleichen nebeneinanderliegenden Amplituden 2 Pixel breit (sie wird nicht 1 Pixel).

• In der aktuellen Implementierung sind die verglichenen Nachbarpixelpaare der Sektoren 45° und 135° vertauscht, sodass diagonale Kanten nicht in Gradientenrichtung, sondern

entlang der Kante verglichen werden. Horizontale und vertikale Kanten werden daher ausgedünnt, diagonale Kanten aber kaum (gemessen: an einer weichgezeichneten diagonalen Stufenkante bleiben rund 1400 Pixel unverändert). Wird eine Ausdünnung diagonaler Kanten benötigt, canny oder skeleton in Betracht ziehen.

Das ursprüngliche gray-Bild übergeben, kein Amplitudenbild wie sobel_amp (es wird intern differenziert). Danach: hx_close_edges / hx_detect_edge_segments / threshold.

Vergleichbarkeit der Werte (gemessen): Die Ausgabe wird auf das Maximum des jeweiligen Bildes normiert (das Ausgabemaximum ist stets 1.0, und eine Skalierung der Eingabe lässt die Ausgabe unverändert). Werte sind daher nicht bildübergreifend vergleichbar — ein Merkmal gleicher Stärke erhält je nach dem stärksten Merkmal im Bild einen anderen Wert, und in einem Bild mit nur schwachen Merkmalen wird das Rauschen auf 1.0 angehoben. Für einen Vergleich über Bilder hinweg auf eine gemeinsame Referenz umskalieren.

Leeres Bild (gemessen): Ein Bild gleichmäßiger Helligkeit liefert unabhängig von der Helligkeit ein leeres Ergebnis (jedes Pixel ist Hintergrund 0). Reinweiß und Reinschwarz verhalten sich gleich; Helligkeit allein detektiert nichts.

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie gallery2d_halcon_ext

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.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

In Studio ausprobieren

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.

hx_nonmax_dir 0.50 0.50

▸ Diese Pipeline laden  ·  Laden & ausführen

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

• gallery2d_halcon_ext — py -3.11 examples/gallery2d_halcon_ext.py

Typkompatible Folge-Operatoren (nehmen image als Eingabe)

identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter

Gleiche Kategorie (halcon_ext)

hx_gen_circle · hx_gen_ellipse · hx_gen_rectangle2 · hx_gen_checker_region · hx_gen_grid_region · hx_gabor · hx_fit_surface1 · hx_fit_surface2


*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.