Einstieg ins Thresholding

Bildverarbeitung mit Python

Rebeca Gonzalez

Data Engineer

Thresholding

Ein Bild in Vorder- und Hintergrund aufteilen

Indem wir es schwarz-weiß machen

Dazu setzen wir jeden Pixel auf:

  • 255 (weiß), wenn Pixel $\gt$ Schwellwert
  • 0 (schwarz), wenn Pixel $\lt$ Schwellwert

Schwellenwert-bild eines Mannes mit Kamera

Bildverarbeitung mit Python

Thresholding

Einfachste Methode der Bildsegmentierung

  • Objekte isolieren
    • Objekterkennung
    • Gesichtserkennung
    • usw.

Schwellenwert-bild von Dominosteinen

Bildverarbeitung mit Python

Thresholding

Nur bei Graustufen-Bildern

Schritte zum Thresholding, gezeigt mit Dominosteinen: zuerst originales RGB-3-farbig, dann Graustufen und dann geschwellt

Bildverarbeitung mit Python

Anwenden

# Optimalen Schwellwert bestimmen
thresh = 127

# Thresholding auf das Bild anwenden binary = image > thresh
# Original und Ergebnis anzeigen show_image(image, 'Original') show_image(binary, 'Thresholded')

Schwellenwert-bild eines Mannes mit Kamera

Bildverarbeitung mit Python

Invertiertes Thresholding

# Optimalen Schwellwert bestimmen
thresh = 127

# Invertiertes Thresholding anwenden inverted_binary = image <= thresh
# Original und Ergebnis anzeigen show_image(image, 'Original') show_image(inverted_binary, 'Inverted thresholded')

Invertiertes Schwellenwert-bild eines Mannes mit Kamera

Bildverarbeitung mit Python

Kategorien

  • Global oder histogrammbasiert: gut bei einheitlichem Hintergrund

  • Lokal oder adaptiv: bei ungleichmäßiger Ausleuchtung

Vergleich von globalem und lokalem Thresholding

Bildverarbeitung mit Python

Weitere Thresholding-Algorithmen ausprobieren

from skimage.filters import try_all_threshold

# Alle Ergebnisbilder erzeugen fig, ax = try_all_threshold(image, verbose=False)
# Ergebnisse anzeigen show_plot(fig, ax)
Bildverarbeitung mit Python

Weitere Thresholding-Algorithmen ausprobieren

Alle globalen Thresholding-Methoden, getestet auf einem Graustufenbild einer Textseite

Bildverarbeitung mit Python

Optimaler Schwellwert

Global

Einheitlicher Hintergrund
# Otsu-Schwellwertfunktion importieren
from skimage.filters import threshold_otsu

# Optimalen Schwellwert bestimmen thresh = threshold_otsu(image)
# Thresholding anwenden binary_global = image > thresh
Bildverarbeitung mit Python

Optimaler Schwellwert

Global

# Original und binarisiertes Bild anzeigen
show_image(image, 'Original')
show_image(binary_global, 'Global thresholding')

Originalbild eines Mannes mit Kamera, das geschwellte Bild und sein Histogramm mit roter Linie für den optimalen Schwellwert

Bildverarbeitung mit Python

Optimaler Schwellwert

Lokal

Ungleichmäßiger Hintergrund
# Lokale Schwellwertfunktion importieren
from skimage.filters import threshold_local

# Blockgröße auf 35 setzen block_size = 35
# Optimalen lokalen Schwellwert berechnen local_thresh = threshold_local(text_image, block_size, offset=10)
# Lokales Thresholding anwenden und binäres Bild erhalten binary_local = text_image > local_thresh
Bildverarbeitung mit Python

Optimaler Schwellwert

Lokal

# Original und binarisiertes Bild anzeigen
show_image(text_image, 'Original')
show_image(binary_local, 'Local thresholding')

Lokal geschwellenwertetes Bild einer Textseite

Bildverarbeitung mit Python

Lass uns üben!

Bildverarbeitung mit Python

Preparing Video For Download...