Finish documentation
This commit is contained in:
@@ -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}
|
||||
Reference in New Issue
Block a user