Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Canny Edge Detection

Детектор границ Канни — многоэтапный алгоритм, который снижает шум, обнаруживает резкие изменения яркости и создает тонкие карты границ для компьютерного зрения.

Детектор границ Канни — это многоэтапный алгоритм обработки изображений, который обнаруживает резкие изменения яркости и преобразует их в тонкую бинарную карту границ. Он снижает шум, находит переходы интенсивности и соединяет надежные пиксели границ в контуры. В компьютерном зрении эти контуры описывают структуру изображения для анализа формы и измерений.

Джон Канни разработал этот метод в 1983 году и описал его в статье 1986 года «Вычислительный подход к обнаружению границ». При разработке метода учитывались три цели: обнаруживать реальные границы, точно определять их расположение и получать один отклик на каждую границу. «Детектор границ Канни» — синоним названия алгоритма.

Как работает детектор границ Канни#

Алгоритм объединяет предварительную обработку данных, фильтрацию и анализ связности. Каждый из пяти этапов выполняет свою задачу:

  • Снижение шума: Гауссово сглаживание усредняет значения соседних пикселей с весами, зависящими от расстояния, подавляя колебания, которые могли бы создать нежелательные границы.
  • Оценка градиента: Горизонтальные и вертикальные производные измеряют скорость изменения яркости. Вместе они задают силу границы и направление, перпендикулярное ей. На этом этапе OpenCV использует производные Собеля.
  • Утончение границ: Подавление немаксимумов сохраняет локальные пики градиента вдоль его направления, формируя узкие гребни вместо широких полос.
  • Двойная пороговая обработка: Высокий порог выделяет сильные границы, а низкий отсекает слабые отклики. Пиксели между порогами становятся кандидатами.
  • Связывание по гистерезису: Пиксели-кандидаты сохраняются, если соединены с сильной границей через другие пиксели-кандидаты. Изолированные кандидаты удаляются.

Пороговые значения, сглаживание и типичные сбои#

Пороговые значения применяются к силе градиента, а не к исходной яркости или уверенности модели. При снижении порогов сохраняется больше деталей и шума; при повышении — слабые границы удаляются. Повышение верхнего порога также уменьшает число сильных граничных пикселей, доступных для связывания методом гистерезиса.

Масштаб гауссова сглаживания задаёт отдельный компромисс. Более сильное сглаживание подавляет шум, но удаляет мелкие структуры. В примере scikit-image с зашумлённым квадратом изменение стандартного отклонения гауссова распределения влияет на то, сколько шума остаётся вокруг квадрата.

При проверке трещин на шероховатых бетонных поверхностях появляются нежелательные текстурные границы и неполные контуры трещин. Повышение порогов удаляет часть ложных границ, но при этом теряются и реальные участки трещин.

Оператор Sobel оценивает производные интенсивности; Canny объединяет оценку градиента со сглаживанием, прореживанием и отбором на основе связности. На этапе прореживания Canny сравнивает соседние пиксели, а NMS для обнаружения объектов сравнивает перекрывающиеся предсказанные рамки.

Детекция границ методом Canny на Python#

Установи зависимости с помощью pip install opencv-python numpy. В этом примере для сохранения карты границ образца с автобусом используется OpenCV:

from urllib.request import urlopen

import cv2
import numpy as np

with urlopen("https://ultralytics.com/images/bus.jpg") as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
gray = cv2.imdecode(encoded, cv2.IMREAD_GRAYSCALE)

# Сгладь изображение перед вычислением градиентов интенсивности.
smoothed = cv2.GaussianBlur(gray, (5, 5), 1.4)
edges = cv2.Canny(smoothed, 50, 150, L2gradient=True)
cv2.imwrite("canny_edges.png", edges)

На сохранённом PNG оставшиеся границы отображаются белым на чёрном фоне. В рабочем процессе обнаружения границ в OpenCV второй и третий аргументы Canny задают нижний и верхний пороги. L2gradient=True использует евклидову величину градиента; по умолчанию используется сумма абсолютных значений горизонтальной и вертикальной производных. Эти варианты меняют значения градиента и, следовательно, поведение порогов.

Canny подходит для геометрического извлечения признаков: в примере обнаружения линий из scikit-image метод применяется к фотографии оператора, после чего вероятностное преобразование Хафа извлекает прямые отрезки. Canny определяет граничные пиксели; голосование Хафа объединяет их в линии. Обнаружение объектов присваивает объектам категории и рамки, а сегментация экземпляров относит пиксели к отдельным объектам.

Сегментация в Ultralytics YOLO26 возвращает маски для выделения объектов, с помощью которых можно выбирать области изображения для отдельной обработки методом Canny. Так обученный выбор объектов сочетается с классическим выделением границ.

В генеративном ИИ ControlNet использует карты Canny как пространственные условия для диффузионных моделей. Его реализация с условием Canny направляет генерацию в Stable Diffusion 1.5, используя извлечённые контуры вместе с текстовым запросом.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения