Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Виявлення Країв | Розділ
Прикладний комп'ютерний зір
Секція 1. Розділ 10
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Перейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

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

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

Секція 1. Розділ 10
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

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

some-alt