- •Реферат
- •Введение
- •Постановка задачи
- •1 Аналитический обзор предметной области
- •Компьютерное зрение
- •Обзор методов детектирования объектов
- •Эмпирические методы
- •Методы характерных инвариантных признаков
- •Распознавание с помощью шаблонов, заданных разработчиком
- •Методы обнаружения лица по внешним признакам
- •Выбор алгоритма
- •Обзор методов детектирования движения
- •1.3.1 Межкадровая разность
- •1.3.2 Базовый кадр
- •1.3.3 Методы оптического потока
- •Обзор инструментальных средств для разработки программного продукта
- •Библиотека OpenCv
- •1.4.2 Среда разработки MathWorks matlab
- •1.5 Интерфейсы последовательной передачи данных
- •2 Оборудование и аппаратная реализация
- •2.1.1 Характеристики камеры
- •Передача команд по протоколу visca
- •Получение изображения с камеры
- •Работа с портом
- •3 Анализ видеоизображения. Детектор лица
- •3.1 Постановка задачи
- •3.2 Метод Виолы-Джонса
- •3.2.1 Описание алгоритма
- •3.2.2 Схема распознавания
- •3.2.3 Признаки класса
- •3.2.4 Схема обучения
- •3.2.5 Интегральное представление изображений
- •3.2.6 Обучение
- •3.2.7 Распознавание
- •3.3 Программная реализация
- •4 Анализ видеоизображения. Слежение за лицом
- •4.1Постановка задачи
- •4.2 Метод Лукаса-Канаде
- •4.2.2 Одномерный случай
- •4.2.2 Двумерный случай
- •4.2.3 Недостатки метода
- •4.3 Выбор оптимальных параметров
- •4.4 Программная реализация алгоритма
- •5 Управление поворотом камеры
- •5.1 Постановка задачи
- •5.2 Перенацеливание на заданную точку поверхности
- •5.3 Модель принятия решений
- •6 Исследование системы
- •6.1 Оценка точности перенацеливания
- •6.2 Проверка на устойчивость к смене освещения
- •6.3 Время задержки
- •6.4 Устойчивость при частичном перекрытии объекта
- •6.5 Анализ влияния шумов
- •Заключение
- •Список литературы
- •Приложение 1. Код программы
4 Анализ видеоизображения. Слежение за лицом
4.1Постановка задачи
Пусть
– полученная прямоугольная область
изображения лица от детектора лиц с
камеры в момент времени t.
Множество точек
лица
.
Пусть множество
I=
– это изображение
в каждый момент времени t
от 0 до k,
где t
дискретно.
Рассмотрим
,
где
– изображение фона; (x,y) ∈
G – область определения изображения.
Задача: найти
на изображении
.
Таким образом, на вход алгоритма подается последовательность кадров и координаты точек, которые необходимо отслеживать. На выходе алгоритма мы должны получить траекторию точек как набор смещений точки между кадрами.
4.2 Метод Лукаса-Канаде
Рис. 15 Вычисление смещения
4.2.2 Одномерный случай
Для начала рассмотрим одномерный случай.
Представим себе
два одномерных кадра 1 пиксель в высоту
и 20 пикселей в ш
ирину.
На втором кадре изображение немного
будет смещено вправо. Именно это
смещение мы и хотим
найти. Для этого представим эти же кадры
в виде функций (рисунок 15). На входе
позиция пикселя, на выходе — его
интенсивность. В таком представление
искомое смещение (d) видно еще более
наглядно. В соответствии с нашим
предположением,
это
просто смещенная
,
то есть можем сказать, что
.
Обратите
внимание, что
и
при
желании можно записать и в общем
виде:
;
где
y и t зафиксированы и равны нулю.
Для
каждой координаты нам известны
значения
и
в
этой точке, кроме того мы можем вычислить
их производные. Свяжем известные значения
со смещением d. Для этого запишем
разложение в ряд
Тейлора для
:
Сделаем
второе важное предположение: предположим,
что
достаточно
хорошо аппроксимируется первой
производной.
Сделав это предположение, отбросим всё,
что после первой производной:
Тут
мы теряем в точности, если только наша
функция/изображение не строго линейна,
как в нашем искусственном примере. Зато
это существенно упрощает метод, а для
достижения требуемой точности можно
сделать последовательное приближение,
которое мы рассмотрим позже.
Смещение
d — это наша искомая величина, поэтому
надо что-то сделать с
.
Как мы условились ранее,
,
поэтому просто перепишем:
То
есть:
4.2.2 Двумерный случай
Теперь перейдем
от одномерного случая к двумерному.
Запишем разложение в ряд Тейлора для
и
сразу отбросим все старшие производные.
Вместо первой производной появляется
градиент:
Где
—
вектор смещения.
В соответствии со
сделанным допущением
.
Обратите внимание, что это выражение
эквивалентно
.
Это то, что нам нужно. Перепишем:
Поскольку между
двумя кадрами проходит единичный
интервал времени, то можно сказать,
что
есть
не что иное, как производная по
времени.
Перепишем:
Перепишем
ещё раз, раскрыв градиент:
Мы
получили уравнение, которое говорит
нам о том, что сумма частных производных
должны быть равна нулю. Проблема только
в том, что уравнение у нас одно, а
неизвестных в нем два:
и
.
На этом моменте начинается полет фантазии
и разнообразие подходов.
Сделаем
третье предположение: предположим,
что соседние пиксели смещаются на
одинаковое расстояние.
Возьмем фрагмент изображения, скажем
5 на 5 пикселей, и условимся, что для
каждого из 25 пикселей
и
равны.
Тогда вместо одного уравнения мы получим
сразу 25 уравнений! Очевидно, что в общем
случае система не имеет решения, поэтому
будем искать такие
и
,
которые минимизируют ошибку:
Здесь
g — это функция, определяющая весовые
коэффициенты для пикселей. Самые
распространенный вариант — двухмерная
гауссиана, которая дает наибольший вес
центральному пикселю и все меньший по
мере удаления от центра.
Чтобы найти
минимум
воспользуемся
методом наименьших квадратов, найдем
её частные производные по
и
:
Перепишем
в более компактной форме и приравняем
к нулю:
Перепишем
эти два уравнения в матричной
форме:
где
Если
матрица М обратима (имеет ранг 2), можем
вычислить
и
,
которые минимизируют ошибку E:
Вот
собственно и все. Мы знаем приблизительное
смещение пикселей между двумя соседними
кадрами.
Поскольку в нахождении
смещения каждого пикселя участвуют
также соседние с ним пиксели, при
реализации данного метода целесообразно
предварительно посчитать производные
кадра по горизонтали и вертикали.
