Wprowadzenie do progowania

Przetwarzanie obrazów w Pythonie

Rebeca Gonzalez

Data Engineer

Progowanie

Podział obrazu na pierwszy plan i tło

Przez konwersję na obraz czarno-biały

Każdemu pikselowi przypisywana jest wartość:

  • 255 (biały) jeśli piksel $\gt$ wartość progu
  • 0 (czarny) jeśli piksel $\lt$ wartość progu

Obraz progowany mężczyzny z aparatem

Przetwarzanie obrazów w Pythonie

Progowanie

Najprostsza metoda segmentacji obrazu

  • Izolowanie obiektów
    • Wykrywanie obiektów
    • Wykrywanie twarzy
    • Itp.

Obraz progowany kostek domina

Przetwarzanie obrazów w Pythonie

Progowanie

Tylko obrazy w skali szarości

Etapy progowania obrazu na przykładzie kostek domina: oryginalny RGB, w skali szarości i po progowaniu

Przetwarzanie obrazów w Pythonie

Zastosowanie

# Obtain the optimal threshold value
thresh = 127

# Apply thresholding to the image binary = image > thresh
# Show the original and thresholded show_image(image, 'Original') show_image(binary, 'Thresholded')

Obraz progowany mężczyzny z aparatem

Przetwarzanie obrazów w Pythonie

Progowanie odwrócone

# Obtain the optimal threshold value
thresh = 127

# Apply thresholding to the image inverted_binary = image <= thresh
# Show the original and thresholded show_image(image, 'Original') show_image(inverted_binary, 'Inverted thresholded')

Odwrócony obraz progowany mężczyzny z aparatem

Przetwarzanie obrazów w Pythonie

Kategorie

  • Globalne (histogramowe): dobre dla jednolitego tła

  • Lokalne (adaptacyjne): dla nierównomiernego oświetlenia tła

Porównanie progowania globalnego i lokalnego

Przetwarzanie obrazów w Pythonie

Testowanie algorytmów progowania

from skimage.filters import try_all_threshold

# Obtain all the resulting images fig, ax = try_all_threshold(image, verbose=False)
# Showing resulting plots show_plot(fig, ax)
Przetwarzanie obrazów w Pythonie

Testowanie algorytmów progowania

Wszystkie globalne metody progowania przetestowane na obrazie w skali szarości przedstawiającym stronę tekstu

Przetwarzanie obrazów w Pythonie

Optymalna wartość progu

Globalne

Jednolite tło
# Import the otsu threshold function
from skimage.filters import threshold_otsu

# Obtain the optimal threshold value thresh = threshold_otsu(image)
# Apply thresholding to the image binary_global = image > thresh
Przetwarzanie obrazów w Pythonie

Optymalna wartość progu

Globalne

# Show the original and binarized image
show_image(image, 'Original')
show_image(binary_global, 'Global thresholding')

Oryginalny obraz mężczyzny z aparatem, obraz po progowaniu i jego histogram z czerwoną linią wskazującą optymalną wartość progu

Przetwarzanie obrazów w Pythonie

Optymalna wartość progu

Lokalne

Nierównomierne tło
# Import the local threshold function
from skimage.filters import threshold_local

# Set the block size to 35 block_size = 35
# Obtain the optimal local thresholding local_thresh = threshold_local(text_image, block_size, offset=10)
# Apply local thresholding and obtain the binary image binary_local = text_image > local_thresh
Przetwarzanie obrazów w Pythonie

Optymalna wartość progu

Lokalne

# Show the original and binarized image
show_image(text_image, 'Original')
show_image(binary_local, 'Local thresholding')

Lokalnie progowany obraz strony z tekstem

Przetwarzanie obrazów w Pythonie

Czas na ćwiczenia!

Przetwarzanie obrazów w Pythonie

Preparing Video For Download...