Finish documentation

This commit is contained in:
2025-07-05 10:34:54 +02:00
parent 5c7067e255
commit 0ba97576a9
31 changed files with 578 additions and 114 deletions

View File

@@ -23,7 +23,7 @@
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{10}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.pagenr}{29}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{section@level}{1}
@@ -31,7 +31,7 @@
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{4}
\setcounter{lstnumber}{10}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{pagesLTS.arabic.1.local.cnt}{29}
\setcounter{lstlisting}{2}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}

View File

@@ -2,14 +2,14 @@
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Vorverarbeitung}{10}{subsection.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Rauschreduktion}{10}{subsubsection.2.1.1}\protected@file@percent }
\newlabel{lst:code1}{{3}{10}{Vorverarbeitung, Aufgabe 1}{lstlisting.3}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Vorverarbeitung, Aufgabe 1}{10}{lstlisting.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Histogramm Spreizung}{11}{subsubsection.2.1.2}\protected@file@percent }
\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}\protected@file@percent }
\newlabel{lst:code1}{{3}{11}{Vorverarbeitung, Aufgabe 1}{lstlisting.3}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}Vorverarbeitung, Aufgabe 1}{11}{lstlisting.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Histogramm Spreizung}{12}{subsubsection.2.1.2}\protected@file@percent }
\newlabel{equ:histogramm-equalization}{{3}{12}{Histogramm Spreizung}{equation.2.3}{}}
\newlabel{lst:code1}{{4}{12}{Vorverarbeitung, Aufgabe 4}{lstlisting.4}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {4}Vorverarbeitung, Aufgabe 4}{12}{lstlisting.4}\protected@file@percent }
\@setckpt{sections/a1}{
\setcounter{page}{12}
\setcounter{page}{14}
\setcounter{equation}{3}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -27,18 +27,18 @@
\setcounter{figure}{5}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{12}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{CurrentPage}{14}
\setcounter{pagesLTS.pagenr}{29}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{section@level}{3}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{7}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{lstnumber}{20}
\setcounter{pagesLTS.arabic.1.local.cnt}{29}
\setcounter{lstlisting}{4}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{12}
\setcounter{pagesLTS.current.local.arabic}{14}
}

View File

@@ -25,20 +25,75 @@ Implementieren Sie die Mittelwertbildung mit einer variablem Bildreihe $N$ (defa
Um zu prü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ätzliche Plots ausgegeben, in der ein Bildausschnitt des Zentrums vor- und nach der Rauschunterdrückung vergrößert dargestellt werden.
\pagebreak
\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!
def _211_Rauschreduktion(self, img):
self.picture_buffer.append(img)
if len(self.picture_buffer) < self.n:
# If number of buffered images < defined buffer size n,
# return current image
return img
elif len(self.picture_buffer) > self.n:
# If number of buffered images > defined buffer size n,
# remove oldest image
self.picture_buffer.pop(0)
# Reduce noise, return result image
return np.mean(self.picture_buffer, axis=0).astype(np.uint8)
\end{lstlisting}
\paragraph*{Aufgabe 2}
Nennen Sie Vor und Nachteile, wenn $N$ vergrößert werden würde. Sollte $N$ in dieser Anwendung vergrößert werden?
\color{blue}
Vorteile:
\begin{itemize}
\item Je größer die Anzahl der Bilder N, desto besser kann das Rauschen verringert werden
\item Gut für statische Szenen
\end{itemize}
Nachteile:
\begin{itemize}
\item Höherer Speicheraufwand
\item Höheres N folgt in mehr zeit um den Mittelwert zu berechnen
\item Bewegungen werden verschmiert
\end{itemize}
\color{black}
\paragraph*{Aufgabe 3}
Beschreiben Sie eine weitere Methode zur Rauschreduktion. Diskutieren Sie dabei Vor- oder Nachteile!
\color{blue}
Wiener-Filter
Vorteile:
\begin{itemize}
\item Bessere Ergebnisse als ein Mittelwert-Filter
\item Bewegungen werden nicht verschmiert, da nur ein Bild benötigt wird
\end{itemize}
Nachteile:
\begin{itemize}
\item Mathematisch aufwendiger
\item Abhängig von Annahme der Rauschart
\end{itemize}
\color{black}
\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äufig ausgenutzt. Um das zu ändern, soll eine Histogramm Spreizung auf den Helligkeitsinformationen der Pixel durchgeführt werden.
@@ -56,8 +111,33 @@ I_V^{\textnormal{new}}(x,y) = \frac{I_{V}(x,y) - \min I_{V}}{\max I_{V} - \min I
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!
def _212_HistogrammSpreizung(self, img):
# Convert brg image to hsv image
hsv_image = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Get hsv parts
h, s, v = cv2.split(hsv_image)
# Calc histogram spread
v = cv2.equalizeHist(v)
# Merge histogram spread to image
hsv_stretched = cv2.merge([h, s, v])
# Convert hsv image to brg and store result to member variable
self.middle_value_picture = cv2.cvtColor(hsv_stretched,
cv2.COLOR_HSV2BGR)
# Return brg result image
return self.middle_value_picture
\end{lstlisting}
\paragraph*{Aufgabe 5}
Warum ist es sinnvoll, den gesamten Wertebereich für die Darstellung von Videos in Multimedia-Anwendungen auszunutzen?
Warum ist es sinnvoll, den gesamten Wertebereich für die Darstellung von Videos in Multimedia-Anwendungen auszunutzen?
\color{blue}
Damit wird der Kontrast des Bildes verbessert. Das kann eine Hilfe beim
Schwellwertverfahren sein.
\color{black}

View File

@@ -1,15 +1,47 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Farbanalyse}{12}{subsection.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}RGB}{12}{subsubsection.2.2.1}\protected@file@percent }
\newlabel{lst:Histogramm}{{5}{12}{Histogrammberechnung mit \textit {matplotlib}}{lstlisting.5}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Histogrammberechnung mit \textit {matplotlib}}{12}{lstlisting.5}\protected@file@percent }
\newlabel{lst:code1}{{6}{13}{Farbanalyse, Aufgabe 1}{lstlisting.6}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}Farbanalyse, Aufgabe 1}{13}{lstlisting.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}HSV}{13}{subsubsection.2.2.2}\protected@file@percent }
\newlabel{equ:segrule}{{5}{13}{Aufgabe 5}{equation.2.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Farbanalyse}{14}{subsection.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}RGB}{14}{subsubsection.2.2.1}\protected@file@percent }
\newlabel{lst:Histogramm}{{5}{14}{Histogrammberechnung mit \textit {matplotlib}}{lstlisting.5}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}Histogrammberechnung mit \textit {matplotlib}}{14}{lstlisting.5}\protected@file@percent }
\newlabel{lst:code1}{{6}{15}{Farbanalyse, Aufgabe 1}{lstlisting.6}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {6}Farbanalyse, Aufgabe 1}{15}{lstlisting.6}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Histogram B-Kanal ohne Umhang}}{15}{figure.6}\protected@file@percent }
\newlabel{fig:histogram-b-kanal-ohne}{{6}{15}{Histogram B-Kanal ohne Umhang}{figure.6}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Histogram B-Kanal mit Umhang}}{16}{figure.7}\protected@file@percent }
\newlabel{fig:histogram-b-kanal-mit}{{7}{16}{Histogram B-Kanal mit Umhang}{figure.7}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Histogram G-Kanal ohne Umhang}}{16}{figure.8}\protected@file@percent }
\newlabel{fig:histogram-g-kanal-ohne}{{8}{16}{Histogram G-Kanal ohne Umhang}{figure.8}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Histogram G-Kanal mit Umhang}}{17}{figure.9}\protected@file@percent }
\newlabel{fig:histogram-g-kanal-mit}{{9}{17}{Histogram G-Kanal mit Umhang}{figure.9}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Histogram R-Kanal ohne Umhang}}{17}{figure.10}\protected@file@percent }
\newlabel{fig:histogram-r-kanal-ohne}{{10}{17}{Histogram R-Kanal ohne Umhang}{figure.10}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Histogram R-Kanal mit Umhang}}{18}{figure.11}\protected@file@percent }
\newlabel{fig:histogram-r-kanal-mit}{{11}{18}{Histogram R-Kanal mit Umhang}{figure.11}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Foto ohne Umhang}}{18}{figure.12}\protected@file@percent }
\newlabel{fig:histogram-foto-ohne-umhang}{{12}{18}{Foto ohne Umhang}{figure.12}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Foto mit Umhang}}{19}{figure.13}\protected@file@percent }
\newlabel{fig:histogram-foto-mit-umhang}{{13}{19}{Foto mit Umhang}{figure.13}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}HSV}{19}{subsubsection.2.2.2}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Histogram H-Kanal ohne Umhang}}{20}{figure.14}\protected@file@percent }
\newlabel{fig:histogram-h-kanal-ohne}{{14}{20}{Histogram H-Kanal ohne Umhang}{figure.14}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces Histogram H-Kanal mit Umhang}}{20}{figure.15}\protected@file@percent }
\newlabel{fig:histogram-h-kanal-mit}{{15}{20}{Histogram H-Kanal mit Umhang}{figure.15}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces Histogram S-Kanal ohne Umhang}}{21}{figure.16}\protected@file@percent }
\newlabel{fig:histogram-s-kanal-ohne}{{16}{21}{Histogram S-Kanal ohne Umhang}{figure.16}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Histogram S-Kanal mit Umhang}}{21}{figure.17}\protected@file@percent }
\newlabel{fig:histogram-s-kanal-mit}{{17}{21}{Histogram S-Kanal mit Umhang}{figure.17}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces Histogram V-Kanal ohne Umhang}}{22}{figure.18}\protected@file@percent }
\newlabel{fig:histogram-v-kanal-ohne}{{18}{22}{Histogram V-Kanal ohne Umhang}{figure.18}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Histogram V-Kanal mit Umhang}}{22}{figure.19}\protected@file@percent }
\newlabel{fig:histogram-v-kanal-mit}{{19}{22}{Histogram V-Kanal mit Umhang}{figure.19}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {20}{\ignorespaces Foto ohne Umhang}}{23}{figure.20}\protected@file@percent }
\newlabel{fig:histogram-foto-ohne-umhang2}{{20}{23}{Foto ohne Umhang}{figure.20}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {21}{\ignorespaces Foto mit Umhang}}{23}{figure.21}\protected@file@percent }
\newlabel{fig:histogram-foto-mit-umhang2}{{21}{23}{Foto mit Umhang}{figure.21}{}}
\newlabel{equ:segrule}{{5}{24}{Aufgabe 5}{equation.2.5}{}}
\@setckpt{sections/a2}{
\setcounter{page}{14}
\setcounter{page}{25}
\setcounter{equation}{5}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -24,21 +56,21 @@
\setcounter{subsubsection}{2}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{figure}{21}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{14}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{CurrentPage}{25}
\setcounter{pagesLTS.pagenr}{29}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{section@level}{3}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{10}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{lstnumber}{15}
\setcounter{pagesLTS.arabic.1.local.cnt}{29}
\setcounter{lstlisting}{6}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{14}
\setcounter{pagesLTS.current.local.arabic}{25}
}

View File

@@ -37,21 +37,160 @@ Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Be
\lstset{caption={Farbanalyse, Aufgabe 1}}
\begin{lstlisting}
# Your code!
def _221_RGB(self, img, colorspectrum = "bgr"):
# Names of the colors in histogram
channels = ["b", "g", "r"]
# Calc histogram
for index, channel_name in enumerate(channels):
hist = cv2.calcHist([img], [index], None, [256], [0, 256])
plt.plot(hist, color=channel_name)
plt.xlim([0, 256])
# Save histogram, clear cache
plt.savefig(f"results/{datetime.datetime.now()
.strftime('%Y-%m-%d_%H:%M:%S')}_histogram_{colorspectrum}.png")
plt.clf()
\end{lstlisting}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_b_1.png}
\caption{Histogram B-Kanal ohne Umhang}
\label{fig:histogram-b-kanal-ohne}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_b_2.png}
\caption{Histogram B-Kanal mit Umhang}
\label{fig:histogram-b-kanal-mit}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_g_1.png}
\caption{Histogram G-Kanal ohne Umhang}
\label{fig:histogram-g-kanal-ohne}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_g_2.png}
\caption{Histogram G-Kanal mit Umhang}
\label{fig:histogram-g-kanal-mit}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_r_1.png}
\caption{Histogram R-Kanal ohne Umhang}
\label{fig:histogram-r-kanal-ohne}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_r_2.png}
\caption{Histogram R-Kanal mit Umhang}
\label{fig:histogram-r-kanal-mit}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/screenshot_1.png}
\caption{Foto ohne Umhang}
\label{fig:histogram-foto-ohne-umhang}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/screenshot_2.png}
\caption{Foto mit Umhang}
\label{fig:histogram-foto-mit-umhang}
\end{figure}
\paragraph*{Aufgabe 2}
Interpretieren Sie die Veränderungen zwischen den Histogrammen mit und ohne \glqq magischen Umhang\grqq . Verhalten sich die einzelnen Kanäle gleich? Lassen sich Bereiche in den Histogrammen herausstellen, die dem Umhang zuzuordnen sind? Diskutieren Sie Ihre Beobachtungen.
\color{blue}
Im Bild mit dem Umhang ist im Vergleich zu dem Bild ohne Umhang ein leichter Blaustich zu erkennen. Das könnte den Anstieg der Anzahl der grünen und blauen Intensitäten im Bereich 50 bis 100 erklären. Im Histogramm der Farbe rot lässt sich ein Bereich zwischen 200 und 250 erkennen, der der Umhang sein könnte. Ansonsten sehen Histogramme mit und ohne Umhang sehr ähnlich aus,
was auch zu erwarten war und erwünscht ist.
\color{black}
\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.
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_hsv_H_20250630-190409.png}
\caption{Histogram H-Kanal ohne Umhang}
\label{fig:histogram-h-kanal-ohne}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_hsv_H_20250630-190511.png}
\caption{Histogram H-Kanal mit Umhang}
\label{fig:histogram-h-kanal-mit}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_hsv_S_20250630-190409.png}
\caption{Histogram S-Kanal ohne Umhang}
\label{fig:histogram-s-kanal-ohne}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_hsv_S_20250630-190511.png}
\caption{Histogram S-Kanal mit Umhang}
\label{fig:histogram-s-kanal-mit}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_hsv_V_20250630-190409.png}
\caption{Histogram V-Kanal ohne Umhang}
\label{fig:histogram-v-kanal-ohne}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/hist_hsv_V_20250630-190511.png}
\caption{Histogram V-Kanal mit Umhang}
\label{fig:histogram-v-kanal-mit}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/screenshot_20250630-190409.png}
\caption{Foto ohne Umhang}
\label{fig:histogram-foto-ohne-umhang2}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/screenshot_20250630-190511.png}
\caption{Foto mit Umhang}
\label{fig:histogram-foto-mit-umhang2}
\end{figure}
\paragraph*{Aufgabe 4}
Interpretieren Sie die Veränderungen zwischen den Histogrammen mit und ohne \glqq magischen Umhang\grqq . Verhalten sich die einzelnen Kanäle gleich? Lassen sich Bereiche in den Histogrammen herausstellen, die dem Umhang zuzuordnen sind? Diskutieren Sie Ihre Beobachtungen.
\color{blue}
Im H-Kanal ist ein guter Spike um den Wert 175 zu erkennen, nach Verwendung des Umhangs, was etwa 350 Grad entspricht und somit der
Farbe rot-orangener Bereich. Auch ein Anstieg im Bereich 0 Grad ist zu erkennen was dem reinen rot entspricht. Die Farbe rot bzw. der Umhang lässt sich also im Farbwertkanal gut erkennen. Der Sättigungs- und Helligkeitskanal sind in dieser Aufgabe eher irrelevant, da es nur um die Farbe geht.
\color{black}
\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}
@@ -60,5 +199,18 @@ Versuchen Sie mit den gegebenen Histogrammen Wertebereiche zu finden, mit denen
\end{equation}
wobei $S_\textnormal{Umhang}$ die Binärmaske beschreibt und $R_\textnormal{min}$ und $R_\textnormal{max}$ beispielhafte Schwellwerte für den Rot-Kanal sind.
\color{blue}
Für den RGB-Raum wäre das 200-250 für den Rot-Kanal
Für den HSV-Raum wäre das 160-200 für den H-Kanal
\color{black}
\paragraph*{Aufgabe 6}
Worauf muss geachtet werden, wenn mit dem H-Kanal des HSV-Farbraums gearbeitet wird?
Worauf muss geachtet werden, wenn mit dem H-Kanal des HSV-Farbraums gearbeitet wird?
\color{blue}
H (Hue) ist zirkulär: Rot ist bei 0 und 360 Grad!
\color{black}

View File

@@ -1,21 +1,23 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Segmentierung und Bildmodifizierung}{14}{subsection.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.1}Statisches Schwellwertverfahren}{14}{subsubsection.2.3.1}\protected@file@percent }
\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}\protected@file@percent }
\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}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2}Bin\"armaske}{15}{subsubsection.2.3.2}\protected@file@percent }
\newlabel{lst:contours}{{9}{15}{Konturfindung}{lstlisting.9}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {9}Konturfindung}{15}{lstlisting.9}\protected@file@percent }
\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}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.3}Bildmodifizierung}{15}{subsubsection.2.3.3}\protected@file@percent }
\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}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Segmentierung und Bildmodifizierung}{25}{subsection.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.1}Statisches Schwellwertverfahren}{25}{subsubsection.2.3.1}\protected@file@percent }
\newlabel{lst:conditions}{{7}{25}{Benutzung von Randbedingungen mit \textit {numpy}}{lstlisting.7}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}Benutzung von Randbedingungen mit \textit {numpy}}{25}{lstlisting.7}\protected@file@percent }
\newlabel{lst:code1}{{8}{25}{Segmentierung und Bildmodifizierung, Aufgabe 1}{lstlisting.8}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {8}Segmentierung und Bildmodifizierung, Aufgabe 1}{25}{lstlisting.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.2}Bin\"armaske}{26}{subsubsection.2.3.2}\protected@file@percent }
\newlabel{lst:contours}{{9}{26}{Konturfindung}{lstlisting.9}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {9}Konturfindung}{26}{lstlisting.9}\protected@file@percent }
\newlabel{lst:contours}{{10}{26}{Segmentierung und Bildmodifizierung, Aufgabe 2}{lstlisting.10}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {10}Segmentierung und Bildmodifizierung, Aufgabe 2}{26}{lstlisting.10}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.3}Bildmodifizierung}{27}{subsubsection.2.3.3}\protected@file@percent }
\newlabel{lst:contours}{{11}{27}{Segmentierung und Bildmodifizierung, Aufgabe 4}{lstlisting.11}{}}
\@writefile{lol}{\contentsline {lstlisting}{\numberline {11}Segmentierung und Bildmodifizierung, Aufgabe 4}{27}{lstlisting.11}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {22}{\ignorespaces Endergebnis}}{28}{figure.22}\protected@file@percent }
\newlabel{fig:histogram-endergebnis}{{22}{28}{Endergebnis}{figure.22}{}}
\@setckpt{sections/a3}{
\setcounter{page}{17}
\setcounter{page}{29}
\setcounter{equation}{5}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -30,21 +32,21 @@
\setcounter{subsubsection}{3}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{figure}{22}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{17}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{CurrentPage}{29}
\setcounter{pagesLTS.pagenr}{29}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{section@level}{3}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{14}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{lstnumber}{20}
\setcounter{pagesLTS.arabic.1.local.cnt}{29}
\setcounter{lstlisting}{11}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{17}
\setcounter{pagesLTS.current.local.arabic}{29}
}

View File

@@ -31,7 +31,24 @@ Geben Sie Ihren Code an und beschreiben Sie ihn. Geben Sie nur relevante Code Be
\lstset{caption={Segmentierung und Bildmodifizierung, Aufgabe 1}}
\begin{lstlisting}
# Your code!
def _23_SegmentUndBildmodifizierung (self, img, save_binary_mask = False):
# Convert BGR -> HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Area 1: H = 0-10 (strong Rot)
lower_red1 = np.array([0, 100, 50])
upper_red1 = np.array([0, 255, 255])
# Area 2: H = 169-179 (red-violet)
lower_red2 = np.array([171, 100, 50])
upper_red2 = np.array([179, 255, 255])
# Create binary mask for both red areas
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
# Combine both masks
mask = cv2.bitwise_or(mask1, mask2)
\end{lstlisting}
\subsubsection{Binärmaske}
@@ -52,12 +69,36 @@ img = cv2.drawContours(img, [c], -1, color=255, -1)
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!
def _23_SegmentUndBildmodifizierung (self, img, save_binary_mask = False):
# ...
# Optimizing mask with opening and closing
kernel = np.ones((5, 5), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
# Select biggest connected area
cnts, _ = cv2.findContours(mask, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
if cnts:
c = max(cnts, key=cv2.contourArea)
new_mask = np.zeros_like(mask)
cv2.drawContours(new_mask, [c], -1, color = 255, thickness = -1)
mask = new_mask
else:
mask = np.zeros_like(mask)
\end{lstlisting}
\paragraph*{Aufgabe 3}
Welche Probleme oder Fehler können in der Binärmaske vorkommen, die mit den Maßnahmen beseitigt werden sollen?
\color{blue}
Durch das Opening und Closing können sich zwei Bereiche miteinander verbinden, die jedoch nicht zusammengehören. Die Wahl des größten zusammenhängenden Segments kann relevante Bereiche auch einfach auslassen, wenn das Opening und Closing diesen nicht zu größten Bereich zusammengeführt hat.
\color{black}
\subsubsection{Bildmodifizierung}
Nach dem Fertigstellen der vorherigen Aufgabenstellungen sollten Sie nun eine Binärmaske erhalten, welche den \glqq magischen Umhang\grqq\ segmentiert. Die letzte Aufgabe befasst sich mit der Bildmodifizierung, welche den Eindruck verschwindender Objekte vermittelt.
@@ -74,8 +115,33 @@ Solange kein Bild in der Variable gespeichert ist, soll das Eingangsbild direkt
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!
def _23_SegmentUndBildmodifizierung (self, img, save_binary_mask = False):
# ...
# Return image if no background is set
if self.background is None:
return img
# 3-channel mask for binary operations
mask_3ch = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
# Background are: Get from save background image
background_part = cv2.bitwise_and(self.background, mask_3ch)
# Foreground area: Extract from current image
foreground_part = cv2.bitwise_and(img, cv2.bitwise_not(mask_3ch))
# Merge both areas
output = cv2.add(background_part, foreground_part)
return output
\end{lstlisting}
\paragraph*{Aufgabe 5}
Geben Sie ein Bild (z.B. Screenshot) an, in dem die Funktion Ihres \glqq magischen Umhangs\grqq\ gezeigt wird!
Geben Sie ein Bild (z.B. Screenshot) an, in dem die Funktion Ihres \glqq magischen Umhangs\grqq\ gezeigt wird!
\begin{figure}
\centering
\includegraphics[width=10cm]{fig/Endergebnis.png}
\caption{Endergebnis}
\label{fig:histogram-endergebnis}
\end{figure}

View File

@@ -1,8 +1,8 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\@writefile{toc}{\contentsline {section}{\numberline {3}Zusammenfassung}{17}{section.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3}Zusammenfassung}{29}{section.3}\protected@file@percent }
\@setckpt{sections/conclusion}{
\setcounter{page}{18}
\setcounter{page}{30}
\setcounter{equation}{5}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -17,21 +17,21 @@
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
\setcounter{figure}{5}
\setcounter{figure}{22}
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{18}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{CurrentPage}{30}
\setcounter{pagesLTS.pagenr}{29}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{section@level}{1}
\setcounter{Item}{0}
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{15}
\setcounter{lstnumber}{2}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{lstnumber}{20}
\setcounter{pagesLTS.arabic.1.local.cnt}{29}
\setcounter{lstlisting}{11}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}
\setcounter{pagesLTS.current.local.arabic}{18}
\setcounter{pagesLTS.current.local.arabic}{30}
}

View File

@@ -38,7 +38,7 @@
\setcounter{table}{1}
\setcounter{currfiledepth}{0}
\setcounter{CurrentPage}{8}
\setcounter{pagesLTS.pagenr}{17}
\setcounter{pagesLTS.pagenr}{29}
\setcounter{pagesLTS.current.local.0}{1}
\setcounter{pagesLTS.pnc.0}{0}
\setcounter{section@level}{2}
@@ -46,7 +46,7 @@
\setcounter{Hfootnote}{2}
\setcounter{bookmark@seq@number}{3}
\setcounter{lstnumber}{10}
\setcounter{pagesLTS.arabic.1.local.cnt}{17}
\setcounter{pagesLTS.arabic.1.local.cnt}{29}
\setcounter{lstlisting}{2}
\setcounter{pagesLTS.pnc.arabic}{1}
\setcounter{pagesLTS.double.arabic}{1}