Verteidigung Entwurf wx OCR Matthias Jauernig Michael Lahl

  • Slides: 41
Download presentation
Verteidigung Entwurf „wx. OCR“ Matthias Jauernig Michael Lahl

Verteidigung Entwurf „wx. OCR“ Matthias Jauernig Michael Lahl

0. Gliederung 1. Einflussfaktoren 2. Grundsatzentscheidungen 3. Softwarearchitektur 1. 3. 1 Schichtenarchitektur 2. 3.

0. Gliederung 1. Einflussfaktoren 2. Grundsatzentscheidungen 3. Softwarearchitektur 1. 3. 1 Schichtenarchitektur 2. 3. 2 Änderungen zum Pflichtenheft 3. 3. 3 Klassendiagramm 4. 3. 4 Beschreibung der Systemkomponenten 5. 3. 5 Sequenzdiagramme 4. Arbeitsaufteilung

1. Einflussfaktoren 1. 1 Einsatzbedingungen • Sequentieller Programmablauf • Entwurf als single user Applikation

1. Einflussfaktoren 1. 1 Einsatzbedingungen • Sequentieller Programmablauf • Entwurf als single user Applikation 1. 2 Umgebungs-/Randbedingungen • OS: Windows / Linux plattformübergreifende GUI mit wx. Widgets • Keine Integration in bestehende Produkte stand-alone-Applikation

1. Einflussfaktoren 1. 3 Bedingungen aus Qualitätsanforderungen • Anpassbarkeit/Austauschbarkeit, vor allem der Bildverarbeitungskomponente •

1. Einflussfaktoren 1. 3 Bedingungen aus Qualitätsanforderungen • Anpassbarkeit/Austauschbarkeit, vor allem der Bildverarbeitungskomponente • Aufteilung in Teilprogramme wx. OCR (main) und wx. OCR net Trainer, um das Neuronale Netz schon vorher anlernen zu können

2. Grundsatzentscheidungen 2. 1 Datenhaltung • Speicherung in „flachen“ Dateien • Keine DB-Anbindung 2.

2. 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 wx. Widgets Erfüllung der Bedingung nach Plattformunabhängigkeit • Wahl von wx. Widgets durch Wahl von C++ und Open-Source-Verfügbarkeit unter der GPL

3. Softwarearchitektur 3. 1 Schichtenarchitektur - Einsatz einer 2 -Schichtenarchitektur: • Schicht 1: eigentliche

3. Softwarearchitektur 3. 1 Schichtenarchitektur - 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. Softwarearchitektur 3. 1 Schichtenarchitektur 2. b 2. a 1. b 1. c 1.

3. Softwarearchitektur 3. 1 Schichtenarchitektur 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 2 Änderungen zum Pflichtenheft Klassendiagramm aus Pflichtenheft grundlegend neu gestaltet /

3. Softwarearchitektur 3. 2 Änderungen zum Pflichtenheft 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. Softwarearchitektur 3. 2 Änderungen zum Pflichtenheft

3. Softwarearchitektur 3. 2 Änderungen zum Pflichtenheft

3. Softwarearchitektur 3. 3 Klassendiagramm

3. Softwarearchitektur 3. 3 Klassendiagramm

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten Allgemein: - Wert auf Nutzung oo Funktionalitäten:

3. Softwarearchitektur 3. 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)

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung • Von wx. Widgets-Komponente wx. App abgeleitet • Anwendungserzeugung • Erstellung eines Frames

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung • Schnittstelle zwischen wx. OCR (main), dem net. Trainer, der Bildverarbeitung und dem Neuronalen Netz • Implementiert von den Teilapplikationen gemeinsam genutzte Funktionalitäten

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung • Von wx. OCRRecog abgeleitet, fügt dieser Funktionalitäten hinzu, die vom Hauptprogramm zur Texterkennung aus einem Bild genutzt werden.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung • Von wx. OCRRecog abgeleitet • Hinzugefügte Funktionalität, z. B. Zeichensatz einlesen oder Neuronales Netz antrainieren und speichern • Zu lernende Zeichensätze werden in verketteter Liste (pattern. List) gespeichert

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 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 wx. OCRRecog-Klassen mit einem konkreten Bildverarbeitungsobjekt

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung • Implementiert die abstrakten Methoden von wx. OCRImage. Proc • Kann leicht durch eigene Implementierungen ersetzt werden • Stellt die Extrahierung von Mustern aus einem zuvor geladenen Bild zur Verfügung

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 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

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung • Polymorphe Klasse für eine 2 D-Matrix • Durch Operator-Überladung Zugriff mittels [i][j] möglich • Nutzung der Datentypen slice<T> und valarray<T> aus der C++ Standardbibliothek

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 1: Eigentliche Anwendung

3. Softwarearchitektur 3. 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

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche •

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche • Von wx. Widgets-Komponente wx. Frame abgeleitet • Stellt Fenster des Hauptprogramms zur Verfügung • Bild kann geladen und der daraus erkannte Text gespeichert werden

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche •

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche • Fenster des net. Trainers • Funktionen zum Handling von Zeichensätzen und Trainieren sowie Speichern des Neuronalen Netzes

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche •

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche • Von wx. Widgets-Komponente wx. Dialog abgeleitet • Zweck ist das Anzeigen eines Informationsdialogs zum Projekt

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1.

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 2. b 2. a 1. b 1. c 1. d

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche •

3. Softwarearchitektur 3. 4 Beschreibung der Systemkomponenten 3. 4. 1 Schicht 2: Benutzungsoberfläche • Abgeleitet von wx. Widgets-Komponente wx. Text. Ctrl • Erzeugt Texteingabe-Element, welches lediglich ganzzahlige Eingaben im Intervall [0… 10000[ akzeptiert • Z. B. zur Eingabe der Lernepochen des Neuronalen Netzes

3. Softwarearchitektur 3. 5 Sequenzdiagramme 3. 5. 1 Verdeutlichung der Bildverarbeitungs-Anpassbarkeit

3. Softwarearchitektur 3. 5 Sequenzdiagramme 3. 5. 1 Verdeutlichung der Bildverarbeitungs-Anpassbarkeit

3. Softwarearchitektur 3. 5 Sequenzdiagramme 3. 5. 2 Verdeutlichung der Erkennung eines Zeichens aus

3. Softwarearchitektur 3. 5 Sequenzdiagramme 3. 5. 2 Verdeutlichung der Erkennung eines Zeichens aus einem Bild

4. Arbeitsaufteilung Matthias Jauernig • Programmierung Schicht 1: eigentliche Anwendung Michael Lahl • •

4. Arbeitsaufteilung Matthias Jauernig • Programmierung Schicht 1: eigentliche Anwendung Michael Lahl • • • Dokumentation • • Organisation Quelltextkommentierung Changelog Administrator der sourceforge. net. Projektseite • • • Schicht 2: Benutzungsoberfläche Unterstützend bei Schicht 1 Dokumentationen für Endbenutzer und Entwickler CVS-Verwalter Gestalter für die Webseite

Noch Fragen? ? ? ? ? ? ?

Noch Fragen? ? ? ? ? ? ?