Программно-аппаратный комплекс для анализа видеоизображения и управления видеокамерой
Обзор основных понятий компьютерного зрения. Основные алгоритмы детектирования объектов, движений в видеопотоке. Оборудование и аппаратная реализация. Разработка алгоритма детектирования лица. Модель принятия решений для управления движением камеры.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | магистерская работа |
Язык | русский |
Дата добавления | 21.09.2019 |
Размер файла | 3,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Протоколы передачи данных можно классифицировать по разным признакам:
1) По направлению сигнала:
- Симплексные (simplex) протоколы позволяют передавать данные только в одну сторону. Это, например, телевизионные и радио-сигналы. Используется одножильный провод с оплеткой.
- Полудуплексные (half-duplex) протоколы позволяют передавать данные в обе стороны, но не одновременно. Используется двужильный провод (витая пара) с оплеткой. Пример - RS-485.
- Дуплексные (full-duplex) протоколы позволяют передавать данные в обе стороны одновременно. Используется четырехжильный провод (двойная витая пара) с оплеткой. Пример - RS-232, RS-422, в некоторых случаях RS-485.
2) Сбалансированность
- Небалансный протокол передает сигнал по одной жиле всю информацию (серию из 0 и 1). При этом сигнал подвержен наводкам и тем больше, чем длиннее провод. Пример: RS-232.
- Балансный протокол передает информацию по двум жилам, т.е. используется витая пара проводов, по которым транслируется дифференциальный сигнал. По одному проводу идет оригинальный сигнал, а по второму - инверсия сигнала, а разность между ними создает передающую разность потенциалов. Это является и защитой от помех: при наводке на оба провода сигнал каждого из них деформируется, но разность сигналов остается прежней. Это позволяет значительно удлинить допустимую протяженность провода. Пример: RS-422, RS-485.
Таким образом, уже стали проясняться принципиальные отличия протоколов серии RS.
- RS-232 позволяет устройствам передавать и получать информацию одновременно, но он ограничен по длине (15м).
- RS-422 придуман на замену RS-232, если последний не удовлетворяет требованиям по скорости и дальности (до 10Мбит/сек на 15м и до 100кбит/сек на 1220м).
- RS-485 - самый распространенный протокол с высокими характеристиками (до 10Мбит/сек на 15м и до 100кбит/сек на 1220м) и выигрывающий у RS-422 в капитальных затратах: две жилы - это дешевле четырех.
Для камеры Sony BRC передача возможна либо через RS-422, либо через RS-232, поэтому остановимся подробнее на этих двух стандартах.
1.5.1 RS-232 (EIA-232)
RS-232 - это стандарт последовательной синхронной и асинхронной передачи двоичных данных между терминалом и коммуникационным устройством.
RS-232 был введён в 1962 году.
RS-232 представляет собой простой интерфейс для передачи данных между двумя объектами на расстояние до 15 метров (на практике может не достигаться). Устойчивость к помехам обеспечивается отказом от стандартного уровня сигналов 5В. От отправителя поступает последовательность 1 и 0 получателю, который их запоминает и «осознает» полученную информацию.
Существует понятие стартового бита, получив который получатель понимает, что сеанс передачи информации открыт. Далее через равные промежутки времени отправляются информационные биты. Передача пакетная, длина пакета равна одному байту.
Разъем RS-232 представляет собой 9- или 25-штырьковый трапецеидальный разъем. Изначально применялись 25 контактов, но со временем большинство устройств стало обходиться меньшим их числом и разъем «урезали».
1.5.2 RS-422 (EIA-422)
RS-422 является полностью дуплексным интерфейсом (full duplex), поэтому передача данных может одновременно осуществлять в обоих направлениях. Например, подтверждение приёма пакетов данных происходит одновременно с приёмом последующих пакетов.
Максимальная дальность действия интерфейса RS-422 составляет 1200 метров. Дуплексность обеспечивается за счёт того, что используется одновременно два приёмопередатчика, один из которых работает на приём, другой - на передачу. RS-422 поддерживает создание только одномастерных сетей, в которых в качестве передатчика может выступать только одно устройство, а остальные способны лишь принимать сигнал. В отличие от устаревшего также полнодуплексного RS-232, RS-422 характеризуется большими возможностями по дальности линии 1200 метров против 15 метров и значительно большей скоростью передачи данных.
К каждому передатчику RS-422 возможно подключение до 10 приёмников. Максимальная скорость передачи данных достигает 10 Мбит/секунду. На самой большой удалённости от передатчика скорость может составлять 10 кб/с. В качестве провода используется витая пара. Для организации передачи данных на дистанции свыше 500 метров рекомендуется использовать экранированную витую пару, чтобы избежать влияния сторонних электромагнитных полей. Передача данных осуществляется посредством измерения дифференциального напряжения между двумя проводами витой пары. Оба провода симметричны по напряжению относительно земли. Рабочие напряжения: от -10 В до +10 В. Как правило используются номинальные значения +6...+8 В.
Так как, во-первых, нам необходимо передавать данные на расстояние большее 15м, а, во-вторых, передача будет осуществляться нескольким приемникам одновременно, то, очевидно, что в нашей работе мы воспользуемся интерфейсом RS-422.
2 Оборудование и аппаратная реализация
Первым этапом на пути создания программно-аппаратного комплекса является анализ имеющегося оборудования, программных средств и определения способов их взаимодействия.
2.1.1 Характеристики камеры
Объектом управления является роботизированная PTZ камера модели SONY BRC H900P (рис.3), способная поворачиваться вокруг своей оси от 0 до 360 градусов.
Рис. 3 камера Sony BRC H900P
Рассмотрим ее характеристики, которые описаны в руководстве по эксплуатации, представленные в таблице 2.
Таблица 2. Технические характеристики камеры Sony BRC H900P
Датчик изображения |
1/2-дюймовая CMOS матрица Exmor х3 |
|
Датчик изображения (число эффективных пикселей) |
2,07 мегапикселя Ч3 |
|
Датчик изображения (общее число пикселей) |
Прибл. 3,01 мегапикселя |
|
Система сигналов |
60 Гц: 1080/59.94i, 720/59.94P, NTSC 50 Гц: 1080/50i, 720/50P, PAL |
|
Чувствительность |
F10 |
|
Минимальная освещенность (50 IRE) |
4 лк (50 IRE, F1,9, +24 дБ) |
|
Горизонтальная четкость |
> 1000 твл (на выходе HD-SDI) |
|
Отношение С/Ш |
50 дБ |
|
Усиление |
Автоматический/Ручной режим (от -3 до +24 дБ) |
|
Скорость затвора |
1/8000 - 1/60 с или 1/8000 - 1/50 с |
|
Регулировка экспозиции |
Режимы Auto (Автоматический), Manual (Ручной), Priority (Приоритет) (приоритет затвора и приоритет диафрагмы), Back light (Компенсация встречного освещения), Spot light (Местное освещение) |
|
Функция Color AE (Цветовая коррекция экспозиции) |
Нет |
|
Баланс белого |
Auto (Автоматический)/Indoor (Внутри помещения)/Outdoor (Вне помещения)/ One-push (Одним нажатием на кнопку)/Manual (Ручной) |
|
Оптическое масштабирование |
14x |
|
Цифровое масштабирование |
- |
|
Система фокусировки |
Автоматический/Ручной режим |
|
Горизонтальный угол обзора |
59,6° (широкий угол) |
|
Фокусное расстояние |
f = 5,8 - 81,2 мм F1,9 (Wide), F2,8 (Tele) |
|
Минимальное расстояние до объекта |
800 мм (31 Ѕ дюйма) |
|
Угол панорамирования/наклона |
Панорамирование: ±170° Наклон: +90°/-30° |
|
Скорость панорамирования/наклона |
Панорамирование: от 0,22° до 60°/с Наклон: от 0,22° до 60°/с |
|
Предустановки положения |
16 |
|
Выход HD видеосигнала |
HD/SD-SDI (переключение) Компонентный (Y/Pb/Pr) или RGB, HD, VD или SYNC |
|
Выход SD видеосигнала |
Композитный, Y/C |
|
Интерфейс управления камерой |
RS-232C/RS-422(протокол VISCA) |
|
Внешняя синхронизация Вход |
Да |
|
Auto ICR (Автоматически сдвигаемый режекторный ИК фильтр) |
Нет |
|
Wide-D |
Нет |
|
Стабилизация изображения |
Да |
|
Image Flip (Переворот изображения) |
Вкл./ Выкл. |
|
ND (нейтральный) фильтр |
Нет |
|
Color Gain (Усиление цвета) |
Нет |
|
Color Hue (Цветовой тон) |
Нет |
|
Color Matrix (Цветовая матрица) |
Вкл./Выкл. |
|
Color Detail (Цветовые детали) |
Вкл./Выкл. |
|
Skintone Detail (Детали телесного тона) |
Нет |
|
Гамма |
STD1/STD2/STD3/STD4/CINE1/CINE2/CINE3/CINE4 |
|
Gamma Level (Уровень гаммы) |
-99 ... 0 ... +99 |
|
Черный |
-99 ... 0 ... +99 |
|
Black Gamma (Гамма черного) |
-99 ... 0 ... +99 |
|
Knee Point (Точка колена) |
50 ... 90 ... 109 |
|
Knee Slope (Наклон колена) |
-99 ... 0 ... +99 |
|
Knee Sat Level (Уровень насыщенности в области колена) |
0 ... 50 ... 99 |
|
Функция помощи при автофокусировке |
Нет |
|
Flicker Cancel (Подавление мерцаний) |
Вкл./ Выкл. |
|
B&W (Черно-белое изображение) |
Нет |
|
Color Bar (Сигнал цветных полос) |
Вкл./ Выкл. |
Камера может управляться через пульт управления, либо через интерфейсы RS232/RS422. Так как необходимо автоматизировать управление камерой без участия человека, то управлять камерой будет реализуемая программа с персонального компьютера с помощью интерфейса RS422, который описывался в предыдущей главе. Способ передачи по данному интерфейсу осуществляться с помощью особого протокола VISCA, который поддерживают только камеры модели SONY. Рассмотри данный протокол более детально.
2.1.2 Передача команд по протоколу VISCA
С помощью протокола VISCA можно обеспечить полное управление функциями камеры, например, такими как, наклон, поворот, масштабирование, увеличение/уменьшение фокусного расстояния и т.п.
Для обмена данными по протоколу VISCA необходимо задать следующие параметры соединения, которые установлены в камере:
1) Скорость передачи бит в секунду: 9600 bps;
2) Число бит данных: 8;
3) Количество стартовых битов: 1;
4) Количество стоповых битов: 1;
5) Бит четности: нет. (Бит четности определяет четное или нечетное количество передаваемых единичных битов. На принимающей стороне проводится анализ этого бита, и если бит четности не соответствует количеству единичных битов, то пакет данных пересылается снова. )
6) Контроль потока: нет (механизм, который притормаживает передатчик данных при неготовности приёмника).
Последовательная передача данных будет реализовываться асинхронным способом. Это подразумевает использование специальных битов, маркирующих начало и конец данных - стартового (логический ноль) и стопового (логическая единица) бита. Таким образом, каждый передаваемый байт будет выглядеть, как представлено на рис. 4.
Рис. 4 Формат одного передаваемого байта в протоколе VISCA.
Управление осуществляется с помощью отправки пакетов команд.
Рассмотрим общую структуру пакета (рис. 5).
Рис. 5 Структура пакета команд для протокола VISCA.
Пакет может быть размером от 3х до 16 байт. Каждый пакет состоит из заголовка, который занимает 1 байт. В него входит адрес отправителя (контроллера) и адрес получателя (фактически, это номер камеры). Далее идет сама команда, которая может быть от 1 до 14 байт. Последний байт пакета всегда одинаковый, состоящий из восьми единиц в двоичном формате.
Далее рассмотрим основные команды, которые понадобятся в работе (таб. 3). Все команды представлены в шестнадцатеричном формате. Вместо “x” во всех командах указывается номер камеры (то есть ее адрес). После отправления команды, которая предполагает конкретное действие, приходит ответ:
1) z0 4y FF - команда принята;
2) z0 5y FF - команда выполнена, где z = адрес устройства + 8, y - номер разъема.
Если команда по каким-то причинам не выполнена, то приходит соответствующее сообщение об ошибке.
Таблица 3. Команды VISCA
Название команды |
Действие |
Пакет команды |
Комментарии |
|
POWER |
Включение/выключение камеры |
8x 01 04 00 0p FF |
(p: 2 - ON, 3 - OFF) |
|
FOCUS |
Ручная/автофокусировка |
8x 01 04 38 0p FF |
(p: 2 - Auto, 3 - Manual) |
|
IF_Clear (Broadcast) |
Очищает буфер |
88 01 00 01 FF |
||
Command Cancel |
Отмена текущей команды |
8x 2y FF |
||
PAN-TILT Drive |
Вверх |
8x 01 06 01 VV WW 03 01 FF |
WW - скорость наклона камеры вверх/вниз: 00-18; VV - скорость панорамирования (движения вправо/влево): 00-18 |
|
Вниз |
8x 01 06 01 VV WW 03 02 FF |
|||
Вправо |
8x 01 06 01 VV WW 02 03 FF |
|||
Влево |
8x 01 06 01 VV WW 01 03 FF |
|||
Стоп |
8x 01 06 01 VV WW 03 03 FF |
|||
Zoom |
Приближение |
8x 01 04 07 03 FF |
||
Отдаление |
8x 01 04 07 02 FF |
|||
Остановка |
8x 01 04 07 00 FF |
Для интерфейса RS-422 передача данных идёт по двум линиям, TXD IN- и TXD IN+ , представляющим собой витую пару (два скрученных провода). Используется принцип дифференциальной передачи одного сигнала. По проводу TXD IN- идет исходный сигнал, по проводу TXD IN+ противофазный. Когда на одном проводе логическая 1 , на другом логический 0 и наоборот. Этим достигается высокая устойчивость к синфазной помехе, действующей на оба провода одинаково. Электромагнитная помеха, проходя через участок линии связи, наводит в каждом проводе одинаковый потенциал, при этом информативная разность потенциалов остается без изменений.
На рис. 6 представлено обозначение выводов для интерфейса RS-422, где
TXD (Transmitted Data) - передающая линия;
RXD (Received Data) - принимающая линия;
GND - заземление.
Рис. 6 Обозначение выводов интерфейса RS-422
На рис.7 представлена схема соединения по интерфейсу RS-422 между ПК и периферийным устройством.
Рис. 7 Соединение контроллера (ПК) и камеры через интерфейс RS-422.
2.1.3 Получение изображения с камеры
Для получения изображения с камеры использовалось программное обеспечение ManyCam, которое транслировало изображение с сервера управления камерой на персональный компьютер и представляло полученный видеопоток в виде передачи с виртуальной веб-камеры. Изображение транслировалось со скоростью 30 fps.
Таким образом, общая структура аппаратной реализации комплекса, представлена на рис.8 и 9. Отличие между двумя схемами в том, что в первой будет задержка получения изображения порядка 1 секунды. Во второй схеме задержка будет значительно меньше, что означает, что работу в режиме реального времени вполне можно реализовать. При разработке и тестировке использовалась первая схема из рисунка 8. Изображение с камеры поступает на персональный компьютер и через ManyCam разрабатываемая программа будет захватывать изображение, обрабатывать его, детектировать лицо человека и следить за ним, путем передачи команд камере через интерфейс RS422.
Рис. 8 Схема подключения на тестируемом оборудовании
Рис. 9 Схема подключения на реальном оборудовании
2.1.4 Работа с портом
Открытие и инициализация порта
Сначала откроем выбранный com порт на чтение-запись:
serial->open(QSerialPort::ReadWrite);
Зададим необходимые параметры для передачи по протоколу VISCA:
serial->setBaudRate(QSerialPort::Baud9600);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::NoParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
Передача/чтение данных
Передачу данных в com-порт будем осуществлять с помощью функции:
serial->write(command), где command - это массив байтов, содержащий требуемую команду.
После передачи команды в порт поставим ограничение на запись на 200 мсек. Именно столько времени необходимо для передачи команды видеокамере. Считывание данных с com-порта будем проводить с помощью метода:
connect(serial, &QSerialPort::readyRead, this, &MainWindow::readData).
По сигналу readyRead(), который означает, что данные готовы к чтению, мы переходим к слоту readData(), где и осуществляется чтение с порта:
command_read.append(serial->readAll());
QByteArray y = command_read.toHex();
Закрытие порта: serial->close();
3. Анализ видеоизображения. Детектор лица
3.1 Постановка задачи
Пусть - изображение с камеры в момент времени t, которое представляет собой совокупность изображений отдельных объектов (лиц) и фона:
,
где - лицо человека, F(x,y) - изображение фона; (x,y) ? G - область определения изображения.
определён только на дискретном множестве точек D с координатами ? G. При этом,
,
где - дискретная область лица; D = ? ? … ? ? ; D - дискретная прямоугольная решётка, в узлах которой определён снимок . Узлы решётки определяются координатами или их номерами (i,j), в которых задаётся цвет снимка в данной точке, что в совокупности определяет пиксель снимка. Таким образом, исходное изображение можно рассматривать как прямоугольную целочисленную решётку P, узлы которой являются пикселями:
P ={p(i, j) | i = 1,N, j = 1,M},
где i, j - целочисленные координаты (номера) пикселя; p(i, j)?{0, 1} - цветовой компонент пикселя.
Задача: найти множество точек (i,j)?, для которых .
3.2 Метод Виолы-Джонса
По итогам проведенного обзора было принято решение использовать метод категориального распознавания объектов на изображении. В настоящий момент самым популярным в силу высокой скорости и эффективности является представленный в 2001 году метод Виолы - Джонса. Этот детектор обладает низкой вероятностью ложного обнаружения лица. Алгоритм также хорошо работает и распознает черты лица под небольшим углом, примерно до 30 градусов, а так же при различных условиях освещенности. На момент написания алгоритм является основополагающим для поиска объектов на изображении в реальном времени в большинстве существующих методов распознавания и идентификации.
3.2.1 Описание алгоритма
В 2001 году Виола и Джон предложили алгоритм для распознавания лиц, который стал прорывом в области распознавания лиц. Метод использует технологию скользящего окна. То есть рамка, размером, меньшим, чем исходное изображение, двигается с некоторым шагом по изображению, и с помощью каскада слабых классификаторов определяет, есть ли в рассматриваемом окне лицо. Метод скользящего окно эффективно используется в различных задачах компьютерного зрения и распознавания объектов.
Метод состоит из 2-х подалгоритмов: алгоритм обучения и алгоритм распознавания. На практике скорость работы алгоритма обучения не важна. Крайне важна скорость работы алгоритма распознавания. По введенной ранее классификации можно отнести к структурным, статистическим и нейронным методам.
Метод имеет следующие преимущества:
· возможно обнаружение более одного лица на изображении;
· использование простых классификаторов показывает хорошую скорость и позволяет использовать этот метод в видеопотоке.
Однако метод сложно обучаем, так как для обучения требуется большое количество тестовых данных и предполагает большое время обучения, которое измеряется днями.
Изначально алгоритм был предложен для распознавания только лиц, но его можно использовать для распознавания других объектов. Одним из вкладов Виолы и Джонса было применение таблицы сумм, которую они назвали интегральным изображением, детальное описание которого будет дано ниже.
3.2.2 Схема распознавания
Обобщенная схема распознавания в алгоритме Виолы-Джонса показана на рисунке 10.
Рис. 10 Обобщенная схема распознавания метода Виолы-Джонса
Обобщенная схема алгоритма выгляди следующим образом: перед началом распознавания алгоритм обучения на основе тестовых изображений обучает базу данных, состоящую из признаков, их паритета и границы. Подробнее о паритете, признаке и границе будет рассказано в следующих пунктах. Далее алгоритм распознавания ищет объекты на разных масштабах изображения, используя созданную базы данных. Алгоритм Виолы-Джонса на выходе дает всё множество найденных необъединенных объектов на разных масштабах. Следующая задача - принять решение о том, какие из найденных объектов действительно присутствуют в кадре, а какие - дубли.
3.2.3 Признаки класса
В качестве признаков для алгоритма распознавания авторами были предложены признаки Хаара, на основе вейвлетов Хаара. Они были предложены венгерским математиком Альфредом Хааром в 1909 году.
В задаче распознавания лиц, общее наблюдение, что среди всех лиц области глаз темнее области щек. Рассмотрим маски, состоящие из светлых и темных областей.
Рис. 11 Признаки Хаара
Каждая маска характеризируется размером светлой и темной областей, пропорциями, а также минимальным размером. Совместно с другими наблюдениями были предложены следующие признаки Хаара, как пространство признаков в задаче распознавания для класса лиц.
Рис. 12 Признаки Хаара
Признаки Хаара дают точечное значение перепада яркости по оси X и Y соответственно. Поэтому общий признак Хаара для распознавания лиц представляет набор двух смежных прямоугольников, которые лежат выше глаз и на щеках. Значение признака вычисляется по формуле:
F=X-Y
где X - сумма значений яркостей точек закрываемых светлой частью признака, а Y - сумма значений яркостей точек закрываемых темной частью признака.
Видно, что если считать суммы значений интенсивностей для каждого признака это потребует значительных вычислительных ресурсов. Виолой и Джонсом было предложено использовать интегральное представление изображения, подробнее о нем будет далее. Такое представление стало довольно удобным способом вычисления признаков и применяется также и в других алгоритмах компьютерного зрения, например SURF.
3.2.4 Схема обучения
Обобщенная схема алгоритма обучения выглядит следующим образом. Имеется тестовая выборка изображений. Размер тестовой выборки около 10 000 изображений. На рисунке 13 показан пример обучающих изображений лиц. Алгоритм обучения работает с изображениями в оттенках серого.
Рис. 13 Пример обучающих изображений
При размере тестового изображения 24 на 24 пикселя количество конфигураций одного признака около 40 000 (зависит от минимального размера маски). Современная реализация алгоритма использует порядка 20 масок. Для каждой маски, каждой конфигурации тренируется такой слабый классификатор, который дает наименьшую ошибку на всей тренировочной базе. Он добавляется в базу данных. Таким образом алгоритм обучается. И на выходе алгоритма получается база данных из T слабых классификаторов. Обобщённая схема алгоритма обучения показана на рисунке 14.
Рис. 14 Обобщенная схема алгоритма обучения
Обучение алгоритма Виола-Джонса - это обучение алгоритма с учителем. Для него возможно такая проблема как переобучение. Показано, что AdaBoost может использоваться для различных проблем, в том числе к теории игр, прогнозировании. В данной работе условие остановки является достижение заранее заданного количества слабых классификаторов в базе.
Для алгоритма необходимо заранее подготовить тестовую выборку из l изображений, содержащих искомый объект и n не содержащих. Тогда количество всех тестовых изображений будет
где X - множество всех тестовых изображений, где для каждого заранее известно присутствует ли искомый объект или нет и отражено во множестве Y.
где
Под признаком j будем понимать структуру вида
Тогда откликом признака будет f_j (x), который вычисляется как разность интенсивностей пикселей в светлой и темной областях. Слабый классификатор имеет вид:
Задача слабого классификатора - угадывать присутствие объекта в больше чем 50% случаев. Используя процедуру обучения AdaBoost создается очень сильный классификатор состоящий из T слабых классификаторов и имеющий вид:
Целевая функция обучения имеет следующий вид:
3.2.5 Интегральное представление изображений
Интегральное представление можно представить в виде матрицы, размеры которой совпадают с размерами исходного изображения I, где каждый элемент рассчитывается так:
где I(r,c) -- яркость пиксела исходного изображения.
Каждый элемент матрицы II[x,y] представляет собой сумму пикселов в прямоугольнике от (0,0) до (x,y). Расчет такой матрицы занимает линейное время. Для того, чтобы вычислить сумму прямоугольной области в интегральном представлении изображения требуется всего 4 операции обращения к массиву и 3 арифметические операции. Это позволяет быстро рассчитывать признаки Хаара для изображения в обучении и распознавании.
Например, рассмотрим прямоугольник ABCD.
Сумму внутри прямоугольника ABCD можно выразить через суммы и разности смежных прямоугольников по формуле:
3.2.6 Обучение
Перед началом обучения инициализируются веса , где q - номер итерации, i-номер изображения.
После процедуры обучения получится T слабых классификаторов и T значений.
На каждой итерации цикла происходит обновление весов так, что их сумма будет равна 1. Далее для всех возможных признаков происходит подбор таких значений p,и,j что значение ошибки будет минимально на этой итерации. Полученный признак J(t) (на шаге t) сохраняется в базу слабых классификаторов, обновляются веса и вычисляется коэффициент .
В предложенном в 2001 году оригинальном алгоритме не была описана процедура получения оптимального признака на каждой итерации. Предполагается использование алгоритма AdaBoost и полный перебор возможных параметров границы и паритета.
3.2.7 Распознавание
После обучения на тестовой выборке имеется обученная база знаний из T слабых классификаторов. Для каждого классификатора известны: признак Хаара, использующийся в этом классификаторе, его положение внутри окна размером 24х24 пикселя и значение порога E.
На вход алгоритму поступает изображение I(r,c) размером WхH, где I(r,c) - яркостная составляющая изображения. Результатом работы алгоритма служит множество прямоугольников R(x,y,w,h), определяющих положение лиц в исходном изображении I.
Алгоритм сканирует изображение I на нескольких масштабах, начиная с базовой шкалы: размер окна 24х24 пикселя и 11 масштабов, при этом каждый следующий уровень в 1.25 раза больше предыдущего, по рекомендации авторов. Алгоритм распознавания выглядит следующим образом:
Для поиска объекта на цифровом изображении используется обученный классификатор, представленный в формате xml.
Структура классификатора:
где maxWeakCount - количество слабых классификаторов;
stageThereshold - максимальный порог яркости;
weakClassifiers - набор слабых классификаторов, на основе которых выносится решение о том, находится объект на изображении или нет;
internalNodes и leafValues - параметры конкретного слабого классификатора.
Первые два значения в internalNodes не используются, третье -- номер признака в общей таблице признаков (она располагается в XML-файле под тегом features), четвертое -- пороговое значение слабого классификатора. Если значение признака Хаара меньше порога слабого классификатора, выбирается первое значение leafValues, если больше -- второе.
На основе этого базиса строится каскад классификаторов, принимающих решение о том, распознан объект на изображении или нет. Наличие или отсутствие предмета в окне определяется разницей между значением признака и порогом, полученным в результате обучения.
После применения данного алгоритма на выходе получаем интересующую область изображения, содержащую лицо человека.
3.3 Программная реализация
Для реализации метода трекинга будем использовать две обученные модели детектирования фронтального лица и лица в профиль:
CvHaarClassifierCascade *cascade_frontal_face = (CvHaarClassifierCascade *)cvLoad("D:/openCV/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml", 0, 0, 0);
CvHaarClassifierCascade *cascade_profile_face = (CvHaarClassifierCascade *)cvLoad("D:/openCV/opencv/sources/data/haarcascades/haarcascade_profileface.xml", 0, 0, 0);
Далее нам необходимо получить изображение с камеры для поиска лица на нем. Для работы алгоритма будем использовать цикл while(), на каждой итерации которого будем получать изображение в текущий момент времени. Выход из цикла будет означать, что изображение найдено и передавать управление модулю слежения за объектом.
Захватив изображение с камеры переводим в градации серого:
cvCvtColor(frame, gray, CV_RGB2GRAY);
· frame - входное изображение,
· gray - выходное,
· CV_RGB2GRAY- конвертирование из RGB-пространства в оттенки серого (значение интенсивности вычисляется как взвешенная линейная свертка интенсивностей по всем трем каналам R,G,B):
Y = 0.3R + 0.59G + 0.11B
Далее полученное изображению передаем в функцию, реализующую детектор лица Виолы-Джонса:
cvHaarDetectObjects(gray, cascade, MemStorage, 1.1, 3, CV_HAAR_FIND_BIGGEST_OBJECT|CV_HAAR_SCALE_IMAGE , cvSize(50, 50))
1) gray - целевое изображение, к которому применяется каскад;
2) cascade - обученная модель
3) MemStorage - хранилище памяти
4) 1.1 - коэффициент увеличения масштаба
5) 3 - минимальный соседний порог
6) CV_HAAR_FIND_BIGGEST_OBJECT - находит наибольшее лицо
7) CV_HAAR_SCALE_IMAGE
8) cvSize(50, 50) - минимальный размер, по которому производится поиск, нужно задать как можно меньше, так как какой масштаб лица будет - не определено.
На выходе функции получаем минимальный ограничивающий прямоугольник, содержащий лицо человека и передаем его модулю слежения:
CvRect (x,y,width,height),
где (x,y) - координаты нижней левой точки прямоугольника, width - ширина, height - высота.
В общем, алгоритм в цикле while() можно представить следующими шагами:
1. Получение нового изображения.
2. Детектирование лица в фронтал
3. Если лицо не найдено, то используется другая модель для поиска лица в профиль.
4. Если лицо не найдено, то возвращение к шагу 1, иначе выход из цикла и передача управления в модуль слежения за объектом.
4. Анализ видеоизображения. Слежение за лицом
4.1 Постановка задачи
Пусть - полученная прямоугольная область изображения лица от детектора лиц с камеры в момент времени t. Множество точеклица .
Пусть множество I= - это изображение в каждый момент времени t от 0 до k, где t дискретно.
Рассмотрим ,
где - изображение фона; (x,y) ? G - область определения изображения.
Задача: найти на изображении .
Таким образом, на вход алгоритма подается последовательность кадров и координаты точек, которые необходимо отслеживать. На выходе алгоритма мы должны получить траекторию точек как набор смещений точки между кадрами.
4.2 Метод Лукаса-Канаде
4.2.2 Одномерный случай
Для начала рассмотрим одномерный случай.
Представим себе два одномерных кадра 1 пиксель в высоту и 20 пикселей в ширину. На втором кадре изображение немного будет смещено вправо.
Рис. 15 Вычисление смещения
Именно это смещение мы и хотим найти. Для этого представим эти же кадры в виде функций (рисунок 15). На входе позиция пикселя, на выходе -- его интенсивность. В таком представление искомое смещение (d) видно еще более наглядно. В соответствии с нашим предположением, это просто смещенная , то есть можем сказать, что .
Обратите внимание, что и при желании можно записать и в общем виде:
;
где y и t зафиксированы и равны нулю.
Для каждой координаты нам известны значения и в этой точке, кроме того мы можем вычислить их производные. Свяжем известные значения со смещением d. Для этого запишем разложение в ряд Тейлора для :
Сделаем второе важное предположение: предположим, что достаточно хорошо аппроксимируется первой производной. Сделав это предположение, отбросим всё, что после первой производной:
Тут мы теряем в точности, если только наша функция/изображение не строго линейна, как в нашем искусственном примере. Зато это существенно упрощает метод, а для достижения требуемой точности можно сделать последовательное приближение, которое мы рассмотрим позже.
Смещение d -- это наша искомая величина, поэтому надо что-то сделать с . Как мы условились ранее, , поэтому просто перепишем:
То есть:
4.2.2 Двумерный случай
Теперь перейдем от одномерного случая к двумерному. Запишем разложение в ряд Тейлора для и сразу отбросим все старшие производные. Вместо первой производной появляется градиент:
Где -- вектор смещения.
В соответствии со сделанным допущением . Обратите внимание, что это выражение эквивалентно . Это то, что нам нужно. Перепишем:
Поскольку между двумя кадрами проходит единичный интервал времени, то можно сказать, что есть не что иное, как производная по времени.
Перепишем:
Перепишем ещё раз, раскрыв градиент:
Мы получили уравнение, которое говорит нам о том, что сумма частных производных должны быть равна нулю. Проблема только в том, что уравнение у нас одно, а неизвестных в нем два: и . На этом моменте начинается полет фантазии и разнообразие подходов.
Сделаем третье предположение: предположим, что соседние пиксели смещаются на одинаковое расстояние. Возьмем фрагмент изображения, скажем 5 на 5 пикселей, и условимся, что для каждого из 25 пикселей и равны. Тогда вместо одного уравнения мы получим сразу 25 уравнений! Очевидно, что в общем случае система не имеет решения, поэтому будем искать такие и , которые минимизируют ошибку:
Здесь g -- это функция, определяющая весовые коэффициенты для пикселей. Самые распространенный вариант -- двухмерная гауссиана, которая дает наибольший вес центральному пикселю и все меньший по мере удаления от центра.
Чтобы найти минимум воспользуемся методом наименьших квадратов, найдем её частные производные по и :
Перепишем в более компактной форме и приравняем к нулю:
Перепишем эти два уравнения в матричной форме:
где
Если матрица М обратима (имеет ранг 2), можем вычислить и , которые минимизируют ошибку E:
Вот собственно и все. Мы знаем приблизительное смещение пикселей между двумя соседними кадрами.
Поскольку в нахождении смещения каждого пикселя участвуют также соседние с ним пиксели, при реализации данного метода целесообразно предварительно посчитать производные кадра по горизонтали и вертикали.
4.2.3 Недостатки метода
Описанный выше метод основан на трех значительных допущениях, которые с одной стороны дают нам принципиальную возможность определить оптический поток, но с другой стороны вносят погрешность. Мы предполагали, что для аппроксимации смещения нам будет достаточно первой производной. В общем случае это конечно же не так (рисунок 17).
Рис. 17 Вычисление смещения точки методом Лукаса-Канаде
Для достижения требуемой точности смещение для каждой пары кадров (назовём их и ) можно вычислять итеративно. В литературе это называется искажением (warping). На практике это означает, что, вычислив смещения на первой итерации, мы перемещаем каждый пиксель кадра в противоположную сторону так, чтобы это смещение компенсировать. На следующей итерации вместо исходного кадра мы будем использовать его искаженный вариант . И так далее, пока на очередной итерации все полученные смещения не окажутся меньше заданного порогового значения. Итоговое смещение для каждого конкретного пикселя мы получаем как сумму его смещений на всех итерациях.
По своей природе данный метод является локальным, то есть при определении смещения конкретного пикселя принимается во внимание только область вокруг этого пикселя -- локальная окрестность. Как следствие, невозможно определить смещения внутри достаточно больших (больше размера локальной окрестности) равномерно окрашенных участков кадра. К счастью на реальных кадрах такие участки встречаются не часто, но эта особенность все же вносит дополнительное отклонение от истинного смещения.
Ещё одна проблема связана с тем, что некоторые текстуры в изображении дают вырожденную матрицу М, для которой не может быть найдена обратная матрица. Соответственно, для таких текстур мы не сможем определить смещение. То есть движение вроде есть, но непонятно в какую сторону. В общем-то от этой проблемы страдает не только рассмотренный метод. Даже глаз человека воспринимает такое движение не однозначно.
4.3 Выбор оптимальных параметров
Для реализации алгоритма на C/С++ понадобится функция вычисления оптического потока:
cvCalcOpticalFlowPyrLK(prev_img, current_img, previous_pyramid, current_pyramid, prev_points, current_points, count_point, cvSize(20, 20), n, status, 0, tc, flags);
Рассмотрим ее параметры:
1) prev_img - изображение, полученное на предыдущей итерации
2) current_img - изображение на текущей итерации
3) previous_pyramid - буфер для пирамиды предыдущего изображения
4) current_pyramid - буфер для хранения пирамиды текущего изображения
5) prev_points - точки, положение которых необходимо определить
6) current_points - новые координаты точек
7) count_point - количество найденных точек
8) cvSize - размер окна поиска на каждом уровне пирамиды
9) n - количество используемых уровней пирамид
10) Status - массив, элементы которого равны либо 1 (поток есть), либо 0 (потока нет).
11) 0 - массив, содержащий значения изменений в окрестности между исходной точкой и новой точкой, может быть равен нулю
12) Tc - критерии прекращения итерационного алгоритма поиска на пирамиде (после указанного максимального числа итераций criteria.maxCount, или когда окно поиска станет меньше, чем criteria.epsilon)
13) Flags:
CV_LKFLOWPyr_A_READY - пирамида для первого изображения вычисляется до вызова функции;
CV_LKFLOWPyr_B_READY - пирамида для второго изображения вычисляется до вызова функции;
CV_LKFLOW_INITIAL_GUESSES - исходный массив B, содержащий текущие координаты точек создается до вызова.
Задача: определить, при каких значениях входных параметров n, cvSize и Tc алгоритм будет иметь минимальную ошибку вычисления и минимальное время обработки на заданном множестве возможных значений параметров. Так как требование минимальной ошибки и минимального времени обработки противоречивы, то необходимо оптимальное соотношение между этими величинами. То есть необходимо решить задачу многокритериальной оптимизации.
Сначала необходимо исказить изображения, чтобы создать выборку для исследования алгоритма трекинга. Алгоритм этих преобразований описан ниже:
1. Выбор 10 произвольных изображений, на каждом из которых случайным образом отмечена точка (её координаты записываются в файл).
2. Выбор одного изображения выборки.
3. К выбранному изображению последовательно применяются аффинные преобразования (масштабирование и параллельный перенос). В результате получается новое изображение. Новые координаты точки, отмеченной в п. 1 на исходном изображении, сохраняются в файл.
4. К полученному в предыдущем пункте изображению применяются аффинные преобразования. В результате получается новое изображение и новые координаты точки.
5. Процесс продолжается по аналогии еще 98 раз. Таким образом, получается 100 новых изображений (и отмеченных на них точек) для одного изображения исходной выборки
6. Выбор следующего изображения из исходной выборки и для него повторяются действия пунктов 3-5. В итоге получилось 10 выборок по 100 изображений в каждой. После применения аффинных преобразований вычисляются координаты точек: аналитически и с помощью алгоритм трекинга Lucas-Kanade.
Для каждой пары точек ошибка вычислялась следующим образом: пусть (, ) - координаты точки, полученной с помощью аналитического расчёта, а (, ) - координаты точки, полученной с помощью алгоритма трекинга. Тогда ошибка e вычисляется как среднеквадратичное расстояние между аналитическим расчётом координат точки и расчётом координат этой же точки с помощью алгоритма Lucas-Kanade, по формуле:
Ниже приведена общая последовательность действий по анализу значений параметров алгоритма трекинга:
1. Фиксируются параметры алгоритма трекинга.
2. Берется множество из 100 искаженных изображений, сгенерированных ранее и соответствующих одному из изображений исходной выборки, и для каждых двух последовательных изображений множества вычисляется ошибка и время работы алгоритма. В конце вычисляется средняя ошибка и среднее время работы алгоритма.
3. Шаг 2 повторяется для каждых 100 изображений, соответствующих изображениям исходной выборки. В итоге мы имеем 10 значений средней ошибки и 10 значений среднего времени работы алгоритма.
4. Усредняются средние значения, полученные на предыдущем шаге. Результаты заносятся в таблицу (см. Таблица 3).
5. Изменяется значение одного из параметров алгоритма (n, cvSize), а затем повторяются шаги 2-5 до тех пор, пока все возможные сочетания параметров алгоритма (из заданных интервалов) не будут перебраны.
Параметр n будем изменять от 1 до 4 с шагом 1, а параметр cvSize от 3 до 59 с шагом 2. В таблице 3 приведена часть полученных результатов
Таблица 3. Зависимость ошибки и времени работы алгоритма слежения от входных параметров
n |
CvSize |
Среднее отклонение |
Среднее время |
|
1 |
3 |
118,594124 |
0,001825 |
|
1 |
5 |
115,657422 |
0,001594 |
|
1 |
7 |
72,6525211 |
0,001363 |
|
1 |
9 |
68,7998512 |
0,001132 |
|
1 |
11 |
64,9471813 |
0,000901 |
|
1 |
13 |
61,0945114 |
0,00067 |
|
1 |
15 |
57,2418415 |
0,000439 |
|
1 |
17 |
53,3891716 |
0,00067 |
|
1 |
19 |
49,5365017 |
0,000901 |
|
1 |
21 |
45,6838318 |
0,001132 |
|
1 |
23 |
41,8311619 |
0,001363 |
|
1 |
25 |
37,978492 |
0,001594 |
|
1 |
27 |
34,1258221 |
0,001825 |
|
1 |
29 |
30,2731522 |
0,002056 |
|
1 |
31 |
26,4204823 |
0,002287 |
|
1 |
33 |
22,5678124 |
0,002518 |
|
1 |
35 |
18,7151425 |
0,002749 |
|
1 |
37 |
14,8624726 |
0,00298 |
|
1 |
39 |
11,0098027 |
0,003211 |
|
1 |
3 |
138,594124 |
0,001825 |
|
1 |
5 |
124,657422 |
0,001594 |
|
1 |
7 |
72,6525211 |
0,001363 |
|
1 |
9 |
68,7998512 |
0,001132 |
Выберем оптимальные параметры по критерию Парето.
Опр. Решение X2 называется доминируемым, если существует решение X1, не хуже чем X2, т.е. для любой оптимизируемой функции Fi, I=1, 2, …, m,
Fi(X2)Fi(X1) при максимизации функции Fi,
Fi(X2)Fi(X1) при минимизации Fi.
В случае доминирования при переходе от X2 к X1 ничего не будет проиграно ни по одному из частных критериев, но в отношении j - го частного критерия точно будет получен выигрыш. Говорят, что решение X1 лучше (предпочтительнее) решения X2 [20].
Согласно данному определению получим следующие параметры:
n=4, winSize=(20; 20).
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 -коэффициент масштабирования.
В узлах этой сетки как раз те точки, для которых будет вычисляться оптический поток.
3. Вычислим оптический поток в вышеописанной функции, на выходе получаем новое положение точек в текущей итерации.
4. Проверяем количество точек соответствию порогу:
count_point<30.
То есть если количество точек меньше 30, то объект считается потерянным, и тогда происходит выход из цикла и возвращение к модулю-детектору лица. Данное число подбиралось экспериментально. При количестве точек, меньших 30, точность слежения пропадала.
5. Удаляем точки, не найденные на текущей итерации.
6. Вычисляем координаты центра лица на изображении C(x,y):
,
,
где - координаты точек, для которых найден оптический поток, n - их количество.
7. Строим новую ограничивающую прямоугольную область, а точнее смещаем вычисленный детектором лица прямоугольник на новое положение с центром C(x,y).
8. Удаляем точки, которые не попали в новый прямоугольник. Таким образом, решаем проблему «отставших» точек.
9. Выводим на экран найденные точки.
10. Возвращаемся к шагу один.
В результате на каждой итерации будем получать два изображения (рис. 18): первое (справа) - цветное с ограничивающим прямоугольником, определяющий положение лица на картинке, а второе (слева) - изображение в градациях серого с изображением всех точек, для которых вычислен оптический поток.
Рис. 18 Выходное изображение
5. Управление поворотом камеры
Цель настоящей главы -- создание математической модели перенацеливания используемой поворотной камеры, экспериментальная проверка ее адекватности и внедрение ее в разрабатываемый комплекс.
5.1 Постановка задачи
Рассмотрим постановку задачи в терминах ТАУ. Пусть g - координата центра изображения, а x(t) - положение объекта в текущий момент времени на плоскости изображении, тогда величина рассогласования будет равна:
Связь между скоростью перемещения камеры на изображении и угловой скоростью вращения можно выразить через следующую формулу:
,
где K - коэффициент пропорциональности.
-угловая скорость вращения камеры, постоянная величина
Скорость движения объекта на изображении:
Цель управления:
Рис. 19 Математическая модель камеры
Для наблюдения за целевым объектом на заданном участке местности необходимо выработать соответствующие управления поворотной камерой так, чтобы в каждый текущий момент времени камера была направлена в сторону целевого объекта, например в его «центр». Видеокамера имеет две степени свободы, которая устроены следующим образом: камера крепится на одном приводе (привод 1), который в свою очередь крепится на другом приводе (привод 2). Камера установлена на приводе 1 таким образом, что оптическая ось ее объектива пересекает ось вращения этого привода и перпендикулярна ей; оси вращения приводов взаимно перпендикулярны. Примем, что привод 1 предназначен для вращения камеры по азимуту («влево-вправо»), а привод 2 - для вращения камеры по склонению («вверх-вниз»). При работе с поворотной камерой при помощи команд можно изменять направление объектива, вращая камеру вокруг осей двух приводов. В данной работе для упрощения задачи будем управлять только смещением привода 1.
Требуется решить задачу перенацеливания камеры на подвижный объект с известными координатами (x,y) на поверхности наблюдения, то есть, найти такой угол б поворота привода 1, которые переведут вектор наблюдения на точку (x,y). Полагаем, что y=const.
5.2 Перенацеливание на заданную точку поверхности
Далее будем считать, что наблюдаемая поверхность, то есть изображение с камеры представляет собой плоскость. Введем декартову систему координат для камеры так, что ось вращения первого привода совпадает с . Положим, что вращение камеры, если рассматривать его по направлению оси вращения, осуществляется по часовой стрелке вокруг оси . Зафиксируем начальное положение камеры таким образом, чтобы она была расположена (под расположением камеры будем понимать точку пересечения оптической оси объектива камеры и оси вращения первого привода) на известном расстоянии H от плоскости наблюдения и направлена перпендикулярно к ней, а оси и были параллельны этой плоскости. Выберем декартову прямоугольную систему координат так, чтобы в начальном положении камера располагалась на оси Oz в точке C = (0, 0, H) и была направлена в начало координат (плоскость наблюдения при этом совпадет с плоск...
Подобные документы
Искусственная нейронная сеть - математическая модель, представляющая собой систему соединённых, взаимодействующих между собой нейронов. Методы детектирования движения в видеопотоке. Обзор инструментальных средств для разработки программного продукта.
дипломная работа [2,0 M], добавлен 06.06.2017Разработка программно-аппаратного комплекса на базе ПЭВМ типа Pentium IV, включающего в себя периферийное устройство для генерации сигнала в виде напряжения, меняющегося во времени, и программного обеспечения для управления процессом генерации.
дипломная работа [3,0 M], добавлен 30.06.2012Особенности процесса проектирования систем компьютерного управления объектами. Принципы построения системы компьютерного управления мехатронной системой. Составление алгоритма и программы управления с использованием языка Pascal и Assembler-вставок.
курсовая работа [692,7 K], добавлен 06.02.2016Алгоритмы поиска динамических шумов и их компенсации на основе метода Motion estimation. Разработка программного продукта для детектирования движения капель дождя и их удаления на видеопоследовательностях, и его реализация среде Microsoft Visual Studio.
магистерская работа [6,6 M], добавлен 09.02.2013Табличный метод вычисления контрольной суммы. Реализация на практике вычисления циклического контрольного кода параллельным и последовательным методами. Аппаратная реализация вычисления CRC в параллельном и последовательном коде, математическое описание.
курсовая работа [573,7 K], добавлен 09.08.2015Ознакомление с основными возможностями и особенностями программно-аппаратного комплекса Менуэт 2000. Назначение системы управления доступом (СУД), ее возможности, режимы работы. База данных объекта контроля. Менеджер сети замков системы Менуэт 2000.
лабораторная работа [1,6 M], добавлен 17.01.2011Задачи компьютерного зрения. Анализ, разработка и реализация алгоритмов поиска и определения движения объекта, его свойств и характеристик. Алгоритмы поиска и обработки найденных областей движения. Метод коррекции. Нахождение объекта по цветовому диапазон
статья [2,5 M], добавлен 29.09.2008Системы и задачи их анализа. Методы системного анализа: аналитические; математические. Сущность автоматизации управления в сложных системах. Структура системы с управлением, пути совершенствования. Цель автоматизации управления. Этапы приятия решений.
реферат [324,3 K], добавлен 25.07.2010Основные модели представления знаний. Системы поддержки принятия решений. Диаграмма UseCase. Разработка базы данных на основе трех моделей: продукционные правила, семантическая сеть, фреймовая модель. Программная реализация системы принятия решений.
курсовая работа [715,1 K], добавлен 14.05.2014Реализация интерфейса пользователя для инструментального средства, обеспечивающего работу с таблицами принятия решений, встроенными в систему управления базами данных Oracle. Составление таблиц принятия решений и архитектуры инструментального средства.
курсовая работа [1,8 M], добавлен 18.07.2014Анализ программно-технических решений по учету оборудования торгового эквайринга. Разработка архитектуры программного комплекса учета оборудования. Система управления контентом. Выбор CMS. Менеджер пользователей. Структура информационной базы данных.
дипломная работа [1,8 M], добавлен 19.01.2017Состав и принцип работы аппаратуры. Выбор параметров корреляционного анализа и Фурье-анализа. Разработка и применение алгоритма корреляционного анализа. Реализация алгоритма Фурье-анализа на языке С++ и алгоритма корреляционного анализа на языке С#.
дипломная работа [4,6 M], добавлен 30.11.2016Обзор алгоритмов решения задачи: точные методы, генетический и жадный алгоритмы. Характеристика жадного алгоритма: его описание, анализ точности приближения, вычислительной сложности. Программная реализация и проверка корректности и быстродействия.
курсовая работа [228,7 K], добавлен 14.10.2017Методика и основные этапы разработки концептуальной модели и базовой архитектуры программно-аппаратного комплекса. Выбор программно-аппаратной платформы и среды. Обеспечение интуитивно-понятного пользовательского интерфейса. Создание системы управления.
курсовая работа [916,7 K], добавлен 06.12.2012Обслуживание двух встречных потоков информации. Структура информационных систем. Разработка структуры базы данных. Режимы работы с базами данных. Четыре основных компонента системы поддержки принятия решений. Выбор системы управления баз данных.
курсовая работа [772,0 K], добавлен 21.04.2016Проблема защиты информации в Internet. Технические детали спецификации SKIP, конфиденциальность и аутентификация. Устройство SunScreen: аппаратная система защиты локальных сетей. Алгоритм шифрования DES. Реализация алгоритма ГОСТ, реализация, расшифровка.
курсовая работа [2,8 M], добавлен 25.04.2012Описание математической модели летательного аппарата. Разработка алгоритмов управления беспилотным летательным аппаратом . Модель атмосферы и воздушных возмущений. Модель рулевых органов. Синтез управления на траекторном уровне. Петля Нестерова.
дипломная работа [1,0 M], добавлен 29.09.2008Разработка информационного и алгоритмического обеспечения системой управления базами данных Microsoft Access. Реализация и принцип работы основных компонентов подсистемы поддержки принятия решений. Особенности разработки программного модуля в Delphi.
реферат [333,9 K], добавлен 15.11.2009Методы решения проблем, возникающих на стадиях и этапах процесса принятия решений, их реализация в информационных системах поддержки принятия решений (СППР). Назначение СППР, история их эволюции и характеристика. Основные типы СППР, области их применения.
реферат [389,3 K], добавлен 22.11.2016Разработка и реализация программы расчета заданных функций на языке программирования VBA. Математическая модель, параметры и характеристики задачи, критерии оценки эффективности созданного модуля. Разработка алгоритма и тестирование программного модуля.
курсовая работа [488,7 K], добавлен 08.09.2010