Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
дипломчик.docx
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

4.4 Программная реализация алгоритма

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

На вход модуля поступают координаты минимального ограничивающего прямоугольника, полученного от модуля-детектора лица:

CvRect (x,y,width,height).

Задача: найти смещение лица, находящегося внутри этой области.

Далее работа, как и для детектора лиц, будет проходить в бесконечном цикле while(), выход из которого возможен либо нажатием клавиши пользователя, либо при потере объекта слежения.

Алгоритм в цикле while():

  1. Получение нового изображение.

  2. Покроем прямоугольник лица равномерной сеткой:

const int step_x = face_rect.width*s / 16;

const int step_y = face_rect.height *s/ 16;

где s –коэффициент масштабирования.

В узлах этой сетки как раз те точки, для которых будет вычисляться оптический поток.

  1. Вычислим оптический поток в вышеописанной функции, на выходе получаем новое положение точек в текущей итерации.

  2. Проверяем количество точек соответствию порогу:

count_point<30.

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

  1. Удаляем точки, не найденные на текущей итерации.

  2. Вычисляем координаты центра лица на изображении C(x,y):

,

,

где – координаты точек, для которых найден оптический поток, n – их количество.

  1. Строим новую ограничивающую прямоугольную область, а точнее смещаем вычисленный детектором лица прямоугольник на новое положение с центром C(x,y).

  2. Удаляем точки, которые не попали в новый прямоугольник. Таким образом, решаем проблему «отставших» точек.

  3. Выводим на экран найденные точки.

  4. Возвращаемся к шагу один.

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

Рис. 17 Выходное изображение

5 Управление поворотом камеры

Цель настоящей главы — создание математической модели перенацеливания используемой поворотной камеры, экспериментальная проверка ее адекватности и внедрение ее в разрабатываемый комплекс.

5.1 Постановка задачи

Рассмотрим постановку задачи в терминах ТАУ. Пусть g – координата центра изображения, а x(t) – положение объекта в текущий момент времени на плоскости изображении, тогда величина рассогласования будет равна:

Связь между скоростью перемещения камеры на изображении и угловой скоростью вращения можно выразить через следующую формулу:

,

где K – коэффициент пропорциональности.

–угловая скорость вращения камеры, постоянная величина

Скорость движения объекта на изображении:

Цель управления:

Рис. 18 Математическая модель камеры

Для наблюдения за целевым объектом на заданном участке местности необходимо выработать соответствующие управления поворотной камерой так, чтобы в каждый текущий момент времени камера была направлена в сторону целевого объекта, например в его «центр». Видеокамера имеет две степени свободы, которая устроены следующим образом: камера крепится на одном приводе (привод 1), который в свою очередь крепится на другом приводе (привод 2). Камера установлена на приводе 1 таким образом, что оптическая ось ее объектива пересекает ось вращения этого привода и перпендикулярна ей; оси вращения приводов взаимно перпендикулярны. Примем, что привод 1 предназначен для вращения камеры по азимуту («влево-вправо»), а привод 2 – для вращения камеры по склонению («вверх-вниз»). При работе с поворотной камерой при помощи команд можно изменять направление объектива, вращая камеру вокруг осей двух приводов. В данной работе для упрощения задачи будем управлять только смещением привода 1.

Требуется решить задачу перенацеливания камеры на подвижный объект с известными координатами (x,y) на поверхности наблюдения, то есть, найти такой угол α поворота привода 1, которые переведут вектор наблюдения на точку (x,y). Полагаем, что y=const.