Finish documentation
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -25,20 +25,75 @@ Implementieren Sie die Mittelwertbildung mit einer variablem Bildreihe $N$ (defa
|
||||
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.
|
||||
|
||||
\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<67><72>ert werden w<>rde. Sollte $N$ in dieser Anwendung vergr<67><72>ert werden?
|
||||
|
||||
\color{blue}
|
||||
Vorteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item Je gr<67><72>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<65>tigt wird
|
||||
\end{itemize}
|
||||
|
||||
|
||||
Nachteile:
|
||||
|
||||
\begin{itemize}
|
||||
\item Mathematisch aufwendiger
|
||||
\item Abh<62>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<73>ufig ausgenutzt. Um das zu <20>ndern, soll eine Histogramm Spreizung auf den Helligkeitsinformationen der Pixel durchgef<65>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}
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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<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.
|
||||
|
||||
\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<67>nen und blauen Intensit<69>ten im Bereich 50 bis 100 erkl<6B>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 <20>hnlich aus,
|
||||
was auch zu erwarten war und erw<72>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<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.
|
||||
|
||||
\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<69>rmaske beschreibt und $R_\textnormal{min}$ und $R_\textnormal{max}$ beispielhafte Schwellwerte f<>r den Rot-Kanal sind.
|
||||
|
||||
\color{blue}
|
||||
F<EFBFBD>r den RGB-Raum w<>re das 200-250 f<>r den Rot-Kanal
|
||||
|
||||
|
||||
F<EFBFBD>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<75>r: Rot ist bei 0 und 360 Grad!
|
||||
|
||||
\color{black}
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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<EFBFBD>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<69>rmaske vorkommen, die mit den Ma<4D>nahmen beseitigt werden sollen?
|
||||
|
||||
\color{blue}
|
||||
|
||||
Durch das Opening und Closing k<>nnen sich zwei Bereiche miteinander verbinden, die jedoch nicht zusammengeh<65>ren. Die Wahl des gr<67><72>ten zusammenh<6E>ngenden Segments kann relevante Bereiche auch einfach auslassen, wenn das Opening und Closing diesen nicht zu gr<67><72>ten Bereich zusammengef<65>hrt hat.
|
||||
|
||||
\color{black}
|
||||
|
||||
\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.
|
||||
|
||||
@@ -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}
|
||||
@@ -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}
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user