Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

de:universeller_bayescher_bilderkenner:barcode

Sensor zur Erkennung eines Barcodes

Projektmitglieder

Mourad Halloui, Nesrin Kasik, Esra Erdem

Projektbeschreibung

Dieses Projekt beschäftigt sich mit der Erkennung von Barcodes in Bildern.Es soll ein Sensor entwickelt werden, dass es mit Hilfe von verschiedenen Algorithmen realisiert. Mittels verschiedener Bildvorverarbeitungsprozesse sollen die Bilder verarbeitet werden, um einen Barcode zu erkennen.

Vorgehensweise

Es wurde als erstes die Anforderungen an das Programm(Sensor) analysiert und darus die Lösungsansätze gefunden. Als nächstes wurde die für die Umsetzung erforderliche Entwicklungumgebung Microsoft Visual Studio 2010 installiert, die mit der OpenCV Bibliotheken eingebunden ist. Das Projekt wurde unter Visual Studio 2010 und in C++ geschrieben. Es wurde vor der Umsetzung des Sensors ein Konzept durch ein Ablaufdiagramm erarbeitet.

Erkennung eines Barcodes

Ablaufdiagramm

Mithilfe des Ablaufdiagramms wird unser Programm zur Barcodeerkenunnung veranschaulicht.

1. Erzeugung des Grauwertbildes

Als erstes wird aus unserem FarbbilD das Grauwertbild erzeugt. Die Umwandlung eines Farbbildes in ein Grauwertbild ist ein allgemeiner Bildvorverarbeitungsschritt um die relevanten Informationen aus dem Bild entnehmen zu können. Diese Umwandlung dient zur Darstellung der Helligkeits- oder Intensitätswerte eines einzelnen Bildpunktes. Im Fall eines RGB-Farbwertes kann mit der Formel: Grauwert = 0,299 Rotanteil + 0,587 Grünanteil + 0,114 Blauanteil der Grauwert errechnet werden. Das Ergebnis ist ein Wert, der unabhängig von den Farben die Helligkeit des Bildpunktes wiedergibt.

2. Sobel

Nach der Schwellwertbildung ergolgt die Kantendetektion mit dem Sobel-Operator.Der Sobel-Filter gehört zur Gruppe der linearen Filter (Hochpaßfilter), die eingesetzt werden, um Strukturen in Bildern zu verstärken. Der Operator arbeitet mit einer Faltungsmaske(Filtermatrix), Hierbei wird die Filtermatrix über das Eingangsbild geschoben und die Pixelwerte mit der Filtermatrix multipliziert. Durch die Matrix wird die Umgebung des Pixels, das sich unter dem Mittelpunkt der Matrix befindet, betrachtet. Dabei wird das Pixel des Eingabebildes mit dem Wert in der entsprechenden Matrix-Zelle multipliziert und die Produkte addiert. Diese Summe stellt den Grauwert des Pixels in der Mitte der Matrix dar. Dieser Wert wird in das gefilterte Bild eingetragen. Je nach Wahl der Matrixelemente können horizontale, vertikale oder diagonale Kanten ermittelt werden. (http://hpundt.hs-harz.de/bv_4b_neu.pdf)

In der folgende Abbildung dargestellte Operator „Sobel-Vertikal“ detektiert die Kanten, die parallel zur y-Achse liegen. Es werden die Pixel die parallel zur y-Achse liegen betrachtet. Alle Kanten, die parallel zur x-Achse liegen, d.h alle horizontale Kanten, werden verwischt. Als Rest bleiben nur die vertikale Kanten auf dem Bild. Dasselbe Operation wird auf die x-Achse durchgeführt. Es werden mit dem Operator „Sobel-Horizontal“ die Kanten detektiert, die parallel zur x-Achse liegen. Somit werden alle vertikale Kanten, die parallel zur y-Achse liegen, verwischt.Es bleiben nur die horizontale Kanten auf dem Bild.

Canny

Canny Algorithmus ist ein mehrstufiger Algorithmus zur optimalen Erkennung von Kanten, die aus verschiedenen lokalen Operationen zur Kantenerkennung kombiniert ist. Ziel : • Erkennung : alle tatsächlichen Kanten sollen gefunden werden, aber keine Falschen. • Lokalisierung: Abstand zwischen tatsächlicher und erkannter Kante möglichst klein. • Ansprechverhalten: keine Mehrfacerkennung ein- u. derselben Kante. • Ergebnis: Binärbild (1=Kante/ 0= keine Kante) wird allgemein als bestes der klassischen Verfahren erachtet

Der Algorithmus besteht aus mehreren Phasen: 1. Glättung: um Rauschen zu unterdrücken, wird mit einem Gauss-Filter geglättet. 2. Kantendetektion: berechne Kantenstärken und richtungen Sobel –Operator in X- und Y-Richtung . Dazu wird jeder Punkt mitsamt seiner Umgebung mit einer Matrix für X-Richtung und einer Matrix für di Y-Richtung multipliziert. 3. Unterdrückung von Nicht.Maxima:Nur lokale Maxima der Kantenstärke werden als potenzielle Kantenpixel zugelassen. Alle Pixel, die keine lokalen Maxima in Gradientrichtung sind, werden unterdrückt. Dadurch werden Kanten ausgedünnt(auf ein Pixelbreite). Dies ist wichtig für die Lokalisierung der Kanten. Den Kante wird vermutet, wo Filterantwort am stärksten ist. 4. Hystrese: Auf dieser Phase werden die nichtrelevanter Kante mittels eines Zwei Schwellwertverfahrens unterdrückt. Es werden zwei Schwellenwerte , T1 und T2, T1⇐ T2 verwendet. Es werden schwache bzw. falsche Kanten unterdrückt. Daraufhin werden Knatenpunkte zu einem Kantenverlauf zusammenhängen, bestimmt. Es wird nachdem Pixel mit der größten Gradientenlänge ausgehend vom Startpunkt gesucht. Der Startpunktist die Pixel, deren Gradientenlänge ein lokales Maximum in Gradientenrichtung und deren Länge größer als der Schwellwert T1 ist. Wenn die Gradientenlänge der gefundenen Punkts unterhalb des zweiten Schwellenwertes T2 liegt, wir die Kantenverfolgung unterbrochen.

3. Gauss-Filter zur Glättung

Auf das erzeugte Grauwertbild wurde eine Glättung mit dem Gauss-Filter durchgeführt. Der mittlere Grauwert, die mit einer 7×7-Filtermatrix berechnet wird. Darufhin wird das Ergebnis im aktuellen Pixel des Zielbildes eingetragen. Es kann mit diesem Filter-Operator u.a. Rauschen, einzelne Spikes verringert werden. Die unscharfe Kanten und feine Strukturen werden eliminiert und dabei gehen hochfrequente Informationen verloren. Je größer man das Filterfenster einsetzt desto größer hat man einen Informationsverlust.

4. Binarisierung

5. Morphologische Operationen

Die morphologische Bildverarbeitung ist ein Verfahren der computergestützten Bildmanipulation.Sie benutzt die Grauwertbilder für bessere Ergebnisse bei den folgenden Methoden.

Erosion und Dilatation

Auf einem Grauwertbild funktioniert die Erosion mit einem strukturierenden Element ähnlich einem Minimum-Filter. Dunkle Strukturen werden vergrößert, hellere verkleinert. Auf einem Grauwertbild wirkt die Dilation mit einem strukturierenden Element ähnlich einem Maximum-Filter. Helle Strukturen werden vergrößert, dunklere verkleinert.

Nach der Schwellwertbildung wird die Erosion und Dilatation durchgeführt, um von dem Bild die unnötige Strukturen zu löschen, damit das Zielstruktur hervorgehoben wird.

Ergebnis

Nach der Dilatation erhalten wir zwei gleich große Flächen (Konturen). Anschließend wird die Kontur mit der größten Fläche ermittelt und aus diese die X und Y Koordinaten festgelegt. Als Ergebnis erhalten wir ein Ausgangsbild mit eine roten Markierung im Bereich des Barcodes.

Quellcode

Quellen

de/universeller_bayescher_bilderkenner/barcode.txt · Zuletzt geändert: 2014/11/24 13:20 (Externe Bearbeitung)