Der Bildauswerteplatz der Zukunft ist ein Multimonitor System, das Bildauswerter bei ihrer Arbeit ideal unterstützen soll.
Die Aufklärungsergebnisse aus verschiedenen Systemen werden in die Coalition Shared Data (CSD) gespeichert.
Um diese Ergebnisse interaktiv am Multi-Display-Arbeitsplatz nutzen zu können, sollen die Programme des Arbeitsplatzes an die CSD angebunden werden.
Dies umfasst sowohl das Laden von Bildern aus der CSD, um sie auswerten zu können, als auch das Speichern der ausgewerteten Bilder.
Am Fraunhofer IOSB entsteht der Bildauswerteplatz der Zukunft.
Der Multi-Display-Arbeitsplatz besteht aus vier Displays, auf denen unterschiedliche Werkzeuge dargestellt werden die den Bildauswerter bei seiner Arbeit unterstützen.
Dies umfasst die Bilddarstellung von monoskopischen und stereoskopischen Bilder, die Anzeige von Metainformationen, Kartendarstellung bis hin zu Assistenzsystemen.
Hinzu kommt ein innovatives Bedienkonzept, welches nicht nur Tastatur und Maus umfasst, sondert auch neuartige Eingabemethoden wie Touch, Zeigegesten und die Kopfdrehung des Nutzers integriert.
Im Rahmen dieser Arbeit wird die Integration verschiedenen Werkzeuge stattfinden welche sich an einem tatsächlichen Arbeitsablauf eines Bildauswerters orientieren und ihn bei Routineaufgaben unterstützt.
Die direkte Anbindung an die Coalition Shared Data Server, welche das Abfragen und einstellen von Aufklärungsdaten aller beteiligten System ermöglicht, ist bisher nicht Teil des Systems.
Aus dieser Datenbank sollen die Aufklärungsaufträge abgerufen und nach erfolgreicher Auswertung die Ergebnisse eingestellt werden.
@@ -23,7 +23,7 @@ Der untere flach liegende Bildschirm ist ein Touch-Bildschirm. Er kann z.B. verw
\subsection{Stereo-Bildauswerter}
Der Stereo-Bildauswerter (SBA) ist ein Programm zur Annotation von 2D- und 3D-Bildern.
Die Annotation umfasst klassische Einzeichnungen wie Text, Linien, Quadrate und Freihand-Einzeichnungen.
Die Annotation umfasst klassische Einzeichnungen von Bildverarbeitungsprogrammen wie Text, Linien, Quadrate und Freihand-Einzeichnungen.
Der Auswerter kann außerdem Geodaten hinzufügen, wenn diese nicht im Bild enthalten sind.
Aus diesen Daten kann zum Beispiel ein Kompass oder ein Maßstab errechnet und eingezeichnet werden.
Anschließend lässt sich das annotierte Bild mit den Einzeichnungen exportieren.
...
...
@@ -41,10 +41,11 @@ Die Software unterstützt die Benutzung durch Touch eingeben und deshalb eignet
\subsection{\rec}
\todo{überarbeiten}
\rec ist eine Objekt-Identifikations-Software, die dem Bildauswerter unterstützt, Objekte schneller zu erkennen (siehe \cite{rec}).
\rec ist eine Objekt-Identifikations-Software, die dem Bildauswerter unterstützt, Objekte zu erkennen (siehe \cite{rec}).
Die Aufgabe eines Bildauswerters ist die Erkennung von Objekten anhand von charakteristischen Bildmerkmalen.
Bisher wurde diese Aufgebe von speziell ausgebildeten Bildauswertern durchgeführt, die ihr Wissen über die Objekte aus Handbüchern erlernt hatten.
Die Erkennungsassistenz ermöglicht dem Bildauswerter, das Objekt durch Merkmale zu beschreiben und zeigt mögliche Kandidaten an. % Verstehe ich nicht. Wer muss jetzt hier was beschreiben und warum?
Die speziell ausgebildeten Bildauswertern nutzen hierfür das Wissen aus Handbüchern um von den Merkmalen auf das genaue Objekt zu schließen.
Die Erkennungsassistenz ermöglicht dem Bildauswerter, das Objekt durch Merkmale zu beschreiben.
Anhand dieser Merkmale werden alle mögliche Kandidaten angezeigt.
Für jeden Kandidat steht ein detaillierter Steckbrief zur Verfügung.
Als erstes betrachten wird das Laden von Bilden im SBA.
Bisher war im SAB nur das Laden von der Festplatte verfügbar.
Im Folgenden wird die Anbindung an die CSD beschreiben die in den SBA integriert wurde.
\subsection{CSD-Task erstellen}
Die Request UI des CSDPlugin soll wiederverwendbar werden.
Die Request UI des CSDPlugin soll im SBA wiederverwendet werden.
Hierfür wurde eine gemeinsame Schnittstelle angelegt (siehe Abbildung \ref{figure:klassenRequest}).
Diese Schnittstelle wird aufgerufen, sobald der Nutzer einen Task absendet und bei der Auswahl einer Region.
Das CSD Plugin des Geoviewers implementiert diese Schnittstelle.
...
...
@@ -14,7 +17,7 @@ Im SBA wird das Interface der CSDRequestAction implementiert.
Der Aufruf der Region wird falls möglich an das CSD-Plugin weitergeleitet.
Die Middleware verfügt neben Nachrichten und Anfragen an das Backend über DirectRequests zwischen den an die Middleware angeschlossenen Komponenten.
Jede verbundene Komponente verfügt über eine eindeutige ID.
Durch diese ID erfolgt die Zuordnung des DirectRequests zum jeweiligen Empfänger und den dieser mit einer DirectResponse beantwortet. % Stimmt der Satz noch nach Korrektur?
Durch diese ID erfolgt die Zuordnung des DirectRequests zum jeweiligen Empfänger und den dieser mit einer DirectResponse beantwortet.
Der SBA nutzt diese DirectRequests, um eine Region auf dem Geoviewer auswählen zu lassen.
Das Problem hierbei ist, dass der Nutzer beliebig lange zum Einzeichnen brauchen kann und die Antwort eines DirectRequest innerhalb des Timeouts erfolgen muss.
Deshalb antwortet der Geoviewer sofort auf den Request und lässt den Nutzer Einzeichnungen vornehmen.
...
...
@@ -134,7 +137,7 @@ Dieser Ordnerpfad wird aus der Konfigurationsdatei gelesen.
Der Nutzer muss also nicht jedes mal manuell den Pfad heraussuchen, sondern das Bild wird direkt an den richtigen Ort gelegt.
\subsection{Export in CSD}
Der Export in die CSD erbt auch von der ExportAction.
Der Export in die CSD erbt auch von der ExportAction. \todo Bild referenzieren
Zunächst muss der Nutzer alle nötigen Informationen zum Speichern in die CSD eingeben.
Die Informationen werden auf Richtigkeit und Notwendigkeit überprüft.
Wurde das editierte Bild aus der CSD geladen, so wird die Oberfläche mit den Informationen aus dem geladenen XML-File ausgefüllt.
...
...
@@ -162,25 +165,8 @@ Die Action in orange ist die initiale Aktivierung des Nutzers.
Die roten Pfeile zeigen die Abfolge der aufgerufenen Programmteile.
In grün sind die Komponenten der isaac.lib und der CSD dargestellt.
Der ``upload'' des Bildes erfolgt, indem sich der Server die Datei vom Client herunterlädt.}
\label{figure:klassenResult}
% LaTeX Warning: Label `figure:klassenResult' multiply defined. --> Weiter oben in Kapitel 3 --> Das dürfte Probleme bei Verweisen geben
\label{figure:strukturWriting}
\end{figure}
\section{Probleme}
\subsection{Maven und nicht Maven Bibliotheken}
Alle Dependencys in den bestehenden Projekten werden durch Maven (\cite{MVN}) aufgelöst.
Maven ist ein Build-Management Tool das auch die Dependency verwaltung übernimmt.
Die isaac.lib und der nisf-creator standen zum Beginn des Projektes nicht in einem Maven Repository zur verfügung.
Damit weiterhin keine lokalen Bibliotheken iengebunden werden müssen wurden beide Bibliotheken und deren Abhängikeiten in das Repository eingefügt.
Dazu musste zunächst manuell die Abhängikieten deir einzelnen Bibliotheklen aufgelöäst werden bevor diese in das Project Object Model (POM) der einzelnen Bibliotheken eingetragen werden konnte.
\subsection{CSD upload}
In der Implementierung sind beim hochladen des Bildes einige Probleme aufgetreten.
Genauer gesagt wird der CSD mitgeteilt wo das Bild herunterzuladen ist und das kann zu Problemen führen.
Zum Einen ist darauf zu achten, dass die Infrastruktur erlaubt, dass der Server eine Rückverbindung zum Client aufbaut.
Ist diese Funktionalität durch eine Firewall blockiert, kann das Bild nicht übertragen werden.
Zum Anderen überträgt die Isaac.lib nicht die IP-Adresse des Clients als Download-URL, sondern denn Domain Namen des Clients.
Kann der Server den Namen nicht auflösen, kann der Server das Bild ebenfalls nicht herunterladen.
In diesem Kapitel befassen wir uns mit der Qualität und der Absturzsicherheit der implementierten Features.
In diesem Kapitel wird zunächst auf einige Probleme in der Implementierung eingegangen und anschließend die Code Qualität betrachtet.
\section{Probleme}
\subsection{Maven und nicht Maven Bibliotheken}
Alle Dependencies in den bestehenden Projekten werden durch Maven (\cite{MVN}) aufgelöst.
Maven ist ein Build-Management Tool das auch die Dependency Verwaltung übernimmt.
Die isaac.lib und der nisf-creator standen zum Beginn des Projektes nicht in einem Maven Repository zur Verfügung.
Damit weiterhin keine lokalen Bibliotheken eingebunden werden müssen wurden beide Bibliotheken und deren Abhängigkeiten in das Repository eingefügt.
Dazu musste zunächst manuell die Abhängigkeiten der einzelnen Bibliotheken aufgelöst werden bevor diese in das Project Object Model (POM) der einzelnen Bibliotheken eingetragen werden kann.
\subsection{CSD upload}
In der Implementierung sind beim hochladen des Bildes einige Probleme aufgetreten.
Genauer gesagt wird der CSD mitgeteilt wo das Bild herunterzuladen ist und das kann zu Problemen führen.\todo{Bild}
Ein Problem das hierbei auftreten kann, das der Port freigegeben sein muss.
Um einen Port freizugeben braucht man Administratorrechte, die nicht jeder Nutzer hat.
Außerdem ist darauf zu achten, dass die Infrastruktur erlaubt, dass der Server eine Rückverbindung zum Client aufbaut.
Steht der Server in einem andern Netz als der Client kann diese Funktionalität durch eine Firewall blockiert werden, und das Bild lässt sich nicht übertragen.
Die Isaac.lib überträgt nicht die IP-Adresse des Clients als Download-URL, sondern denn Domain Namen des Clients.
Kann der Server den Namen nicht auflösen, kann der Server das Bild ebenfalls nicht herunterladen.
\section{Code Qualität}
\subsection{Testing}
Es wurden keine Testcases geschrieben.
Um die Anbindung an die CSD zu testen wären umfangreiche Integrationstest nötig.
Diese gestalten sich als schwierig da keine CSD Server nur zum Testen zur Verfügung steht.
Alle Komponenten wurden manuell testet um die Funktionalität zu überprüfen.
Das bedeutet beim Parsen der XML Dokumetne im Result Handler der CSDCommons Bibliothek wurde für jedes ausgelesen Feld die Korrektheit des Ergebnisses überprüft.
Es wurde daruf geachtet das einige Felder optional sind und das das Fehlend dieser Komponenten nicht zu Programmabstürzen führt.
\section{Find Bugs}
Um in der Benutzung keine Programmabstürze durch Programmierfehler zu erhalten, wurde der Code mit Findbugs \cite{FB} überprüft.
Findbugs untersucht den Java bytecode nach Bug Patterns.
Vermutliche Fehler z.B. Nullpointer oder auch schlechter Stil wie == Operator anstelle der equals Methode wird von der Bibliothek erkannt und dem Nutzer zur Verbesserung vorgeschlagen.
In der Implementierung wurden alle Anmerkungen von Findbugs behoben.
Lediglich die Fehler in der JHotDraw GUI Bibliothek, auf dem der SBA aufbaut, wurden nicht behoben.
Es ist ein exaktes Verständnis des gesamten JHotDraw Frameworks notwendig, um z.B. die gefundenen Bitmaskenfehler zu beheben.
Das Parsen der XML Dokumente im ResultHandler der CSDCommons Bibliothek ist besonders intensiv überprüft worden.
Viele Felder des XML Dokuments der CSD sind optional und werden im CSDAdapter und im SBA ausgelesen.
Es muss also immer darauf geachtet werden, ob die Informationen vorhanden sind und auch verwendet werden können.
In d
Viele Felder sind optional und werden versucht im CSDAdapter und im SBA ausgelesen.
Es muss also immer darauf geachtet werden,das Informationen vorhanden sind und auch verwendet werden können.
Bei der Nutzereingabe zum Schreiben in die CSD wird die Richtigkeit und Notwendigkeit der einzelnen Felder direkt bei der Eingabe überprüft.
Bei der Nutzereingabe zum Schreiben in die CSD wird die Richtigkeit und Notwendigkeit der einzelnen Felder direkt bei der Eingabe überprüft.
Übergibt man ein unvollständiges XML Dokument an die Isaac.lib, so wirft diese Fehler.
Um das zu vermeiden, kann der Nutzer die Anfrage nicht absenden, bevor alle Eingaben korrekt erfolgt sind.
Auch hier wurde für jedes Feld überprüft ob die Eingabe den Richtlinien der CSD entspricht.
\section{Testing}
Die Testcases, die im CSDAdapters vorhanden waren, sind in die aktuelle Implementierung übertragen worden.
Zum Testen werden einige XML Dokumente vom Dateisystem geladen und an den ResultHandler übergeben.
\todo{testcases überprüfen}
Das Parsen des XML Dokuments im SBA und im CSDAdapter wird fast komplett durch die abstrakte Implementierung in der CSDCommons Bibliothek übernommen.
Dieser Teil des Codes wird dementsprechend in den Testcases des CSDADapters
und ist hauptsächlich im allgemeinen ResultHandler der CSDCommons Bibliothek enthalten. % Dieser Satz ist verdreht.
Dieser Test ist also durch den Test des CSDAdapters abgedeckt. Deshalb wurden für den SBA keine eigenen Testcases erstellt.
\todo{überhaupt testing als Kapitel?}
\subsection{Find Bugs}
Um in der Benutzung keine Programmabstürze durch Programmierfehler zu erhalten, wurde der Code mit Findbugs \cite{FB} überprüft.
Findbugs untersucht den Java bytecode nach Bug Patterns.
Vermutliche Fehler z.B. Nullpointer oder auch schlechter Stil wie == Operator anstelle der equals Methode wird von der Bibliothek erkannt und dem Nutzer zur Verbesserung vorgeschlagen.
In der Implementierung wurden alle Anmerkungen von Findbugs behoben.
Lediglich die Fehler in der JHotDraw GUI Bibliothek, auf dem der SBA aufbaut, wurden nicht behoben.
Es ist ein exaktes Verständnis des gesamten JHotDraw Frameworks notwendig, um z.B. die gefundenen Bitmaskenfehler zu beheben.