Aan de slag met thresholding

Beeldverwerking in Python

Rebeca Gonzalez

Data Engineer

Thresholding

Een afbeelding opdelen in voorgrond en achtergrond

Door deze zwart-wit te maken

We doen dit door elke pixel in te stellen op:

  • 255 (wit) als pixel $\gt$ drempel
  • 0 (zwart) als pixel $\lt$ drempel

Gethresholdde afbeelding van een man met camera

Beeldverwerking in Python

Thresholding

Eenvoudigste methode voor beeldsegmentatie

  • Isoleer objecten
    • Objectdetectie
    • Gezichtsdetectie
    • Etc.

Gethresholdde afbeelding van dominostenen

Beeldverwerking in Python

Thresholding

Alleen op grijswaarden-afbeeldingen

Stappen voor thresholding met dominostenen. Eerst origineel RGB (3 kanalen), daarna grijswaarden en vervolgens gethresholdd

Beeldverwerking in Python

Pas het toe

# Bepaal de optimale drempelwaarde
thresh = 127

# Pas thresholding toe op de afbeelding binary = image > thresh
# Toon origineel en resultaat show_image(image, 'Original') show_image(binary, 'Thresholded')

Gethresholdde afbeelding van een man met camera

Beeldverwerking in Python

Omgekeerde thresholding

# Bepaal de optimale drempelwaarde
thresh = 127

# Pas thresholding toe op de afbeelding inverted_binary = image <= thresh
# Toon origineel en resultaat show_image(image, 'Original') show_image(inverted_binary, 'Inverted thresholded')

Omgekeerd gethresholdde afbeelding van een man met camera

Beeldverwerking in Python

Categorieën

  • Globaal of histogramgebaseerd: goed bij egale achtergrond

  • Lokaal of adaptief: voor oneffen belichting

Vergelijking van globale en lokale thresholding

Beeldverwerking in Python

Probeer meer thresholding-algoritmen

from skimage.filters import try_all_threshold

# Genereer alle resultaatafbeeldingen fig, ax = try_all_threshold(image, verbose=False)
# Toon de resultaten show_plot(fig, ax)
Beeldverwerking in Python

Probeer meer thresholding-algoritmen

Alle globale threshold-methoden getest op een grijswaarde-afbeelding van een tekstpagina

Beeldverwerking in Python

Optimale drempelwaarde

Globaal

Egale achtergrond
# Importeer de Otsu-drempelfunctie
from skimage.filters import threshold_otsu

# Bepaal de optimale drempelwaarde thresh = threshold_otsu(image)
# Pas thresholding toe op de afbeelding binary_global = image > thresh
Beeldverwerking in Python

Optimale drempelwaarde

Globaal

# Toon origineel en gebinariseerde afbeelding
show_image(image, 'Original')
show_image(binary_global, 'Global thresholding')

Originele afbeelding van een man met camera, de gethresholdde versie en het histogram met een rode lijn voor de optimale drempel

Beeldverwerking in Python

Optimale drempelwaarde

Lokaal

Oneffen achtergrond
# Importeer de lokale drempelfunctie
from skimage.filters import threshold_local

# Stel block size in op 35 block_size = 35
# Bepaal de optimale lokale drempel local_thresh = threshold_local(text_image, block_size, offset=10)
# Pas lokale thresholding toe en maak binair binary_local = text_image > local_thresh
Beeldverwerking in Python

Optimale drempelwaarde

Lokaal

# Toon origineel en gebinariseerde afbeelding
show_image(text_image, 'Original')
show_image(binary_local, 'Local thresholding')

Lokaal gethresholdde afbeelding van een tekstpagina

Beeldverwerking in Python

Laten we oefenen!

Beeldverwerking in Python

Preparing Video For Download...