Initial commit with project files

This commit is contained in:
2025-06-27 14:34:11 +02:00
commit 7ea3207e63
310 changed files with 9331 additions and 0 deletions

Binary file not shown.

45
Abgabe/DigBV_Aufgabe.aux Normal file
View File

@@ -0,0 +1,45 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\gdef\pagesLTS@loaded{p@gesLTSnotlo@ded}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\catcode `"\active
\newlabel{pagesLTS.0}{{}{1}{}{page.1}{}}
\newlabel{pagesLTS.0.local}{{}{1}{}{page.1}{}}
\providecommand \oddpage@label [2]{}
\reset@newl@bel
\select@language{ngerman}
\@writefile{toc}{\select@language{ngerman}}
\@writefile{lof}{\select@language{ngerman}}
\@writefile{lot}{\select@language{ngerman}}
\@input{sections/overview.aux}
\@input{sections/a.aux}
\@input{sections/a1.aux}
\@input{sections/a2.aux}
\@input{sections/a3.aux}
\@input{sections/conclusion.aux}
\newlabel{LastPage}{{}{17}{}{page.17}{}}
\pagesLTS@ifcounter{pagesLTS.arabic.1.local.cnt}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\gdef\pagesLTS.lastpage{17}
\setcounter{pagesLTS.pagenr}{17}
\newlabel{VeryLastPage}{{}{17}{}{page.17}{}}
\newlabel{pagesLTS.arabic.1}{{}{17}{}{page.17}{}}
\newlabel{pagesLTS.arabic.1.local}{{}{17}{}{page.17}{}}
\newlabel{pagesLTS.arabic}{{}{17}{}{page.17}{}}
\newlabel{pagesLTS.arabic.local}{{}{17}{}{page.17}{}}
\newlabel{LastPages}{{}{17}{}{page.17}{}}

1031
Abgabe/DigBV_Aufgabe.log Normal file

File diff suppressed because it is too large Load Diff

15
Abgabe/DigBV_Aufgabe.out Normal file
View File

@@ -0,0 +1,15 @@
\BOOKMARK [1][-]{section.1}{Einleitung}{}% 1
\BOOKMARK [2][-]{subsection.1.1}{Vorbereitung}{section.1}% 2
\BOOKMARK [2][-]{subsection.1.2}{Programmierumgebung}{section.1}% 3
\BOOKMARK [1][-]{section.2}{Aufgabe}{}% 4
\BOOKMARK [2][-]{subsection.2.1}{Vorverarbeitung}{section.2}% 5
\BOOKMARK [3][-]{subsubsection.2.1.1}{Rauschreduktion}{subsection.2.1}% 6
\BOOKMARK [3][-]{subsubsection.2.1.2}{Histogramm Spreizung}{subsection.2.1}% 7
\BOOKMARK [2][-]{subsection.2.2}{Farbanalyse}{section.2}% 8
\BOOKMARK [3][-]{subsubsection.2.2.1}{RGB}{subsection.2.2}% 9
\BOOKMARK [3][-]{subsubsection.2.2.2}{HSV}{subsection.2.2}% 10
\BOOKMARK [2][-]{subsection.2.3}{Segmentierung und Bildmodifizierung}{section.2}% 11
\BOOKMARK [3][-]{subsubsection.2.3.1}{Statisches Schwellwertverfahren}{subsection.2.3}% 12
\BOOKMARK [3][-]{subsubsection.2.3.2}{Bin\344rmaske}{subsection.2.3}% 13
\BOOKMARK [3][-]{subsubsection.2.3.3}{Bildmodifizierung}{subsection.2.3}% 14
\BOOKMARK [1][-]{section.3}{Zusammenfassung}{}% 15

BIN
Abgabe/DigBV_Aufgabe.pdf Normal file

Binary file not shown.

Binary file not shown.

87
Abgabe/DigBV_Aufgabe.tex Normal file
View File

@@ -0,0 +1,87 @@
\documentclass[class=article, crop=false]{standalone}
\usepackage{standalone}
\usepackage{labor}
\usepackage{pageslts}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{listings}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
% Verwendung von Umlauten
\usepackage[ngerman]{babel}
% Auf Windows folgendes Paket verwenden
%\usepackage[ansinew]{inputenc}
% Auf Mac folgendes Paket verwenden
%\usepackage[applemac]{inputenc}
\lstset{
language=python,
basicstyle=\footnotesize\ttfamily,
%basicstyle=\ttfamily
numbers=left,
stepnumber=1,
tabsize=4,
frame=lines,
}
\renewcommand{\lstlistingname}{Code}% Listing -> Algorithm
\begin{document}
\pagenumbering{arabic}
\newpage
\thispagestyle{empty}
\begin{center}
\normalfont \sffamily
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}lr@{}}
{INSTITUT F\"{U}R } & {\small Appelstra\ss e 9A} \\
{INFORMATIONSVERARBEITUNG} & {\small 30167 Hannover} \\
{\small LEIBNIZ UNIVERSIT\"{A}T HANNOVER} &
\end{tabular*}
\end{center}
\vspace{1.5cm}
\begin{center}
{\Large Labor zur Vorlesung\\[.2cm] {\normalfont\bfseries Digitale Bildverarbeitung}}
\end{center}
%\addcontentsline{toc}{}{Titelblatt}
\vspace{2cm}
\begin{tabular}{@{}p{4cm}l}
Datum: & XX.XX.XXXX \\
Uhrzeit: & XX:XX \\
Anzahl der Bl\"{a}tter: & \lastpageref*{LastPages} (einschlie\ss{}lich Deckblatt)
\end{tabular}
\vspace{3cm}
\begin{tabular}{@{}p{4cm} l }
{\normalfont\bfseries Name:} & {\normalfont\bfseries Matrikelnummer:}\\
$\underline{\hspace{5cm}}$ \hspace{0.5cm}& $\underline{\hspace{5cm}}$ \\
$\underline{\hspace{5cm}}$ \hspace{0.5cm}& $\underline{\hspace{5cm}}$\\
$\underline{\hspace{5cm}}$ \hspace{0.5cm}& $\underline{\hspace{5cm}}$\\
\end{tabular}
\vspace{2.0cm}
Die Bearbeitung der Aufgaben erfolgt selbstst<73>ndig in Kleingruppen. Alle Gruppenmitglieder sollen Arbeitsaufwand in gleicher Gr<47><72>enordnung einbringen. Betrugsversuche werden geahndet.
\tableofcontents
\include{sections/overview}
\include{sections/a}
\include{sections/a1}
\include{sections/a2}
\include{sections/a3}
\include{sections/conclusion}
\end{document}

16
Abgabe/DigBV_Aufgabe.toc Normal file
View File

@@ -0,0 +1,16 @@
\select@language {ngerman}
\contentsline {section}{\numberline {1}Einleitung}{3}{section.1}
\contentsline {subsection}{\numberline {1.1}Vorbereitung}{4}{subsection.1.1}
\contentsline {subsection}{\numberline {1.2}Programmierumgebung}{5}{subsection.1.2}
\contentsline {section}{\numberline {2}Aufgabe}{8}{section.2}
\contentsline {subsection}{\numberline {2.1}Vorverarbeitung}{10}{subsection.2.1}
\contentsline {subsubsection}{\numberline {2.1.1}Rauschreduktion}{10}{subsubsection.2.1.1}
\contentsline {subsubsection}{\numberline {2.1.2}Histogramm Spreizung}{11}{subsubsection.2.1.2}
\contentsline {subsection}{\numberline {2.2}Farbanalyse}{12}{subsection.2.2}
\contentsline {subsubsection}{\numberline {2.2.1}RGB}{12}{subsubsection.2.2.1}
\contentsline {subsubsection}{\numberline {2.2.2}HSV}{13}{subsubsection.2.2.2}
\contentsline {subsection}{\numberline {2.3}Segmentierung und Bildmodifizierung}{14}{subsection.2.3}
\contentsline {subsubsection}{\numberline {2.3.1}Statisches Schwellwertverfahren}{14}{subsubsection.2.3.1}
\contentsline {subsubsection}{\numberline {2.3.2}Bin\"armaske}{15}{subsubsection.2.3.2}
\contentsline {subsubsection}{\numberline {2.3.3}Bildmodifizierung}{15}{subsubsection.2.3.3}
\contentsline {section}{\numberline {3}Zusammenfassung}{17}{section.3}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Abgabe/fig/Run-Configs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
Abgabe/fig/harry1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
Abgabe/fig/harry2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
Abgabe/fig/harry2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
Abgabe/fig/pycharm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

20
Abgabe/labor.sty Normal file
View File

@@ -0,0 +1,20 @@
\renewcommand{\sfdefault}{phv}
\renewcommand{\rmdefault}{ptm}
\renewcommand{\ttdefault}{pcr}
%
% Abstand zwischen den Absaetzen auf 1.5 Zeilen setzen
%
\setlength{\parskip}{1.5ex}
%
% Einzug am Absatzanfang auf 0 setzen.
%
\setlength{\parindent}{0em}
% Umbruch
\tolerance=2000
\emergencystretch=20pt
\renewcommand{\floatpagefraction}{1.0}
\renewcommand{\topfraction}{1.0}
\renewcommand{\bottomfraction}{1.0}
\addtocounter{secnumdepth}{1}
\addtocounter{tocdepth}{1}

39
Abgabe/sections/a.aux Normal file
View File

@@ -0,0 +1,39 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {section}{\numberline {2}Aufgabe}{8}{section.2}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Bildverarbeitungs-Pipeline}}{8}{figure.5}}
\newlabel{fig:skizzepipeline}{{5}{8}{Bildverarbeitungs-Pipeline}{figure.5}{}}
\@setckpt{sections/a}{
\setcounter{page}{10}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{2}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{10}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{4}
\setcounter{lstnumber}{10}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{section@level}{1}
\setcounter{lstlisting}{2}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{10}
}

648
Abgabe/sections/a.log Normal file
View File

@@ -0,0 +1,648 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/TeX Live for SUSE Linux) (preloaded format=pdflatex 2020.8.24) 6 APR 2021 11:25
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**a.tex
(./a.tex
LaTeX2e <2017-04-15>
Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
! Undefined control sequence.
l.2 \section
{Aufgabe}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2 \section{A
ufgabe}
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
Missing character: There is no A in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no Z in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
! Undefined control sequence.
l.3 Das Ziel ist die Detektion des \glqq
magischen Umhangs\grqq\ sowie das k...
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
Missing character: There is no m in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no U in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no s in font nullfont!
! Undefined control sequence.
l.3 ... Detektion des \glqq magischen Umhangs\grqq
\ sowie das künstliche En...
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
Missing character: There is no s in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no w in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no <20> in font nullfont!
Missing character: There is no <20> in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no E in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no O in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no j in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no V in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no . in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no <20> in font nullfont!
Missing character: There is no <20> in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no w in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no L in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no A in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no : in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no V in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no v in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no , in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no y in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no S in font nullfont!
Missing character: There is no z in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no S in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no U in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no . in font nullfont!
Missing character: There is no E in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no S in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no z in font nullfont!
Missing character: There is no z in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no v in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no - in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no A in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
! Undefined control sequence.
<write> ... `fig:skizzepipeline' on page \thepage
\space undefined\on@line .
l.3 ...e ist in Abbildung \ref{fig:skizzepipeline}
dargestellt.
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
LaTeX Warning: Reference `fig:skizzepipeline' on page undefined on input line
3.
Missing character: There is no d in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no . in font nullfont!
Overfull \hbox (20.0pt too wide) in paragraph at lines 2--4
[]
[]
Overfull \hbox (10.86105pt too wide) in paragraph at lines 2--4
[]
[]
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.8 I
m folgenden finden Sie detaillierte Beschreibungen der Arbeitspakete. B...
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
Missing character: There is no I in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no S in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no A in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no . in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no w in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no S in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no v in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no S in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no . in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no C in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no A in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no . in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no w in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no l in font nullfont!
Missing character: There is no f in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no L in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no x in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no k in font nullfont!
Missing character: There is no u in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no , in font nullfont!
Missing character: There is no o in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no i in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no p in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no r in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no m in font nullfont!
Missing character: There is no P in font nullfont!
Missing character: There is no D in font nullfont!
Missing character: There is no F in font nullfont!
Missing character: There is no g in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no c in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no h in font nullfont!
Missing character: There is no e in font nullfont!
Missing character: There is no n in font nullfont!
Missing character: There is no . in font nullfont!
Overfull \hbox (20.0pt too wide) in paragraph at lines 8--9
[]
[]
)
! Emergency stop.
<*> a.tex
*** (job aborted, no legal \end found)
Here is how much of TeX's memory you used:
9 strings out of 492995
172 string characters out of 6141053
54074 words of memory out of 5000000
3661 multiletter control sequences out of 15000+600000
3948 words of font info for 15 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
19i,2n,19p,393b,89s stack positions out of 5000i,500n,10000p,200000b,80000s
! ==> Fatal error occurred, no output PDF file produced!

65
Abgabe/sections/a.tex Normal file
View File

@@ -0,0 +1,65 @@
\newpage
\section{Aufgabe}
Das Ziel ist die Detektion des \glqq magischen Umhangs\grqq\ sowie das k\"unstliche Entfernen eines Objektes im Vordergrund. Daf\"ur werden in diesem Labor drei Arbeitspakete bearbeitet: Die Vorverarbeitung, die Farbanalyse der Szene und die Segmentierung des Umhangs. Eine Skizze der Bildverarbeitungs-Pipeline ist in Abbildung \ref{fig:skizzepipeline} dargestellt.
\begin{figure}
\centering
\tikzstyle{decision} = [diamond, draw, fill=blue!20, text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
\tikzstyle{block} = [rectangle, draw, fill=blue!20, text width=8em, text centered, rounded corners, minimum height=4em]
\tikzstyle{line} = [draw, -latex']
\tikzstyle{cloud} = [draw, ellipse,fill=red!20, node distance=4cm, minimum height=2em]
\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [block, fill=green!20] (Rauschreduktion) {Rauschreduktion};
\node [block, fill=green!20, below of=Rauschreduktion] (Histogramm) {Histogramm Spreizung};
\node [block, fill=yellow!20, below of=Histogramm] (Farbanalyse) {Farbanalyse};
\node [block, fill=blue!20, below of=Farbanalyse] (Schwellwertverfahren) {Schwellwert-verfahren};
\node [block, fill=blue!20, below of=Schwellwertverfahren] (Maske) {Bin\"armasken-Optimierung};
\node [block, fill=blue!20, below of=Maske] (Bildmodifizierung) {Bildmodifizierung};
\node [cloud, left of=Rauschreduktion] (Webcam) {Webcam};
\node [cloud,right of=Bildmodifizierung] (Output1) {Screen};
\node [cloud,below of=Output1, node distance=1.5cm] (Output2) {Virtuelle Kamera};
\node [cloud,left of=Bildmodifizierung] (Input2) {Maus-Events};
%\node [cloud, left of=init] (expert) {expert};
%\node [cloud, right of=init] (system) {system};
%\node [block, below of=init] (identify) {identify candidate models};
%\node [block, below of=identify] (evaluate) {evaluate candidate models};
%\node [block, left of=evaluate, node distance=3cm] (update) {update model};
%\node [decision, below of=evaluate] (decide) {is best candidate better?};
%\node [block, below of=decide, node distance=3cm] (stop) {stop};
% Draw edges
\path [line] (Webcam) -- (Rauschreduktion);
\path [line] (Rauschreduktion) -- (Histogramm);
\path [line] (Histogramm) -- (Farbanalyse);
\path [line] (Farbanalyse) -- (Schwellwertverfahren);
\path [line] (Schwellwertverfahren) -- (Maske);
\path [line] (Maske) -- (Bildmodifizierung);
\path [line] (Bildmodifizierung) -- (Output1);
\path [line,dashed] (Bildmodifizierung) -- (Output2);
\path [line] (Input2) -- (Bildmodifizierung);
%\path [line] (identify) -- (evaluate);
%\path [line] (evaluate) -- (decide);
%\path [line] (decide) -| node [near start] {yes} (update);
%\path [line] (update) |- (identify);
%\path [line] (decide) -- node {no}(stop);
%\path [line,dashed] (expert) -- (init);
%path [line,dashed] (system) -- (init);
%\path [line,dashed] (system) |- (evaluate);
\end{tikzpicture}
\caption{Bildverarbeitungs-Pipeline}
\label{fig:skizzepipeline}
\end{figure}
Die Szene f\"ur diesen Versuch wird durch Sie definiert: W"ahlen Sie sich eine eint"onige, m"oglichst monotone Umgebung als Szene f\"ur diesen Versuch. Der \glqq magische Umhang\grqq\ wird dann durch einen einfarbigen Gegenstand (es muss kein Umhang sein!) realisiert. Achten Sie darauf, dass sich der Umhang farblich von der Szene unterscheidet. Je st"arker der Kontrast zwischen \glqq Umhang\grqq\ und Szene ist, desto besser l"asst sich dieser Versuch durchf"uhren.
Im folgenden finden Sie detaillierte Beschreibungen der Arbeitspakete. Bitte beantworten Sie die vorhandenen Fragen und erstellen Sie ggf.\ geforderten Code oder Abbildungen. Die Bearbeitung der Fragen kann entweder innerhalb dieses Latex Dokuments, oder in einem separatem PDF geschehen.

44
Abgabe/sections/a1.aux Normal file
View File

@@ -0,0 +1,44 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Vorverarbeitung}{10}{subsection.2.1}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Rauschreduktion}{10}{subsubsection.2.1.1}}
\newlabel{lst:code1}{{3}{10}{Vorverarbeitung, Aufgabe 1}{lstlisting.3}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Vorverarbeitung, Aufgabe 1}{10}{lstlisting.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Histogramm Spreizung}{11}{subsubsection.2.1.2}}
\newlabel{equ:histogramm-equalization}{{3}{11}{Histogramm Spreizung}{equation.2.3}{}}
\newlabel{lst:code1}{{4}{11}{Vorverarbeitung, Aufgabe 4}{lstlisting.4}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}Vorverarbeitung, Aufgabe 4}{11}{lstlisting.4}}
\@setckpt{sections/a1}{
\setcounter{page}{12}
\setcounter{equation}{3}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{2}
\setcounter{subsection}{1}
\setcounter{subsubsection}{2}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{12}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{7}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{section@level}{3}
\setcounter{lstlisting}{4}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{12}
}

63
Abgabe/sections/a1.tex Normal file
View File

@@ -0,0 +1,63 @@
\newpage
\subsection{Vorverarbeitung}
Um die folgende Verarbeitung der Bilder zu vereinfachen und robuster zu gestalten, sollen Sie den Videostream mit einem Preprocessing vorverarbeiten.
Binden Sie daf<61>r die Datei \textit{./CV-App/algorithms/invis\_cloak.py} in den Algorithmus ein, wie in der Einleitung beschrieben.
Die folgenden Aufgabenstellungen sind in den daf<61>r vorgesehenen Funktionen zu bearbeiten.
%Erstellen Sie daf<61>r einen neuen Algorithmus, wie in der Einleitung beschrieben.
\subsubsection{Rauschreduktion}
Jeder Farbwert eines Pixels $I_k(x, y) \in \{0, \ldots, 255 \}$ mit $k\in \{R, G, B\}$ wird auf dem Kamerasensor durch einen elektrischen Halbleiter physikalisch gemessen. Je nach Sensorqualit<69>t und Lichtbedingungen wirkt dabei ein unterschiedlich ausgepr<70>gtes Rauschen auf die Farbwerte ein, sodass der zur Verf<72>gung stehende Farbwert als Summe
\begin{equation}
I_k(x, y) = I^*_k(x, y) + r(x, y)
\end{equation}
aus realem Farbwert $I^*_k(x, y) $ und statistischem Rauschen $r(x,y)$ modelliert werden kann. Das Rauschen $r$ kann als normalverteilt um den Mittelwert $0$ angenommen werden. Unter den Annahmen, dass die Kamera statisch montiert ist und in der aufgenommenen Szene keine Ver<65>nderung passiert, kann der Zusammenhang
\begin{equation}
\overline{I}_{k,t}(x, y) = \lim_{N\rightarrow \infty} \frac{1}{N + 1} \sum_{n=0}^N I^*_{k,t-n}(x, y) + r_{t-n}(x, y) \stackrel{!}{=} I^*_{k,t}
\end{equation}
f<EFBFBD>r die Mittelwertbildung <20>ber lange Zeitr<74>ume formuliert werden. Dabei beschreibt $t$ den Zeitpunkt, zu dem der entsprechende Wert gemessen wurde.
Um die Bildqualit<69>t zu erh<72>hen, soll der Einfluss von $r$ reduziert werden. Es soll daf<61>r angenommen werden, dass die Kamera statisch ist und kaum Bewegung in zwei aufeinander folgenden Bildern vorhanden ist.
Implementieren Sie die Mittelwertbildung mit einer variablem Bildreihe $N$ (default: $N=1$) und geben Sie das Bild aus. \\
Um zu pr<70>fen wie das Bild auf Pixelebene arbeitet, kann die Variable \textit{plotNoise} in der Funktion \textit{process()} auf \textit{True} gesetzt werden.
Es werden zwei zus<75>tzliche Plots ausgegeben, in der ein Bildausschnitt des Zentrums vor- und nach der Rauschunterdr<64>ckung vergr<67><72>ert dargestellt werden.
\paragraph*{Aufgabe 1}
Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Bereiche an!
\lstset{caption={Vorverarbeitung, Aufgabe 1}}
\begin{lstlisting}
# Your code!
\end{lstlisting}
\paragraph*{Aufgabe 2}
Nennen Sie Vor und Nachteile, wenn $N$ vergr<67><72>ert werden w<>rde. Sollte $N$ in dieser Anwendung vergr<67><72>ert werden?
\paragraph*{Aufgabe 3}
Beschreiben Sie eine weitere Methode zur Rauschreduktion. Diskutieren Sie dabei Vor- oder Nachteile!
\subsubsection{Histogramm Spreizung}
Pixel k<>nnen in unserer Anwendung Werte von $I_k(x,y) \in \{ 0, \ldots , 255 \}$ annehmen. Dieser Wertebereich wird nicht zwangsl<73>ufig ausgenutzt. Um das zu <20>ndern, soll eine Histogramm Spreizung auf den Helligkeitsinformationen der Pixel durchgef<65>hrt werden.
Implementieren Sie zus<75>tzlich zur Rauschreduktion eine Histogramm Spreizung, indem sie (1) das Rausch-reduzierte Eingangsbild in den HSV-Farbbereich transformieren und (2) die Rechenvorschrift~\ref{equ:histogramm-equalization} auf den V-Kanal anwenden. Transformieren Sie das Bild dann (3) wieder in den RGB Farbraum.
\begin{equation}
\label{equ:histogramm-equalization}
I_V^{\textnormal{new}}(x,y) = \frac{I_{V}(x,y) - \min I_{V}}{\max I_{V} - \min I_{V}} \cdot 255
\end{equation}
\textbf{Hinweis:} Nutzen Sie die Befehle \textit{cv2.cvtColor(img, cv2.COLOR\_BGR2HSV)} beziehungsweise \textit{cv2.cvtColor(img, cv2.COLOR\_HSV2BGR)}.
\paragraph*{Aufgabe 4}
Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Bereiche an!
\lstset{caption={Vorverarbeitung, Aufgabe 4}}
\begin{lstlisting}
# Your code!
\end{lstlisting}
\paragraph*{Aufgabe 5}
Warum ist es sinnvoll, den gesamten Wertebereich f<>r die Darstellung von Videos in Multimedia-Anwendungen auszunutzen?

View File

@@ -0,0 +1,29 @@
\relax
\@setckpt{sections/a1.tex}{
\setcounter{page}{4}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{1}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{4}
\setcounter{pagesLTS.pagenr}{3}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{pagesLTS.arabic.1.local.cnt}{3}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{4}
}

44
Abgabe/sections/a2.aux Normal file
View File

@@ -0,0 +1,44 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Farbanalyse}{12}{subsection.2.2}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}RGB}{12}{subsubsection.2.2.1}}
\newlabel{lst:Histogramm}{{5}{12}{Histogrammberechnung mit \textit {matplotlib}}{lstlisting.5}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Histogrammberechnung mit \textit {matplotlib}}{12}{lstlisting.5}}
\newlabel{lst:code1}{{6}{13}{Farbanalyse, Aufgabe 1}{lstlisting.6}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}Farbanalyse, Aufgabe 1}{13}{lstlisting.6}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}HSV}{13}{subsubsection.2.2.2}}
\newlabel{equ:segrule}{{5}{13}{Aufgabe 5}{equation.2.5}{}}
\@setckpt{sections/a2}{
\setcounter{page}{14}
\setcounter{equation}{5}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{2}
\setcounter{subsection}{2}
\setcounter{subsubsection}{2}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{14}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{10}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{section@level}{3}
\setcounter{lstlisting}{6}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{14}
}

64
Abgabe/sections/a2.tex Normal file
View File

@@ -0,0 +1,64 @@
\newpage
\subsection{Farbanalyse}
Die Zugrundeliegende Aufgabe ist die Detektion des \glqq magischen Umhangs\grqq , der Objekte verschwinden lassen kann. Der Umhang kann durch eine einfarbige Decke modelliert werden. Sollte keine einfarbige Decke vorhanden sein, kann ebenfalls ein einfarbiges Blatt Papier zur Hilfe genommen werden.
Das Ziel des Arbeitspakets \glqq Farbanalyse\grqq\ ist es, die farblichen Eigenschaften der Szene, sowie des \glqq magischen Umhangs\grqq\ zu untersuchen. Daf<61>r sollen die Histogramme einzelner Farbkan<61>le mit und ohne Umhang erstellt und analysiert werden.
\textbf{Hinweis:} Versuchen Sie von nun an die Position der Kamera nicht mehr zu ver<65>ndern!
\subsubsection{RGB}
Einzelne Pixel werden durch drei Werte repr<70>sentiert. Jeweils ein Wert $I_k(x, y) \in \{0, \ldots, 255 \}$ mit $k\in \{R, G, B\}$ beschreibt die einfallende Lichtmenge f<>r die Farben Rot, Gr<47>n und Blau. In OpenCV werden Bilder im BGR Format repr<70>sentiert. Die Verteilung der Farbwerte kann durch ein Histogramm dargestellt werden. Ein Histogramm
\begin{equation}
h(v) = |I_v|
\end{equation}
beschreibt die Anzahl der Menge Pixel $I_v$ im Bild, welche den Wert $v$ haben. In OpenCV kann das Histogramm mit der Funktion \textit{cv2.calcHist(image, [Kanal], None, [histSize], histRange, False)} berechnet werden. Dabei gibt \textit{histSize} die Anzahl der Intervalle und $\textit{histRange} = (0, 256)$ die obere und untere Schrank f<>r den zu betrachtenden Wertebereich an.
Implementieren Sie in Ihren Algorithmus eine Funktion, mit dem Sie per Mausklick das aktuelle Bild speichern k<>nnen. Des Weiteren soll bei Bet<65>tigung des Mausklicks ein Histogramm f<>r jeden Farbkanal des RGB-Bilder erstellt und abgespeichert werden. Mit Hilfe des Code-Schnipsel in Code \ref{lst:Histogramm} kann ein Histogramm angezeigt oder gespeichert werden!
\begin{lstlisting}[caption={Histogrammberechnung mit \textit{matplotlib}},label={lst:Histogramm}]
import cv2
from matplotlib import pyplot as plt
channel = 0 #[0:B, 1:G, 2:R]
hist_size = 256
hist_range = [0,256]
histr = cv2.calcHist([img], [channel], None, [hist_size], hist_range)
plt.plot(histr, color = "b")
plt.xlim([0,256])
plt.savefig('the_path_to_store.png')
plt.show()
\end{lstlisting}
Nehmen Sie mit dem fertig implementierten Code ein Bild und die Histogramme in der von Ihnen pr<70>ferierten Szene auf. Nehmen Sie sich darauf den \glqq magischen Umhang\grqq zur Seite und halten ihn sehr gut sichtbar vor die Kamera. Nehmen Sie auch jetzt ein Bild mit den Histogrammen auf. Die Kamera sollte sich zwischen den beiden Bildern nicht bewegen.
\paragraph*{Aufgabe 1}
Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Bereiche an! Geben sie zus<75>tzlich die aufgenommenen Bilder und die erstellten Histogramme an.
\lstset{caption={Farbanalyse, Aufgabe 1}}
\begin{lstlisting}
# Your code!
\end{lstlisting}
\paragraph*{Aufgabe 2}
Interpretieren Sie die Ver<65>nderungen zwischen den Histogrammen mit und ohne \glqq magischen Umhang\grqq . Verhalten sich die einzelnen Kan<61>le gleich? Lassen sich Bereiche in den Histogrammen herausstellen, die dem Umhang zuzuordnen sind? Diskutieren Sie Ihre Beobachtungen.
\subsubsection{HSV}
Erweitern Sie ihren vorherigen Code um eine Farbkonvertierung in den HSV-Farbraum. F<>hren Sie die Konvertierung vor Erstellung der Histogramme durch und wiederholen Sie die Schritte aus dem vorherigen Aufgabenteil.
\paragraph*{Aufgabe 3}
Geben sie die aufgenommenen Bilder und die erstellten Histogramme an.
\paragraph*{Aufgabe 4}
Interpretieren Sie die Ver<65>nderungen zwischen den Histogrammen mit und ohne \glqq magischen Umhang\grqq . Verhalten sich die einzelnen Kan<61>le gleich? Lassen sich Bereiche in den Histogrammen herausstellen, die dem Umhang zuzuordnen sind? Diskutieren Sie Ihre Beobachtungen.
\paragraph*{Aufgabe 5}
Versuchen Sie mit den gegebenen Histogrammen Wertebereiche zu finden, mit denen Sie den \glqq magischen Umhang\grqq\ segmentieren k<>nnten. Formulieren Sie eine Regel in dem Format
\begin{equation}
\label{equ:segrule}
S_\textnormal{Umhang} = \{ I(x, y)\ |\ \\ R_\textnormal{min} < I_R(x, y) < R_\textnormal{max} \ \ \textnormal{und} \ \ \ldots \} \quad ,
\end{equation}
wobei $S_\textnormal{Umhang}$ die Bin<69>rmaske beschreibt und $R_\textnormal{min}$ und $R_\textnormal{max}$ beispielhafte Schwellwerte f<>r den Rot-Kanal sind.
\paragraph*{Aufgabe 6}
Worauf muss geachtet werden, wenn mit dem H-Kanal des HSV-Farbraums gearbeitet wird?

View File

@@ -0,0 +1,29 @@
\relax
\@setckpt{sections/a2.tex}{
\setcounter{page}{4}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{1}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{4}
\setcounter{pagesLTS.pagenr}{3}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{pagesLTS.arabic.1.local.cnt}{3}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{4}
}

50
Abgabe/sections/a3.aux Normal file
View File

@@ -0,0 +1,50 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Segmentierung und Bildmodifizierung}{14}{subsection.2.3}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.1}Statisches Schwellwertverfahren}{14}{subsubsection.2.3.1}}
\newlabel{lst:conditions}{{7}{14}{Benutzung von Randbedingungen mit \textit {numpy}}{lstlisting.7}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}Benutzung von Randbedingungen mit \textit {numpy}}{14}{lstlisting.7}}
\newlabel{lst:code1}{{8}{14}{Segmentierung und Bildmodifizierung, Aufgabe 1}{lstlisting.8}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {8}Segmentierung und Bildmodifizierung, Aufgabe 1}{14}{lstlisting.8}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2}Bin\"armaske}{15}{subsubsection.2.3.2}}
\newlabel{lst:contours}{{9}{15}{Konturfindung}{lstlisting.9}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {9}Konturfindung}{15}{lstlisting.9}}
\newlabel{lst:contours}{{10}{15}{Segmentierung und Bildmodifizierung, Aufgabe 2}{lstlisting.10}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {10}Segmentierung und Bildmodifizierung, Aufgabe 2}{15}{lstlisting.10}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.3}Bildmodifizierung}{15}{subsubsection.2.3.3}}
\newlabel{lst:contours}{{11}{16}{Segmentierung und Bildmodifizierung, Aufgabe 4}{lstlisting.11}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {11}Segmentierung und Bildmodifizierung, Aufgabe 4}{16}{lstlisting.11}}
\@setckpt{sections/a3}{
\setcounter{page}{17}
\setcounter{equation}{5}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{2}
\setcounter{subsection}{3}
\setcounter{subsubsection}{3}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{17}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{14}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{section@level}{3}
\setcounter{lstlisting}{11}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{17}
}

81
Abgabe/sections/a3.tex Normal file
View File

@@ -0,0 +1,81 @@
\newpage
\subsection{Segmentierung und Bildmodifizierung}
In diesem Arbeitspaket werden Sie auf Grundlage der vorherigen Analysen eine Segmentierung des magischen Umhangs realisieren. Anschlie<69>end werden Sie den segmentierten Bereich \glqq verschwinden\grqq\ lassen, indem sie ein statisches Bild des Hintergrunds auf diese Fl<46>chen einf<6E>gen.
\subsubsection{Statisches Schwellwertverfahren}
Implementieren Sie die von Ihnen gefundene Regel nach Gleichung~\ref{equ:segrule}, um eine Bin<69>rmaske zu erhalten. Sie k<>nnen die Randbedingungen wie im folgenden Code-Schnipsel \ref{lst:conditions} implementieren.
\begin{lstlisting}[caption={Benutzung von Randbedingungen mit \textit{numpy}}, label={lst:conditions}]
import cv2
import numpy as np
channel1 = 0
lower_bound1, upper_bound1 = 15, 100
is_condition_1_true = (lower_bound1 < img[:, :, channel1]) * \
(img[:, :, channel1] < upper_bound1)
channel2 = 1
lower_bound2, upper_bound2 = 65, 172
is_condition_2_true = (lower_bound2 < img[:, :, channel2]) * \
(img[:, :, channel2] < upper_bound2)
binary_mask = is_condition_1_true * is_condition_2_true
\end{lstlisting}
Geben Sie die gefundene Bin<69>rmaske als Ausgangsbild auf dem Bildschirm aus. Sollten die gefundenen Wertebereich zu keinen sinnvollen Segmentierungen f<>hren, d<>rfen Sie Gleichung~\ref{equ:segrule} selbstverst<73>ndlich anpassen!
Implementieren Sie ebenfalls eine Mausklick-Funktion, mit der Sie das aktuelle Bild und die dazugeh<65>rige Bin<69>rmaske abspeichern k<>nnen. F<>r das Abspeichern von Bildern k<>nnen Sie die Funktion \textit{cv2.imwrite(img, "path\_to\_store.png")} verwenden.
\paragraph*{Aufgabe 1}
Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Bereiche an! Geben Sie ebenfalls das aufgenommene Bild sowie die dazugeh<65>rige Bin<69>rmaske an.
\lstset{caption={Segmentierung und Bildmodifizierung, Aufgabe 1}}
\begin{lstlisting}
# Your code!
\end{lstlisting}
\subsubsection{Bin<EFBFBD>rmaske}
Die in der vorherigen Aufgabe erhaltene Bin<69>rmaske ist ggf.\ ungeeignet f<>r eine zufriedenstellende Segmentierung. Sie sollen die Maske nun optimieren. Wenden Sie daf<61>r das \textit{Opening} und \textit{Closing} auf die Bin<69>rmaske an. Nutzen Sie die Funktionen \textit{cv2.erode(img, kernel)} und \textit{cv2.dilate(img, kernel)}.
W<EFBFBD>hlen Sie zum Schluss die gr<67><72>te zusammenh<6E>nge Region segmentierter Pixel aus, und l<>schen alle anderen Segmente. Folgender Code-Schnipsel~\ref{lst:contours} soll als Hilfestellung dienen. Recherchieren Sie ggf.\ im Internet.
\lstset{caption={Konturfindung}}
\lstset{label={lst:contours}}
\begin{lstlisting}
(cnts, _) = cv2.findContours(
binary_mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
c = max(cnts, key = cv2.contourArea)
img = cv2.drawContours(img, [c], -1, color=255, -1)
\end{lstlisting}
\paragraph*{Aufgabe 2}
Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Bereiche an!
\lstset{caption={Segmentierung und Bildmodifizierung, Aufgabe 2}}
\begin{lstlisting}
# Your code!
\end{lstlisting}
\paragraph*{Aufgabe 3}
Welche Probleme oder Fehler k<>nnen in der Bin<69>rmaske vorkommen, die mit den Ma<4D>nahmen beseitigt werden sollen?
\subsubsection{Bildmodifizierung}
Nach dem Fertigstellen der vorherigen Aufgabenstellungen sollten Sie nun eine Bin<69>rmaske erhalten, welche den \glqq magischen Umhang\grqq\ segmentiert. Die letzte Aufgabe befasst sich mit der Bildmodifizierung, welche den Eindruck verschwindender Objekte vermittelt.
Sie sollen nun folgende Funktionen implementieren:
Erstellen Sie eine Member-Variable (z.B. \textit{self.variable}) in die Algorithmus Funktion \textit{\_\_init\_\_()}. Initiieren Sie die Variable mit dem Wert \textit{None}.
Modifizieren Sie den Algorithmus, sodass Sie mit einem Mausklick ein Bild in die Variable speichern k<>nnen. Dieses Bild wird als Hintergrund definiert. Mausklick-Funktionen aus vorherigen Aufgaben k<>nnen <20>berschrieben werden!
Solange kein Bild in der Variable gespeichert ist, soll das Eingangsbild direkt wieder ausgegeben werden. Sobald ein Hintergrund vorhanden ist soll folgendes passieren: Modifizieren Sie das Bild, indem Sie das Ausgangsbild aus dem derzeitigen Kamera-Stream und dem Hintergrund zusammenf<6E>gen. Die durch die Bin<69>rmaske segmentierte Fl<46>che soll aus dem Hintergrund entnommen werden, die unsegmentierte Fl<46>che aus dem derzeitigen Videostream.
\textbf{Hinweis:} Verlassen Sie das Sichtfeld der Kamera, w<>hrend Sie die Hintergrund Aufnahme aufnehmen.
\paragraph*{Aufgabe 4}
Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Bereiche an!
\lstset{caption={Segmentierung und Bildmodifizierung, Aufgabe 4}}
\begin{lstlisting}
# Your code!
\end{lstlisting}
\paragraph*{Aufgabe 5}
Geben Sie ein Bild (z.B. Screenshot) an, in dem die Funktion Ihres \glqq magischen Umhangs\grqq\ gezeigt wird!

View File

@@ -0,0 +1,29 @@
\relax
\@setckpt{sections/a3.tex}{
\setcounter{page}{4}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{1}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{4}
\setcounter{pagesLTS.pagenr}{3}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{pagesLTS.arabic.1.local.cnt}{3}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{4}
}

View File

@@ -0,0 +1,37 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {section}{\numberline {3}Zusammenfassung}{17}{section.3}}
\@setckpt{sections/conclusion}{
\setcounter{page}{18}
\setcounter{equation}{5}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{3}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{18}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{15}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{section@level}{1}
\setcounter{lstlisting}{11}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{18}
}

View File

@@ -0,0 +1,42 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/TeX Live for SUSE Linux) (preloaded format=pdflatex 2020.8.24) 31 MAR 2021 16:10
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**conclusion.tex
(./conclusion.tex
LaTeX2e <2017-04-15>
Babel <3.10> and hyphenation patterns for 84 language(s) loaded.
! LaTeX Error: Missing \begin{document}.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.3 s
adsad
You're in trouble here. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
Missing character: There is no s in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no d in font nullfont!
Missing character: There is no s in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no d in font nullfont!
)
! Emergency stop.
<*> conclusion.tex
*** (job aborted, no legal \end found)
Here is how much of TeX's memory you used:
5 strings out of 492995
163 string characters out of 6141053
54074 words of memory out of 5000000
3658 multiletter control sequences out of 15000+600000
3640 words of font info for 14 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
5i,0n,4p,43b,14s stack positions out of 5000i,500n,10000p,200000b,80000s
! ==> Fatal error occurred, no output PDF file produced!

View File

@@ -0,0 +1,3 @@
\newpage
\section{Zusammenfassung}
Herzlichen Gl\"uckwunsch! Sie haben in diesem Labor eine Bildverarbeitungs-Pipeline erfolgreich implementiert. Bitte fassen Sie die genutzten Methoden und Erkenntnisse kurz zusammen.

View File

@@ -0,0 +1,54 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Einleitung}{3}{section.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Harry Potter ohne magischen Tarnumhang}}{3}{figure.1}}
\newlabel{fig:harry1}{{1}{3}{Harry Potter ohne magischen Tarnumhang}{figure.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Harry Potter mit magischem Tarnumhang}}{3}{figure.2}}
\newlabel{fig:harry2}{{2}{3}{Harry Potter mit magischem Tarnumhang}{figure.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Vorbereitung}{4}{subsection.1.1}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Programmierumgebung in PyCharm}}{4}{figure.3}}
\newlabel{fig:pycharm}{{3}{4}{Programmierumgebung in PyCharm}{figure.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Programmierumgebung}{5}{subsection.1.2}}
\newlabel{sec:Programmierumgebung}{{1.2}{5}{Programmierumgebung}{subsection.1.2}{}}
\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Argumente f\"ur die Programmausf\"uhrung}}{5}{table.1}}
\newlabel{tab:parameter}{{1}{5}{Argumente f<>r die Programmausf<73>hrung}{table.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Run Configuration in PyCharm}}{5}{figure.4}}
\newlabel{fig:run_config}{{4}{6}{Run Configuration in PyCharm}{figure.4}{}}
\newlabel{lst:code2}{{1}{6}{Eigener Algorithmus in \textit {your\_algorithm.py}}{lstlisting.1}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {1}Eigener Algorithmus in \textit {your\_algorithm.py}}{6}{lstlisting.1}}
\newlabel{lst:code1}{{2}{7}{Verlinkung der Algorithmen in \textit {\_\_init\_\_.py}}{lstlisting.2}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {2}Verlinkung der Algorithmen in \textit {\_\_init\_\_.py}}{7}{lstlisting.2}}
\@setckpt{sections/overview}{
\setcounter{page}{8}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{2}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{1}
\setcounter{subsection}{2}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{4}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{8}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{3}
\setcounter{lstnumber}{10}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{section@level}{2}
\setcounter{lstlisting}{2}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{8}
}

View File

@@ -0,0 +1,130 @@
\newpage
\section{Einleitung}
Digitale Bildverarbeitung wird unter anderem in industriellen Prozessen, medizinischen Verfahren oder in Multimedia-Produkten angewandt. In diesem Labor soll eine beispielhafte Multimedia-Anwendung entwickelt werden, die <20>ber das Labor hinaus als erheiterndes Demonstrationsobjekt f<>r Bildverarbeitung in Videokonferenzen genutzt werden kann. Als Inspiration dient ein Effekt aus der Filmreihe \glqq Harry Potter\grqq .
\begin{figure}
\centering
\begin{minipage}{.45\textwidth}
\centering
\includegraphics[width=.6\linewidth]{fig/harry1.jpg}
\caption{Harry Potter ohne magischen Tarnumhang}
\label{fig:harry1}
\end{minipage}%
\hspace{0.5cm}
\begin{minipage}{.45\textwidth}
\centering
\includegraphics[width=.6\linewidth]{fig/harry2.jpg}
\caption{Harry Potter mit magischem Tarnumhang}
\label{fig:harry2}
\end{minipage}
\end{figure}
Die Abbildungen \ref{fig:harry1} und \ref{fig:harry2} zeigen Harry Potter ohne
\footnote{\url{https://assets.cdn.moviepilot.de/files/8a2cc0d2eb31c41136fb2be242540606dcd50821980e830481404b276065/fill/1280/614/Harry\%20Potter\%20Tarnumhang.jpg}}
und mit\footnote{\url{https://www.tres-click.com/wp-content/uploads/2019/06/harry-potter-tarnumhang.gif}}
verzauberten Tarnumhang, welchen den Tr<54>ger des Umhangs verschwinden lassen kann. In diesem Labor entwickeln Sie eine Bildverarbeitungs-Pipeline, mit welcher dieser Effekt mit einer einfachen Webcam simuliert werden kann. Sie festigen den Umgang mit
\begin{itemize}
\item Rauschunterdr<64>ckung
\item Histogrammen
\item verschiedenen Farbr<62>umen
\item Erosion und Dilatation
\item Schwellwertverfahren
\end{itemize}
und <20>ben gleichzeitig den Umgang mit der Programmiersprache Python.
\newpage
\subsection{Vorbereitung}
F<EFBFBD>r das Labor wird ein Rechner mit Betriebssystem Windows, Linux-Ubuntu oder Mac ben<65>tigt. Zus<75>tzlich muss eine Webcam vorhanden sein (im Laptop integriert oder extern).
Melden Sie sich \textbf{vorab} bei dem Betreuer des Labors, sollte Ihnen eines der ben<65>tigten Mittel nicht zur Verf<72>gung stehen.
Um an dem Labor erfolgreich teilnehmen zu k<>nnen, muss die zu nutzende Programmierumgebung vorbereitet werden. Sollten Sie an der praktischen <20>bung zur Vorlesung \textit{Digitale Bildverarbeitung} teilgenommen haben, ist die erforderliche Programmierumgebung sowie der Programmcode wahrscheinlich bereits installiert und eingerichtet. Ansonsten befolgen Sie die Installationsanweisungen auf \url{https://github.com/TimoK93/Digitale-Bildverarbeitung} im Bereich \textit{0\_Einf<EFBFBD>hrung}. Die Installation des Streaming Programms zur Erstellung einer virtuellen Kamera ist dabei optional und nicht verpflichtend.
Nachdem Sie die Installation vollendet haben, <20>ffnen Sie die Programmierumgebung, sodass Ihr Bildschirm <20>hnliches zu Abbildung \ref{fig:pycharm} anzeigt.
\begin{figure}
\centering
\includegraphics[width=\linewidth]{fig/pycharm.png}
\caption{Programmierumgebung in PyCharm}
\label{fig:pycharm}
\end{figure}
Machen Sie sich als n<>chstes mithilfe der Beschreibung in Kapitel \ref{sec:Programmierumgebung} mit der Programmierumgebung vertraut.
\newpage
\subsection{Programmierumgebung}
\label{sec:Programmierumgebung}
In der Programmierumgebung ist das Hauptprogramm bereits soweit vorbereitet, sodass Sie einen Videostream aus Ihrer Kamera auslesen, darauf einen vorbereiteten Beispielalgorithmus anwenden und diesen anzeigen k<>nnen. In diesem Kapitel wird kurz erl<72>utert, wie Sie diese Bildverarbeitungs-Pipeline starten und eigene Algorithmen integrieren k<>nnen.
\paragraph*{Starten der Bildverarbeitungs-Pipeline.} <20>ffnen Sie die Datei \mbox{\textit{./CV-App/main.py}} in PyCharm und klicken Sie mit der rechten Maustaste in den Programmcode. <20>ffnen Sie dann das Fenster \textit{Modify Run Configuration...} wie in Abbildung \ref{fig:run_config} dargestellt. In dem Feld \textit{Parameter} k<>nnen Sie zus<75>tzliche Argumente in die Umgebung eingeben. Argumente werden dabei im Schema \textit{--Argument1 Value1 --Argument2 Value2} eingegeben. Die einzustellenden Parameter k<>nnen Sie aus der Tabelle \ref{tab:parameter} entnehmen. Wenn Sie keine Argumente w<>hlen, werden die Standard Einstellungen gew<65>hlt.
\begin{table}
\centering
\caption{Argumente f<>r die Programmausf<73>hrung}
\begin{tabular}[h]{c | l| c}
Argument & Werte & Default-Wert \\ \toprule
\textit{camera} & -1, 0, 1, \ldots (-1 <20>ffnet ein Video) & 0 \\
\textit{mode} & \textit{virtual\_cam} (virtuelle Kamera), \textit{screen} (nur Fenster)& \textit{virtual\_cam} \\
\textit{video} & Pfad zu Video, wenn \textit{camera} den Wert $-1$ hat. & - \\
\end{tabular}
\label{tab:parameter}
\end{table}
\begin{figure}
\centering
\includegraphics[width=0.65\linewidth]{fig/Run-Configs.png}
\caption{Run Configuration in PyCharm}
\label{fig:run_config}
\end{figure}
Sie k<>nnen das Programm nun mit \textit{Run} starten. Kurz nach dem Start sollten Sie ein Fenster mit dem Videostream aus Ihrer Kamera sehen. Durch das Bet<65>tigen verschiedener Tasten auf der Tastatur (z.B.\ Taste 1 oder 2) k<>nnen Sie verschiedene Algorithmen aktivieren. Sie sehen das Ergebnis direkt in dem ausgegebenem Videostream. Wichtig: Das Programm reagiert nur auf Tastendr<64>cke, wenn das Videostream-Fenster im Vordergrund ihres Bildschirms ist.
\paragraph*{Eigene Algorithmen einbinden.} F<>r Sie sind nur die Dateien im Dateipfad \mbox{ \textit{./CV-App/algorithms}} relevant. Beispielhaft erstellen Sie im Folgenden den Algorithmus \textit{YourAlgorithm}.
Erstellen Sie eine Datei \textit{your\_algorithm.py} und kopieren Sie den Inhalt aus dem Code \ref{lst:code2}. In der Funktion \textit{\_\_init\_\_(self)} k<>nnen Sie dauerhafte Variablen definieren. Die Funktion \textit{process(self, img)} verarbeitet das Eingangsbild \textit{img} und gibt es am Ende modifiziert wieder aus (Hinweis: Ein und Ausgangsbild m<>ssen gleich gro<72> sein!). Die Funktion \textit{mouse\_callback(self, ...)} reagiert auf Aktionen der Maus, wie zum Beispiel einem Mausklick an der Position x und y. So k<>nnen Sie mit ihrem Algorithmus interagieren. Sie k<>nnen sich einige Beispielalgorithmen in dem Ordner \textit{./CV-App/algorithms} zur Veranschaulichung ansehen. Der Algorithmus in \textit{white\_balancing.py} veranschaulicht alle Funktionen mit Algorithmen der Klasse \textit{Algorithm}.
% Settings for listings
\lstset{caption={Eigener Algorithmus in \textit{your\_algorithm.py}}}
\lstset{label={lst:code2}}
\begin{lstlisting}
import cv2
import numpy as np
from . import Algorithm
class YourAlgorithm(Algorithm):
def __init__(self):
self.some_persistent_value = "i_am_alwys_existing"
def process(self, img):
print(self.some_persistent_value)
return img
def mouse_callback(self, event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONUP:
print("A Mouse click happend! at position", x, y)
\end{lstlisting}
\newpage
Um Ihren Algorithmus nun mit einer Aktivierungstaste-Taste zu verlinken, <20>ffnen Sie die Datei \textit{\_\_init\_\_.py}. Am Ende der Datei ist eine Verlinkung der Algorithmen zu bestimmten Tasten zu sehen (siehe Code \ref{lst:code1}).. In dem Beispiel in Code \ref{lst:code1} ist Ihr neuer Algorithmus \textit{YourAlgorithm} importiert und an die Taste 3 verlinkt.
% Settings for listings
\lstset{caption={Verlinkung der Algorithmen in \textit{\_\_init\_\_.py}}}
\lstset{label={lst:code1}}
\begin{lstlisting}
from .image_to_gray import ImageToGray
from .image_to_hue import ImageToHue
from .your_algorithm import YourAlgorithm
algorithms = dict()
algorithms["0"] = Algorithm
algorithms["1"] = ImageToGray
algorithms["2"] = ImageToHue
algorithms["3"] = YourAlgorithm
\end{lstlisting}
Nach Neustart des Programms durch erneute Bet<65>tigung der \textit{Run} Funktion, ist Ihr Algorithmus durch bet<65>tigen der Taste 3 zug<75>nglich.

View File

@@ -0,0 +1,29 @@
\relax
\@setckpt{sections/overview.tex}{
\setcounter{page}{3}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
\setcounter{enumiii}{0}
\setcounter{enumiv}{0}
\setcounter{footnote}{0}
\setcounter{mpfootnote}{0}
\setcounter{sapage}{0}
\setcounter{part}{0}
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{3}
\setcounter{pagesLTS.pagenr}{2}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{pagesLTS.arabic.1.local.cnt}{2}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{3}
}