Introducere în praguri de segmentare

Procesarea imaginilor în Python

Rebeca Gonzalez

Data Engineer

Praguri de segmentare

Împărțirea unei imagini în prim-plan și fundal

Prin conversia în alb-negru

Se realizează prin setarea fiecărui pixel la:

  • 255 (alb) dacă pixelul $\gt$ valoarea prag
  • 0 (negru) dacă pixelul $\lt$ valoarea prag

Imagine cu prag aplicat a unui bărbat cu cameră

Procesarea imaginilor în Python

Praguri de segmentare

Cea mai simplă metodă de segmentare a imaginilor

  • Izolarea obiectelor
    • Detectarea obiectelor
    • Detectarea fețelor
    • Etc.

Imagine cu prag aplicat pe piese de domino

Procesarea imaginilor în Python

Praguri de segmentare

Doar din imagini în tonuri de gri

Pașii pentru aplicarea pragului pe imagini, ilustrați cu piese de domino: original RGB colorat, tonuri de gri și prag aplicat

Procesarea imaginilor în Python

Aplicați pragul

# 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')

Imagine cu prag aplicat a unui bărbat cu cameră

Procesarea imaginilor în Python

Praguri inversate

# 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')

Imagine cu prag inversat a unui bărbat cu cameră

Procesarea imaginilor în Python

Categorii

  • Global sau bazat pe histogramă: potrivit pentru fundaluri uniforme

  • Local sau adaptiv: pentru iluminare neuniformă a fundalului

Comparație între praguri globale și locale

Procesarea imaginilor în Python

Testați mai mulți algoritmi de prag

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)
Procesarea imaginilor în Python

Testați mai mulți algoritmi de prag

Toți algoritmii globali de prag testați pe o imagine în tonuri de gri a unei pagini de text

Procesarea imaginilor în Python

Valoarea optimă a pragului

Global

Fundal uniform
# 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
Procesarea imaginilor în Python

Valoarea optimă a pragului

Global

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

Imaginea originală a unui bărbat cu cameră, imaginea cu prag aplicat și histograma cu o linie roșie indicând valoarea optimă a pragului

Procesarea imaginilor în Python

Valoarea optimă a pragului

Local

Fundal neuniform
# 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
Procesarea imaginilor în Python

Valoarea optimă a pragului

Local

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

Imagine cu prag local aplicat a unei pagini de text

Procesarea imaginilor în Python

Să exersăm!

Procesarea imaginilor în Python

Preparing Video For Download...