• Статья закрученные потоки оптические методы. То, что вы хотели знать про оптический поток, но стеснялись спросить

    Агафонов В.Ю. 1

    1 Агафонов Владислав Юрьевич - аспирант кафедры «системы автоматизированного проектирования и поискового конструирования», Волгоградский государственный технический университет,

    г. Волгоград

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

    Ключевые слова: обработка изображений, поиск смещения изображений

    APPLICATION OF OPTICAL FLOW METHODS TO IMAGE SHIFT ESTIMATION

    Agafonov V.U. 1

    1 Agafonov Vladislav Urevich - post-graduate student of «systems of computer-aided design and search design» department,

    Volgograd State Technical University, Volgograd

    Abstract: in this article, methods for image shift estimation are described. The first approach is based on minimizing mean squared error when searching for the displacement of image key points. The second approach is based on approximate each neighborhood of both frames by quadratic polynomials, which can be done efficiently using the polynomial expansion transform. The main stages of the implementation of these methods are described. Test sets of images are prepared taking into account the specific nature of the problem. Results of the work are presented.

    Keywords: image processing, image shift estimation

    УДК 004.932.2

    Введение

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

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

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

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

    Оптический поток методом Лукаса-Канаде

    Основная концепция метода заключается в допущении, что значения пикселей переходят из одного кадра в следующий без изменений:

    где. Игнорируя остаточный член, получаем формулу для аппроксимации????:

    где и определяет смещение. В соответствии со сделанным допущением получаем, что. Тогда запишем уравнение (4) как

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

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

    Приравнивая соответствующие коэффициенты квадратичных полиномов имеем:

    Это справедливо для любого сигнала.

    Очевидно, что предположение о том, что сигнал можно представить одним полиномом довольно нереалистично. Тем не менее, отношение (10) может быть использовано для реальных сигналов, даже при возникновении ошибок. Основной вопрос в том, являются ли ошибки достаточно маленькими, чтобы алгоритм был полезным.

    Заменим глобальное полиномиальное представление локальным. Вычислим коэффициенты полиномов для первого изображения и для второго изображения. В соответствии с (9) должно быть, но на практике используется приближение:

    где отражает замещение глобального смещения, пространственно изменяющимся смещением.

    На практике уравнение (11) может быть решено поэлементно, но результаты оказываются слишком зашумленными. Вместо этого делают допущение, что область смещения медленно изменяется, так что мы можем интегрировать информацию с помощью соседних пикселей. Таким образом мы пытаемся найти, удовлетворяющий (11) в окрестности, или более формально:

    Основная проблема метода состоит в предположении что полиномы одинаковы, за исключением смещения. Так как локальное полиномиальное разложение многочлена будет изменяться в зависимости от окружения, то это будет вносить ошибку в (11). Для малых смещений это не принципиально, однако с увеличением смещения ошибка возрастает. Если мы имеем априорное знание о смещении, мы можем сравнить два полинома: первый в, второй в, где это априорное смещение, округленное до целого значения. Таким образом мы можем выполнять метод итеративно. Лучшее априорное смещение означает меньшее относительно смещение, которое в свою очередь повышает шансы на хорошую оценку реального смещения .

    Применение методов оптического потока к задаче поиска смещений изображений

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

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

    Для метода Фарнебака достаточно усреднить значения смещений в каждом пикселе.

    Эксперимент был проведен на выборке из 20 тестовых пар и посчитано среднеквадратическое отклонение для каждого метода.

    ОП Лукаса-Канаде

    ОП Фарнебака

    Таблица 1 - Среднеквадратическое отклонение смещений

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

    Каждый метод имеет свои преимущества и недостатки, а также область применения и ограничения. Метод Лукаса-Канаде реализует разряженный оптический поток и

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

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

    Заключение

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

    Список литературы/ References

    1. Fleet D., Weiss Y. Optical flow estimation //Handbook of mathematical models in computer vision. - Springer US, 2006. - С. 237-257.
    2. Farnebäck G. Two-frame motion estimation based on polynomial expansion //Image analysis. - 2003. - С. 363-370.

    Пожалуйста, оформите её согласно правилам оформления статей.

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

    Оценка оптического потока

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

    Анализ методов вычисления оптического потока проведен в работе John L. Barron, David J. Fleet и Steven Beauchemin. Они раccматривают методы как с точки зрения точности, так и с точки зрения плотности получаемого векторного поля.

    Методы, основанные на оптическом потоке, вычисляют движение между двумя кадрами, взятыми в момент времени и , в каждом пикселе. Эти методы называются дифференциальными, так как они основаны на приближении сигнала отрезком ряда Тейлора ; таким образом, они используют частные производные по времени и пространственным координатам.

    В случае размерности 2D+t (случаи большей размерности аналогичны) пиксель в позиции с интенсивностью за один кадр будет перемещен на , и , и можно записать следующее уравнение:

    Считая, что перемещение мало, и используя ряд Тейлора, получаем:

    .

    Из этих равенств следует:

    отсюда получается, что

    - компоненты скорости оптического потока в ,
    , , - производные изображения в в соответствующих направлениях.

    Таким образом:

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

    Методы определения оптического потока

    Использование оптического потока

    Исследования оптического потока широко ведутся в областях сжатия видео и анализа движений. Алгоритмы оптического потока не только определяют поле потока, но и используют оптический поток при анализе трехмерной сущности и структуры сцены, а также 3D-движения объектов и наблюдателя относительно сцены.

    Оптический поток используется в робототехнике при распознавании объектов, слежении за объектами, определении движения и при навигации робота.

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

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

    См. также

    Примечания

    Ссылки

    • DROP: (Windows Interface) Dense Optical Flow Estimation Freeware Software Using Discrete Optimization.
    • The French Aerospace Lab: GPU implementation of a Lucas-Kanade based optical flow

    Wikimedia Foundation . 2010 .

    • Оптические расходомеры
    • Оптическое волокно с двойным покрытием

    Смотреть что такое "Оптический поток" в других словарях:

      Оптический элемент - оптическая система, позволяющая получить световозвращающее отражение. Примечание Различают следующие типы оптических элементов: плоскогранные, шаровые и пленочные. Источник … Словарь-справочник терминов нормативно-технической документации

      оптический коэффициент полезного действия светового прибора - Коэффициент полезного действия светового прибора, рассчитанный по отношению к номинальному световому потоку лампы (ламп) без учета влияния окружающей среды, теплового режима и положения светового прибора на световой поток лампы (ламп). [ГОСТ… … Справочник технического переводчика

      Оптический пинцет - Схема использования оптического пинцета в изучении РНК полимеразы Оптический пинцет (англ. … Википедия

      ЭЛЕКТРОННО-ОПТИЧЕСКИЙ ПРЕОБРАЗОВАТЕЛЬ - (ЭОП), вакуумный фотоэлектронный прибор для преобразования невидимого глазом изображения объекта (в ИК, УФ и рентг. лучах) в видимое либо для усиления яркости видимого изображения. В основе действия ЭОП лежит преобразование оптич. или рентг.… … Физическая энциклопедия

      Lucas–Kanade - Алгоритм Лукаса Канаде широко используемый в компьютерном зрении дифференциальный локальный метод вычисления оптического потока. Как известно, основное уравнение оптического потока содержит две неизвестных и не может быть однозначно разрешено.… … Википедия

      Алгоритм Лукаса - Канаде широко используемый в компьютерном зрении дифференциальный локальный метод вычисления оптического потока. Основное уравнение оптического потока содержит две неизвестных и не может быть однозначно разрешено. Алгоритм Лукаса Канаде обходит… … Википедия

      OpenCV - Тип компьютерное зрение Автор … Википедия

      Трекинг (компьютерная графика) - У этого термина существуют и другие значения, см. Трекинг (значения). Трекингом называется определение местоположения движущегося объекта (нескольких объектов) во времени с помощью камеры. Алгоритм анализирует кадры видео и выдает положение… … Википедия

    Яркостные картинки движутся вместе с наблюдаемыми объектами. Оптическим потоком называется кажущееся движение яркостной картинки. В идеале оптический поток соответствует полю движения, однако мы покажем ниже, что это не всегда так.

    Рис. 12.2. Оптический поток, не всегда совпадающий с полем движения. а - гладкая сфера вращается при постоянном освещении - изображение не изменяется, хотя поле движения ненулевое; б - неподвижная сфера освещается движущимся источником - распределение освещенности изображения меняется, хотя поле движения равно нулю.

    Рассмотрим идеально однородную сферу, вращающуюся перед объективом зрительной системы (рис. 12.2, а). Так как поверхность криволинейна, на изображении сферы будут наблюдаться пространственные изменения яркости. Однако эта яркостная картина не движется вместе с поверхностью и изображение не меняется во времени. В данном случае всюду оптический поток равен нулю, хотя поле движения отлично от нуля. Теперь рассмотрим неподвижную сферу, освещенную движущимся источником света (рис. 12.2, б). Яркости на изображении меняются с движением источника. В этом случае оптический поток, очевидно, ненулевой, хотя поле движения всюду равно нулю. Зеркальные отражения и тени дают другие примеры, когда оптический поток не совпадает с полем движения.

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

    Что мы понимаем под кажущимся движением яркостной картины? Рассмотрим на изображении точку Р, имеющую яркость Е в момент (рис. 12.3). Какая точка Р изображения будет соответствовать ей в момент иными словами, как движется яркостная картина в этом временном интервале? Обычно в окрестности точки Р находится много

    точек с одинаковой яркостью Е. Если в интересующей нас части изображения яркость изменяется непрерывно, то точка Р будет лежать на линии равной яркости С. В момент ей будет соответствовать линия равной яркости С с тем же значением Е. Однако каково соответствие между точками линий С и С? На этот вопрос ответить непросто, так как при движении форма этой линии обычно изменяется.

    Таким образом, отметим, что оптический поток на изменяющемся изображении неоднозначно определяется локальной информацией. Поясним это еще одним примером. Рассмотрим участок однородной яркости на изображении, который не изменяется со временем. «Самым правдоподобным» в этом случае будет нулевой оптический поток. На самом же деле внутри однородного пятна мы можем приписать точкам любые скорости, какие хотим. Хотя, по-видимому, мы предпочли бы простейшее объяснение наблюдаемых изменений изображения (в данном случае отсутствие таких изменений).

    Пусть - освещенность в точке изображения в момент времени . Тогда, если и у-компоненты вектора оптического потока в этой точке, можно ожидать, что освещенность будет той же самой в момент в точке где Иными словами, для малого интервала времени Этого единственного ограничения недостаточно для однозначного определения двух неизвестных и и V. Ясно также, что нам хотелось бы воспользоваться тем, что поле движения почти везде непрерывно.

    Если яркость изменяется гладко по и то мы можем разложить левую часть уравнения в ряд Тейлора и отсюда получить

    где в содержит члены высших порядков малости по начиная

    Рис. 12.3. Кажущееся движение яркостной картины.

    Непросто решить, какая точка Р на линии уровня яркости С второго изображения соответствует данной точке Р на линии уровня яркости С первого изображения.

    Рис. 12.4. Локальная информация о градиенте яркости и скорости ее изменения во времени, накладывающая на компоненты вектора оптического потока лишь одно ограничение. Необходимо, чтобы скорость потока была направлена вдоль прямой линии, перпендикулярной направлению градиента яркости. Мы можем определить только компоненту, направленную вдоль градиента яркоспт Ничего неитвестно относительно компоненты скорости потока в перпендикулярном направлении.

    со второго. Сократим разделим на и перейдем к пределу при Тогда получим


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

    Если мы хотим узнать на сколько тот или иной объект объект сместился по отношению к его же положению на предыдущем кадре за то время, которое прошло между фиксацией кадров, то скорее всего в первую очередь мы вспомним про оптический поток (optical flow). Для нахождения оптического потока можно смело воспользоваться готовой протестированной и оптимизированной реализацией одного из алгоритмов, например, из библиотеки OpenCV. При этом, однако, очень невредно разбираться в теории, поэтому я предлагаю всем заинтересованным заглянуть внутрь одного из популярных и хорошо изученных методов. В этой статье нет кода и практических советов, зато есть формулы и некоторое количество математических выводов.

    Существует несколько подходов к определению смещений между двумя соседними кадрами. Например, можно для каждого небольшого фрагмента (скажем, 8 на 8 пикселей) одного кадра найти наиболее похожий фрагмент на следующем кадре. В этом случае разность координат исходного и найденного фрагментов даст нам смещение. Основная сложность тут состоит в том, как быстро отыскать нужный фрагмент, не перебирая весь кадр пиксель за пикселем. Различные реализации этого подхода так или иначе решают проблему вычислительной сложности. Некоторые настолько успешно, что применяются, например, в распространенных стандартах сжатия видео. Платой за скорость естественно является качество. Мы же рассмотрим другой подход, который позволяет получить смещения не для фрагментов, а для каждого отдельного пикселя, и применяется тогда, когда скорость не столь критична. Именно с ним в литературе часто связывают термин “оптический поток”.

    Данный подход часто называют дифференциальным, поскольку в его основе лежит вычисление частных производных по горизонтальному и вертикальному направлениям изображения. Как мы увидим далее, одних только производных недостаточно чтобы определить смещения. Именно поэтому на базе одной простой идеи появилось великое множество методов, каждый из которых использует какую-нибудь свою математическую пляску с бубном, чтобы достичь цели. Сконцентрируемся на методе Лукаса-Канаде (Lucas-Kanade), предложенном в 81 году Брюсом Лукасом и Такео Канаде.

    Метод Лукаса-Канаде
    В основе всех дальнейших рассуждений лежит одно очень важное и не очень справедливое предположение: Предположим, что значения пикселей переходят из одного кадра в следующий без изменений . Таким образом, мы делаем допущение, что пиксели, относящиеся к одному и тому же объекту, могут сместиться в какую либо сторону, но их значение останется неизменным. Конечно же это предположение имеет мало общего с реальностью, потому что от кадра к кадру могут меняться глобальные условия освещения и освещенность самого движущегося объекта. Масса проблем связана с этим допущением, но, как ни странно, вопреки всему оно достаточно хорошо работает на практике.

    На математическом языке это допущение можно записать так: . Где I - это функция яркости пикселей от положения на кадре и времени. Другими словами x и y - это координаты пикселя в плоскости кадра, и - это смещение, а t - это номер кадра в последовательности. Условимся, что между двумя соседними кадрами проходит единичный отрезок времени.

    Одномерный случай
    Для начала рассмотрим одномерный случай. Представим себе два одномерных кадра 1 пиксель в высоту и 20 пикселей в ширину (рисунок справа). На втором кадре изображение немного смещено вправо. Именно это смещение мы и хотим найти. Для этого представим эти же кадры в виде функций (рисунок слева). На входе позиция пикселя, на выходе - его интенсивность. В таком представление искомое смещение (d) видно еще более наглядно. В соответствии с нашим предположением, это просто смещенная , то есть можем сказать, что .

    Обратите внимание, что и при желании можно записать и в общем виде: ; где y и t зафиксированы и равны нулю.

    Для каждой координаты нам известны значения и в этой точке, кроме того мы можем вычислить их производные. Свяжем известные значения со смещением d. Для этого запишем разложение в ряд Тейлора для :

    Сделаем второе важное предположение: Предположим, что достаточно хорошо аппроксимируется первой производной . Сделав это предположение, отбросим всё что после первой производной:

    Насколько это корректно? В общем-то не очень, тут мы теряем в точности, если только наша функция/изображение не строго линейна, как в нашем искусственном примере. Зато это существенно упрощает метод, а для достижения требуемой точности можно сделать последовательное приближение, которе мы рассмотрим позже.

    Мы почти у цели. Смещение d - это наша искомая величина, поэтому надо что-то сделать с . Как мы условились ранее, , поэтому просто перепишем:

    Двумерный случай
    Теперь перейдем от одномерного случая к двумерному. Запишем разложение в ряд Тейлора для и сразу отбросим все старшие производные. Вместо первой производной появляется градиент:

    Где - вектор смещения.
    В соответствии со сделанным допущением . Обратите внимание, что это выражение эквивалентно . Это то, что нам нужно. Перепишем:

    Поскольку между двумя кадрами проходит единичный интервал времени, то можно сказать, что есть не что иное, как производная по времени.
    Перепишем:

    Перепишем ещё раз, раскрыв градиент:

    Мы получили уравнение, которое говорит нам о том, что сумма частных производных должны быть равна нулю. Проблема только в том, что уравнение у нас одно, а неизвестных в нем два: и . На этом моменте начинается полет фантазии и разнообразие подходов.

    Сделаем третье предположение: Предположим, что соседние пиксели смещаются на одинаковое расстояние . Возьмем фрагмент изображения, скажем 5 на 5 пикселей, и условимся, что для каждого из 25 пикселей и равны. Тогда вместо одного уравнения мы получим сразу 25 уравнений! Очевидно, что в общем случае система не имеет решения, поэтому будем искать такие и , которые минимизируют ошибку:

    Здесь g - это функция, определяющая весовые коэффициенты для пикселей. Самые распространенный вариант - двухмерная гауссиана, которая дает наибольший вес центральному пикселю и все меньший по мере удаления от центра.

    Чтобы найти минимум воспользуемся методом наименьших квадратов, найдем её частные производные по и :

    Перепишем в более компактной форме и приравняем к нулю:

    Перепишем эти два уравнения в матричной форме:

    Если матрица М обратима (имеет ранг 2), можем вычислить и , которые минимизируют ошибку E:

    Вот собственно и все. Мы знаем приблизительное смещение пикселей между двумя соседними кадрами.

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

    Недостатки метода
    Описанный выше метод основан на трех значительных допущениях, которые с одной стороны дают нам принципиальную возможность определить оптический поток, но с другой стороны вносят погрешность. Хорошая новость для перфекционистов состоит в том, что одно допущение нужно нам только для упрощения метода, и с его последствиями мы можем бороться. Мы предполагали, что для аппроксимации смещения нам будет достаточно первой производной. В общем случае это конечно же не так (рисунок слева). Для достижение требуемой точности смещение для каждой пары кадров (назовём их и ) можно вычислять итеративно. В литературе это называется искажением (warping). На практике это означает, что, вычислив смещения на первой итерации, мы перемещаем каждый пиксель кадра в противоположную сторону так, чтобы это смещение компенсировать. На следующей итерации вместо исходного кадра мы будем использовать его искаженный вариант . И так далее, пока на очередной итерации все полученные смещения не окажутся меньше заданного порогового значения. Итоговое смещение для каждого конкретного пикселя мы получаем как сумму его смещений на всех итерациях.

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

    Ещё одна проблема связана с тем, что некоторые текстуры в изображении дают вырожденную матрицу М, для которой не может быть найдена обратная матрица. Соответственно, для таких текстур мы не сможем определить смещение. То есть движение вроде есть, но непонятно в какую сторону. В общем-то от этой проблемы страдает не только рассмотренный метод. Даже глаз человека воспринимает такое движение не однозначно (Barber pole).

    Заключение
    Мы разобрали теоретические основы одного из дифференциальных методов нахождения оптического потока. Существует множество других любопытных методов, некоторые из которых по состоянию на сегодняшний день дают более надежные результаты. Однако, метод Лукаса-Канаде при своей неплохой эффективности остается достаточно простым для понимания, а потому хорошо подходит для ознакомления с математическими основами.

    Хотя проблема нахождения оптического потока изучается уже несколько десятилетий, методы всё ещё продолжают совершенствоваться. Работа продолжается в виду того, что при близком рассмотрении проблема оказывается очень непростой, а от качества определения смещений в обработке видео и изображений зависит устойчивость и эффективность многих других алгоритмов.

    На этой пафосной ноте позвольте закруглиться и перейти к источникам и полезным ссылкам.
    метод Лукаса-Канаде

  • Lucas-Kanade
  • Добавить метки


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

    Если мы хотим узнать на сколько тот или иной объект объект сместился по отношению к его же положению на предыдущем кадре за то время, которое прошло между фиксацией кадров, то скорее всего в первую очередь мы вспомним про оптический поток (optical flow). Для нахождения оптического потока можно смело воспользоваться готовой протестированной и оптимизированной реализацией одного из алгоритмов, например, из библиотеки OpenCV. При этом, однако, очень невредно разбираться в теории, поэтому я предлагаю всем заинтересованным заглянуть внутрь одного из популярных и хорошо изученных методов. В этой статье нет кода и практических советов, зато есть формулы и некоторое количество математических выводов.

    Существует несколько подходов к определению смещений между двумя соседними кадрами. Например, можно для каждого небольшого фрагмента (скажем, 8 на 8 пикселей) одного кадра найти наиболее похожий фрагмент на следующем кадре. В этом случае разность координат исходного и найденного фрагментов даст нам смещение. Основная сложность тут состоит в том, как быстро отыскать нужный фрагмент, не перебирая весь кадр пиксель за пикселем. Различные реализации этого подхода так или иначе решают проблему вычислительной сложности. Некоторые настолько успешно, что применяются, например, в распространенных стандартах сжатия видео. Платой за скорость естественно является качество. Мы же рассмотрим другой подход, который позволяет получить смещения не для фрагментов, а для каждого отдельного пикселя, и применяется тогда, когда скорость не столь критична. Именно с ним в литературе часто связывают термин “оптический поток”.

    Данный подход часто называют дифференциальным, поскольку в его основе лежит вычисление частных производных по горизонтальному и вертикальному направлениям изображения. Как мы увидим далее, одних только производных недостаточно чтобы определить смещения. Именно поэтому на базе одной простой идеи появилось великое множество методов, каждый из которых использует какую-нибудь свою математическую пляску с бубном, чтобы достичь цели. Сконцентрируемся на методе Лукаса-Канаде (Lucas-Kanade), предложенном в 81 году Брюсом Лукасом и Такео Канаде.

    Метод Лукаса-Канаде
    В основе всех дальнейших рассуждений лежит одно очень важное и не очень справедливое предположение: Предположим, что значения пикселей переходят из одного кадра в следующий без изменений . Таким образом, мы делаем допущение, что пиксели, относящиеся к одному и тому же объекту, могут сместиться в какую либо сторону, но их значение останется неизменным. Конечно же это предположение имеет мало общего с реальностью, потому что от кадра к кадру могут меняться глобальные условия освещения и освещенность самого движущегося объекта. Масса проблем связана с этим допущением, но, как ни странно, вопреки всему оно достаточно хорошо работает на практике.

    На математическом языке это допущение можно записать так: . Где I - это функция яркости пикселей от положения на кадре и времени. Другими словами x и y - это координаты пикселя в плоскости кадра, и - это смещение, а t - это номер кадра в последовательности. Условимся, что между двумя соседними кадрами проходит единичный отрезок времени.

    Одномерный случай
    Для начала рассмотрим одномерный случай. Представим себе два одномерных кадра 1 пиксель в высоту и 20 пикселей в ширину (рисунок справа). На втором кадре изображение немного смещено вправо. Именно это смещение мы и хотим найти. Для этого представим эти же кадры в виде функций (рисунок слева). На входе позиция пикселя, на выходе - его интенсивность. В таком представление искомое смещение (d) видно еще более наглядно. В соответствии с нашим предположением, это просто смещенная , то есть можем сказать, что .

    Обратите внимание, что и при желании можно записать и в общем виде: ; где y и t зафиксированы и равны нулю.

    Для каждой координаты нам известны значения и в этой точке, кроме того мы можем вычислить их производные. Свяжем известные значения со смещением d. Для этого запишем разложение в ряд Тейлора для :

    Сделаем второе важное предположение: Предположим, что достаточно хорошо аппроксимируется первой производной . Сделав это предположение, отбросим всё что после первой производной:

    Насколько это корректно? В общем-то не очень, тут мы теряем в точности, если только наша функция/изображение не строго линейна, как в нашем искусственном примере. Зато это существенно упрощает метод, а для достижения требуемой точности можно сделать последовательное приближение, которе мы рассмотрим позже.

    Мы почти у цели. Смещение d - это наша искомая величина, поэтому надо что-то сделать с . Как мы условились ранее, , поэтому просто перепишем:

    Двумерный случай
    Теперь перейдем от одномерного случая к двумерному. Запишем разложение в ряд Тейлора для и сразу отбросим все старшие производные. Вместо первой производной появляется градиент:

    Где - вектор смещения.
    В соответствии со сделанным допущением . Обратите внимание, что это выражение эквивалентно . Это то, что нам нужно. Перепишем:

    Поскольку между двумя кадрами проходит единичный интервал времени, то можно сказать, что есть не что иное, как производная по времени.
    Перепишем:

    Перепишем ещё раз, раскрыв градиент:

    Мы получили уравнение, которое говорит нам о том, что сумма частных производных должны быть равна нулю. Проблема только в том, что уравнение у нас одно, а неизвестных в нем два: и . На этом моменте начинается полет фантазии и разнообразие подходов.

    Сделаем третье предположение: Предположим, что соседние пиксели смещаются на одинаковое расстояние . Возьмем фрагмент изображения, скажем 5 на 5 пикселей, и условимся, что для каждого из 25 пикселей и равны. Тогда вместо одного уравнения мы получим сразу 25 уравнений! Очевидно, что в общем случае система не имеет решения, поэтому будем искать такие и , которые минимизируют ошибку:

    Здесь g - это функция, определяющая весовые коэффициенты для пикселей. Самые распространенный вариант - двухмерная гауссиана, которая дает наибольший вес центральному пикселю и все меньший по мере удаления от центра.

    Чтобы найти минимум воспользуемся методом наименьших квадратов, найдем её частные производные по и :

    Перепишем в более компактной форме и приравняем к нулю:

    Перепишем эти два уравнения в матричной форме:

    Если матрица М обратима (имеет ранг 2), можем вычислить и , которые минимизируют ошибку E:

    Вот собственно и все. Мы знаем приблизительное смещение пикселей между двумя соседними кадрами.

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

    Недостатки метода
    Описанный выше метод основан на трех значительных допущениях, которые с одной стороны дают нам принципиальную возможность определить оптический поток, но с другой стороны вносят погрешность. Хорошая новость для перфекционистов состоит в том, что одно допущение нужно нам только для упрощения метода, и с его последствиями мы можем бороться. Мы предполагали, что для аппроксимации смещения нам будет достаточно первой производной. В общем случае это конечно же не так (рисунок слева). Для достижение требуемой точности смещение для каждой пары кадров (назовём их и ) можно вычислять итеративно. В литературе это называется искажением (warping). На практике это означает, что, вычислив смещения на первой итерации, мы перемещаем каждый пиксель кадра в противоположную сторону так, чтобы это смещение компенсировать. На следующей итерации вместо исходного кадра мы будем использовать его искаженный вариант . И так далее, пока на очередной итерации все полученные смещения не окажутся меньше заданного порогового значения. Итоговое смещение для каждого конкретного пикселя мы получаем как сумму его смещений на всех итерациях.

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

    Ещё одна проблема связана с тем, что некоторые текстуры в изображении дают вырожденную матрицу М, для которой не может быть найдена обратная матрица. Соответственно, для таких текстур мы не сможем определить смещение. То есть движение вроде есть, но непонятно в какую сторону. В общем-то от этой проблемы страдает не только рассмотренный метод. Даже глаз человека воспринимает такое движение не однозначно (Barber pole).

    Заключение
    Мы разобрали теоретические основы одного из дифференциальных методов нахождения оптического потока. Существует множество других любопытных методов, некоторые из которых по состоянию на сегодняшний день дают более надежные результаты. Однако, метод Лукаса-Канаде при своей неплохой эффективности остается достаточно простым для понимания, а потому хорошо подходит для ознакомления с математическими основами.

    Хотя проблема нахождения оптического потока изучается уже несколько десятилетий, методы всё ещё продолжают совершенствоваться. Работа продолжается в виду того, что при близком рассмотрении проблема оказывается очень непростой, а от качества определения смещений в обработке видео и изображений зависит устойчивость и эффективность многих других алгоритмов.

    На этой пафосной ноте позвольте закруглиться и перейти к источникам и полезным ссылкам.
    метод Лукаса-Канаде Добавить метки