PDE в обработке видео Оптический поток PDE = уравнения в частных производных ( I z2 ( I xz2 I yz2 )) ( I x I z ( I xx I xz I xy I yz )) div( ( 3u 3v ) 3u ) 0, 2 2 ( I z2 ( I xz2 I yz2 )) ( I y I z ( I yy I yz I xy I xz )) div( ( 3u 3v ) 3v) 0 2 Видео = … 2 Компьютерное зрение Одна из основных задач: Получить информацию о движении в кадре Компьютерное зрение Одна из основных задач: Получить информацию о движении в кадре •Идентифицировать движение •Определить его направление •Определить скорость Компьютерное зрение Одна из основных задач: Получить информацию о движении в кадре •Идентифицировать движение •Определить его направление •Определить скорость Положение и перемещения камеры обычно неизвестны Компьютерное зрение Одна из основных задач: Получить информацию о движении в кадре •Идентифицировать движение •Определить его направление •Определить скорость Положение и перемещения камеры обычно неизвестны Ограничиваем задачу поиском относительного движения объектов в системе отсчета, связанной с камерой Компьютерное зрение Относительное движение между двумя последовательными кадрами можно представить как векторное поле – оптический поток Оптический поток Применение •Визуальные эффекты •Отслеживание объектов •Автономная навигация роботов •Системы видеонаблюдения Оптический поток Методы нахождения • Фазовая корреляция • преобразование Фурье • только прямолинейное движение • все точки перемещаются одинаково Взаимная корреляция сигналов ( f g )(t ) f * ( y ) g ( y t )dy F{ f g} ( F{ f }) F{g} * Оптический поток Методы нахождения • Фазовая корреляция • преобразование Фурье • только прямолинейное движение • все точки перемещаются одинаково • Блочные методы • поиск похожих блоков • все точки блока перемещаются одинаково Оптический поток Методы нахождения • Фазовая корреляция • преобразование Фурье • только прямолинейное движение • все точки перемещаются одинаково • Блочные методы • поиск похожих блоков • все точки блока перемещаются одинаково • Вариационные методы • минимизация некоторого функционала E (u , v) inf x a b x a b 0 u решение u a b inf x a b 0 x E (u ) u a b inf Оптический поток Вариационные методы •формулировка в виде задачи оптимизации •плотное поле скоростей •для каждого пикселя •высокая точность •смещение не обязательно кратно размеру пикселя Оптический поток Построение модели •Дано: •Непрерывная последовательность изображений I ( x, y, t ), ( x, y) , t 0, T яркость в точке в момент времени •Надо найти: •Поле смещений u ( x, y , t ) w ( x, y , t ) v ( x, y , t ) 1 Оптический поток I (,, t ) I (,, t 1) v u w (,, t ) Построение модели Предположение 1 Постоянство яркости пикселей I ( x u, y v, t 1) I ( x, y, t ) 0 Предположение 2 u , v – малы, I – гладкая функция В этом случае предыдущее равенство можно линеаризовать в точке ( x, y, t ) I ( x u, y v, t 1) I ( x, y, t ) I x ( x, y, t )u I y ( x, y, t )v I t ( x, y, t ) 1 I xu I y v I t 0 Построение модели I xu I y v I t 0 •Одно уравнение для двух неизвестных •Некорректная задача с бесконечным числом решений •Известно как проблема апертуры(aperture problem) •наблюдая лишь за небольшой частью кадра невозможно однозначно определить направление движения Построение модели I xu I y v I t 0 •Одно уравнение для двух неизвестных •Некорректная задача с бесконечным числом решений •Известно как проблема апертуры(aperture problem) •наблюдая лишь за небольшой частью кадра невозможно однозначно определить направление движения Как движется шаблон? Построение модели I xu I y v I t 0 •Одно уравнение для двух неизвестных •Некорректная задача с бесконечным числом решений •Известно как проблема апертуры(aperture problem) •наблюдая лишь за небольшой частью кадра невозможно однозначно определить направление движения Как движется шаблон? По диагонали вправо? Построение модели I xu I y v I t 0 •Одно уравнение для двух неизвестных •Некорректная задача с бесконечным числом решений •Известно как проблема апертуры(aperture problem) •наблюдая лишь за небольшой частью кадра невозможно однозначно определить направление движения Как движется шаблон? По диагонали вправо? Только вправо? Построение модели I xu I y v I t 0 •Одно уравнение для двух неизвестных •Некорректная задача с бесконечным числом решений •Известно как проблема апертуры(aperture problem) •наблюдая лишь за небольшой частью кадра невозможно однозначно определить направление движения Как движется шаблон? По диагонали вправо? Только вправо? Или только вниз? Как визуализировать векторное поле При помощи стрелок, предварительно понизив разрешение При помощи цвета: •Направление – цвет •Абсолютное значение – яркость Как оценить качество рассчитанного потока Настоящий поток (ground truth) Вычисленный поток (estimated) wt we M N Размер изображения Средняя угловая ошибка (AAE – Average Angular Error) t T e w w 1 M N i, j i, j AAE arccos wt w e NM i 1 j 1 i, j i, j Средняя ошибка по конечной точке (AEE – Average Endpoint Error) AEE 1 NM M i 1 N t e w w i, j i, j j 1 Как оценить качество рассчитанного потока Ground truth AAE = 3.14 AEE = 1.53 AAE = 32.55 AEE = 7.22 AAE = 2.76 AEE = 0.37 МЕТОД LUCAS-KANADE Lucas B. D. and Kanade T. 1981, An iterative image registration technique with an application to stereo vision. Proceedings of Imaging understanding workshop, pp 121--130 Метод Lucas-Kanade Предположение •Поток кусочно-постоянный Разобьем изображение на небольшие части (например, блоки 8x8), в которых все точки двигаются одинаково … 1 2 3 k k … k … … … L Для каждой из частей запишем линеаризованное уравнение постоянства яркости I x (i, j )u (k ) I y (i, j )v(k ) I t (i, j ), (i, j ) k Метод Lucas-Kanade Полученную систему уравнений можно записать в матричном виде u A b v I x (i1 , j1 ) I y (i1 , j1 ) I t (i1 , j1 ) A , b I (i , j ) I (i , j ) I (i , j ) y L L t L L x L L Метод Lucas-Kanade Полученную систему уравнений можно записать в матричном виде u A b v I x (i1 , j1 ) I y (i1 , j1 ) I t (i1 , j1 ) A , b I (i , j ) I (i , j ) I (i , j ) y L L t L L x L L Уравнений больше чем неизвестных Ищем псевдорешение методом наименьших квадратов Метод Lucas-Kanade Псевдорешение u A A AT b v T 2 I x AT A I I x y I I I x y 2 y , I x It A b I y It T Для каждой части изображения необходимо •вычислить квадратную матрицу 2-го порядка •правую часть – вектор размерности 2 •решить СЛАУ 2-го порядка Метод Lucas-Kanade Недостаток метода: Матрица может оказаться вырожденной •В однородных областях (без текстуры) I x 0 T A A0 I y 0 •На гранях 2 2 c Iy T Ix c Iy A A cI I y y cI y I y 2 Iy Метод Lucas-Kanade Пространственные производные удобно вычислить заранее •свертка столбцов(строк) с ядром 5x1 (1x5) f ( xi 2 , y j ) 8 f ( xi 1 , y j ) 8 f ( xi 1 , y j ) f ( xx 2 , y j ) f ( xi , y j ) x 12h xi 2 Ядро 1 12 xi 1 xi xi 1 8 12 0 8 12 xi 2 1 12 Метод Lucas-Kanade Решение систем Распределение работы между потоками 16 8 Метод Lucas-Kanade Каждый блок потоков обрабатывает две части изображения Вычисление матрицы и правой части •использовать reduce Решение системы уравнений 2x2 •выписывается явно •удобно вычислять потоками (0,0) и (8,0) Вариационные методы Основная идея поле смещений минимизирует некоторый энергетический функционал E (u, v) D(u, v) S (u, v)dxdy D(u, v) (data term) – штраф за отклонения от предположений о постоянстве какой-либо величины (например, яркости) S (u , v ) (smooth term) – штраф за отклонения от предположений гладкости векторного поля параметр регуляризации – определяет гладкость получаемого векторного поля МЕТОД HORN-SCHUNK B.K.P. Horn and B.G. Schunck, "Determining optical flow." Artificial Intelligence, vol 17, pp 185-203, 1981 Метод Horn-Schunck Предположение Поле смещений – гладкая функция в области Поле смещений минимизирует функционал E (u, v) I xu I y v I t u v dxdy 2 data 2 2 smooth data term – штраф за отклонения от предположения постоянства яркости smooth term – штраф за отклонение от предположения гладкости поля Минимизация функционала E(u, v) F ( x, y, u, v, ux , u y , vx , v y )dxdy Уравнения Эйлера-Лагранжа 0 Fu Fu x Fu y x y 0 Fv Fvx Fv y x y С граничными условиями Fu x n 0, Fu y T Fv x n 0 Fv y T Метод Horn-Schunck Уравнения Эйлера-Лагранжа Граничные условия I x ( I x u I y v I t ) u 0 I y ( I x u I y v I t ) v 0 2 2 2 2 x y nT u 0, nT v 0 Метод Horn-Schunck Аппроксимация оператора Лапласа Ш (i, j ) ui , j ui 1, j 2ui , j ui 1, j h 2 ui , j 1 2ui , j ui , j 1 h2 Метод Horn-Schunck Дискретизация уравнений ui , j ui , j 2 0 I x ui , j I x I y vi , j I x I t 2 h ( i , j )Ш ( i , j ) vi , j vi , j 0 I I u I 2 v I I x y i, j y i, j y t 2 h ( i , j )Ш ( i , j ) Граничные условия уже учтены в дискретизованном уравнении •Шаг сетки h обычно принимают равным 1 •Система с 2xNxM неизвестными – метод Гаусса неприменим из-за высокой сложности и плохой устойчивости Метод Якоби для решения СЛАУ Рассмотрим СЛАУ вида Ax b A L D U Итерационный метод x0 0 x k 1 1 k 1 i D (b ( L U ) x ) x k 1 k bi aij x j aii j i Метод Гаусса-Зейделя для решения СЛАУ Ax b Рассмотрим СЛАУ вида A L D U Итерационный метод x0 0 x k 1 1 k 1 i ( D L) (b Ux ) x k 1 k k 1 bi aij xi aij xi aii j i j i Метод релаксации (SOR) для решения СЛАУ Ax b Рассмотрим СЛАУ вида A L D U Итерационный метод x0 0 x k 1 ( D L) 1 (b (U ( 1) D) x k ) k 1 i x (1 ) x k i bi aij x aij x aii j i j i k j k 1 j Метод Horn-Schunck I x It k 1 u 1 k k I x I y vi , j u 2 i, j h ( i , j )Ш ( i , j ) 1 I x2 2 ( i , j )Ш ( i , j ) h I y It k 1 v 1 k k I x I y ui , j v 2 i, j ( i , j )Ш ( i , j ) h 1 I y2 2 ( i , j )Ш ( i , j ) h i, j Метод Якоби i, j Просто распараллеливается Приближение на следующей итерации полностью определяется по приближению на текущей итерации – нет зависимости между разными пикселями Метод Horn-Schunck I x It k 1 u 1 1 k k 1 k I x I y vi , j u u 2 i, j 2 i, j ( i , j )Ш ( i , j ) h ( i , j )Ш ( i , j ) h 1 I x2 2 ( i , j )Ш ( i , j ) h I y It k 1 v 1 1 k 1 k 1 k I x I y ui , j v v 2 i, j 2 i, j ( i , j )Ш ( i , j ) h ( i , j )Ш ( i , j ) h 1 I y2 2 ( i , j )Ш ( i , j ) h i, j Метод Гаусса-Зейделя i, j i,j+1 i-1,j i,j i,j-1 i+1,j Ш (i, j ) Ш (i, j ) Нельзя напрямую использовать для параллельных вычислений Красно-черная схема ГауссаЗейделя •Новое значение в красном узле зависит только от текущих значений в самом узле и в его «черных соседях» •Новое значение в черном узле зависит только от текущих значений в самом узле и в его «красных соседях» Новые значения в узлах одного цвета можно вычислять параллельно Схема одной итерации •Обновить значения в красных узлах •Обновить значения в черных узлах Аналогично можно сделать параллельную версию SOR Метод Horn-Schunck •Ядро выполняет одну итерацию итерационного метода Схема вычислений •Вычислить производные изображения (пространственные и временные) •Установить начальное приближение - нулевой поток •Выполнить некоторое количество итераций одного из итерационных методов Новые значения сохраняются в массив, отличный от массива со старыми значениями. В противном случае возникает конфликт чтения-записи. max xin 1 xin i max Ax n 1 i bi i критерий останова МЕТОД BROX ET AL T. Brox, A. Bruhn, N. Papenberg, J. Weickert High accuracy optical flow estimation based on a theory for warping, T. Pajdla and J. Matas (Eds.), European Conference on Computer Vision (ECCV) Prague, Czech Republic, Springer, LNCS, Vol. 3024, 2536, May 2004 Метод Brox et al Рассмотренные методы чувствительны к изменению освещения Метод Brox et al Рассмотренные методы чувствительны к изменению освещения Идея •Рассмотреть другой data term Предположение Сохраняется градиент изображения I ( x u, y v, t 1) I ( x, y, t ) 0 Плюс: •градиент не чувствителен к аддитивному изменению яркости Минус: •чувствительность к шуму Метод Brox et al Рассмотренные методы чувствительны к изменению освещения Идея •Рассмотреть другой data term Предположение Сохраняется градиент изображения I ( x u, y v, t 1) I ( x, y, t ) 0 С самого начала ищутся только небольшие векторы смещения Метод Brox et al Рассмотренные методы чувствительны к изменению освещения Идея •Рассмотреть другой data term Предположение Сохраняется градиент изображения I ( x u, y v, t 1) I ( x, y, t ) 0 С самого начала ищутся только небольшие векторы смещения Идея Использовать нелинеаризованное уравнение сохранения яркости Метод Brox et al Тогда штраф за отклонение от предположений о сохранении яркости и градиента яркости примет вид EData (u, v) I (x w) I (x) I (x w) I (x) dxdy 2 2 Метод Brox et al Проблема: •квадратичный штраф чувствителен к выбросам Метод Brox et al Проблема: •квадратичный штраф чувствителен к выбросам Идея Заменить квадратичный штраф выпуклой возрастающей функцией (s 2 ) s 2 2 малый положительный параметр Метод Brox et al Получим новый функционал EData (u, v) I (x w) I (x) 2 I (x w) I (x) dxdy 2 Метод Brox et al Предположение Поток кусочно-гладкий Штраф за отклонения от предположения о гладкости потока ESmooth(u, v) 3u 3v dxdy 2 2 Метод Brox et al Задача Найти u и v, минимизирующие функционал E (u, v) EData (u, v) ESmooth(u, v) EData (u, v) I (x w) I (x) 2 ESmooth(u, v) 3u 3v dxdy 2 2 I (x w) I (x) dxdy 2 Метод Brox et al Уравнения Эйлера-Лагранжа Введем обозначения: I x : x I (x w ) I y : y I (x w ) I z : I (x w ) I (x) I xx : xx I (x w ) I yy : yy I (x w ) I xz : x I (x w ) x I (x) I yz : y I (x w ) y I (x) Использование z вместо t говорит о том, что соответствующее выражение НЕ производная, а разность, которую будем минимизировать Метод Brox et al Уравнения Эйлера-Лагранжа ( I z2 ( I xz2 I yz2 )) ( I x I z ( I xx I xz I xy I yz )) div( ( 3u 3v ) 3u ) 0, 2 2 ( I z2 ( I xz2 I yz2 )) ( I y I z ( I yy I yz I xy I xz )) div( ( 3u 3v ) 3v) 0 2 Граничные условия Неймана 2 Метод Brox et al Численный метод •Уравнения Эйлера-Лагранжа нелинейные •Используем метод неподвижной точки для w •Если есть смещения на расстояние, большее размера пикселя, то функционал может иметь множество локальных минимумов Идея •Использовать пирамиду изображений разного разрешения Метод неподвижной точки f ( x) x x n 1 f (x ) n lim x n n 1 x f (x ) x * * * Метод Brox et al Численный метод •Совместим метод неподвижной точки с масштабированием •Масштабировать будем с коэффициентом (0,1) •Для более плавного перехода от разрешения к разрешению коэффициент выберем близким к 1 •Используем полную пирамиду изображений, начиная с наименьшего возможного разрешения (например, с 10x10) Метод Brox et al Численный метод Итерации по разрешению назовем внешними Пусть k – номер изображения в пирамиде (0 – самое низкое разрешение) w k (u k , v k ,1)T – решение на k-ой внешней итерации ' (( I zk 1 ) 2 (( I xzk 1 ) 2 ( I yzk 1 ) 2 )) ( I xk I zk 1 ( I xxk I xzk 1 I xyk I yzk 1 )) 2 2 div( ( 3u k 1 3v k 1 ) 3u k 1 ) 0 Осталась нелинейность в k 1 • I* • Метод Brox et al Численный метод Устранение нелинейности в производных изображения I zk 1 I zk I xk du k I yk dv k I xzk 1 I xzk I xxk du k I xyk dv k I yzk 1 I yzk I xyk du k I yyk dv k u k 1 u k du k , v k 1 v k dv k Метод Brox et al Численный метод Введем обозначения () kData : (( I zk I xk du k I yk dv k ) 2 (( I xzk I xxk du k I xyk dv k ) 2 ( I yzk I xyk du k I yyk dv k ) 2 )) () k Smooth 2 2 : ( 3 (u du ) 3 (v dv ) ) k k k k Метод Brox et al Численный метод Аппроксимация слагаемого с дивергенцией div( k u )i , j ui 1, j ui , j ui , j ui 1, j 1 ki 1 , j ki 1 , j 2 h 2 h h ui , j 1 ui , j ui , j ui , j 1 1 ki , j 1 ki , j 1 2 2 h h h Метод Brox et al Численный метод Аппроксимация smooth term Метод Brox et al Численный метод Аппроксимация smooth term Метод Brox et al Численный метод Аппроксимация smooth term Метод Brox et al Численный метод Аппроксимация smooth term Метод Brox et al Численный метод Аппроксимация smooth term u i 1 , j ui 1, j ui , j 2 2 2 u i , j 1 ui , j 1 ui , j 2 2 2 ui 1, j 1 ui , j 1 ui 1, j 1 ui , j 1 2 2 ui 1, j 1 ui 1, j 2 ui 1, j 1 ui 1, j 2 2 2 Метод Brox et al Численный метод Оставшаяся нелинейность в Ѱ устраняется повторным применением метода неподвижной точки Начальные значения w 0 (0,0,1)T , du k ,0 0, dv k ,0 0 ,l 0 ( ) kData ( I xk ( I zk I xk du k ,l 1 I yk dv k ,l 1 ) I xxk ( I xzk I xxk du k ,l 1 I xyk dv k ,l 1 ) I xyk ( I yzk I xyk du k ,l 1 I yyk dv k ,l 1 )) ,l div ( ) kSmooth 3 (u k du k ,l 1 ) Полученная система уравнений •линейная •может быть решена одним из рассмотренных методов Метод Brox et al Решение линейной системы Используем красно-черный метод релаксации (Red-Black SOR) duik ,l ,m 1 (1 )duik .l ,m k ,l k k ,l , m k ,l k ( ) ( u du ) ( ) u S i j j j S i j i jШ ( i ) jШ ( i ) jШ (i ) (S )ik,l j (D ) ik ,l ( ) k ,l D i (( I xk,i ) 2 (( I xyk ,i ) 2 ( I xxk ,i ) 2 )) (( I xk,i I yk,i ( I xxk ,i I xyk ,i I xyk ,i I yyk ,i )) dvik ,l ,m I xk,i I zk,i ( I xxk ,i I xzk ,i I xyk ,i I yzk ,i )) ( ) jШ ( i ) k ,l S i j (D ) ik ,l (( I xk,i ) 2 (( I xyk ,i ) 2 ( I xxk ,i ) 2 )) Граничные условия du k ,l ,m 0, dv k ,l ,m 0 Метод Brox et al Решение линейной системы Используем красно-черный метод релаксации (Red-Black SOR) duik ,l ,m 1 (1 )duik .l ,m k ,l k k ,l , m k ,l k ( ) ( u du ) ( ) u S i j j j S i j i jШ ( i ) jШ ( i ) jШ (i ) (S )ik,l j (D ) ik ,l ( ) k ,l D i (( I xk,i ) 2 (( I xyk ,i ) 2 ( I xxk ,i ) 2 )) (( I xk,i I yk,i ( I xxk ,i I xyk ,i I xyk ,i I yyk ,i )) dvik ,l ,m I xk,i I zk,i ( I xxk ,i I xzk ,i I xyk ,i I yzk ,i )) ( ) jШ ( i ) k ,l S i j (D ) ik ,l (( I xk,i ) 2 (( I xyk ,i ) 2 ( I xxk ,i ) 2 )) Метод Brox et al Билинейная интерполяция для I(x+w) Метод Brox et al Реализация •Кадры храним в виде текстур •Для продолжения решения с разрешения k на разрешение k+1 используем текстуры Общая схема метода Подготовить текстуры с изображениями Задать начальное значения для u и v •Для каждого разрешения, начиная с наименьшего •Установить начальное значение du, dv •Подготовить данные для итераций SOR •Выполнить некоторое число итераций SOR •Обновить u, v •Продолжить решение на большее разрешение •Сохранить результат Метод Brox et al Реализация •Кадры храним в виде текстур •Для продолжения решения с разрешения k на разрешение k+1 используем текстуры Общая схема метода Подготовить текстуры с изображениями Задать начальное значения для u и v •Для каждого разрешения, начиная с наименьшего •Установить начальное значение du, dv •Подготовить данные для итераций SOR •Выполнить некоторое число итераций SOR •Обновить u, v •Продолжить решение на большее разрешение •Сохранить результат warping FP iteration lagged nonlinearity FP iteration solver FP iteration Метод Brox et al •Сложные шаблоны доступа к памяти •Большая часть данных не меняется во время итераций Используем текстуры Текстуры + shared memory работает медленнее чем просто текстуры Для объединения запросов при записи индексы начала строк округляем до значений, кратных 16 Дополнительные материалы: •http://www.google.com •http://www.mia.uni-saarland.de •http://vision.middlebury.edu/flow/