Entwurf „wxOCR“

41
Entwurf „wxOCR“ Entwurf „wxOCR“ Matthias Jauernig Matthias Jauernig Michael Lahl Michael Lahl Verteidigung Verteidigung

description

Verteidigung. Entwurf „wxOCR“. Matthias Jauernig Michael Lahl. 0. Gliederung. Einflussfaktoren Grundsatzentscheidungen Softwarearchitektur 3.1Schichtenarchitektur 3.2Änderungen zum Pflichtenheft 3.3Klassendiagramm 3.4Beschreibung der Systemkomponenten 3.5Sequenzdiagramme - PowerPoint PPT Presentation

Transcript of Entwurf „wxOCR“

Page 1: Entwurf „wxOCR“

Entwurf „wxOCR“Entwurf „wxOCR“

Matthias JauernigMatthias Jauernig

Michael LahlMichael Lahl

VerteidigungVerteidigung

Page 2: Entwurf „wxOCR“

0. Gliederung0. Gliederung

1. Einflussfaktoren

2. Grundsatzentscheidungen

3. Softwarearchitektur

3.1 Schichtenarchitektur

3.2 Änderungen zum Pflichtenheft

3.3 Klassendiagramm

3.4 Beschreibung der Systemkomponenten

3.5 Sequenzdiagramme

4. Arbeitsaufteilung

Page 3: Entwurf „wxOCR“

1. Einflussfaktoren1. Einflussfaktoren

1.1 Einsatzbedingungen

• Sequentieller Programmablauf

• Entwurf als single user Applikation

1.2 Umgebungs-/Randbedingungen

• OS: Windows / Linux plattformübergreifende GUI mit wxWidgets

• Keine Integration in bestehende Produkte stand-alone-Applikation

Page 4: Entwurf „wxOCR“

1. Einflussfaktoren1. Einflussfaktoren

1.3 Bedingungen aus Qualitätsanforderungen

• Anpassbarkeit/Austauschbarkeit, vor allem der Bildverarbeitungskomponente

• Aufteilung in Teilprogramme wxOCR (main) und wxOCR net Trainer, um das Neuronale Netz schon vorher anlernen zu können

Page 5: Entwurf „wxOCR“

2. Grundsatzentscheidungen2. Grundsatzentscheidungen

2.1 Datenhaltung• Speicherung in „flachen“ Dateien

• Keine DB-Anbindung

2.2 Verteilung im Netz• Keine Verteilung, lokale Applikation

• Keine Netzwerkfunktionalität

2.3 Benutzungsoberfläche• UI-Toolkit wxWidgets Erfüllung der

Bedingung nach Plattformunabhängigkeit

• Wahl von wxWidgets durch Wahl von C++ und Open-Source-Verfügbarkeit unter der GPL

Page 6: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

- Einsatz einer 2-Schichtenarchitektur:• Schicht 1: eigentliche Anwendung

• Schicht 2: Benutzungsoberfläche

- Begründung dieser Aufteilung:• Erlaubt übersichtliche Strukturierung

• Unterstützt Anpassbarkeit / Modularisierung

• Unterstützt unabhängige Entwicklung von Benutzungsoberfläche und Anwendung

• Keine 3 Schichten, da die wenigen Methoden zur Dateibehandlung eng an die Funktionalität gebunden sind

3.1 Schichtenarchitektur3.1 Schichtenarchitektur

Page 7: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.1 Schichtenarchitektur3.1 Schichtenarchitektur

2.b

2.a

1.a

1.b

1.c

1.d

Page 8: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

Klassendiagramm aus Pflichtenheft grundlegend neu gestaltet / modularisiert:

- Klassen mit mehreren Funktionalitäten gesplittet

- Erfüllung der Forderung nach Anpassbarkeit, Änderbarkeit und Modularisierung

- Erhöhung der Übersichtlichkeit

- Paralleles Lernen mehrerer Zeichensätze möglich durch Nutzung einer Klasse für verkettete Listen

3.2 Änderungen zum Pflichtenheft3.2 Änderungen zum Pflichtenheft

Page 9: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.2 Änderungen zum Pflichtenheft3.2 Änderungen zum Pflichtenheft

Page 10: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.3 Klassendiagramm3.3 Klassendiagramm

Page 11: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Allgemein:

- Wert auf Nutzung oo Funktionalitäten: z.B. eigene polymorphe Klasse valmatrix<T>, welche auf den C++ Datentypen slice<T> und valarray<T> beruht

- Beim Neuronalen Netz Einsatz von float** anstelle von valmatrix<T> aus Performance-Gründen

- Nutzung von Exceptions, um Fehler abzufangen (vorrangig im Umgang mit Dateien)

Page 12: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 13: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Von wxWidgets-Komponente wxApp abgeleitet• Anwendungserzeugung

• Erstellung eines Frames

Page 14: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 15: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Schnittstelle zwischen wxOCR (main), dem netTrainer, der Bildverarbeitung und dem Neuronalen Netz

• Implementiert von den Teilapplikationen gemeinsam genutzte Funktionalitäten

Page 16: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 17: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Von wxOCRRecog abgeleitet, fügt dieser Funktionalitäten hinzu, die vom Hauptprogramm zur Texterkennung aus einem Bild genutzt werden.

Page 18: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 19: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Von wxOCRRecog abgeleitet

• Hinzugefügte Funktionalität, z.B. Zeichensatz einlesen oder Neuronales Netz antrainieren und speichern

• Zu lernende Zeichensätze werden in verketteter Liste (patternList) gespeichert

Page 20: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 21: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Abstrakte Klasse• Vorlage für konkrete

Implementierungen der Bildverarbeitung

• Enthält Basisfunktionen, die genutzt werden können

• Leichte Anpassbarkeit durch Parametrisierung der wxOCRRecog-Klassen mit einem konkreten Bildverarbeitungsobjekt

Page 22: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 23: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Implementiert die abstrakten Methoden von wxOCRImageProc• Kann leicht durch eigene Implementierungen ersetzt werden• Stellt die Extrahierung von Mustern aus einem zuvor geladenen

Bild zur Verfügung

Page 24: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 25: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Stellt Funktionalität des Neuronalen Netzes zur Verfügung

• 3-Layer-Netz, feed forward, überwachtes Anlernen mittels Backpropagation möglich

• Wird hauptsächlich durch die Dimensionierungen und die Gewichtsmatrizen definiert

• Methoden zum Trainieren, Durchlaufen, Laden und Speichern des Netzes

Page 26: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 27: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Polymorphe Klasse für eine 2D-Matrix• Durch Operator-Überladung Zugriff mittels [i][j] möglich• Nutzung der Datentypen slice<T> und valarray<T> aus der C+

+ Standardbibliothek

Page 28: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 29: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 1: Eigentliche Anwendung

• Verkettete Liste zum Speichern der eingelesenen Zeichensätze• Methoden zum Einfügen, Löschen und Umsetzen des aktuellen

Zeichensatzes• Zugriff auf aktuelle Zeichensatz-Matrix mit [i] möglich

Page 30: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 31: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 2: Benutzungsoberfläche

• Von wxWidgets-Komponente wxFrame abgeleitet• Stellt Fenster des Hauptprogramms zur Verfügung• Bild kann geladen und der daraus erkannte Text gespeichert

werden

Page 32: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 33: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 2: Benutzungsoberfläche

• Fenster des netTrainers• Funktionen zum Handling

von Zeichensätzen und Trainieren sowie Speichern des Neuronalen Netzes

Page 34: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 35: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 2: Benutzungsoberfläche

• Von wxWidgets-Komponente wxDialog abgeleitet• Zweck ist das Anzeigen eines Informationsdialogs zum Projekt

Page 36: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur

2.b

2.a

1.a

1.b

1.c

1.d

3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

Page 37: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.4 Beschreibung der Systemkomponenten3.4 Beschreibung der Systemkomponenten

3.4.1 Schicht 2: Benutzungsoberfläche

• Abgeleitet von wxWidgets-Komponente wxTextCtrl• Erzeugt Texteingabe-Element, welches lediglich ganzzahlige

Eingaben im Intervall [0…10000[ akzeptiert• Z.B. zur Eingabe der Lernepochen des Neuronalen Netzes

Page 38: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.5 Sequenzdiagramme3.5 Sequenzdiagramme

3.5.1 Verdeutlichung der Bildverarbeitungs-Anpassbarkeit

Page 39: Entwurf „wxOCR“

3. Softwarearchitektur3. Softwarearchitektur3.5 Sequenzdiagramme3.5 Sequenzdiagramme

3.5.2 Verdeutlichung der Erkennung eines Zeichens aus einem Bild

Page 40: Entwurf „wxOCR“

4. Arbeitsaufteilung4. Arbeitsaufteilung

Matthias JauernigMatthias Jauernig Michael LahlMichael Lahl

ProgrammierungProgrammierung

• Schicht 1: eigentliche Schicht 1: eigentliche AnwendungAnwendung

• Schicht 2: Benutz-Schicht 2: Benutz-ungsoberflächeungsoberfläche

• Unterstützend bei Unterstützend bei Schicht 1Schicht 1

DokumentationDokumentation

• Quelltextkommen-Quelltextkommen-tierungtierung

• ChangelogChangelog

• Dokumentationen für Dokumentationen für Endbenutzer und Endbenutzer und EntwicklerEntwickler

OrganisationOrganisation

• Administrator der Administrator der sourceforge.net-sourceforge.net-ProjektseiteProjektseite

• CVS-VerwalterCVS-Verwalter• Gestalter für die Gestalter für die

WebseiteWebseite

Page 41: Entwurf „wxOCR“

Noch Fragen?Noch Fragen?

? ?? ? ? ? ???

? ?