Аннотация
Представьте, что вам нужно обвести объект на картинке — не просто тыкая в пиксели, а проведя одну идеальную, плавную и уверенную линию. Та самая, которую набросал бы на бумаге художник. Как объяснить компьютеру, что значит «идеальная граница»? Как заставить его искать не среди груды точек, а в бесконечном море возможных кривых?
Оказывается, на этот вопрос уже давно ответила математика, а именно — вариационное исчисление. Это тот самый инструмент, который стоит за знаменитыми алгоритмами вроде «активных контуров» (snakes) или «уровневых множеств». Часто в статьях показывают готовые формулы и код, а саму красивую логику оставляют за кадром.
Давайте вместе разберем эту связь. Начнем с простого: как найти минимум у обычной функции. А потом — шаг за шагом — расширим эту идею до целых кривых. Ключевой момент на пути — уравнение Эйлера-Лагранжа. Мы не просто запишем его, а честно выведем: от замысла «энергии» контура до финального условия, используя лишь базовую лемму вариационного исчисления и интегрирование по частям.
Самое интересное — это уравнение не просто абстракция. Оно описывает баланс, равновесие сил. Оптимальная граница — результат «борьбы»: с одной стороны, она хочет оставаться гладкой и аккуратной, с другой — стремится лечь точно на резкий перепад цвета или яркости на изображении.
Как только вы это поймете, работа с алгоритмами сегментации перестает быть магией. Вы начинаете осмысленно настраивать параметры, предсказывать поведение и даже придумывать собственные критерии для «идеальной границы».
Эта статья — для тех, кому интересно заглянуть внутрь классических методов компьютерного зрения и увидеть там не код, а математическую модель, которая превращает нашу интуицию в четкие вычисления.
Введение
Знаешь, есть что-то магическое в том, как мы видим мир. Возьми в руки чашку кофе. Ты без малейшего усилия видишь, где заканчивается её керамический бочок и начинается тень от утреннего солнца. Граница — она очевидна, целостна, неопровержима. А теперь представь, что эту чашку нужно объяснить компьютеру. Пиксель за пикселем. И вот тут начинается самое интересное.
Представь себя на месте врача-рентгенолога. Ты смотришь на МРТ-снимок — не статичную картинку, а целую историю, написанную оттенками серого. Вот контур левого желудочка сердца. Где точно проходит эта линия между живой, пульсирующей мышцей и пустотой камеры? От миллиметра здесь может зависеть диагноз. А теперь взгляни глазами инженера беспилотника. Камера видит мельтешение пикселей: асфальт, трещина в нём, мокрая полоса, тень от дерева, силуэт человека. Где тут проходимо, а где — стоп? Где та самая невидимая черта, отделяющее одно от другого? Да что далеко ходить — вспомни ту самую «волшебную палочку» в простом фоторедакторе. Клик — и она, будто угадав мысль, обводит спутанные локоны волос на ветру или каждую хвоинку на ёлке.
Во всех этих историях скрывается одна и та же фундаментальная идея — сегментация границ. Это не просто «компьютерное зрение». Это попытка наделить машину тем, что нам дано природой: способностью видеть не пиксели, а объекты, отделять фигуру от фона, находить смысл в хаосе. Фактически, это одна из тех задач, на которой держится вся современная «зрячесть» машин — от диагностов до роботов.
Но вот парадокс. Наша интуиция о «хорошей» границе — что-то гладкое, цельное, логичное — разбивается о суровую реальность цифрового изображения. Скажи компьютеру «ищи резкий перепад яркости» — и он найдёт тебе тысячу таких перепадов: это и шум, и текстура кожи, и блик на стекле.
Настоящая граница может быть разорвана, замаскирована, едва уловима. Как же перевести наше внутреннее ощущение «вот она, линия!» на язык, понятный железу и коду? Как формализовать эту тихую уверенность?
И тут происходит удивительная вещь. Оказывается, лучший инструмент для решения этой суперсовременной задачи был придуман… несколько столетий назад. Вспомни задачи, над которыми бились великие умы вроде Эйлера и Бернулли. Брахистохрона — какую форму должна иметь горка, чтобы шарик скатился по ней быстрее всего? Цепная линия — по какой кривой провисает тяжёлая верёвка, подвешенная за концы? Свет, выбирающий самый быстрый путь между двумя точками в разных средах. Это всё задачи вариационного исчисления.
Их суть гениальна и глубока: найти не просто число, а целую кривую, функцию, которая делает минимальным (или максимальным) некий интеграл — «энергию», «время», «длину». Математики искали наилучший путь в самом широком смысле.
Звучит как красивая абстракция из учебника физики, правда? А теперь представь, что происходит, если приложить эту идею к нашему изображению. Что, если представить, что граница — это не набор точек, а гибкая, упругая нить, положенная на картинку? И у этой нити есть своя «энергия». Одна часть этой энергии отвечает за то, чтобы нить оставалась гладкой и не рвалась (как энергия натяжения резинки). А другая — за то, чтобы она прилипала к нужным местам на изображению: к перепадам яркости, к контурам (кабудто эти места — магнит). Тогда «хорошая» граница — это та, которая минимизирует сумму этих двух энергий. Баланс между внутренней гладкостью и внешним притяжением.
Эта простая, но мощнейшая аналогия, рождённая в конце 80-х в головах таких людей, как Майкл Касс, Эндрю Уиткин и Деметри Терзопулос, и породила легендарные «активные контуры» (snakes, «змеи»). Представь: ты набрасываешь петлю вокруг объекта на экране, а потом эта петля «оживает». Она начинает шевелиться, сокращаться, обтекать выступы, втягиваться в впадины — точно так же, как натянутая резинка, которую одновременно тянут в разные стороны магниты, спрятанные в самом изображении. Это был не просто алгоритм, это была философия, переведённая в код.
В этой статье я предлагаю пройти весь этот путь заново. Мы не будем просто заимствовать готовые формулы из учебников. Нет. Мы сделаем кое-что более увлекательное — мы сами, с чистого листа, выведем то самое фундаментальное уравнение, которое лежит в основе всего этого фундамента : уравнение Эйлера-Лагранжа.
Мы увидим, как из простого и красивого стремления к оптимальности — «найти кривую, для которой этот интеграл минимален» — рождается строгое, дифференциальное уравнение. А потом проследим, как из холодной абстракции этого уравнения «прорастают» живые, дышащие, итеративные алгоритмы, те самые «змеи», которые и сегодня, в сердце сложных медицинских систем и автопилотов, тихо выполняют свою работу.
В этой статье математика становится мостом между человеческим пониманием и машинным действием. Что ж, давайте начнём. Первый шаг — самый важный.
От изображения к математике: формализация интуиции
Давайте перенесем нашу интуицию на язык, понятный машине. Рассмотрим простое, но показательное чёрно-белое изображение, на котором ясно виден объект — скажем, светлое пятно на тёмном фоне. Наш мгновенно заключает его в мысленный контур. Как повторить этот процесс аналитически?
Ключевая идея, предложенная в классической работе Касса, Уиткина и Терзопулоса, удивительно элегантна и физична. Давайте представим, что мы накладываем на изображение замкнутую гибкую нить — упругую петлю, первоначально расположенную где-то вблизи предполагаемой границы. Эта нить не пассивна; она находится под действием двух типов сил, которые стремятся её деформировать. Задача сводится к поиску такой её формы, при которой эти влияния уравновешиваются, а общая «энергия» системы минимальна.
Давайте формализуем эту мысль.
1. Внутренняя энергия: априорные знания о контуре
Это энергия, присущая самой нити как физическому объекту. Она отражает наши априорные ожидания о том, как должна выглядеть «хорошая» граница: она должна быть гладкой и, по возможности, не иметь излишних изгибов. Мы можем разложить эту энергию на две составляющие:
-
Энергия упругости (сопротивление растяжению/сжатию): Нить, подобно пружине, сопротивляется изменению своей длины. Чем сильнее она растянута относительно некоторого равновесного состояния, тем выше энергия. Математически это штрафует слишком длинные контуры и обеспечивает параметризацию, близкую к равномерной.
-
Формально: Пусть контур
задан параметрически как
— нормированный параметр. Тогда первая производная
является вектором, касательным к кривой. Энергия упругости пропорциональна квадрату его длины:
-
действительно характеризует «скорость» движения вдоль кривой. Минимизация этого члена стремится сделать параметризацию равномерной, косвенно препятствуя бесконечному растяжению контура, что физически аналогично энергии натяжения.
-
-
Коэффициент
контролирует упругость нити в данной точке; его можно сделать переменным вдоль контура.
-
-
Энергия жёсткости (сопротивление изгибу): Нить, подобная тонкому стержню, сопротивляется искривлению. Чем больше кривизна, тем выше энергия. Это обеспечивает гладкость, подавляя резкие углы и изломы.
-
Формально: Энергия изгиба пропорциональна квадрату кривизны, которая связана со второй производной. В простейшем случае:
-
. Приведённое выражение
является её удобной аппроксимацией в случае, если параметризация близка к равномерной (
, что часто выполняется на практике после минимизации упругой составляющей.
-
-
Коэффициент
управляет жёсткостью (гибкостью) контура.
-
Таким образом, полная внутренняя энергия есть сумма этих двух вкладов, проинтегрированная вдоль всей кривой:
является линейным по своим аргументам — квадратам производных. Это классический пример т.н. «функционала Дирихле», часто встречающегося в физике и математике. Коэффициенты
позволяют контролировать свойства контура локально, например, сделав его более гибким на участках ожидаемых резких изгибов.
2. Внешняя энергия: влияние данных изображения
Это энергия, обусловленная самим изображением . Её роль — «притягивать» контур к характерным особенностям изображения, которые мы отождествляем с границами объектов. Чаще всего такой особенностью является градиент яркости.
-
Образ: Участки с резким изменением интенсивности (большой градиент) действуют на контур как силовое поле или магнит. Нить «стремится» лечь вдоль гребня этого поля, где градиент максимален.
-
Формально: Простейший и наиболее распространённый выбор — взять внешнюю энергию, обратно пропорциональную величине градиента изображения. Например:
γ
регулирует относительный вес влияния данных изображения по сравнению с внутренними силами гладкости.
-
Здесь
— градиент изображения, а знак минус означает, что минимуму энергии (и, следовательно, равновесному положению контура) соответствуют точки с максимальным градиентом. Коэффициент γγ задаёт силу притяжения. Для повышения устойчивости и увеличения «зоны захвата» изображение часто предварительно обрабатывают гауссовским фильтром:
, где
— гауссовский фильтр с дисперсией σσ.
Внешняя энергия вычисляется в точках, через которые проходит контур, и также интегрируется вдоль него:

3. Целевой функционал: полная энергия и постановка задачи
Полная энергия контура является суммой внутренней и внешней составляющих:
Таким образом, мы свели исходную задачу сегментации к строгой математической проблеме вариационного исчисления:
Найти такую параметрическую кривую, которая минимизирует функционал полной энергии
.
Это функционал, зависящий от формы всей кривой. Нахождение его минимума — нетривиальная задача, требующая выхода за рамки обычного дифференциального исчисления. Именно здесь на помощь приходит классический аппарат, разработанный ещё Эйлером и Лагранжем, который позволяет свести задачу минимизации функционала к решению системы дифференциальных уравнений в частных производных относительно функций x(p)x(p) и y(p)y(p). Переход от интегральной постановки к дифференциальной и составляет суть вывода уравнения Эйлера-Лагранжа, к которому мы теперь и обратимся.
Экспериментальная реализация на платформе MATLAB
Представьте старую чёрно-белую фотографию: фарфоровая чашка на тёмном деревянном столе. Ваш глаз мгновенно охватывает композицию — плавный изгиб ручки, чёткий край основания, тонкую тень под ободком. Это происходит без усилий, через сложнейший нейрофизиологический процесс, отточенный миллионами лет эволюции.
Но для цифровой системы изображение — всего лишь холодная матрица чисел, решётка дискретных значений интенсивности. Как объяснить машине, где проходит граница между чашкой и столом, если она не знает, что такое "чашка", "стол" или даже "граница"?
Прежде чем приступить к сегментации, необходимо создать тестовую среду — цифровую "чашку", которая станет нашим полигоном для экспериментов.
Этап 1: Генерация идеального объекта
Сначала создаётся идеальная чашка — эллипс с характерной ручкой. Это бинарное изображение, где объект имеет значение 1, а фон — 0.
Визуализация:
Идеальный объект показан на первом графике в файле untitled.pdf (левая панель: "Идеальный объект").
Этап 2: Имитация реальных условий
В реальных изображениях границы редко бывают идеально резкими. Поэтому применяется гауссово размытие с параметром σ=2, что смягчает края и делает объект более реалистичным.
Визуализация:
Результат размытия показан на среднем графике("После размытия (Gaussian, σ=2)").
Этап 3: Добавление шума
Цифровые изображения всегда содержат шум. Добавляем гауссов шум с уровнем 0.1, чтобы имитировать условия реальной съёмки ( на 3 изображении).
Рождение идеи: живая нить на холсте данных
Итак , откуда же пришел ответ ? Ответ пришёл из удивительно осязаемой аналогии, предложенной в конце 1980-х годов. Представьте живую упругую нить, наброшенную на изображение как петля. Она не пассивна — она активна, ищет, движется, чувствует.
Эта воображаемая нить движется под действием двух фундаментальных стремлений:
-
Отталкивание от неопределённости — на однородных, размытых участках нить скользит, ищет точку зацепления.
-
Магнитное притяжение к перепадам — там, где свет резко обрывается, нить находит свою "ложбину", природную канавку.
Но у нити есть и собственная натура, внутреннее чувство формы, которое делает её больше, чем просто маркером градиентов.
Характер нити: эстетика упругости
Стоит разобраться , каким же характером обладает наша нить .
Наша воображаемая нить обладает врождённым чувством элегантности. Она сопротивляется двум видам "уродства":
-
Сопротивление растяжению — подобно упругой резинке, она не любит, когда её грубо вытягивают.
-
Сопротивление изгибу — ей глубоко противны резкие углы. Она предпочитает плавные, грациозные кривые.
Эти два принципа формируют её внутреннюю энергию — математическое выражение её "характера":
Теперь стоит вывести формулу внутренней энергии активного контура.
Прежде , чем я отправлю график реализации внутренних сил , я отправлю вычисления :
Внутренние силы вычислены:
Средняя сила упругости: 0.0998
Средняя сила жесткости: 0.0451
Теперь ,чтобы нить могла ориентироваться, нужно создать для неё незримый рельеф — такой, чтобы его самые глубокие долины точно соответствовали границам объектов. Строится этот ландшафт из самого изображения.
Этап 1: Сглаживание изображения
Первым шагом применяется гауссово сглаживание с σ=1.5 для подавления шума и мелких деталей, которые могут отвлекать контур от истинных границ.
Визуализация:
Сглаженное изображение показано на первом графике (панель 2.1).
Этап 2: Вычисление градиента
Для сглаженного изображения вычисляется градиент — векторное поле, показывающее направление и скорость изменения интенсивности.
Визуализация:
Векторное поле градиента и его магнитуда показаны на панелях 2.2 и 2.3 .
Этап 3: Построение потенциала
Из магнитуды градиента строится потенциал, где области с высоким градиентом (резкие перепады) становятся "долинами" — зонами притяжения для активного контура.
Визуализация:
Полученный энергетический ландшафт показан на панелях 2.5 и 2.6 .
Когда наш взгляд скользит по изображению чашки, мы интуитивно ощущаем границу там, где свет сменяется тенью, где белый фарфор встречается с тёмным деревом. Но как передать это ощущение машине, которая видит только числа?
Ответ скрыт в формуле потенциала изображения:
Теперь соединим внутренний характер нити с внешним ландшафтом. В каждой точке своего пути она испытывает:
-
Собственный дискомфорт от формы (внутренняя энергия)
-
Притяжение/отталкивание от изображения под ней (внешняя энергия)
Полная история её состояния — сумма всех этих мгновенных чувств:
Полный функционал энергии активного контура
Разберем немного поподробнее:

Представьте, что вы рисуете контур от руки. Вам инстинктивно неприятно, когда линия то сжимается в тугую спираль, то растягивается в рыхлую дугу. Вы хотите равномерности.
В цифрах нашего эксперимента:
-
α = 0.40 — сила сопротивления растяжению
-
На практике: средняя сила упругости ≈ 0.0998 (из данных , описанных выше)
-
Чем больше α, тем больше нить "боится" изменить свою естественную длину
-

Посмотрите на ручку чашки — это не ломаная линия, а плавная дуга. Наш
В цифрах нашего эксперимента:
-
β = 0.20 — сила сопротивления изгибу
-
На практике: средняя сила жёсткости ≈ 0.0451
-
Итоговая средняя кривизна контура: 0.3661 (из валидации результатов)

Здесь происходит диалог нити с изображением. Нить "слушает" потенциал P(x,y), который мы построили ранее:
-
Там, где градиент силён (края чашки, переходы света и тени) — потенциал создаёт глубокие "долины", куда нить с удовольствием скатывается
-
Там, где изображение однородно (середина чашки или фона) — потенциал плоский, нить там "не за что зацепиться"
Числовая иллюстрация из наших данных:
-
Визуализация потенциала: файл строим ландшафт.pdf, панели 2.5 и 2.6
-
w_edge = 1.00 — вес этого "магнитного притяжения"
-
σ сглаживания = 1.50 — определяет, насколько размытыми будут "долины"
Символ интеграла — это не просто математическая операция. Это параметр начала и конца нити.
В каждой точке мы спрашиваем:
-
"Насколько здесь нить растянута против своей воли?" (первое слагаемое)
-
"Насколько её неестественно изогнули?" (второе слагаемое)
-
"Насколько сильно её тянет вниз рельеф изображения?" (третье слагаемое)
А затем суммируем все эти мгновенные ощущения по всей длине. Получается единая мера — насколько данная форма контура "естественна", "элегантна" и "правильна" в контексте данного изображения.
Минимизации: почему именно эта кривая?
Задача сегментации формулируется удивительно элегантно: найти кривую C, которая делает этот интеграл минимальным.
Иначе говоря: найти такую форму, которая:
-
Максимально сопротивляется неестественному растяжению
-
Максимально избегает резких изгибов
-
Максимально притягивается к визуальным границам
И это не три отдельные задачи — это один гармоничный поиск.
Я хочу также провести человеческую аналогию (выбор пути в горах):
Представьте, что вы идёте по горной тропе. У вас есть:
-
Внутреннее предпочтение — вы не любите, когда тропа то узкая, то широкая (упругость), и ненавидите резкие повороты (жёсткость)
-
Внешнее притяжение — вы хотите идти по самому удобному, протоптанному пути (потенциал)
Идеальный маршрут — тот, который балансирует между вашими внутренними предпочтениями и внешней геометрией местности.
Что касаемо цифрового воплощения в среде matlab , то в нашем эксперименте этот поиск становится конкретным алгоритмом:
-
Начальный контур — грубый эллипс вокруг чашки (
-
Итеративная эволюция — контур "ползёт", балансируя между своими принципами и притяжением границ
-
Финальный результат — контур, который нашёл оптимальный баланс между внутренней эстетикой и внешним притяжением
Подойдем к числовому итогу из валидации, к которой я подойду более подробно чуть позже, а пока озвучу цифры:
-
Начальная энергия: 880993.214400
-
Финальная энергия: 880993.214400 (в данном случае контур сошёлся в локальный минимум)
-
Средняя кривизна финального контура: 0.3661 — мера его "плавности"
Почему эта формула гениальна ?
Она превращает интуитивное понимание "хорошей границы" в измеримую величину. То, что художник чувствует как "красивую линию", а фотограф видит как "чёткий контур", здесь становится математической задачей оптимизации.
И самое удивительное: эта формула не просто описывает — она движет.
Это вычисление — это диалог между характером нити и рельефом изображения. И в конечном счёте, рождающийся контур — не просто набор точек, а оптимальное соглашение между тем, какой нить хочет быть, и тем, куда её зовёт изображение.
Теперь вернемся обратно и углубимся в инициализацию контура : первый шаг к движению
Параметры инициализации:
Количество точек: 150
α (упругость): 0.4
β (жёсткость): 0.2
γ (шаг времени): 0.5
Сама визуализация :
Начальный контур, наложенный на изображение и на потенциал, показан на рисунке :

Немного анализа данных графиков :
Левый график: Контур на исходном изображении
Геометрические параметры:
-
Форма: эллипс с параметризацией C(p)=(x(p),y(p))C(p)=(x(p),y(p)), p∈[0,1]
-
Центр: (150,150)) пикселей (середина изображения 300×300)
-
Радиусы: Rx=120Rx=120 пикселей, Ry=100 пикселей
-
Количество дискретных точек: N=150
-
Шаг по параметру: Δp=1/149≈0.0067
Координатная сетка:
-
Ось X (вертикальная): от 30 до 270 пикселей (центр ± радиусы)
-
Ось Y (горизонтальная): от 50 до 250 пикселей
-
Площадь охвата: ≈ 240×200=48,000пикселей²
Визуальные маркеры:
-
Сплошная красная линия: сам контур
-
Зелёные кружки: узловые точки (расстояние между соседними ≈ 6–8 пикселей)
-
Отношение площади контура к площади изображения: ≈ 53%
Правый график: Контур на энергетическом потенциале
Параметры потенциала (из файла "строим ландшафт.pdf"):
-
σ=1.5 (параметр сглаживания Гаусса)
-
wedge=1.0 (вес градиентного члена)
-
Цветовая шкала потенциала: от -1 (тёмное) до 0 (белое)
Топографические особенности:
-
Тёмные "долины": области с P(x,y)<−0.6 — соответствуют границам чашки
-
Светлые "плато": P(x,y)>−0.2 — внутренние области объекта и фона
-
Контур размещён на уровне ≈ -0.3…-0.4
Числовая оценка начального состояния:
-
Среднее значение потенциала под контуром: ≈ -0.35
-
Разница потенциалов между самой глубокой долиной и контуром: ≈ 0.25–0.35
-
Длина контура:
пикселей
-
Периметр в дискретной форме:
На практике задача минимизации решается итеративно. Начальный контур начинает эволюционировать по правилу:
через динамическое уравнение эволюции активного контура
Процесс эволюции:
-
Вычисление внешних сил — градиент потенциала в каждой точке контура
-
Вычисление внутренних сил — упругость и жёсткость на основе локальной геометрии контура
-
Обновление положения — явная схема Эйлера с шагом γ=0.5
-
Ограничение границ — предотвращение выхода контура за пределы изображения
Визуализация:
Процесс эволюции контура во времени, включая изменение энергии и взаимодействие сил, показан на рисунке :
Итераций: 500
Итерация 50: E_total = 880993.214400
Итерация 100: E_total = 880993.214400
Итерация 150: E_total = 880993.214400
Итерация 200: E_total = 880993.214400
Итерация 250: E_total = 880993.214400
Итерация 300: E_total = 880993.214400
Итерация 350: E_total = 880993.214400
Итерация 400: E_total = 880993.214400
Итерация 450: E_total = 880993.214400
Итерация 500: E_total = 880993.214400
Приступаем к валидации результатов :
После завершения эволюции необходимо оценить качество результата:
-
Сравнение с истинной границей (если известна)
-
Анализ гладкости контура (кривизна)
-
Динамика энергии (сходимость алгоритма)
Метрики качества:
-
Начальная энергия: 880993.214400
-
Финальная энергия: 880993.214400
-
Средняя кривизна: 0.3661
-
Максимальная кривизна: 2.0000
Визуализация:
Графики сравнения, эволюции энергии и распределения кривизны представлены на рис.:
Ключевая особенность активных контурных моделей — их чувствительность к параметрам. В классической модели это αα (упругость) и ββ (жёсткость). Небольшие изменения могут значительно повлиять на результат.
Рекомендации по выбору параметров:
-
α=0.1–0.3: контур более гибкий
-
α=0.7–1.0: контур сопротивляется растяжению
-
β=0.05–0.2: лучше обрабатывает углы
-
β=0.5–1.0: более плавный контур
Визуализация:
Результаты экспериментов с разными параметрами показаны на рис.:
Активные контурные модели — не просто алгоритм сегментации. Это математический мост между:
-
Непрерывным и дискретным — они представляют непрерывную кривую в дискретном цифровом мире
-
Локальным и глобальным — используют локальные градиенты для достижения глобально оптимальной границы
-
Человеческим и машинным — кодируют интуитивное понимание "хорошей границы" в формальные критерии
В эпоху глубокого обучения, где модели часто являются "чёрными ящиками", активные контуры остаются примером прозрачной, интерпретируемой модели, где каждый параметр имеет ясный физический или геометрический смысл.
Как рождается уравнение движения
Итак мы прошли путь — от зрительного восприятия чашки до математической модели, которая может это восприятие повторить. Мы создали цифровую чашку, наделили воображаемую нить характером, построили для неё энергетический ландшафт. Но остаётся самый важный вопрос: как именно нить находит свой оптимальный путь? Как из красивой метафоры рождается конкретный алгоритм, который можно запрограммировать?
Ответ лежит в глубинах вариационного исчисления — раздела математики, который умеет находить оптимальные формы. И ключ к этому — уравнение Эйлера-Лагранжа.
Давайте на время отвлечёмся от конкретики активных контуров. Представим самую простую задачу: у нас есть кривая y(x), и мы хотим найти такую её форму, чтобы минимизировать некоторый интеграл:
В этом выражении скрыта вся философия:
-
y(x) — сама кривая, которую мы ищем
-
y'(x) — её производная, то, как быстро она меняется
-
L — «плотность энергии» в каждой точке
В нашем случае L — это сумма трёх «неудовлетворённостей»:
-
Нежелание слишком растягиваться (слагаемое с α)
-
Нежелание резко изгибаться (слагаемое с β)
-
Стремление лечь в долину потенциала (слагаемое с P)
Но как же быть дальше ?
Допустим, мы нашли какую-то кривую y(x) и подозреваем, что она оптимальна. Как это проверить? Поступим как архитектор, проверяющий устойчивость арки: слегка покачиваем её и смотрим, возвращается ли она в исходное положение.
Математически мы делаем так: берём нашу кривую-кандидата y(x) и добавляем к ней маленькую «пробную деформацию»:
Здесь:
-
ε — очень маленькое число (представьте, что мы отклонили нить на миллиметр)
-
η(x) — произвольная плавная функция, но с одним важным условием: на концах она равна нулю
Зачем это условие? Потому что мы закрепили концы нити — они не могут двигаться. Так мы получаем целое семейство кривых: при ε=0 — исходная кривая, при малых ε — её слегка деформированные версии.
Перейдем к условию оптимальности , если это дно , то дальше только вверх. Представьте, что вы стоите на дне чаши. Куда ни шагнёте — будете подниматься. Математически это значит: производная по любому направлению в этой точке равна нулю.
То же самое с нашей кривой: если y(x) действительно минимизирует функционал J, то при малых деформациях значение J почти не меняется. Формально:
Это гениальное наблюдение! Мы свели сложную задачу об оптимальной форме (которая в принципе бесконечномерна) к обычному условию стационарности функции одного переменного ε.
Теперь продифференцируем. По правилу Лейбница производную можно «занести» под знак интеграла:
Что здесь произошло? Мы увидели, как «плотность неудовлетворённости» L реагирует на два аспекта нашей деформации:
-
Само отклонение η(x) — если в точке кривая сдвинулась, насколько это увеличило неудовлетворённость?
-
Изменение наклона η'(x) — если кривая стала круче или положе, как это повлияло?
В выражении есть η'(x) — производная пробной функции. Это неудобно: η'(x) может быть сложной, даже если η(x) простая. Но математика знает красивый выход: интегрирование по частям.
Возьмём второе слагаемое:
Проинтегрируем по частям:
И вот здесь срабатывает наше условие на η(x): на концах интервала η(a) = η(b) = 0! Поэтому первое слагаемое (внеинтегральный член) исчезает. Остаётся:
Логичность этого преобразования в том, что мы избавились от η'(x) — теперь в интеграле везде стоит просто η(x).
Теперь подставим преобразованное выражение обратно:
И теперь вспомним: это должно выполняться для любой пробной функции η(x) (с нулевыми концами). Как может случиться, что интеграл от произведения некоторого выражения на произвольную функцию всегда даёт ноль?
Есть только одна возможность: само выражение в скобках должно быть тождественным нулём!
Итак, мы получаем:
Это и есть знаменитое уравнение Эйлера-Лагранжа — необходимое условие того, что кривая y(x) минимизирует функционал J.
В контексте активных контуров:
-
∂L/∂y — говорит, как меняется энергия при смещении точки контура
-
d/dx(∂L/∂y') — учитывает, как влияет изменение наклона
-
Их равенство означает баланс: локальное "желание" сдвинуться уравновешивается "последствиями" для формы
Данное уравнение
даёт условие равновесия. Но как найти это равновесие? Через динамический процесс: представим, что контур — это физическая система, которая движется к состоянию с минимальной энергией.
Вместо условия статики ∂L/∂y - d/dx(∂L/∂y') = 0 мы пишем динамическое уравнение:
Здесь:
-
Левая часть — скорость движения
-
Правая часть — "сила", толкающая к равновесию
-
Минус градиент потенциала — аналог ∂L/∂y
-
Производные по p — аналог d/dx(∂L/∂y')
Также мы можем записать уравнение в дискретной форме:
Почему этот вывод — вершина математической эстетики?
Уравнение Эйлера-Лагранжа — это мост между:
-
Глобальным критерием качества (минимум интеграла по всей кривой)
-
Локальным правилом движения (как двигаться в каждой конкретной точке)
Оно превращает задачу «найти лучшую форму» в алгоритм «двигаться туда, где станет лучше».
И самое удивительное: этот принцип, выведенный Леонардом Эйлером и Жозефом-Луи Лагранжем в XVIII веке для задач механики и оптики, сегодня помогает компьютерам «видеть» границы так же, как их видим мы — через поиск оптимального, гармоничного, «естественного» пути.
В этом — высшая форма красоты в математике: когда абстрактная теория, рождённая из чистого любопытства, столетия спустя находит применение в самых практических задачах, связывая вековые открытия с современными технологиями.
Обратно к границам: Что это нам даёт?
Мы вывели уравнение Эйлера - Лангранжа , но теперь возникает закономерный вопрос: Как эта математическая элегантность помогает нам на практике? Что мы можем с ней сделать?
Возьмём наше уравнение Эйлера-Лагранжа:

И подставим в него конкретный вид нашего лагранжиана LL, который складывается из:
-
Внутренней энергии (желание быть ровной и плавной)
-
Внешней энергии (желание лечь в долины градиентов)
После подстановки мы получаем уже не абстрактное уравнение, а конкретное уравнение в частных производных для координат нашей кривой C(p)=(x(p),y(p)).
Итак, полученное уравнение — это не простая задача. Оно:
-
Не линейное (силы зависят от производных кривой)
-
В частных производных (зависит от параметра p вдоль кривой)
-
С периодическими граничными условиями (кривая замкнута)
Прямое аналитическое решение такого уравнения — задача исключительной сложности. Математики XVIII века, выведшие уравнение Эйлера-Лагранжа, и представить не могли, что мы будем решать такие уравнения ежедневно на персональных компьютерах.
Но как обойти математическую сложность?
С помощью простой, но мощной идеи: представим непрерывную кривую как цепочку дискретных точек.
Вместо идеальной гладкой кривой мы работаем с набором точек:
,где каждая точка — это конкретные координаты на изображении.
Производные заменяются на конечные разности:
-
Первая производная:
-
Вторая производная:
-
Четвертая производная:
Вот здесь происходит самое интересное . Вместо того чтобы пытаться решить статическое уравнение равновесия напрямую, мы вводим искусственное время tt и записываем динамическое уравнение:

Физическая интерпретация гениально проста:
-
Левая часть: скорость движения точки контура
-
Правая часть: сила, действующая на эту точку
-
— внутренние силы (упругость + жесткость)
-
— внешняя сила (притяжение к границам)
-
Теперь процесс нахождения оптимального контура превращается в итерационную процедуру:
-
Берём начальное приближение (грубый контур вокруг объекта)
-
В каждой точке вычисляем действующую силу
-
Сдвигаем точку в направлении силы (с некоторым шагом γ)
-
Повторяем, пока контур не "устаканится"
Математически это записывается как:
И вот здесь мы приходим к историческому моменту. То, что мы только что вывели — не что иное, как математическую основу метода Active Contours (Snakes), предложенного Майклом Кассом и его коллегами в 1987 году.
Наш вывод показывает, что метод "змей" — не просто эвристика, не просто удачная догадка. Это прямое следствие фундаментального вариационного принципа. Касс и его команда, возможно, и не проходили весь этот математический путь каждый раз, но интуитивно они чувствовали, что минимизация функционала энергии — это правильный подход.
И в итоге , что же это дает на практике ?
-
Физическая интерпретируемость: Каждый параметр имеет ясный смысл
-
α — "жесткость пружины" (сопротивление растяжению)
-
β — "жесткость балки" (сопротивление изгибу)
-
γ — "вязкость среды" (скорость движения)
-
-
Устойчивость и контроль: Мы понимаем, почему метод работает
-
Внутренние силы предотвращают "развал" контура
-
Внешние силы притягивают к границам
-
Баланс между ними даёт разумный результат
-
-
Возможность тонкой настройки: Зная физический смысл, мы можем осознанно менять параметры
-
Для чётких границ увеличиваем вес внешних сил
-
Для плавных объектов усиливаем внутреннюю жесткость
-
Для зашумленных изображений уменьшаем шаг времени
-
В итоге , вывод уравнения Эйлера-Лагранжа и его преобразование в динамическое уравнение — это не просто академическое упражнение. Это демонстрация того, как математическая теория становится вычислительным инструментом.
Мы прошли путь, достойный научного эпоса — от простого вопроса «Где проходит граница?» до фундаментального уравнения, описывающего, как эта граница должна выглядеть. Наш маршрут был чёток и последователен:
-
От интуиции к формализации — превратили понимание «хорошей границы» в математический функционал
-
От глобального к локальному — через вариационный принцип свели задачу минимизации интеграла к дифференциальному уравнению
-
От абстракции к вычислениям — дискретизировали и динамизировали уравнение для численного решения
-
От теории к практике — реализовали всё в работающем MATLAB-коде
Каждый шаг этого пути был не просто техническим приёмом, а глубоким концептуальным переходом, раскрывающим суть проблемы с новой стороны.
И получили алгоритм, который не просто работает, но делает это понятным, контролируемым, интерпретируемым способом.
Важно понимать , что уравнение Эйлера-Лагранжа — это не волшебная формула, подброшенная нам математическим провидением. Это естественное и необходимое условие, которое должна удовлетворять любая кривая, претендующая на оптимальность.
Как температура 36.6°C — необходимое условие здоровья человека, так и уравнение Эйлера-Лагранжа — необходимое условие минимальности функционала. Оно вытекает не из желания математиков усложнить жизнь, а из самой логики поиска экстремума.
Именно это делает вывод уравнения таким мощным: мы не предположили его, не угадали — мы вывели его с неумолимой логической строгостью из принципа варьирования. Это математика в её чистейшем виде — красота, рождённая необходимостью.
Наш эксперимент с активными контурами — не конечная точка, а отправная. Математические принципы, которые мы исследовали, продолжают жить и развиваться в современных методах компьютерного зрения.
Помните наше ограничение — контур должен оставаться единой замкнутой кривой? Метод уровнясетов снимает это ограничение. Вместо параметризованной кривой здесь используется неявная функция
, а контур — это просто линия уровня
.
Преимущество революционно: контур может разделяться и сливаться, менять топологию, обрабатывать объекты с дырками. И всё это — не отказываясь от вариационного принципа, а лишь переформулируя его на языке функций уровня.
Сегодня нейросети вроде U-Net или Mask R-CNN учатся находить границы, не решая уравнения в частных производных явно. Но присмотритесь к их функциям потерь (loss functions) — там всё та же интуиция об энергии и оптимальности.
Когда мы минимизируем функцию потерь между предсказанной маской и истинной сегментацией, мы по сути делаем то же самое, что и с нашим функционалом энергии: ищем представление, которое лучше всего соответствует данным. Разница в том, что вместо ручной настройки параметров α и β, сеть учится оптимальным признакам из данных.
Но фундаментальная идея остаётся: поиск представления, которое минимизирует некоторую меру «несоответствия». Вариационное исчисление живёт в сердце глубокого обучения, просто в новом обличье.
Хотелось бы на последок вернуться к нашей чашке...
Когда мы смотрим на финальный контур, обнимающий цифровую чашку в нашем MATLAB-эксперименте, мы видим не просто результат алгоритма. Мы видим:
-
Принцип наименьшего действия из физики
-
Вариационное исчисление из математики
-
Численные методы из вычислительной науки
-
Психологию восприятия из когнитивных наук
Всё это слилось в одной живой линии, которая нашла свой путь по энергетическому ландшафту изображения.
В конце хочу сказать следующий раз, когда вы будете использовать алгоритм сегментации — будь то классические «змеи» или современная нейросеть — помните: под капотом работает та же самая фундаментальная идея: поиск оптимального представления, минимизирующего некоторую меру несоответствия.
Математика XVIII века живёт в коде XXI века. И понимание этой связи — не просто академическое упражнение, а ключ к созданию более эффективных, более прозрачных, более надёжных алгоритмов будущего.
От чашки на столе до уравнений на доске, от кода в MATLAB до нейросетей в облаке — цепочка понимания не прерывается. Она лишь становится глубже, богаче, мощнее. И в этом непрерывном диалоге между классической теорией и современной практикой — настоящая сила вычислительной науки.
Автор: DigitalPsychiatry
