Skip to content
Snippets Groups Projects
Commit 456c4a94 authored by Jan Wille's avatar Jan Wille
Browse files

korrektur Jasmin

parent a0887d7b
Branches
No related tags found
No related merge requests found
...@@ -42,3 +42,11 @@ ...@@ -42,3 +42,11 @@
{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDieser definiert eine Liste mit Bilddateien und dem darauf befindlichen Codes und testet dann, ob die main() mit diesen Parametern das erwartete Ergebnis liefert.\\E$"} {"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDieser definiert eine Liste mit Bilddateien und dem darauf befindlichen Codes und testet dann, ob die main() mit diesen Parametern das erwartete Ergebnis liefert.\\E$"}
{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QUm die Tests durchzuführen, kann direkt der Befehl pytest oder das Makefilerezept test verwendet werden.\\E$"} {"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QUm die Tests durchzuführen, kann direkt der Befehl pytest oder das Makefilerezept test verwendet werden.\\E$"}
{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDadurch wird pyinstaller mit den entsprechenden Optionen angestoßen und erzeugt den Unterordner dist/klarschrifterkennung.\\E$"} {"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDadurch wird pyinstaller mit den entsprechenden Optionen angestoßen und erzeugt den Unterordner dist/klarschrifterkennung.\\E$"}
{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QFür die Aufgabe relevante Hardware laut Pflichtenheft \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q 01 SIMATIC MV440 UR optischer Leser; Auflösung: 1600 x 1200 Pixel; für 1D/2D-Codelesen, Texterkennung und Objekterkennung; Bildfeld und Abstand: variabel; PoE; IP67 (mit 6GF3440-8AC1X); Lieferung: Lesegerät, CD-ROM und Kunststoff-Schutz-Tubus; (ohne: Kabel, Leuchte, Objektiv, Lizenzen) 02 MV440 Montageplatte Lesegerät; Material: Edelstahl (4 mm), vielfältig anwendbar, Befestigung: metrische Gewinde, Fotogewinde (1/4-Zoll, 2x mittig) BxHxT (mm) 80 x 80 x 60 03 Mini-Objektiv 6 mm, 1: 1,4 PENTAX C60636KP mit fester Brennweite, Blende und Fokus einstellbar D = 32 mm, L = 37,5 mm 04 D65-Objektiv-Schutz Metall-Glas, Schutzart IP67 für MV440-Geräte; Frontscheibe: Glas, Gehäuse: Metall enthält: Tubus, O-Ring und Schutzkappen (M12, M12, M16), Innen-Durchmesser: 57 mm, max. Objektivlänge: 57 mm geeignete Objektive (MLFB): z.B. 6GF9001-1BL01, ...-1BF01, ...-1BG01, ...-1BH01, ...-1BJ01 geeignete Leuchten (MLFB): 6GF3440-8DA1, ...-8DA2, ...-8DA11 BxHxT (mm) 65 x 65 x 60 10 SIMATIC IPC277E (Nanopanel PC); 7” Touch TFT; 2x 10/100/1000 MBit/s Ethernet RJ45; 1x Display-Port Grafik; 1x USB 3.0; 2x USB 2.0; 1x seriell (COM 1); CFAST-Slot; DC 24V Stromversorgung Celeron N2807 (2C/2T) 4 GB RAM WIN Embedded Standard 7 P SP1, englisch; 64 Bit 80 GB SSD ohne SIMATIC Software\\E$"}
{"rule":"FALSCHES_ANFUEHRUNGSZEICHEN","sentence":"^\\QFür die Aufgabe relevante Hardware laut Pflichtenheft \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q 01 SIMATIC MV440 UR optischer Leser; Auflösung: 1600 x 1200 Pixel; für 1D/2D-Codelesen, Texterkennung und Objekterkennung; Bildfeld und Abstand: variabel; PoE; IP67 (mit 6GF3440-8AC1X); Lieferung: Lesegerät, CD-ROM und Kunststoff-Schutz-Tubus; (ohne: Kabel, Leuchte, Objektiv, Lizenzen) 02 MV440 Montageplatte Lesegerät; Material: Edelstahl (4 mm), vielfältig anwendbar, Befestigung: metrische Gewinde, Fotogewinde (1/4-Zoll, 2x mittig) BxHxT (mm) 80 x 80 x 60 03 Mini-Objektiv 6 mm, 1: 1,4 PENTAX C60636KP mit fester Brennweite, Blende und Fokus einstellbar D = 32 mm, L = 37,5 mm 04 D65-Objektiv-Schutz Metall-Glas, Schutzart IP67 für MV440-Geräte; Frontscheibe: Glas, Gehäuse: Metall enthält: Tubus, O-Ring und Schutzkappen (M12, M12, M16), Innen-Durchmesser: 57 mm, max. Objektivlänge: 57 mm geeignete Objektive (MLFB): z.B. 6GF9001-1BL01, ...-1BF01, ...-1BG01, ...-1BH01, ...-1BJ01 geeignete Leuchten (MLFB): 6GF3440-8DA1, ...-8DA2, ...-8DA11 BxHxT (mm) 65 x 65 x 60 10 SIMATIC IPC277E (Nanopanel PC); 7” Touch TFT; 2x 10/100/1000 MBit/s Ethernet RJ45; 1x Display-Port Grafik; 1x USB 3.0; 2x USB 2.0; 1x seriell (COM 1); CFAST-Slot; DC 24V Stromversorgung Celeron N2807 (2C/2T) 4 GB RAM WIN Embedded Standard 7 P SP1, englisch; 64 Bit 80 GB SSD ohne SIMATIC Software\\E$"}
{"rule":"UPPERCASE_SENTENCE_START","sentence":"^\\Qblack Python Formatierungsprogramm.\\E$"}
{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDort befindet sich die Datei __main__.py als Haupteinstiegspunkt des Programms sowie alle weiten selbsterstellten Pakete.\\E$"}
{"rule":"DE_CASE","sentence":"^\\QErklärungen zur Projektstruktur Ordner/Dateiname Erklärung .venv/ Dieser Ordner wird beim Erzeugend des Virtual Enviroments (siehe \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q) erstellt.\\E$"}
{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QErklärungen zur Projektstruktur Ordner/Dateiname Erklärung .venv/ Dieser Ordner wird beim Erzeugend des Virtual Enviroments (siehe \\E(?:Dummy|Ina|Jimmy-)[0-9]+\\Q) erstellt.\\E$"}
{"rule":"GERMAN_SPELLER_RULE","sentence":"^\\QDie Kommandozeilenparameter werden direkt an die Funktion main() übergeben, die alternativ zur Nutzung über die Kommandozeile von anderen Python-Programmen importiert und aufgerufen werden kann.\\E$"}
{"rule":"DE_COMPOUND_COHERENCY","sentence":"^\\QDie Kommandozeilenparameter werden direkt an die Funktion main() übergeben, die alternativ zur Nutzung über die Kommandozeile von anderen Python-Programmen importiert und aufgerufen werden kann.\\E$"}
No preview for this file type
...@@ -32,11 +32,11 @@ ...@@ -32,11 +32,11 @@
\chapter{Problemstellung} \label{chap: problem} \chapter{Problemstellung} \label{chap: problem}
Eine Reihe von Container (im folgenden auch als \emph{Gebinde} bezeichnet) soll von einer Umladehalle an ihren Lagerort gebracht werden. Dabei Eine Reihe von Container (im Folgenden auch als \emph{Gebinde} bezeichnet) soll von einer Umladehalle an ihren Lagerort gebracht werden. Dabei
soll vor dem Aufnehmen auf ein Stapelfahrzeug sichergestellt werden, dass es sich tatsächlich um das richtige Gebinde handelt. soll vor dem Aufnehmen auf ein Stapelfahrzeug sichergestellt werden, dass es sich tatsächlich um das richtige Gebinde handelt.
Dazu sind alle Gebinde mit einem oder mehreren Codes in Klarschrift beschriftet, welche erkannt und verifiziert werden müssen. Wie genau diese Dazu sind alle Gebinde mit einem oder mehreren Codes in Klarschrift beschriftet, welche erkannt und verifiziert werden müssen. Wie genau diese
Erkennung stattfinden, ist im folgenden Dokumentiert. Erkennung stattfinden, ist im Folgenden Dokumentiert.
\section{Container Typen} \label{sec: container} \section{Container Typen} \label{sec: container}
...@@ -52,13 +52,13 @@ ...@@ -52,13 +52,13 @@
\begin{figure} \begin{figure}
\graphicspath{{svg/}} \graphicspath{{svg/}}
\subfigure[Rechteck-Gebinde]{ \subfigure[Rechteckgebinde]{
\def\svgwidth{0.45\textwidth} \def\svgwidth{0.45\textwidth}
\input{svg/container.pdf_tex} \input{svg/container.pdf_tex}
\label{subfig: rechteck-gebinde} \label{subfig: rechteck-gebinde}
} }
\hfill \hfill
\subfigure[Rund-Gebinde]{ \subfigure[Rundgebinde]{
\def\svgwidth{0.45\textwidth} \def\svgwidth{0.45\textwidth}
\input{svg/rundgebinde.pdf_tex} \input{svg/rundgebinde.pdf_tex}
\label{subfig: rund-gebinde} \label{subfig: rund-gebinde}
...@@ -69,13 +69,13 @@ ...@@ -69,13 +69,13 @@
\section{Hardware Voraussetzungen} \label{sec: hardware} \section{Hardware Voraussetzungen} \label{sec: hardware}
Im Pflichtenheft (\cite{pflichtenheft}) ist die bestellte Hardware aufgelistet. Für die hier behandelte Aufgabe sind aber nur einige Im Pflichtenheft \cite{pflichtenheft} ist die bestellte Hardware aufgelistet. Für die hier behandelte Aufgabe sind aber nur einige
wenige Komponenten relevant. Die genauen Bezeichnungen sind in \autoref{tab: hardware} aufgelistet, im Folgenden wird aber nur noch von wenige Komponenten relevant. Die genauen Bezeichnungen sind in \autoref{tab: hardware} aufgelistet, im Folgenden wird aber nur noch von
\emph{Kamera} und \emph{Panel-PC} gesprochen. \emph{Kamera} und \emph{Panel-PC} gesprochen.
\begin{table} \begin{table}
\renewcommand{\arraystretch}{1.2} \renewcommand{\arraystretch}{1.2}
\caption{Für die Aufgabe relevante Hardware laut Pflichtenheft (\cite{pflichtenheft})} \label{tab: hardware} \caption{Für die Aufgabe relevante Hardware laut Pflichtenheft \cite{pflichtenheft}} \label{tab: hardware}
\begin{tabular}{|l|p{.8\textwidth}|} \begin{tabular}{|l|p{.8\textwidth}|}
\hline \hline
01 & SIMATIC MV440 UR optischer Leser; Auflösung: 1600\,x\,1200 Pixel; für 1D/2D-Codelesen, Texterkennung und Objekterkennung; 01 & SIMATIC MV440 UR optischer Leser; Auflösung: 1600\,x\,1200 Pixel; für 1D/2D-Codelesen, Texterkennung und Objekterkennung;
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
Fotogewinde (1/4-Zoll, 2x mittig) BxHxT (mm) 80\,x\,80\,x\,60 \\\hline Fotogewinde (1/4-Zoll, 2x mittig) BxHxT (mm) 80\,x\,80\,x\,60 \\\hline
03 & Mini-Objektiv 6\,mm, 1: 1,4 PENTAX C60636KP mit fester Brennweite, Blende und Fokus einstellbar D = 32\,mm, L = 37,5\,mm \\\hline 03 & Mini-Objektiv 6\,mm, 1: 1,4 PENTAX C60636KP mit fester Brennweite, Blende und Fokus einstellbar D = 32\,mm, L = 37,5\,mm \\\hline
04 & D65-Objektiv-Schutz Metall-Glas, Schutzart IP67 für MV440-Geräte; Frontscheibe: Glas, Gehäuse: Metall enthält: Tubus, O-Ring 04 & D65-Objektiv-Schutz Metall-Glas, Schutzart IP67 für MV440-Geräte; Frontscheibe: Glas, Gehäuse: Metall enthält: Tubus, O-Ring
und Schutzkappen (M12, M12, M16), Innen-Durchmesser: 57\,mm max. Objektivlänge: 57\,mm geeignete Objektive (MLFB): z.B. und Schutzkappen (M12, M12, M16), Innen-Durchmesser: 57\,mm, max. Objektivlänge: 57\,mm geeignete Objektive (MLFB): z.B.
6GF9001-1BL01, ...-1BF01, ...-1BG01, ...-1BH01, ...-1BJ01 geeignete Leuchten (MLFB): 6GF3440-8DA1, ...-8DA2, ...-8DA11 BxHxT (mm) 6GF9001-1BL01, ...-1BF01, ...-1BG01, ...-1BH01, ...-1BJ01 geeignete Leuchten (MLFB): 6GF3440-8DA1, ...-8DA2, ...-8DA11 BxHxT (mm)
65\,x\,65\,x\,60 \\\hline 65\,x\,65\,x\,60 \\\hline
10 & SIMATIC IPC277E (Nanopanel PC); 7'' Touch TFT; 2x 10/100/1000 MBit/s Ethernet RJ45; 1x Display-Port Grafik; 1x USB 3.0; 2x 10 & SIMATIC IPC277E (Nanopanel PC); 7'' Touch TFT; 2x 10/100/1000 MBit/s Ethernet RJ45; 1x Display-Port Grafik; 1x USB 3.0; 2x
...@@ -102,11 +102,11 @@ ...@@ -102,11 +102,11 @@
Codes mit einer Liste von für diese Schicht gültigen Codes vergleichen. Dabei soll es keinen Unterschied machen, welcher Containertyp Codes mit einer Liste von für diese Schicht gültigen Codes vergleichen. Dabei soll es keinen Unterschied machen, welcher Containertyp
gerade vor dem Fahrzeug steht. Insbesondere die beliebige Rotation der Rundgebinde muss berücksichtigt werden. gerade vor dem Fahrzeug steht. Insbesondere die beliebige Rotation der Rundgebinde muss berücksichtigt werden.
Zusätzlich zu der hier behandelten Komponenten kann eine weitere Software vorausgesetzt werden. Diese Läuft auf dem Panel-PC und Zusätzlich zu der hier behandelten Komponenten kann eine weitere Software vorausgesetzt werden. Diese läuft auf dem Panel-PC und
präsentiert dem Fahrer eine grafische Oberfläche (\emph{GUI}). Am Anfang der Schicht erhält diese eine Liste mit Arbeitsaufträgen für die präsentiert dem Fahrer eine grafische Oberfläche (GUI). Am Anfang der Schicht erhält diese eine Liste mit Arbeitsaufträgen für die
Schicht inklusive der Codes der zu transportierenden Container. Diese Software stößt den Scanprozess an und erhält das Ergebnis, um es dem Schicht, inklusive der Codes der zu transportierenden Container. Diese Software stößt den Scanprozess an und erhält das Ergebnis, um es dem
Fahrer grafisch darzustellen. Sollte der Lesevorgang nur teilweise oder gar nicht funktionieren, soll der Fahrer so viele Fahrer grafisch darzustellen. Sollte der Lesevorgang nur teilweise oder gar nicht funktionieren, soll der Fahrer so viele
Teilinformationen wie möglichen erhalten und wird von der Zusatzsoftware zum manuellen Eingreifen aufgefordert. Teilinformationen wie möglich erhalten und wird von der Zusatzsoftware zum manuellen Eingreifen aufgefordert.
Außerdem soll die Möglichkeit bestehen ein Foto des Abstellortes aufzunehmen und zur Archivierung an den erfolgreichen Auftrag anzuhängen. Außerdem soll die Möglichkeit bestehen ein Foto des Abstellortes aufzunehmen und zur Archivierung an den erfolgreichen Auftrag anzuhängen.
...@@ -146,7 +146,7 @@ ...@@ -146,7 +146,7 @@
\begin{tabular}{l p{.6\textwidth}} \begin{tabular}{l p{.6\textwidth}}
\textit{Ordner/Dateiname} & \textit{Erklärung}\\ \textit{Ordner/Dateiname} & \textit{Erklärung}\\
\hline \hline
\texttt{.venv/} & Dieser Ordner wird beim erzeugend des \emph{Virtual Enviroments} (siehe \ref{sec: bibliotheken}) \texttt{.venv/} & Dieser Ordner wird beim Erzeugend des \emph{Virtual Enviroments} (siehe \ref{sec: bibliotheken})
erstellt. In ihn werden alle Bibliotheken für das venv installiert \\ erstellt. In ihn werden alle Bibliotheken für das venv installiert \\
\texttt{src/} & Hier befinden sich die eigentlichen Quellcodedateien \\ \texttt{src/} & Hier befinden sich die eigentlichen Quellcodedateien \\
\texttt{tesseract/} & Die binären Dateien für das Programm Tesseract befinden sich hier \\ \texttt{tesseract/} & Die binären Dateien für das Programm Tesseract befinden sich hier \\
...@@ -180,7 +180,7 @@ ...@@ -180,7 +180,7 @@
\multicolumn{2}{@{}l}{\textit{Pakete für die Entwicklung:}} \\ \multicolumn{2}{@{}l}{\textit{Pakete für die Entwicklung:}} \\
\texttt{pyinstaller} \cite{pypi:pyinstaller} & Eine Bibliothek zum Verpacken eines Pythonprogrammes in ein alleinstehendes \texttt{pyinstaller} \cite{pypi:pyinstaller} & Eine Bibliothek zum Verpacken eines Pythonprogrammes in ein alleinstehendes
Programm. \\ Programm. \\
\texttt{black} & Python formatierungs Programm. \\ \texttt{black} & Python Formatierungsprogramm. \\
\texttt{flake8} & Python Syntaxchecker. \\ \texttt{flake8} & Python Syntaxchecker. \\
\texttt{pytest} & Python Unittest Framework. Ermöglicht automatisiertes Testen. \\ \texttt{pytest} & Python Unittest Framework. Ermöglicht automatisiertes Testen. \\
\end{tabular} \end{tabular}
...@@ -200,16 +200,16 @@ ...@@ -200,16 +200,16 @@
pip install -r requirements.txt pip install -r requirements.txt
\end{lstlisting} \end{lstlisting}
Der Quellcode des Projektes befindet sich im Unterordner \lstinline{./src}. Dort befindet sich die Datei \lstinline{__main__.py} als Der Quellcode des Projektes befindet sich im Unterordner \lstinline{./src}. Dort befindet sich die Datei \lstinline{__main__.py}, als
Haupteinstiegspunktes des Programms sowie alle weiten selbsterstellten Pakete. Das Programm wird also mittels Haupteinstiegspunkt des Programms, sowie alle weiteren selbsterstellten Pakete. Das Programm wird also mittels
\lstinline{python src/__main__.py} gestartet (ein Beispiel ist im Makefilerezept \emph{run} gezeigt). \lstinline{python src/__main__.py} gestartet (ein Beispiel ist im Makefilerezept \emph{run} gezeigt).
\pagebreak \pagebreak
\section{Schnittstelle} \label{sec: interface} \section{Schnittstelle} \label{sec: interface}
Da das Softwaremodule von einem übergeordneten Programm aufgerufen wird, erhält es beim Start von diesem die Nötigen Informationen. Diese Da das Softwaremodule von einem übergeordneten Programm aufgerufen wird, erhält es beim Start von diesem die nötigen Informationen. Diese
werden einfach als Kommandozeilen Parameter übergeben. Das erste Argument muss ein Dateipfad zum zu analysierenden Bild sein, danach werden einfach als Kommandozeilenparameter übergeben. Das erste Argument muss ein Dateipfad zum zu analysierenden Bild sein, danach
folgen eine beliebig lange reihe an gültigen Codes. Über die Flag \lstinline{-h} kann außerdem eine Hilfe aufgerufen werden, die die folgen eine beliebig lange Reihe an gültigen Codes. Über die Flag \lstinline{-h} kann außerdem eine Hilfe aufgerufen werden, die die
Benutzung erklärt und nachfolgend abgedruckt ist. Benutzung erklärt und nachfolgend abgedruckt ist.
\begin{lstlisting}[language=,gobble=16] \begin{lstlisting}[language=,gobble=16]
...@@ -217,13 +217,13 @@ ...@@ -217,13 +217,13 @@
positional arguments: positional arguments:
imagepath Path to the image that should be processed imagepath Path to the image that should be processed
code valid codes to be compared againsted code valid codes to be compared against
options: options:
-h, --help show this help message and exit -h, --help show this help message and exit
\end{lstlisting} \end{lstlisting}
Die Kommandozeilen Parameter werden direkt an die Funktion \lstinline{main()} übergeben, die alternativ zu Nutzung über die Kommandozeile Die Kommandozeilenparameter werden direkt an die Funktion \lstinline{main()} übergeben, die alternativ zur Nutzung über die Kommandozeile
von anderen Python-Programmen importiert und aufgerufen werden kann. von anderen Python-Programmen importiert und aufgerufen werden kann.
\medskip \medskip
...@@ -241,8 +241,8 @@ ...@@ -241,8 +241,8 @@
zurückgibt. zurückgibt.
Der erste Filterschritt entfernt die sogenannten \emph{Salt\&Pepper} Störungen. Damit sind einzelne weiße oder schwarze Pixel gemeint, Der erste Filterschritt entfernt die sogenannten \emph{Salt\&Pepper} Störungen. Damit sind einzelne weiße oder schwarze Pixel gemeint,
die durch Fehler in einzelnen Transistoren des Kamerasensors entstehen. Diese werden durch einfache Mittelwertbildung mit allen die durch Fehler in einzelnen Transistoren des Kamerasensors oder im Kamerachip entstehen. Diese werden durch einfache
angrenzenden Pixeln eliminiert. \cite{opencv:smoothing} Mittelwertbildung mit allen angrenzenden Pixeln eliminiert. \cite{opencv:smoothing}
Danach wird ein bilateraler Filter mit einem $7\!\times\! 7$ Kernel auf das gesamte Bild angewandt. Dadurch werden Bildsektionen mit Danach wird ein bilateraler Filter mit einem $7\!\times\! 7$ Kernel auf das gesamte Bild angewandt. Dadurch werden Bildsektionen mit
annähernd identischen Farbwerten vereinheitlicht, gleichzeitig bleiben Kanten (also stark unterschiedliche Farbwerte bei annähernd identischen Farbwerten vereinheitlicht, gleichzeitig bleiben Kanten (also stark unterschiedliche Farbwerte bei
...@@ -427,7 +427,7 @@ ...@@ -427,7 +427,7 @@
\section{Verbesserungsmöglichkeiten} \section{Verbesserungsmöglichkeiten}
Grundsätzlich ist es nötig, die genauen Bedingungen vor Ort zu kennen. Damit lassen sich die Parameter des Programms anpassen und das Grundsätzlich ist es nötig, die genauen Bedingungen vor Ort zu kennen. Damit lassen sich die Parameter des Programms anpassen und das
Ergebnis weiter Verbessern. Ergebnis weiter verbessern.
Will man noch weiter gehen, wäre auch ein Ansatz mit einem Neuralen Netz denkbar. Dieser erfordert aber viel Rechenleistung, und da der Will man noch weiter gehen, wäre auch ein Ansatz mit einem Neuralen Netz denkbar. Dieser erfordert aber viel Rechenleistung, und da der
Panel-PC über keine Grafikkarte verfügt, ist dies nur bedingt umsetzbar. Panel-PC über keine Grafikkarte verfügt, ist dies nur bedingt umsetzbar.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment