2. Видео
Последовательность
изображений, полученных с одной
камеры через небольшие
промежутки времени
• Пользовательское видео – от 3-5 кадров/сек до 30-50
кадров/сек
• Работая с видео, мы предполагаем, что наблюдаемые объекты
изменяются между кадрами незначительно
• «Незначительно» может сильно вариьироваться – от смещения
на 1 пиксель, до смещения на десятки и более пикселей
3. Движение
Что показано в видео?
• Движение – главное отличие видео от изображений
• Движение само по себе является мощной визуальной подсказкой
• Суть многих действий именно в динамике
• Иногда достаточно отследить движение отдельных точек, чтобы
распознать событие
5. Описание движения
• Точки наблюдаемой сцены движутся относительно
камеры / изображения
• Векторное поле движения 2D проекций на изображение
3D точек объектов сцены называется полем движения
(motion field)
• Нужно это движение как-то формализовать, описывать
и измерять
6. Оптический поток
• Движение точек объектов по видео увидеть можно далеко не всегда
• Пример:
• Серый матовый шар, освещается с одной стороны и вращается вокруг
своей оси
• Яркость всех пикселов изображения в этом случае будет постоянной
•Оптический поток (optical flow) – векторное поле видимого
(apparent) движения пикселей между кадрами
• Вычисление оптического потока – одна из базовых задач анализа
видео
• Задача похоже на задачу попиксельного сопоставления двух
изображений одной и той же сцены
7. Визуализация
Вектора движения для Цветовое кодирование вектора
отдельных точек или всего движения. Каждому направлению и
изображения амплитуде свой цвет и яркость
8. Оптический поток
• Векторное поле движения пикселей между кадрами
• Задача - аналог задачи сопоставления изображений (dense
matching)
• Один из базовых инструментов анализа изображений
9. Постановка задачи
• Как оценить движение пикселей от H в изображение I?
• Проблема соответствия пикселей!
– Пусть дан пиксель H, наити близкие пиксели того же цвета в I
• Ключевые предположения
• Константный цвет: точка в H выглядит также, как и в I
– Для изображения в градациях серого, это постоянная яркость
• Малое движение: точки не уезжают далеко между кадрами
10. Ограничения на оптический поток
• Используем ограничения для формализации
задачи
• Постоянная яркость
• Малое смещение: (u и v меньше 1-го пикселя)
– Разложим функцию картинки в ряд тейлора I:
12. Уравнение оптического потока
• Элементарное уравнение оптического потока:
• Вопрос: сколько неизвестных и уравнений для каждого
пикселя?
• 1 уравнение, 2 неизвестных (u, v)
13. Дополнительные уравнения
• Как можно получить больше уравнений?
• Идея: наложить дополнительные ограничения
• Пусть оптический поток меняется плавно
• Вариант: пусть для всех пикселей p из окрестности (x,y)
смещение (u,v) постоянно!
– Для окна 5x5 получаем 25 уравнений для
каждого пикселя!
14. Цвет вместо яркости
• При использовании окна 5x5 получается 25*3
уравнений на пиксель!
15. Алгоритм Лукаса-Канаде
• Проблема: больше уравнений, чем неизвестных!
• Получаем задачу наименьших квадратов
• Можем решить её через нормальные уравнения
T 1 T
d ( A A) A b
• Суммируем по всем пикселям в окне K x K
• Это метод был предложен Лукасом и Канаде в 1981 году
16. Алгоритм Лукаса-Канаде
• Оптимальные (u, v) удовлетворяют уравнению
• Которое может быть решено через нормальные уравнения
d ( AT A) 1 AT b
B. D. Lucas and T. Kanade. An iterative image registration technique with an
application to stereo vision. In DARPA Image Understanding Workshop, April 1981.
17. Условия на разрешимость
• Решение задачи оптического потока d = (u,v) может быть
найдено в виде
T 1 T
d ( A A) A b
• Когда задача разрешима?
• ATA должна быть обратимой
• ATA не должна быть слишком близка к нулю
– С.значения l 1 и l 2 матрицы ATA не должны быть малы
• ATA должна быть хорошо определима
– l 1/ l 2 не должно быть слишком велико
– (l 1 = наибольшее с.значение)
• ATA разрешима, когда нет апертурной проблемы
24. Замечание
• Поиск оптического потока производится между
двумя изображениями, но:
• Можем оценить качество оценки только по 1
изображению!
• По 1 картинке можно сказать, в каких точках поток будет
считаться хорошо, а в каких - нет
• На этом основаны методы выбора особенностей для
отслеживания
• Фактически, поиск особых точек!
Jianbo Shi and Carlo Tomasi, "Good Features to Track," СVPR 1994
25. Погрешности метода Л-К
• Каковы потенциальные источники ошибок?
• Предполагаем, что ATA обратима
• Предполагаем, что в изображении мало шума
• Когда эти предположения нарушаются:
• Яркость точки не постоянная
• Движение между кадрами большое
• Движение соседей отличается от движения точки
– Окно поиска слишком большое
– Какой наилучший размер окна поиска?
26. Итеративное уточнение
• Итеративный вариант алгоритма Лукаса-Канаде
1. Оценить движение в каждом пикселе, решив уравнения
Лукаса-Канаде
2. Преобразовать изображение H используя вычисленное
движение
3. Повторить 1-2 до сходимости
27. Пример
estimate Initial guess:
update
Estimate:
x0 x
0= + - Рассмотрим одномерный
случай (d – cмещение)
28. Пример
estimate Initial guess:
update
Estimate:
x0 x
29. Пример
estimate Initial guess:
update
Estimate:
x0 x
31. Замечания
• Сглаживаем изображения для более аккуратного
вычисления градиентов
• Лучше градиенты вычислять по одному
изображению, а преобразовывать другое
• Преобразование изображения приводит к
ошибкам из-за дискретизации, можем потерять в
точности
32. Проблема большого смещения
• Насколько мало движение в изображении?
• Существенно больше 1-го пикселя
• Как можно решить эту проблему?
34. Пирамиды изображений
• Известна как Пирамида Гауссиан
• В компьютерной графике – “mip map” [Williams, 1983]
P. Burt and E. Adelson, “The Laplacian pyramid as a compact image
code,” IEEE Trans. Commun., vol. 31, no. 4, pp. 532–540, 1983. Slide by Steve Seitz
35. Построение пирамиды
Маска фильтра
• Повторяем до достижения минимального разрешения
• Сглаживаем с помощью фильтра Гаусса текущее изображение
• Сэмплируем – берём каждый k-ый пиксель (обычно, каждый 2ой)
Slide by Steve Seitz
36. Иерархический метод
u=1.25 пикселей
u=2.5 пикселей
u=5 пикселей
u=10 пикселей
image H
image H image II
image
Гауссова пирамида для H Гауссова пирамида для I
37. Иерархический метод
итеративный L-K
масштабирование
итеративный L-K
.
.
.
image J
image H image II
image
Гауссова пирамида для H Гауссова пирамида для I
38. Другие модели движения
• В рассматриваемых алгоритмах модель движение –
параллельный перенос (u,v)
• Можно использовать другие модели
• поворот, аффинную, перспективную
• Необходимо просто вычислить соответствующий Якобиан
T T T
A A JI( I) J
i
A Tb J T I t ( I) T
i
Проблемы:
• Много параметров, столько же исходных данных
• Меньшая устойчивость и надежность
Jianbo Shi and Carlo Tomasi, "Good Features to Track," СVPR 1994
39. Глобальный подход
• Зачем решать для каждого пикселя уравнение
независимо?
• Зададим одну функцию качества оптического потока
для всего изображения в целом (Horn, 1980)
• Оптимизировать её каким-нибудь методом
оптимизации, например, методом сопряженных
градиентов
40. Глобальный подход
• Первый член – задаёт условие «видимого
движения», цвета пикселей после сдвига должны
совпадать
• Второй член задаёт ограничения на изменение
векторов оптического потока между пикселами
41. Штрафы на поток
• Квадратичный
• Charbonnier
(дифференцируемый L1)
• Lorenzian
Робастные метрики, устойчивые к разрывам оптического потока
на границах объектов
Sun, D., Roth, S., and Black, M. J., Secrets of optical flow estimation and their
principles, CVPR, June 2010
42. Рейтинг алгоритмов
• Общий рейтинг алгоритмов вычисления оптического потока и
набор сложных тестовых данных
• Как всегда, такой рейтинг и сложные данные стимулируют
развитие алгоритмов
• http://vision.middlebury.edu/flow/
S.Baker et. Al. A Database and Evaluation Methodology for Optical Flow, IJCV,
92(1):1-31, March 2011
43. Создание сложных данных
• Для численной оценки алгоритмов нужны эталонные данные.
• Вопрос, как их можно получить для реальных данных?
• Подход:
• Съёмка в двух диапазонах
• Флюоресцентная краска создает высокочастотную текстуру, позволяющую
оценить поле движения
• Плюс сложные синтетические данные
46. Реализации
• OpenCV 2.0
• GoodFeatureToTrack (Выбор особых точек (фактически,
Harris)
• cvCalcOpticalFlowPyrLK (Иерархическое расширение
метода Lucas-Kanade для оптического потока)
• http://gpu4vision.icg.tugraz.at
• Несколько алгоритмов оптического потока с ускорением
на GPU
• http://www.cs.brown.edu/~black/code.html
• Несколько С++ и Матлаб реализаций
• http://people.csail.mit.edu/celiu/OpticalFlow/
• С++ и MEX
47. Резюме
• «Оптический поток» формализует понятие движения
в видео
• Алгоритмы его вычисления бывают локальные и
глобальные
• Методы можно разделить на качественные (и
медленные) и быстрые (но менее точные)
• Для сравнения методов используется база
middleburry
• Есть целый ряд доступных реализаций
48. Система видеонаблюдения
• Камера, наблюдающая некоторую сцену (в закрытом
или открытом пространстве)
• Необходимо выделить «объекты интереса» и
отследить их движение в последующих кадрах
• Результат:
• Ограничивающий прямоугольник
• Попиксельая маска объекта интереса
49. Свойства задачи
• Ещё системы называют «детектор движения»
• Упрощение 1: стационарная камера
• Упрощение 2: стабильный фон, мало изменяющийся
между камера
• Вывод – объекты должны отличаться от фона
50. Вычитание фона
- =
• Метод «Background subtraction»:
• Возьмем изображение без объектов – «фон» (background)
• Вычтем фон из новых изображений с объектами
• Сравним разницу для каждого пикселя с порогом
– Порог – параметр алгоритма
• Если разница больше порога - то считаем пиксель
принадлежащим «переднему плану» (foreground)
• Получаем бинарную маску «переднего плана»
– Фон (0), передний план (1)
51. Обработка переднего плана
• Бинарная маска переднего плана обычно шумная
• Нам нужно:
• Уменьшить шум в изображении
• Выделить области, потенциально соответствующие
объектам (связанные компоненты)
53. Выделение связных областей
• Определение связной
области:
• Множество пикселей, у каждого
пикселя которого есть хотя бы один
сосед, принадлежащий данному
множеству.
Соседи пикселей:
4-связность 8-связность
54. Разметка связных областей
11
222 11
22
2
3 44
5 44
4
66
666
7
Бинарное изображение Размеченное изображение
55. Рекурсивный алгоритм
void Labeling(BIT* img[], int* labels[])
{
// labels должна быть обнулена
L = 1;
for(y = 0; y < H; y++)
for(x = 0; x < W; x++)
{
Fill(img, labels, x, y, L++);
}
}
56. Рекурсивный алгоритм
void Fill(BIT* img[], int* labels[], int x, int y, int L)
{
if( (labels[x][y] = = 0) && (img[x][y] = = 1) )
{
labels[x][y] = L;
if( x > 0 )
Fill(img, labels, x – 1, y, L);
if( x < W - 1 )
Fill(img, labels, x + 1, y, L);
if( y > 0 )
Fill(img, labels, x, y - 1, L);
if( y < H - 1 )
Fill(img, labels, x, y + 1, L);
}
}
57. Последовательное сканирование
Последовательно, сканируем бинарное изображение сверху
вниз, слева направо:
if A = O
do nothing
else if (not B labeled) and (not C labeled)
increment label numbering and label A
else if B xor C labeled
copy label to A
else if B and C labeled
if B label = C label
copy label to A
else
copy either B label or C label to A
record equivalence of labels
60. Обработка маски переднего плана
• Отфильтруем маску переднего плана
• Выделим отдельные объекты как связанные компоненты
• «Блоб» («капля», blob) - связанная компоненты маски переднего
плана
Каждый «блоб» - потенциальный объект, который нужно
дальше обрабатывать
61. Наблюдение за мышами
• Если объект в сцене может быть только один, то самый крупную
связанную компоненту (блоб) будем считать объектом
• Получили «базовый» алгоритм вычитания фона, который
работает в ряде лабораторных задач (отслеживание мышей)
• Схема:
• Попиксельное вычитание изображения фона из текущего кадра
• Сравнение попиксельной разницы с порогом
• Фильтрация маски
• Выделение связанных компонент
63. Модель фона
• Будем рассматривать каждый пиксель изображения i независимо
от остальных
• Яркость (цвет) xi каждого пикселя фона изменяется по времени t
• Построим модель яркости(цвета) xi пикселя i фона
• Если на новом кадре яркость (цвет) пикселя не удовлетворяет
модели фона - значит это пиксель принадлежит движущемуся
объекту
64. Общая схема вычитания фона
- Initialize_background_model()
- For t = 1:N
- Compute_frame_difference()
- Threshold_frame_difference()
- Noise_removal()
- Update_background_model()
- end
65. Усреднение кадров
• Простейшая модель фона –
одно изображение чистого
фона
• Возьмем N кадров и
попиксельно усредним
интенсивности (цвета)
66. Модель фона - медиана
• Когда не работает усреднение:
• Всегда в кадре движущиеся объекты
• Случайные и резкие изменения яркости (блики, засветка)
• Вместо усреднения берем медиану
69. Другие методы
• Во многих случаях медиана может не помогать
• Пр.: когда мышь сидит в одном месте >50% кадров тестового
видеоролика
• Предлагаются другие методы, на основе оптимизации
функции «стабильности» фона
• Например, разобьём все изображения на прямоугольные
фрагменты
• Будем выбирать сегменты из разных кадров, чтобы была
наиболее плавная и стабильная картинка
• Требуют глобальной оптимизации, некоторые подходы
рассмотрим во второй части курса
70. Обновление модели фона
Что делать, если освещенность постепенно
меняется?
Moving average – постоянное обновление фона
Взвешенная сумма текущего и предыдущих N
кадров
Ещё один (или несколько) параметр – вес кадра
72. Гауссиана
• Предположение:
• Интенсивность меняется в небольших пределах вокруг
какого-то значения
• «Шум камеры»
• Нормальное распределение
Wren, Christopher R., Ali Azarbayejani, Trevor Darrell, and Alex Pentland. “Pfinder:
Real-Time Tracking of the Human Body,” IEEE PAMI, 1997
73. Вычисление параметров
• Для одного канала:
N
1
• Вычисляем среднее
N
x
i 1
i
2 1 N
• Вычисляем дисперсию ( xi ) 2
N 1 i 1
• Правдоподобие x при вычисленных параметрах:
( x )2
1
2 2
( x | , ) e
2
• Отсечение по порогу – обычно допускаем интервал (x-3σ,x+3σ)
75. Многоканальное изображение
• Можно рассчитать полную матрицу ковариации K
• Обновлять полную матрицу сложно
• Обновление только среднего, с сохранением
ковариации
t 1 t (1 ) xt 1
76. Как настраивать модель?
• Если есть размеченные данные:
• Оценка точности и полноты
(precision/recall) на наборе
видеороликов
• Выбор параметров, оптимизирующих
желаемую точность
• Если нет размеченных данных
• Можно взять видео без объектов
• Настроить параметры таким образом,
чтобы получить заданное количество
ложных обнаружений
• Минимальные пороги для достижения
заданной «чувствительности»
77. Смесь гауссиан
• Один гауссиан – один кластер
• Значения могут группироваться в несколько
кластеров
W.E.L.Grimson, C.Stauffer. Adaptive background mixture models for real-time
tracking. CVPR 1999
79. Смесь гауссиан
Вероятность интенсивности y при модели смести К
гауссиан
K
P( xt ) i ,t N (xt , i ,t , i ,t )
i 1
i ,t - вес компоненты I в момент t
• Вычисление смеси требует EМ алгоритма (не в
реальном времени), поэтому используем
приближение
80. Обучение смеси на лету
• Пусть N – количество компонент в смеси
• Инициализируем 1ую компоненту по первому
изображению, вес = 1, вес остальных – 0
• Сравниваем пиксель с каждой компонентой, пока
не найдем совпадения
• Обновляем матожидание и дисперсию совпавшей
компоненты
• Если совпадения не найдено, то заменяем
компоненту с наименьшим весом
• Обновляем веса
81. Обновление весов
Обновление весов:
i,t (1 a )i ,t 1 aM i ,t
M i ,t = 1, если интенсивность пикселя
удовлетворяет i-ой компоненте
После обновления всех весов, они нормализуются
82. Моделирование фона
• Упорядочим все компоненты по критерию i /
• Чем «стабильнее» компонента, тем выше
• Чем больше вес (чаще встречается, тем тоже выше
• Определим порог T - какая доля выборки для
каждого пикселя должна соответствовать фону
• Тогда фон для каждого пикселя:
b
B arg min ( i T )
b i 1
• Все остальные компоненты - объекты
83. Пример работы
(1) (2) (3) (4)
1. Исходный кадр
2. Модель фона (старшая гауссиана)
3. Мат.ожидания второй гауссианы
4. Маска переднего плана
84. Поблочная обработка
• Вместо анализа каждого пикселя мы можем
разбить всё изображение на блоки и
анализировать блоки
• Точность сегментации получается хуже, зато
считается статистика изображения в блоке, что
повышает надежность
85. Статистики по окрестностям
Ko, T.[Teresa], Soatto, S.[Stefano], Estrin, D.[Deborah], Background Subtraction
on Distributions, ECCV 2008
86. Схема алгоритма
• Посчитаем статистику (гистограмму) по 3D окрестности пикселя
(фон):
• Посчитаем статистику по 2д окрестности пикселя на текущем
кадре:
• Вычислим разницу:
• Обновление модели:
88. Глобальные модели цветов
• Если у объекта и фона
характерные цвета, то почему бы
это не использовать?
• Построим цветовые модель
объекта и модель фона
• Для каждого пикселя будем
сравнивать вероятности
принадлежности пиксела обоим
моделям и выбирать ту,
вероятность для которой будет
выше
89. Модель фона
• Построим и глобальную, и локальную модели фона
• Глобальная: смесь гауссиан (GMM)
( K b 10 15)
Kb
p ( I r | xr B ) kb N ( I r | k , b )
b
k
k 1
90. Модель фона
• Построим и глобальную, и локальную модели фона
• Глобальная: смесь гауссиан (GMM) ( Kb 10 15)
• Локальная: один гауссиан
91. Общая модель фона
• Глобальная: смесь гауссиан (GMM) ( Kb 10 15)
Kb
pglobal ( I r | xr B ) kb N ( I r | kb , b )
k
k 1
• Локальная: один гауссиан
B B
plocal ( I r ) N ( I r | , )r r
• Объединенная:
pmix ( I r ) p global ( I r | xr B) (1 ) plocal ( xr )
92. Модель переднего плана
• Возьмём те пиксели, для которых вероятность фона низкая
pB ( I r ) t f
• Обучим по ним смесь гауссиан (K=5)
93. Соотношение моделей?
pglobal ( I r | xr F ) if xr F
pmix ( I r ) if xr B
pmix ( I r ) pglobal ( I r | xr B) (1 ) plocal ( xr )
?
94. Адаптивная смесь
pmix ( I r ) p global ( I r | x r B ) (1 ) plocal ( xr )
Если цветовые модели объекта и фона очень разные, то мы можем
полностью положиться на них
95. Адаптивная модель
Дивергенция Kullback-Liebler KL fb
K
wkf
KL fb wkf min ( KL ( N kf || N ib ) log b )
k 0
i wi
0 KL fb
дает разницу между двумя смесями гауссин
KL fb 0 модели идентичные
97. Адаптивная модель
KL fb
1 1 e
2
KL
KL fb 1
1
KL fb 1
pmix ( I r ) pglobal ( I r | xr B)
0.5 Только глобальная модель
pmix ( I r ) 1 p global ( I r | xr B) 1 plocal ( xr )
2 2
Поровну локальная и глобальные модели
98. Адаптивная модель
pglobal ( I r | xr F ) if xr F
pmix ( I r ) if xr B
pmix ( ) ( I r ) p global ( I r | xr B ) (1 ) plocal ( xr )
• Параметр смешения моделей можно уточнять на
каждом кадре, в т.ч. с учётом других факторов
• Глобальная модель позволит нам обрабатывать
сложные случаи изменения фона, когда локальная
модель срабатывает плохо и наоборот
99. Поддержка модели фона
Изменение освещенности
• Автоподстройка камеры
• Лампы дневного света
• Включение света
Небольшое изменение освещенности:
• Преобразование цветовых моделей на основе преобразования
B
гистограмм {I r } {I r B}
Резкие изменения
• Перестройка цветовой модели фона и переднего плана
• Использование карты краёв как подсказки
101. Поддержка модели фона
• Движение в фоне
• Опираемся на глобальную модель
• Дрожание камеры
• Применяем размытие по гауссу
• Уменьшаем вес локальной цветовой модели
• «Заснувшие» и «Пешеход» на заднем плане
• Оставляем только самую большую связанную компоненту
103. Обнаружение носимых предметов
Любопытный пример использования сегментации для выделения
специфических объектов в видео
Dima Damen and David Hogg. Detecting Carried Objects in Short
Video Sequences. ЕССV-2008
104. Модели шаблонов движения
• EPFL база
• 8 человек отсняли на беговой дорожке
• Сопоставили модели из MAYA
• База состоит из силуэтов модели с 8и точек
зрения
• Используется для оценки позы и т.д.
108. Данные
• На пути создания общедоступных тестовых баз
два препятствия:
• Приватность
• Сложность разметки данных
• PETS Performance Evaluation of Tracking and
Surveillance
• http://www.cvg.rdg.ac.uk/PETS2009/a.html
109. Пример
Пример слежения с реальной
системы видеонаблюдения
110. Базовый метод видеонаблюдения
• Обучение модели фона
• Для каждого кадра
• Вычитание фона
• Обработка маски (фильтрация, морфологии)
• Выделение связанных компонент
• Ассоциация объектов между кадрами
• Обновление фона
111. Резюме лекции
• Вычисление оптического потока и вычитание фона –
два очень широко используемых инструмента при
анализе видеоданных
• Ряд алгоритмов в обоих задачах уже сейчас активно
используется в коммерческих системах
• Для обеих задач существуют алгоритмы на основе
глобальных методов дискретной оптимизации на
графических моделях