Seite 1 von 1

Suche Möglichkeit Felder in Bitmap zu finden

Verfasst: 26.01.2006 17:30
von Kukulkan
Hallo,

Ich habe solche eine Grafik im Speicher (als Image und ohne die Kommentare und Pfeile):
Bild

Ich möchte automatisch und schnell die roten Rahmen um die schwarzen 'Haufen' ziehen. Zu jedem Rahmen benötige ich x1/y1 und x2/y2 (also die Ecken).

Wie würdet Ihr vorgehen um alle solchen (fast immer waagerechten) 'Haufen' zuverlässig einzukreisen?

Meine erste Idee:
- Pixelweise (oben nach unten und links nach rechts) durchgehen.
- Erster Schwarzer Pixel: Konturfindung
- Konturfindung sucht nach unten und nach rechts nach einem Ende
- Konturfindung hat am Ende höchsten und tiefsten Punkt und ebenso für ganz Links und ganz Rechts
- Jetzt ist die Frage offen, wo die Suche weitermachen soll.

Hat jemand eine bessere Idee dafür?

Volker

Verfasst: 26.01.2006 19:26
von Ypser
Ich würds so machen (setzt voraus, dass immer nur ein schwarzes Feld in einer Zeile ist).
Erst suchst du die Grafik ab nach den Pixel-Zeilen, in denen kein Schwarz vorkommt.
So kannst du schonmal grob die einzelnen Textzeilen ermitteln (obere und untere Kanten)
Und dann ermittelst für jeden dieser Blöcke noch, wo die letzte Spalte ist, in der es keine schwarzen Pixel
gibt (Anfang des schwarzen Bereiches), und wo die erste Spalte ist, in der danach wieder keine schwarzen sind (Ende des Bereiches).
Dann hättest du die vier Ecken.

Du brauchst also ne prozedur, die Zeilenweise die Grafik durchgeht und nach (schwarz) unterbrochenen
Zeilen sucht. Dadurch hast du die Grob-Bereiche. Die schreibst in eine Linked List (Anfangs- und Endzeile).
Danach einfach noch eine Prozedur, die dasselbe für einen bestimmten Bereich (von Abfangszeile bis Endzeile)
vertikal nochmal macht, so grenzt du die Breite der einzelnen Blöcke ein.
Das kommt wieder zur den Elementen der LL.
So kriegst du die Koordinaten.

Verfasst: 26.01.2006 20:19
von Kukulkan
Hui Ypser,
Ich würds so machen (setzt voraus, dass immer nur ein schwarzes Feld in einer Zeile ist).
Leider ist das nicht so. Die Grafik ist nur ein Ausschnitt. Es können weiter rechts auch mehrere schmalere Streifen sein. Es muss nicht sein, dass alle Streifen oder 'Haufen' auf einer Linie liegen oder gleich Hoch sind.

Volker

Verfasst: 27.01.2006 13:03
von Batze
Krieg ermal Zusammenhängende schwarze Bereiche raus.
Also bei was ist jeweils auch ein schwarzer Pixel daneben.
Dann Kästelst du jeden zusammenhängenden Bereich ein. :allright: