110 lines
3.1 KiB
Markdown
110 lines
3.1 KiB
Markdown
# Übung 2: Lokale Bildoperationen
|
|
|
|
Lokale Bildoperationen berechnen den Pixelwert des Ausgangspixels aus der lokalen Umgebung des Eingangspixels. Die
|
|
Berechnungsvorschrift ist dabei für jedes Pixel gleich.
|
|
|
|
In dieser Übung werden einige Beispiele für lokale Bildoperationen behandelt. Dabei werden unter anderem
|
|
- Faltung
|
|
- Gradienten
|
|
- Rangfolgefilter
|
|
- Hochpass, Tiefpass, Bandpass
|
|
verwendet.
|
|
|
|
## Aufgabe a)
|
|
Das Bild zeigt ***I_in*** zwei sich schneidende Linien (eine horizontalen und eine vertikale) auf hellem
|
|
Hintergrund (außerhalb des eingezeichneten Rasters sind die Flächen wie angedeutet störungsfrei
|
|
fortgeführt). Es soll nun die Horizontale extrahiert und in binärer Form dargestellt werden, so dass
|
|
sich das Binärbild ***I_out*** ergibt. Im folgenden sind
|
|
die Bilder visualisiert und als Matrix dargestellt.
|
|
|
|
<p align="center">
|
|
<img src="./data/cross1.png" />
|
|
</p>
|
|
|
|
```python
|
|
I_in = [
|
|
[200, 200, 100, 200, 200],
|
|
[200, 200, 100, 200, 200],
|
|
[100, 100, 100, 100, 100],
|
|
[200, 200, 100, 200, 200],
|
|
[200, 200, 100, 200, 200],
|
|
]
|
|
```
|
|
|
|
<p align="center">
|
|
<img src="./data/cross2.png" />
|
|
</p>
|
|
|
|
```python
|
|
I_out = [
|
|
[ 0, 0, 0, 0, 0],
|
|
[ 0, 0, 0, 0, 0],
|
|
[255, 255, 255, 255, 255],
|
|
[ 0, 0, 0, 0, 0],
|
|
[ 0, 0, 0, 0, 0],
|
|
]
|
|
```
|
|
|
|
Für die Aufgabe stehen die folgenden Operationen zur Verfügung:
|
|
|
|
- Hochpassfilter mit 3x3 Faltungskern
|
|
|
|
```python
|
|
[
|
|
[ -1, -1, -1 ],
|
|
[ -1, 8, -1 ],
|
|
[ -1, -1, -1 ]
|
|
]
|
|
```
|
|
- Kantenfilter mit 3x3 Faltungskern
|
|
|
|
```python
|
|
[
|
|
[ 1, 0, -1 ],
|
|
[ 1, 0, -1 ],
|
|
[ 1, 0, -1 ]
|
|
]
|
|
```
|
|
- Kantenfilter mit 3x3 Faltungskern
|
|
|
|
```python
|
|
[
|
|
[ -1, -1, -1 ],
|
|
[ 0, 0, 0 ],
|
|
[ 1, 1, 1 ]
|
|
]
|
|
```
|
|
- Punktoperation: Betragsbildung
|
|
- Punktoperation: Schwellwertoperation, Punkte mit einer Intensität *I_xy* < 128 werden auf *I_xy* = 0 gesetzt, ansonsten zu 255
|
|
- Median-Filter der Größe 3x3
|
|
|
|
Wählen Sie 4 der 6 Operationen und wenden Sie sie auf die das Bild an. Jede Operation darf dabei nur einmal verwendet werden.
|
|
Visualisieren Sie jeden Zwischenschritt.
|
|
Die Aufgabe soll in der Datei [a.py](a.py) bearbeitet werden! Die entsprechende Lösung finden Sie in [l_a.py](l_a.py).
|
|
|
|
**Hinweis:** Mehrere Lösungswege sind möglich!
|
|
|
|
|
|
## Aufgabe b)
|
|
Gegeben ist das Bild [edge_01.png](data/edge_01.png). Es zeigt zwei aneinander grenzende graue Flächen die mit Rauschen
|
|
versetzt sind. Ziel ist es, das Bild so zu filtern, dass die Kante als weichgezeichnete Linie auf
|
|
schwarzem Untergrund resultiert, wie in Bild [edge_02.png](data/edge_02.png) beispielhaft dargestellt ist.
|
|
|
|
*edge_01.png*:
|
|
|
|
<p align="center">
|
|
<img src="./data/edge_01.png" />
|
|
</p>
|
|
|
|
*edge_02.png*:
|
|
<p align="center">
|
|
<img src="./data/edge_02.png" />
|
|
</p>
|
|
|
|
Für die Bearbeitung können Sie sich verschiedener Filter bedienen. Beispiele dafür können sein
|
|
- Hochpass, Tiefpass, Bandpass
|
|
- Diverse Richtungsfilter
|
|
- Rangfolgefilter wie Minimum, Maximum, Median
|
|
|
|
Die Aufgabe soll in der Datei [b.py](b.py) bearbeitet werden! Die entsprechende Lösung finden Sie in [l_b.py](l_b.py).
|