Представьте, что вам нужно обвести объект на картинке — не просто тыкая в пиксели, а проведя одну идеальную, плавную и уверенную линию. Та самая, которую набросал бы на бумаге художник. Как объяснить компьютеру, что значит «идеальная граница»? Как заставить его искать не среди груды точек, а в бесконечном море возможных кривых?
Оказывается, на этот вопрос уже давно ответила математика, а именно — вариационное исчисление. Это тот самый инструмент, который стоит за знаменитыми алгоритмами вроде «активных контуров» (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 до нейросетей в облаке — цепочка понимания не прерывается. Она лишь становится глубже, богаче, мощнее. И в этом непрерывном диалоге между классической теорией и современной практикой — настоящая сила вычислительной науки.