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

View File

@@ -0,0 +1,24 @@
# Übung 5: Nichtlineare Filter
In dieser Übung wird der nichtlineare Median-Filter behandelt. Der Median-Filter ist ein Sonderfall des Rangfolge-Filters.
Bei einem Rangfolge-Filter werden die Werte des zu untersuchenden Bildausschnitts aufsteigend sortiert.
Je nach Filter-Definition wird dann der n-te Wert der Folge als neuer Pixelwert definiert. Sonderfälle des Rangfolge-Filters sind:
- Maximum-Filter: Letzter Wert der Folge
- Minimum-Filter: Erster Wert der Folge
- Median-Filter: Wert der mittleren Position der Folge
## Aufgabe a)
Gegeben ist folgender Bildausschnitt:
<p align="center">
<img src="https://latex.codecogs.com/svg.image?I&space;=&space;\begin{bmatrix}1&space;&4&space;&space;&6&space;&space;\\&space;3&&space;2&space;&&space;1&space;\\&space;6&&space;&space;8&&space;&space;2\end{bmatrix}&space;" title="I = \begin{bmatrix}1 &4 &6 \\ 3& 2 & 1 \\ 6& 8& 2\end{bmatrix} " />
</p>
Geben Sie den Mittelwert und Median des Ausschnitts an!
Die Lösung finden Sie in der Datei [l_a.py](l_a.py).
## Aufgabe b)
Starten Sie das Program [b.py](b.py) um ein verrauschtes Bild zu erhalten und filtern Sie es
mit der OpenCV-Filterfunktion *cv2.medianBlur()*. Führen Sie die Filterung mit den Filtergrößen: 3x3, 5x5,
9x9. Vergleichen Sie die Ergebnisse durch Visualisierung des Ergebnisses mit *cv2.imshow()*.
Die Lösung finden Sie in der Datei [l_b.py](l_b.py).

View File

@@ -0,0 +1,18 @@
import cv2
import numpy as np
img = cv2.imread("../../data/lena.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
''' Rauschen hinzufügen '''
h, w = img.shape
saltpepper_noise = np.zeros((h, w), dtype=np.uint8)
saltpepper_noise = cv2.randu(saltpepper_noise, 0, 255)
black = saltpepper_noise < 15
white = saltpepper_noise > 240
img[white] = 255
img[black] = 0
''' Bild anzeigen '''
cv2.imshow("img", img)
cv2. waitKey()

View File

@@ -0,0 +1,12 @@
import numpy as np
I = [
[1, 4, 6],
[3, 2, 1],
[6, 8, 2],
]
I = np.asarray(I)
print("Median", np.median(I))
print("Mittelwert", np.average(I))

View File

@@ -0,0 +1,24 @@
import cv2
import numpy as np
img = cv2.imread("../../data/lena.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
''' Rauschen hinzufügen '''
h, w = img.shape
saltpepper_noise = np.zeros((h, w), dtype=np.uint8)
saltpepper_noise = cv2.randu(saltpepper_noise, 0, 255)
black = saltpepper_noise < 15
white = saltpepper_noise > 240
img[white] = 255
img[black] = 0
cv2.imshow("img", img)
''' Median Filter anwenden '''
sizes = [3, 5, 9]
for kernel_size in sizes:
img_filtered = cv2.medianBlur(img, kernel_size)
cv2.imshow("img_filtered_" + str(kernel_size), img_filtered)
cv2. waitKey()