Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Filter, Weichzeichnen und Rauschen

Nach dieser Lektion: Ich kann einen 3-mal-3-Kern auf ein Bild anwenden und mit ihm Rauschen glätten.

Lektion, 60 Min.2 BefehleComputer-Vision-Lab: Pixel, Schwellenwerte und Objekte zählen in JupyterLab

Wie ein Filter Rauschen aus einem Bild nimmt

Ein Filter ersetzt jedes Pixel durch eine Rechnung mit seinen Nachbarn. Der bekannteste Filter ist das Weichzeichnen (englisch Blur), das Rauschen glättet.

Viele Aufnahmen sind verrauscht, zum Beispiel ein Scan oder ein Foto bei wenig Licht. Mit einem Filter vorher finden spätere Schritte weniger falsche Kanten.

Am Ende dieser Lektion

Notiz

Ich kann einen 3-mal-3-Kern auf ein Bild anwenden und mit ihm Rauschen glätten.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Filtereine Regel, die jedes Pixel aus seinen Nachbarn berechnet
Kernein kleines Raster aus Gewichten, englisch Kernel3 mal 3
Faltungder Kern gleitet über das Bild und bildet Summen
Weichzeichnenjedes Pixel wird zum Mittel seiner Nachbarn
Mediander mittlere Wert einer sortierten Liste

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Kern gleitet über das Bild

Ein Kern ist ein kleines Raster aus Gewichten, hier 3 mal 3. Er liegt auf neun Pixeln. Jedes Pixel wird mit dem Gewicht darunter multipliziert, und alle neun Produkte werden addiert.

Die Summe wird das neue Pixel in der Mitte. Dann rückt der Kern ein Pixel weiter. Am Rand fehlen Nachbarn, deshalb rechnen wir nur die inneren Pixel. Das Ergebnis ist zwei Zeilen und zwei Spalten kleiner.

Ein Kern auf einem Ausschnitt

Code: python
# Ein 3-mal-3-Ausschnitt mit einem hellen Ausreißer in der Mitte.
ausschnitt = [
    [10, 10, 10],
    [10, 255, 10],
    [10, 10, 10],
]
# Ein Kern aus lauter Einsen: alle neun Pixel zählen gleich.
kern = [
    [1, 1, 1],
    [1, 1, 1],
    [1, 1, 1],
]
summe = 0
for z in range(3):
    for s in range(3):
        summe = summe + kern[z][s] * ausschnitt[z][s]
print("Summe:", summe)
print("Mittelwert:", summe // 9)
# Ändern Sie den Ausreißer in 100 und starten Sie erneut.

Der Median ignoriert einen Ausreißer

Ein Mittelwertfilter lässt jeden hellen Punkt ein wenig in die Nachbarn bluten. Ein Median-Filter sortiert die neun Werte und nimmt den mittleren. Ein einzelner Ausreißer landet am Ende der Liste und zählt nicht.

In der Tabelle liegt ein Wert 255 zwischen acht Werten 10. Der Befehl rechnet beides nach.

Beispiel: ein heller Punkt in neun Pixeln

FilterRechnungErgebnis
Mittelwert(8 mal 10 plus 255) geteilt durch 9, ganzzahlig37
Mediansortiert: acht Zehner, dann 255, der fünfte Wert10

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Mittelwert und Median nachrechnen

Befehl
docker exec jupyter python3 -c "print(sum([10, 10, 10, 10, 255, 10, 10, 10, 10]) // 9, sorted([10, 10, 10, 10, 255, 10, 10, 10, 10])[4])"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Skript blur.py zeichnet eine Seite weich

Das Skript gibt englische Wörter aus: spread heißt Streuung, empty patch ein leerer Ausschnitt, before vor und after nach dem Filter. Die Streuung ist ein Maß dafür, wie stark die Werte schwanken.

Der leere Ausschnitt von scan.png hat vorher die Streuung 25,3 und nachher 4,9. Das Rauschen ist fast weg. Der Filter ist ein Gauß-Filter mit Radius 2: Nähere Pixel zählen mehr. Das Ergebnis liegt als scan_blurred.png im Ordner.

Das Rauschen der Seite messen

Befehl
docker exec jupyter python3 steps/blur.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele denken, ein Mittelwertfilter entferne jeden Ausreißer. Er verteilt ihn nur: 255 wird zu 37 und färbt die Nachbarn mit. Bei einzelnen Ausreißern nimmt man den Median. Das Weichzeichnen kostet immer etwas Schärfe.

Über dieses Lab und seinen Quellcode: Computer-Vision-Lab: Pixel, Schwellenwerte und Objekte zählen in JupyterLab

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.