Контуринг — технология выделения объектов на изображениях¶
Контуринг (от англ. contouring — контурирование) — это метод обработки цифровых изображений и компьютерного зрения, направленный на обнаружение и выделение границ (контуров) объектов на снимке или видеокадре. Контур определяется как последовательность точек, соединяющих пиксели, резко отличающиеся по яркости, цвету или текстуре от соседних. Технология применяется в распознавании объектов, анализе форм, редактировании изображений, промышленном контроле качества и медицинской диагностике.
¶Основные принципы
Контуринг основан на идентификации локальных изменений интенсивности изображения. Граница между двумя областями (например, тёмным объектом на светлом фоне) проявляется как скачок яркости — градиент. Алгоритмы контурирования вычисляют градиенты изображения и определяют точки, где изменение интенсивности превышает заданный порог.
Ключевые этапы типичного конвейера обработки:
- Предобработка — сглаживание шума (гауссово размытие, медианный фильтр), повышение контраста.
- Вычисление градиентов — определение направления и величины изменения яркости для каждого пикселя.
- Подавление немаксимумов — ослабление пикселей, не являющихся локальными максимумами градиента, для получения тонких линий шириной в один пиксель.
- Гистерезисный порог — разделение точек на «сильные» и «слабые» граничные точки по двум пороговым значениям; слабые точки сохраняются, только если соединены с сильными.
- Постобработка — соединение точек в непрерывные контуры, устранение разрывов, упрощение полигонов.
¶Основные алгоритмы
¶Алгоритм Кэнни
Разработан Джоном Кэнни в 1986 году и считается эталонным методом контурирования. Многоступенчатый алгоритм включает подавление шума, вычисление градиента по оператору Собеля, подавление немаксимумов и двойной порог с гистерезисом. Результат — тонкие, непрерывные контуры с минимальным числом ложных срабатываний.
¶Оператор Собеля
Простой оператор, использующий свёртку изображения с двумя ядрами 3×3 для вычисления горизонтальных и вертикальных градиентов. Даёт грубое приближение границ, чувствителен к шуму, но быстр в вычислении.
¶Оператор Лапласа
Вычисляет вторую производную изображения (лапласиан). Границы определяются по переходу знака производной. Требует предварительного сглаживания, так как чувствителен к шуму.
¶Алгоритм Судзуки–Акамине
Метод трассировки контуров по иерархии вложенных областей, реализованный в функции findContours библиотеки OpenCV. Позволяет находить контуры внешних и внутренних границ (например, дыр в объектах) и строить дерево вложенности.
¶Метод активных контуров (снэйк)
Предложен Михаэлем Кассом, Эндрю Уитакером и Ричардом Соркиным в 1988 году. Кривая («снэйк») итеративно деформируется под действием внутренних сил (гладкость) и внешних сил (притяжение к границам изображения), пока не стабилизируется на контуре объекта.
¶Алгоритм Дойча
Известен как trace в контексте векторизации растровых изображений. Используется для получения векторных контуров из бинарных изображений, применяется в SVG-рендеринге.
¶Классификация методов
| Критерий | Виды |
|---|---|
| По подходу | Детекторы градиента, методы активных контуров, трассировщики |
| По выходу | Точечные (пиксели границ), контурные (замкнутые кривые), векторные |
| По обрабатываемым данным | 2D-изображения, 3D-меш, видеопотоки |
| По обнаружению | Детерминированные, вероятностные (с учётом неопределённости) |
¶Применение
¶Компьютерное зрение и робототехника
Контуринг — базовый этап для распознавания объектов, отслеживания движения, навигации роботов. По контурам вычисляются геометрические характеристики: площадь, периметр, центр масс, моменты инерции.
¶Обработка изображений и дизайн
В графических редакторах (Adobe Photoshop, GIMP, Krita) контурирование используется для выделения объектов и создания масок. В Adobe Photoshop функция «Контурная обводка» (Stroke Path) позволяет обводить векторные пути по заданной толщине и цвету.
¶Промышленный контроль
На производственных линиях контуры деталей сравниваются с эталонными, что позволяет выявлять брак: отклонения геометрии, трещины, недостающие элементы.
¶Медицинская диагностика
Контурирование применяется для сегментации органов и опухолей на КТ, МРТ и рентгеновских снимках. Автоматическое выделение границ помогает врачам оценивать размеры и динамику изменений.
¶Автономное вождение
Детектирование контуров дорожной разметки, транспортных средств и пешеходов — один из ключевых этапов восприятия среды автопилотом.
¶Программные реализации
- OpenCV — библиотека компьютерного зрения с функциями
Canny,findContours,approxPolyDP,Sobel,Laplacian. - scikit-image — модуль
skimage.featureс детектором Кэнни и функциями контурного анализа. - MATLAB — функции
edge,bwtraceboundary,bwboundaries. - ImageJ — плагины для трассировки контуров в научных исследованиях.
¶Ограничения
Точность контурирования снижается при наличии шума, размытых границ, неравномерного освещения и низкого контраста. Пороговые значения требуют подбора под конкретные условия съёмки. Для сложных сцен с перекрывающимися объектами классические методы часто дополняют нейросетевыми подходами — семантической сегментацией (U-Net, Mask R-CNN), где границы объектов предсказываются моделью, а не вычисляются градиентами.
Источники:
- Кэнни Дж. «A Computational Approach to Edge Detection», IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986.
- Судзуки С., Акамине Т. «Topological structural analysis of digitized binary images by border following», Computer Vision, Graphics, and Image Processing, 1985.
- Касс М., Уитакер А., Соркин Р. «Snakes: Active contour models», International Journal of Computer Vision, 1988.
- Брэдски Г., Каэба А. «Learning OpenCV», O'Reilly Media, 2008.
- Сонка М., Хлавач В., Бойл Р. «Обработка изображений. Анализ и машинное зрение», Вильямс, 2015.
