Пошук контурів

Обробка зображень у Python

Rebeca Gonzalez

Data Engineer

Пошук контурів

  • Вимірювати розміри
  • Класифікувати форми
  • Визначати кількість об'єктів

Усього точок на кістках доміно: 29.

Обробка зображень у Python

Бінарні зображення

Можна отримати бінарне зображення, застосувавши порогування або виявлення контурів

Обробка зображень у Python

Пошук контурів у scikit-image

Підготовка зображення

Перетворіть зображення на 2D у відтінках сірого.

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

Обробка зображень у Python

Пошук контурів у scikit-image

Підготовка зображення

Бінаризуйте зображення

# Obtain the thresh value
thresh = threshold_otsu(image)

# Apply thresholding
thresholded_image = image > thresh

Обробка зображень у Python

Пошук контурів у scikit-image

Потім використайте 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)

Обробка зображень у Python

Постійний рівень значення

Обробка зображень у Python

Кроки для пошуку контурів

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)
Обробка зображень у Python

Кроки для пошуку контурів

У результаті маємо

Обробка зображень у Python

Форма контуру

Контури: список (n,2) — ndarrays.

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)

Обробка зображень у Python

Форма контуру

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) 

Обробка зображень у Python

Форма контуру

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) 

Обробка зображень у Python

Форма контуру

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) 

Обробка зображень у Python

Форма контуру

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) --> Точки 

Кількість точок: 7.

Обробка зображень у Python

Давайте потренуємось!

Обробка зображень у Python

Preparing Video For Download...