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

Entwurf „wxOCR“

  • Upload
    dennis

  • View
    40

  • Download
    2

Embed Size (px)

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

Citation preview

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?

? ?? ? ? ? ???

? ?