img_to_projection_profile — 2D bridge op

• Datenarten: image → signal

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

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

▸ img_to_projection_profile: Regler a durchfahren (Doku-Website)

Regler b durchfahren (0,1 / 0,5 / 0,9, der andere Regler auf Standard):

▸ img_to_projection_profile: Regler b durchfahren (Doku-Website)

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

▸ img_to_projection_profile: 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

Macht aus dem Projektionsprofil, das durch Zusammendrücken des Bildes in 1 Richtung entsteht, ein 1-D-signal — eine Grundgröße der Seitenlayoutanalyse.

Während img_to_signal "1 Zeile/Spalte unverändert liest", bündelt diese Op alle Zeilen (alle Spalten) und fasst sie zu 1 Linie zusammen. Lücken zwischen Zeichen, Linien und Bandgrenzen gehen auf 1 Abtastlinie im Rauschen unter, treten aber nach dem Zusammendrücken als Täler hervor.

• b → Richtung. b < 0.5 drückt senkrecht zusammen, Länge W (ein repräsentativer Wert je Spalte; Lücken zwischen nebeneinander stehenden Zeichen werden zu Tälern), b >= 0.5 drückt waagerecht zusammen, Länge H (je Zeile; der Zeilenabstand wird zum Tal). Wie bei img_to_signal bestimmt b die Richtung, aber a bedeutet etwas anderes.

• a → obere Trimmrate. Die Werte entlang der zusammengedrückten Achse werden absteigend sortiert und nur die obersten m = max(1, round((1-a) * N)) gemittelt. a=0 ist eine einfache Mittelwertprojektion (das klassische projection profile selbst), a=1 ist eine Maximumprojektion (MIP), und dazwischen liegt ein stetiger Kompromiss, der "nur die Ausreißer behält und den Rest glättet".

• Rückgabewert: 1-D float64. Nicht normiert (der Wertebereich bleibt der der Eingabe; bei einem [0,1]-Bild [0,1]). Die Länge folgt aus der Richtung (W oder H). Ein leerer Frame ergibt eine Folge konstanter Werte.

Warum der Stellknopf eine Trimmrate ist: Die Mittelwertprojektion ist robust gegen Rauschen, aber 1 dünne Linie wird vom Hintergrund verdünnt und verschwindet. Die Maximumprojektion behält dünne Linien, aber 1 heller Punkt hebt die ganze Spalte an. Was man auch wählt, man verliert etwas, daher wurde das Maß des Verwerfens zum Stellknopf gemacht und der Zielkonflikt offengelegt. Erhöht man a, bleiben dünne Strukturen erhalten, senkt man es, wird das Rauschen geglättet ―― monoton, und die beiden Enden stimmen mit den 2 klassischen Projektionen überein.

Dunkle Zeichen vorher invertieren. Diese Op behält die größeren Werte; übergibt man schwarze Schrift auf Weiß unverändert, greift das Trimmen den Hintergrund auf. Mit invert (Register) dazwischen behält a "die Stellen, wo die Zeichen dunkel sind".

Vorarbeiten und Entsprechung: Die Mittelwertprojektion ist ein Klassiker der Dokumentanalyse schlechthin (die Größe, die Postl 1986 / Baird 1987 zur Schräglagen- schätzung nutzten), und in HALCON entspricht sie gray_projections (waagerechte und senkrechte Grauwertprojektionen) —— damit wird eine Op gefüllt, die in der Zuordnungstabelle covered: false war. Die Familie, die sich durch Trimmen von oben stetig der Maximumprojektion nähert, folgt derselben Idee wie die in der Zeitframe-Fusion der Fluoreszenzmikroskopie verwendete Quantilprojektion (nimmt den oberen 75 %-Punkt), doch da diese Op der Mittelwert der obersten m ist, stimmen die beiden Enden exakt mit Mittelwert- und Maximumprojektion überein, und dazwischen ist sie monoton.

Einsatz: Zeilen ausschneiden (waagerecht zusammendrücken und Täler suchen), Zeichen ausschneiden (senkrecht zusammendrücken), Linienerkennung, Bandgrenzen, Visualisierung der Entscheidungsgröße, die deskew intern nutzt. Nachgelagert ist die Familie der 1-D-Funktionen (tb_smooth_funct_1d_gauss / tb_local_min_funct_1d / tb_derivate_funct_1d).

Ausführlicher Anwendungsleitfaden

• Leitfaden zur Familie gallery2d_bridge

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.

img_to_projection_profile 0.50 0.50

▸ Diese Pipeline laden  ·  Laden & ausführen

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

• gallery2d_bridge — py -3.11 examples/gallery2d_bridge.py

Typkompatible Folge-Operatoren (nehmen 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

Gleiche Kategorie (bridge)

img_to_points · img_to_keypoints · img_to_signal · img_to_counts · img_to_matrix · img_to_video · img_to_volume · img_to_lightfield


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