Initial commit with project files
This commit is contained in:
24
2_Bildbearbeitung/ü5/README.md
Normal file
24
2_Bildbearbeitung/ü5/README.md
Normal 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).
|
||||
18
2_Bildbearbeitung/ü5/b.py
Normal file
18
2_Bildbearbeitung/ü5/b.py
Normal 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()
|
||||
12
2_Bildbearbeitung/ü5/l_a.py
Normal file
12
2_Bildbearbeitung/ü5/l_a.py
Normal 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))
|
||||
24
2_Bildbearbeitung/ü5/l_b.py
Normal file
24
2_Bildbearbeitung/ü5/l_b.py
Normal 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()
|
||||
Reference in New Issue
Block a user