# Ü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.
```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],
]
```
```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*:
*edge_02.png*:
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).