Виявлення Контурів
Виявлення контурів
Контури відображають різкі зміни яскравості пікселів, які зазвичай відповідають межам об'єктів. Виявлення контурів допомагає у розпізнаванні форм і сегментації.
Виявлення контурів методом Собеля
Оператор Собеля обчислює градієнти (зміни яскравості) у 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
Ключові параметри:
src
: вхідне зображення (має бути у відтінках сірого);ddepth
: глибина вихідного зображення (наприклад,cv2.CV_64F
);dx
: порядок похідної у напрямку X (встановити1
для горизонтальних контурів);dy
: порядок похідної у напрямку Y (встановити1
для вертикальних контурів);ksize
: розмір ядра (має бути непарним, наприклад,3
,5
,7
).
Виявлення контурів методом Кенні
Детектор контурів Кенні — це багатоступенева процедура, яка забезпечує більш точне виявлення контурів шляхом:
- Застосування гаусового розмиття для видалення шуму.
- Пошуку градієнтів яскравості за допомогою фільтрів Собеля.
- Придушення слабких контурів.
- Використання подвійного порогового значення та відстеження контурів.
# Apply Canny Edge Detector
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)
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
.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
What are the main differences between Sobel and Canny edge detection?
Can you explain when to use Sobel versus Canny edge detection?
Can you provide more details on how the Canny edge detector works?
Awesome!
Completion rate improved to 3.45
Виявлення Контурів
Свайпніть щоб показати меню
Виявлення контурів
Контури відображають різкі зміни яскравості пікселів, які зазвичай відповідають межам об'єктів. Виявлення контурів допомагає у розпізнаванні форм і сегментації.
Виявлення контурів методом Собеля
Оператор Собеля обчислює градієнти (зміни яскравості) у 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
Ключові параметри:
src
: вхідне зображення (має бути у відтінках сірого);ddepth
: глибина вихідного зображення (наприклад,cv2.CV_64F
);dx
: порядок похідної у напрямку X (встановити1
для горизонтальних контурів);dy
: порядок похідної у напрямку Y (встановити1
для вертикальних контурів);ksize
: розмір ядра (має бути непарним, наприклад,3
,5
,7
).
Виявлення контурів методом Кенні
Детектор контурів Кенні — це багатоступенева процедура, яка забезпечує більш точне виявлення контурів шляхом:
- Застосування гаусового розмиття для видалення шуму.
- Пошуку градієнтів яскравості за допомогою фільтрів Собеля.
- Придушення слабких контурів.
- Використання подвійного порогового значення та відстеження контурів.
# Apply Canny Edge Detector
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)
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
.
Рішення
Дякуємо за ваш відгук!
single