Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Виявлення Контурів | Обробка Зображень з OpenCV
Основи Комп'ютерного Зору
Секція 2. Розділ 7
single

single

bookВиявлення Контурів

Свайпніть щоб показати меню

Виявлення контурів

Контури відображають різкі зміни яскравості пікселів, які зазвичай відповідають межам об'єктів. Виявлення контурів допомагає у розпізнаванні форм і сегментації.

Виявлення контурів методом Собеля

Оператор Собеля обчислює градієнти (зміни яскравості) у X та Y напрямках, що дозволяє знаходити горизонтальні та вертикальні контури.

# Convert to grayscale
image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

# Apply Sobel filter
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)  # Detects vertical edges
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)  # Detects horizontal edges
sobel_combined = cv2.magnitude(sobel_x, sobel_y)  # Combines both directions
Note
Примітка

Ключові параметри:

  • src: вхідне зображення (має бути у відтінках сірого);
  • ddepth: глибина вихідного зображення (наприклад, cv2.CV_64F);
  • dx: порядок похідної у напрямку X (встановити 1 для горизонтальних контурів);
  • dy: порядок похідної у напрямку Y (встановити 1 для вертикальних контурів);
  • ksize: розмір ядра (має бути непарним, наприклад, 3, 5, 7).

Виявлення контурів методом Кенні

Детектор контурів Кенні — це багатоступенева процедура, яка забезпечує більш точне виявлення контурів шляхом:

  1. Застосування гаусового розмиття для видалення шуму.
  2. Пошуку градієнтів яскравості за допомогою фільтрів Собеля.
  3. Придушення слабких контурів.
  4. Використання подвійного порогового значення та відстеження контурів.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Примітка
  • image: вхідне зображення у відтінках сірого;
  • threshold1: нижній поріг для виявлення країв (наприклад, 50);
  • threshold2: верхній поріг для виявлення країв (наприклад, 150);
  • apertureSize (необов'язково): розмір ядра Собеля (типово: 3, має бути непарним);
  • L2gradient (необов'язково): використання більш точної обчислення градієнта за нормою L2 (типово: False).

Порівняння методів виявлення країв:

порівняння виявлення країв
Завдання

Swipe to start coding

Вам надано image:

  • Перетворіть зображення у відтінки сірого та збережіть у gray_image;
  • Застосуйте фільтр Собеля по напрямках X та Y (глибина вихідного зображення cv2.CV_64F, розмір ядра 3) та збережіть у sobel_x, sobel_y відповідно;
  • Об'єднайте напрямки, оброблені фільтром Собеля, у sobel_img;
  • Застосуйте фільтр Кенні з порогами від 200 до 300 та збережіть у canny_img.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 7
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

some-alt