Когда мы смотрим на любой предмет, наш мозг сразу же отделяет его от фона. Мы не думаем о том, где заканчивается чашка и начинается стол. Мы просто видим.
А вот компьютер — не видит. Ему нужно сначала всё просчитать.
Если мы хотим, чтобы алгоритм распознал объект на изображении, первый логичный шаг — найти его границы. Контуры. Это как обводка — аккуратная линия, которая идёт по краю предмета.
Контур — это основа.
Без него нейросети сложнее разобраться, где объект, а где фон. Без него нельзя измерить размеры детали, нельзя точно очертить опухоль на снимке, нельзя отслеживать движение силуэта. Контур — это способ понять: «Вот он, объект. А всё остальное — не он».
Как компьютер находит края
Сначала берётся обычное изображение. Цветное.
Затем оно упрощается — превращается в оттенки серого, чтобы легче было анализировать яркость.
После этого запускается один из самых известных алгоритмов — Canny edge detector. Он ищет места, где в изображении происходят резкие перепады яркости. Такие перепады часто соответствуют краям предметов.
Результат? Новое изображение, где белые линии — это предполагаемые края.
Вот пример:
--
Если вы хотите узнать как автоматизировать процессы, снизить брак с помощью компьютерного машинного зрения, напишите мне в телеграм: https://t.me/dvdiamanto
--
А что дальше? Только края — это ещё не контуры
На этом этапе у нас просто много линий.
Некоторые из них полезны — например, контур самой чашки.
А некоторые — помехи: текстура дерева, тени, блики.
Чтобы из всех этих краёв выделить контуры объектов, компьютер использует специальный алгоритм, который собирает пиксели в замкнутые или почти замкнутые линии. В OpenCV он называется findContours.
Дальше — чистка.
- Удаляются слишком мелкие контуры (это может быть просто шум).
- Упрощаются слишком «дрожащие» линии — с помощью алгоритма аппроксимации (например, Дугласа-Пекера).
- Применяются морфологические операции — чтобы склеить разрывы или заделать дыры в линиях.
В итоге остаются только те контуры, которые представляют интерес — например, очертание чашки.
Контур — это не просто линия
На этом этапе с ним уже можно работать.
- Измерить площадь объекта.
- Построить прямоугольник вокруг.
- Построить выпуклую оболочку (если форма важна).
- Найти центр масс.
- Узнать, вложен ли один контур в другой (например, у пончика дырка — это внутренний контур).
И всё это — без нейросетей.
Без сложных моделей.
Классика. Надёжная, быстрая, понятная.
Где применяется
Практически везде, где есть машинное зрение:
- В промышленности — проверка форм и размеров деталей.
- В безопасности — отслеживание силуэтов на камерах.
- В дронах — определение зданий, линий горизонта.
- В дополненной реальности — понимание, где плоскость, а где край стола.
Контур — это базовый слой восприятия.
Без него выше двигаться сложно.
Именно с них начинается настоящее понимание изображения. И даже если дальше в работу включаются нейросети, трансформеры, дип-стэки — всё равно хорошо найденный контур делает их работу проще.
--
Если вы хотите узнать как автоматизировать процессы, снизить брак с помощью компьютерного машинного зрения, напишите мне в телеграм: https://t.me/dvdiamanto
--