21. Januar 2008 Mobile Media Processing: Text Localization and Recognition Seminar Bildverstehen und...

Post on 05-Apr-2015

105 views 1 download

Transcript of 21. Januar 2008 Mobile Media Processing: Text Localization and Recognition Seminar Bildverstehen und...

21. Januar 2008

Mobile Media Processing: Text Localization and Recognition

Seminar Bildverstehen und Mustererkennung

Jan-Christoph Küster, Philipp Schirmacher, Ansgar Schulte

Seite 2

Agenda

1. Motivation

2. Konzept

3. Realisierung

4. Fazit

Seite 3

Motivation

• U-Bahnplan der Stadt Seoul (koreanisch / Hangul)

• Übersetzen der Stationsnamen ins Englische mit selbstentwickelter Symbian C++ Anwendung auf Nokia N95

Seite 4

Agenda

1. Motivation

2. Konzept

3. Realisierung

4. Fazit

Seite 5

Konzept

VorverarbeitungVorverarbeitungTextlokalisierungTextlokalisierung

Grauwertbild

Kantendetektion

KantendichteSkew-Korrektur

Otsu

MatchingMatching

Template-MatchingPattern.pngConnected Components

Morphologische Operationen

Region 1 Region n

Stationsname auf Englischals ASCII

Bounding Boxes

Quellbild gewünschte Regionen

Bereinigung

Seite 6

Konzept

VorverarbeitungVorverarbeitungTextlokalisierungTextlokalisierung

Grauwertbild

Kantendetektion

KantendichteSkew-Korrektur

Otsu

MatchingMatching

Template-MatchingPattern.pngConnected Components

Morphologische Operationen

Region 1 Region n

Stationsname auf Englischals ASCII

Bounding Boxes

Quellbild gewünschte Regionen

Bereinigung

Seite 7

Textlokalisierung

• Ziel: Regionen finden, die Text enthalten

• Annahmen: dunkler Text auf hellem Hintergrundeinheitlicher Schrifttyp (Maschinenschrift)gleichmäßige Beleuchtung

Seite 8

Grauwertbild

• Umwandlung in Grauwertbild

Seite 9

Kantendetektion

• Binärbild (Kante ja/nein)

• Kantenstärke mit Sobel-Operator

• Schwellwert: 2 * mittlere Kantenstärke

• Keine Gaußglättung

Seite 10

• Kantendichte in jedem Punkt berechnen

• Ist in der Umgebung von Text hoch

• 8x8-Filtermaske

• Schwellwert: 10

Kantendichte

1 1 … 1

1 1 … 1

… …

1 1 … 1

8

8

Seite 11

• Closing-Operation

• Opening-Operation

Morphologische Operationen

Lücken im Text schließen

Strukturelement 2x2

Trennung von Stationsname und -nummer

Strukturelement 3x3

Seite 12

• Zusammenhangskomponenten berechnen

Connected Component

Seite 13

Bounding Boxes

• Boundingbox für jede Komponente

• Selektion von Boxen– Breite/Höhe Verhältnis

– Größe der Box (mindestens 13x13)

Seite 14

Konzept

VorverarbeitungVorverarbeitungTextlokalisierungTextlokalisierung

Grauwertbild

Kantendetektion

KantendichteSkew-Korrektur

Otsu

MatchingMatching

Template-MatchingPattern.pngConnected Components

Morphologische Operationen

Region 1 Region n

Stationsname auf Englischals ASCII

Bounding Boxes

Quellbild gewünschte Regionen

Bereinigung

Seite 15

Vorverarbeitung

• Ziel: Vorbereiten einer Region für das Matching

Seite 16

Otsu

• Trennung von Text und Hintergrund

– Automatische Schwellwertbestimmung

– Annahme: 2 Klassen von Pixeln (Text und Hintergrund)

– Annahme: Bimodale Verteilung

Schwellwert

Hintergrund

Text

Seite 17

Otsu

• Nicht robust und präzise genug

Seite 18

Otsu

• Besser: mathematischer Ansatz

– Minimiere Varianz innerhalb der Klassen (variance within classes)

– Maximiere Varianz zwischen den Klassen (variance between classes)

– Kein Widerspruch der Zielbedingungen

[0, S] [S+1, 255]

Seite 19

Otsu

• Schwellwert mit 0,7 multiplizieren

Region 0,9 0,8 0,7 0,6 0,5

Seite 20

Skew-Korrektur

• Region nicht immer horizontal ausgerichtet– Bedingt durch Kameraführung– Annahme: Drehung im Bereich [-10,10] Grad

• Skew-Winkel finden durch Ausprobieren– in 1º Schritten durchgehen– Kriterium: maximale Anzahl Hintergrundspalten (nur weisse

Pixel)

Skew-Winkel: 10º

Seite 21

Konzept

VorverarbeitungVorverarbeitungTextlokalisierungTextlokalisierung

Grauwertbild

Kantendetektion

KantendichteSkew-Korrektur

Otsu

MatchingMatching

Template-MatchingPattern.pngConnected Components

Morphologische Operationen

Region 1 Region n

Stationsname auf Englischals ASCII

Bounding Boxes

Quellbild gewünschte Regionen

Bereinigung

Seite 22

Template-Matching

• Ziel: Vergleich vorverarbeiteter Region mit Mustern

– Kriterium: kleinste quadratische Abweichung

• Pattern.png speichert alle Muster

– linksbündig – oben und unten bündig abschließend– rechter Rand mit weiß aufgefüllt

.

.

.

123

697071

Index Pattern

101 px

13 px

Seite 23

Template-Matching

• Probleme beim Template-Matching

– Region schließt am Rand nicht immer bündig mit Text ab

– Region und Muster sind unterschiedlich groß

– Alle quadratischen Differenzen gleich zu gewichten?

Seite 24

• Entfernung von weißen Zeilen am oberen und unteren Rand

– Berechnung des Weißanteils in jeder Zeile

– Löschen der Zeilen > 85% weiß

Template-Matching

Seite 25

Template-Matching

• Skalierung der Region auf Größe 13 x 101

– Proportionale Skalierung auf die Höhe 13

– rechten Rand mit weißen Pixeln auf Breite 101 auffüllen

Seite 26

Template-Matching

• Quadratische Differenzen an jeder Position berechnen

– Für jede Position Gewichtung finden

– An jeder Position: über alle Muster Varianz berechnen

– Normierung auf [0,1]

Template1

Template n

Template n-1

g1

gn-1

Seite 27

Templatematching

• Berücksichtigung von weißen Spalten an den Seiten

– Verschiebung nach links und rechts

– Kleinste Abweichung zählt

1

Muster

9 101...

1

Verschiebung nach links

9 101...

1

Verschiebung nach rechts

9 101...

Seite 28

Agenda

1. Motivation

2. Konzept

3. Realisierung• MATLAB Prototyp• Symbian C++

4. Fazit

Seite 29

MATLAB Prototyp

• Effektivität des Konzepts prüfen

• 710 Testfälle um Güte im Vorfeld zu testen

• Bilder unter realen Bedingungen entstanden

– Nokia N95

– 10cm Abstand vom Plan (A3)

– Nahaufnahmemodus

Seite 30

MATLAB Prototyp

Seite 31

MATLAB Prototyp

100…

547 03211 16…548 03211 28…553 03211 32…810 03211 14

…P555

710 Testdaten

Stationsnummer Testbild Regionsnummer

Seite 32

MATLAB Prototyp

Region Region nach Vorverarbeitung

MatchingErgebnis

Seite 33

MATLAB Prototyp

• Konfusionsmatrix

• Trefferquote bei 710 Testfällen bei 85,22%

Erkannte Station (Index aus Pattern.png)

Inp

ut

Sta

tion

(In

de

x a

us

Pa

tte

rn.p

ng

)

Seite 34

MATLAB Prototyp

Seite 35

Agenda

1. Motivation

2. Konzept

3. Realisierung• MATLAB Prototyp• Symbian C++

4. Fazit

Seite 36

Realisierung mit Symbian C++

• Zugriff auf die Kamera

– Einzelne Bilder des Videostreams

• Kameranutzung unter Symbian: Klasse CCamera

– Kamera reservieren

– Kamerasucher starten

– Callback-Methoden, bspw. wenn Sucherbild abrufbereit

– Autofokus verwenden

Seite 37

Realisierung mit Symbian C++

• Demoapplikation CameraApp– Quellcode offen– Grundlage für Kamera-Applikationen

• Model-View-Controller Architektur (MVC)

cameraappview

cameraappcontroller

textengine

cameraappdocument cameracaptureengine

cameraappappui

cameraappapp

cameraappcontainer

Model

Controller

View

Seite 38

Realisierung mit Symbian C++

cameraappbasecontainercameraappbasecontainer

cameraappcontrollercameraappcontroller

aFrame+ Bounding Boxes

+ Text

textenginetextengine

iNewFrameaFrame

iBackupFrame

Kamera

Display

3.

1.

2.

264x198

264x198

Ecken der Bounding Boxes

Pattern.png Index

Berechnung

Stationsnamen-Array (englisch)

88x66

Seite 39

Realisierung mit Symbian C++

• Bildverarbeitung: NokiaCV Library

• Ziel: einheitliche Basis für entsprechende Anwendungen

– Geometrische Transformationen

– Kanten- und Eckendetektion

– Bildstatistiken

– Motion Estimation

• Problem: Performance ist sehr schlecht

Seite 40

• Bitmaps im Speicher:

Realisierung mit Symbian C++

Zeile 0

Start

Zeile 1 Zeile 2 Zeile 3 Zeile 4 Zeile…

Zeilenlänge Start + 4 * Zeilenlänge

Pixel 0 Pixel 1 Pixel 2 Pixel 3 Pixel 4 Pixel…

Start + 4 * Zeilenlänge

abhängig vom DisplayMode

Seite 41

Realisierung mit Symbian C++

• CFbsBitmap unterstützt verschiedene DisplayModes

• Grauwertbild:– EGray256

• RGB-Bild: 16,7 Mio. Farben– EColor16M EColor16MU R G B

0 8 16 23

0 7

R G B 0 8 16 24 31

Seite 42

Realisierung mit Symbian C++

VorverarbeitungVorverarbeitungTextlokalisierungTextlokalisierung

Grauwertbild

Kantendetektion

KantendichteSkew-Korrektur

Otsu

MatchingMatching

Template-MatchingPattern.pngConnected Components

Morphologische Operationen

Region 1 Region n

Stationsname auf Englischals ASCII

Bounding Boxes

Quellbild gewünschte Regionen

Bereinigung

Seite 43

Realisierung mit Symbian C++

• Von 71 Stationsnamen werden 66 erkannt (92,96%)

– Sicher erkannt: 42

– Mit Mühe erkannt: 24

– Region nicht richtig gefunden: 4

– Region gefunden aber falsch erkannt: 1

Seite 44

Agenda

1. Vorstellung des Themas

2. Das Konzept

3. Realisierung

4. Fazit

Seite 45

Fazit

• Operation auf Videostream mit Symbian C++ möglich

• Verfahren der Bilderkennung performant realisierbar

• Bibliothek NokiaCV unbrauchbar– schlecht dokumentiert– nicht performant– Quellcode nicht frei

• Realisierung und Testen in MATLAB empfehlenswert

• On-Device-Debugging notwendig (Carbide.c++ DEV)

Seite 46

Ausblick

• Eigenes Framework zur Bildverarbeitung und -erkennung erstellen

• Debugging Erweiterung für komplexe Datentypen (Matrizen)

• Erweiterung des Texterkennungssystems– Erkennung einzelner Zeichen/Silben

Seite 47

Diskussion

Vielen Dank für Ihre Aufmerksamkeit

Noch Fragen???