Znajdowanie konturów

Przetwarzanie obrazów w Pythonie

Rebeca Gonzalez

Data Engineer

Znajdowanie konturów

  • Mierzenie rozmiaru
  • Klasyfikacja kształtów
  • Określanie liczby obiektów

Łączna liczba punktów na kostkach domina: 29.

Przetwarzanie obrazów w Pythonie

Obrazy binarne

Obraz binarny można uzyskać przez progowanie lub detekcję krawędzi

Przetwarzanie obrazów w Pythonie

Znajdowanie konturów w scikit-image

Przygotowanie obrazu

Przekształcenie obrazu do 2D w skali szarości.

# Make the image grayscale
image = color.rgb2gray(image)

Przetwarzanie obrazów w Pythonie

Znajdowanie konturów w scikit-image

Przygotowanie obrazu

Binaryzacja obrazu

# Obtain the thresh value
thresh = threshold_otsu(image)

# Apply thresholding
thresholded_image = image > thresh

Przetwarzanie obrazów w Pythonie

Znajdowanie konturów w scikit-image

Następnie użyć find_contours().

# Import the measure module
from skimage import measure

# Find contours at a constant value of 0.8
contours = measure.find_contours(thresholded_image, 0.8)

Przetwarzanie obrazów w Pythonie

Stała wartość poziomu

Przetwarzanie obrazów w Pythonie

Kroki do wykrycia konturów

from skimage import measure
from skimage.filters import threshold_otsu

# Make the image grayscale
image = color.rgb2gray(image)

# Obtain the optimal thresh value of the image thresh = threshold_otsu(image) # Apply thresholding and obtain binary image thresholded_image = image > thresh
# Find contours at a constant value of 0.8 contours = measure.find_contours(thresholded_image, 0.8)
Przetwarzanie obrazów w Pythonie

Kroki do wykrycia konturów

Wynik

Przetwarzanie obrazów w Pythonie

Kształt konturu

Kontury: lista ndarray o kształcie (n,2).

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2)
(401, 2)
(401, 2) 
(123, 2)
(123, 2) 
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2)

Przetwarzanie obrazów w Pythonie

Kształt konturu

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Outer border
(401, 2)
(401, 2)
(123, 2)
(123, 2)
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) 

Przetwarzanie obrazów w Pythonie

Kształt konturu

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Outer border
(401, 2)
(401, 2) --> Inner border
(123, 2)
(123, 2) 
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) 

Przetwarzanie obrazów w Pythonie

Kształt konturu

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Outer border
(401, 2)
(401, 2) --> Inner border
(123, 2)
(123, 2) --> Divisory line of tokens
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) 

Przetwarzanie obrazów w Pythonie

Kształt konturu

for contour in contours:
    print(contour.shape)
(433, 2)
(433, 2) --> Outer border
(401, 2)
(401, 2) --> Inner border
(123, 2)
(123, 2) --> Divisory line of tokens
(59, 2)
(59, 2)
(59, 2)
(57, 2)
(57, 2)
(59, 2)
(59, 2) --> Dots 

Liczba kropek: 7.

Przetwarzanie obrazów w Pythonie

Czas na ćwiczenia!

Przetwarzanie obrazów w Pythonie

Preparing Video For Download...