Upload
swanhild-zenger
View
111
Download
1
Embed Size (px)
Citation preview
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???