Загрузил Анатолий Васин

REGULIROVANIE SVETOFOROV S POMOSch Yu ANALIZ VIDEORYaDA S TsEL Yu REORGANIZATsII DOROZhNOGO TRAFIKA docx (1)

реклама
Министерство образования и науки
Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
РЕГУЛИРОВАНИЕ СВЕТОФОРОВ С ПОМОЩЬЮ АНАЛИЗА
ВИДЕОРЯДА С ЦЕЛЬЮ РЕОРГАНИЗАЦИИ ДОРОЖНОГО ТРАФИКА
Курсовая работа по дисциплине
«Учебно–исследовательская работа»
Выполнили:
студент гр. 435-3
_______________Васин А.В.
_______________2018 г.
студент гр. 435-1
_______________Манин И.А.
_______________2018 г.
Научный руководитель:
Доцент каф. АСУ
_______________Шелестов А.А.
_______________2018 г.
Томск 2018
2
ОГЛАВЛЕНИЕ
Введение………………………………………………………………………..... 3
Глава 1. Обзор…………………………………………………………………… 4
1.1 Описание предмета…………………………………………………… 4
1.2 Обзор предметной области…………………………………………...
5
1.3 Описание задачи………………………………………………………
6
Глава 2. Разработка……………………………………………………………... 7
2.1 Обзор алгоритмов……………………………………………………..
7
2.2 Обзор используемых программных средств………………………... 12
2.3 Структура программного обеспечения…………………………….... 13
2.4 Обзор разработанного программного продукта…………………….
14
Заключение……………………………………………………………………... 16
Приложение А………………………………………………………………….. 17
3
ВВЕДЕНИЕ
Актуальность темы исследования: по данным Федеральной службы
государственной статистики за 2010 год на тысячу человек населения города
Томска приходится 220,8 автомобилей [1]. Т.е., около 116 тысяч автомобилей
принадлежит жителям города Томска [2]. Площадь города составляет 294,6 км²
[3]. Из приведенных данных можно сделать вывод что уже в 2010 году город
Томск был характерен частым загруженным дорожным трафиком. А уже в 2015
году Томск вошел в топ-50 городов России по объему автомобильного парка.
Следовательно, проблема, характерная большим городам, загруженности
дорожного трафика стала еще более актуальной. Благодаря этому проекту
станет возможным автоматическое регулирование времени работы сигналов
светофора, что позволит увеличить пропускную способность дорожной полосы
в наиболее загруженном направлении движения.
Объект исследования: полученный в реальном времени видеоряд
Предмет исследования: автомобильный поток
Цель исследования: написание системы обнаружения автомобилей и
последующего
регулирования
работы
светофора
для
уменьшения
загруженности дороги.
Для достижения указанной цели решаются следующие задачи:
1.
Обзор литературы в области исследования
2.
Обзор ПО и алгоритмов
3.
Разработка алгоритмов
4.
Разработка ПО
4
ГЛАВА 1
ОБЗОР
1.1 ОПИСАНИЕ ПРЕДМЕТА
Поскольку будет производиться анализ видео с камеры на дорожном
перекрестке, необходимо определить его значение. Видео [4] – электронная
технология
формирования,
записи,
обработки,
передачи,
хранения
и
воспроизведения подвижного изображения.
Автомобильный
транспортной
пассажиров
(транспортный)
сетью
движение
называется
грузопотоком,
поток [5]
транспортных
пассажиропотоком,
движение
пешеходов
–
это
упорядоченное
средств.
Перемещение
перемещение
–
пешеходным
грузов
–
потоком.
Для характеристики транспортных потоков используются следующие основные
показатели:
● интенсивность
движения
–
количество
транспортных
средств,
проходящих через определенное сечение дороги в единицу времени;
● плотность движения – количество транспортных средств, приходящееся
на 1 километр дороги;
● скорость.
В транспортном потоке требуется идентифицировать (Идентификация [6]
– установление тождественности неизвестного объекта известному на
основании
совпадения
признаков;
опознание.)
непосредственно
сами
автомобили для последующего их подсчета, обработки и подачи управляющего
сигнала светофору [7] – оптическое устройству, подающему световые сигналы,
регулирующие движение автомобильного, железнодорожного, водного и
другого транспорта, а также пешеходов на пешеходных переходах.
Для общего поля понимания итогов сбора и анализа информации с
видеоряда необходимо ввести ряд понятий светофорного регулирования.
● Такт регулирования – период действия определенной комбинации
светофорных сигналов;
5
● Фаза регулирования – совокупность основного и следующего за ним
промежуточного такта;
● Цикл регулирования – периодически повторяющаяся совокупность всех
фаз.
1.2 ОБЗОР В ПРЕДМЕТНОЙ ОБЛАСТИ
Как уже говорилось выше, проблема загруженности дорог очень важна.
Уже существуют некоторые её решения, одним из которых является сервис
“Яндекс.Пробки” [12], лишь отображающий информацию о пробках на
дорогах. Система использует геолокационные данные пользователей другого
сервиса той же компании – “Яндекс.Карты”. Минус данного решения в том, что
не все жители городов на своих мобильных устройствах имеют/используют
подобные сервисы или вовсе не имеют мобильных устройств, из чего следует
вероятная погрешность данной системы.
Другое существующее решение мониторинга трафика – технология видео
обнаружения FLIR [8], которая, как и подразумевает определение, анализирует
дорожный поток по данным с камер видеонаблюдения, различным приборам
ночного
видения и
ограничивается
термальным датчикам. Но эта система так же
только
предоставлением
информации
о
загруженности
дорожного участка.
Технологии распознавания автотранспорта на проезжей части использует
система автоматической фотовидеофиксаций нарушений ПДД “Интегра-КДД”
[10].
Она
предназначена
для
информационно-технологического
и
аналитического обеспечения процесса контроля за движением автотранспорта
на автотрассах, перекрестках и пешеходных переходах, оперативного анализа
дорожной ситуации и доведения требуемой информации до пользователей,
обладающих правом доступа. То есть, технология, как и описанные выше
только
предоставляют
информацию
о
дорожном
трафике
для
его
регулирования, но автоматизированность этого процесса не предусмотрена. В
6
задачи “Интегра-КДД” входят: анализ транспортного потока (подсчет машин),
выявление нарушений правил дорожного движения, анализ состояния
дорожного полотна, мониторинг светофорного оборудования и ряд других.
Перспективной же задачей данной системы является выявление нарушений
ПДД.
Из
вышесказанного
следует,
что
существующей
системы
автоматического переключения режимов светофоров в России не существует,
лишь только возможность получить информацию о дорожном трафике и на её
основе производить манипуляции из центра управления дорожным движением.
1.3
ОПИСАНИЕ ЗАДАЧИ
Основная задача делится на следующие подзадачи:
1. Изучение литературы по теме:
1.1.
Изучение работы светофора. Понять принцип распределения
временного интервала на каждый сигнал;
1.2.
Поиск и изучение подходящих программных приложений и
библиотек;
2. Научиться определять автомобили на изображениях и фотографиях;
3. Научиться определять автомобили на видео и в реальном времени;
4. Составить алгоритмы обработки получаемых данных, результатом
которых будут управляющие сигналы светофору.
7
ГЛАВА 2
РАЗРАБОТКА
2.1 ОБЗОР АЛГОРИТМОВ
Метод Виолы-Джонса [9] – метод был разработан и представлен в 2001
году Полом Виолой и Майклом Джонсом и до сих пор является
основополагающим для поиска объектов на изображении в реальном времени.
Хотя обучение классификаторов и каскада происходит довольно медленно, сам
поиск выполняется быстро и точно, за исключением случаев, когда искомый
объект повернут более чем на 30 градусов.
Основные принципы метода Виолы-Джонса:
● Используются изображения в интегральном представлении, что позволяет
вычислять быстро необходимые объекты.
Интегральное представление изображения – это матрица, совпадающая по
размерам с исходным изображением. В каждом элементе ее хранится
сумма интенсивностей всех пикселей, находящихся левее и выше данного
элемента. Благодаря этому возможно быстро рассчитывать суммарную
яркость произвольного прямоугольника на данном изображении, причем
какой бы прямоугольник не был, время расчета неизменно. Элементы этой
матрицы рассчитываются по формуле:
где I(i,j) — яркость пикселя исходного изображения. Каждый элемент
матрицы L[x,y] представляет собой сумму пикселей в прямоугольнике от
(0,0) до (x,y), т.е. значение каждого пикселя (x,y) равно сумме значений
всех пикселов левее и выше данного пикселя (x,y).
● Используются признаки Хаара, с помощью которых происходит поиск
нужного объекта.
Признак Хаара – признак, основанный на вейвлете (веейвлет –
математическая
функция,
при
помощи
которой
возможен
анализ
8
различных частотных компонентов данных) Хаара, позволяющий выявлять
объекты
на
изображении.
Признак
Хаара
состоит
из
смежных
прямоугольных областей.
Рисунок 2.1 – Примитивы Хаара
Они
располагаются
на
изображении,
после
чего
суммируются
интенсивности пикселей в этих областях, после чего вычисляется разность
между суммами. Эта разность и будет значением определенного признака,
определенного размера, определенным образом спозиционированного на
изображении.
● Используется бустинг (от англ. Boost – улучшение, усиление) для выбора
наиболее подходящих признаков для искомого объекта на данной части
изображения.
Бустинг — комплекс методов, способствующих повышению точности
аналитических моделей. Эффективная модель, допускающая мало ошибок
классификации, называется “сильной”. “Слабая” же, напротив, не
позволяет надежно разделять классы или давать точные предсказания,
делает в работе большое количество ошибок. Поэтому бустинг – это
процедура
последовательного
построения
композиции
алгоритмов
машинного обучения, когда каждый следующий алгоритм стремится
компенсировать недостатки композиции всех предыдущих алгоритмов.
● Все признаки поступают на вход классификатора, который даёт результат
9
“верно” либо “ложь”.
● Используются каскады признаков для быстрого отбрасывания окон, где не
был найден искомый объект
Каскадная модель сильных классификаторов – это по сути дерево
принятия решений (это дерево, в листьях которого стоят значения целевой
функции, а в остальных узлах — условия перехода, определяющие по
какому из ребер идти: истина – по левому ребру, ложь – по правому), где
каждый узел дерева построен таким образом, чтобы детектировать почти
все интересующие образы и отклонять регионы, не являющиеся образами.
Помимо этого, узлы дерева размещены таким образом, что чем ближе узел
находится к корню дерева, тем из меньшего количества примитивов он
состоит и тем самым требует меньшего времени на принятие решения.
● Использование сканирующего окна, что позволяет определять объекты
различных размеров.
Сначала выбирается окно сканирования и используемые признаки. Далее
окно начинает последовательно двигаться по изображению, при этом
вычисляются множество вариантов расположения признаков, за счет
изменения их масштаба и положения в окне сканирования, после чего все
признаки попадают на вход к классификатору.
Сканирование производится последовательно для различных масштабов
сканирующего окна.
Для поиска объекта нам необходимо обучить каскад Хаара находить этот
самый объект. Для этого нужны [11]:
1. Положительные примеры – фотографии объекта, причем в той среде, где
будет производится распознавание.
2. Отрицательные примеры (контрпримеры) – фотографии, на которых
искомый объект отсутствует.
Чем больше и разнообразней будет выборка, тем точней и стабильней
10
будет выполняться поиск и тем дольше каскад будет обучаться. На
рисунке ниже приведена примерная блок-схема обучения каскада Хаара.
Рисунок 2.2 — Блок-схема обучения каскада
Трекинг по двум кадрам [13] – это общеизвестный метод в сфере
машинного обучения. Его суть заключается в сравнении двух (и более) подряд
11
идущих кадров видео ряда. Существенная разница в цветовых показателях
пикселей выделяется определенным цветом. Далее, все выделенные объекты
усредняются для того, чтобы было проще выявить на кадрах цельные объекты.
Разбор процесс определения автотранспорта на дорожном полотне
методом трекинга по двум кадрам можно увидеть в разделе «Обзор
разработанного программного продукта» (2.4) главе «Разработка» (2).
В ходе учебно-исследовательской деятельности было выведено, что
метод трекинга имеет ряд преимуществ над методом Виолы-Джонса в решении
поставленной задачи, но не лишен недостатков.
Таблица 2.1 – Таблица сравнения рассматриваемых методов детектирования
автотранспорта на дорожном полотне
Метод
Виолы-Джонса
Преимущества
 Быстрота определения
Недостатки
 Трудоемкий процесс
объектов на
обучения каскада для
фото/видео.
классификатора.
Трекинг по двум
 Простота в разработке.
кадрам
 Разработанная
программа будет не
 Невозможность
определить стоящий
транспорт.
столь требовательна к
компьютерным
ресурсам.
В ходе сравнения рассматриваемых методов выявлена существенная
проблема метода трекинга по двум кадрам – невозможность определять
стоящий автотранспорт на дорожном полотне. Очевидно решение данной
проблемы – сравнение не подряд идущих кадров друг с другом, а текущего
кадра с кадром пустого дорожного полотна. Из предложенного решения
следует другая проблема – трудности детектирования автотранспорта в разное
время суток и в разных погодных условиях. Частичное решение выявленной
12
проблемы – ряд фотографий дорожного полотна в разное время суток. Т.е.,
необходимо сравнивать текущий кадр с кадром пустого дорожного полотна,
соответствующего текущему по времени суток.
2.2 ОБЗОР ИСПОЛЬЗУЕМЫХ ПРОГРАММНЫХ СРЕДСТВ
Для решения поставленной задачи идеально подходит графическая
библиотека OpenCV.
OpenCV (англ. Open Source Computer Vision Library, библиотека
компьютерного зрения с открытым исходным кодом)
— библиотека
алгоритмов компьютерного зрения, обработки изображений и численных
алгоритмов общего назначения с открытым кодом. Реализована на C/C++,
также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков.
Может свободно использоваться в академических и коммерческих целях —
распространяется в условиях лицензии BSD [14].
В разработке программного продукта необходима среда разработки. Для
этого подойдет интегрированная среда разработки Microsoft Visual Studio 2015.
Microsoft Visual Studio — линейка продуктов компании Microsoft,
включающих интегрированную среду разработки программного обеспечения и
ряд
других
инструментальных
средств.
Данные
продукты
позволяют
разрабатывать как консольные приложения, так и приложения с графическим
интерфейсом, в том числе с поддержкой технологии Windows Forms, а также
веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом
кодах для всех платформ, поддерживаемых Windows, Windows Mobile,
Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework
и Silverlight [15].
13
2.3 СТРУКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
На рисунке ниже представлена блок-схема проекта
Рисунок 2.3 – Блок-схема проекта.
Наша программа в течение некоторого интервала времени T обрабатывает
видеоряд. На основе полученных данных вычисляются, а затем усредняются по
T следующие характеристики: количество единиц транспорта, интенсивность
движения, средняя скорость. После чего передаётся управляющий сигнал
светофору – следует ли изменять временное соотношение его сигналов и, если
да, каким образом.
Весь проект условно можно разделить на несколько частей:
1. Поиск и подсчет автомобилей за определенный временной интервал
2. Обработка полученных за интервал времени данных
3. Передача управляющего сигнала светофору
14
2.4 ОБЗОР РАЗРАБОТАННОГО ПРОГРАММНОГО ПРОДУКТА
В ходе учебно-исследовательской деятельности на основе библиотеки
машинного обучения OpenCV и метода трекинга по двум кадрам был создан
программный продукт, обладающий функциями детектирования движущегося
автотранспорта на дорожном полотне и подсчет этого транспорта.
Входными данным для программы является видеопоток.
Рисунок 2.4 – Скриншот из входного видео
В
окне
вывода
отображается
сам
видео
поток
с
выделенным
автотранспортом на дороге, их порядковым номеров в стеке детектированных
объектов, линия счета, при пересечении которой автомобиль увеличивает
счетчик, и сам счетчик.
15
Рисунок 2.5 – Скриншот окна вывода программы
Так как, это не финальная версия разрабатываемого продукта, в ней есть
возможность увидеть промежуточные этапы выявления автотранспорта на
дорожном полотне.
Рисунок 2.6 – Скриншот промежуточного окна детектирования автотранспорта
Приложение А содержит в себе полный листинг программы.
16
ЗАКЛЮЧЕНИЕ
В
ходе
подготовки
проекта была изучена предметная
область,
рассмотрены алгоритмы, используемые в области исследования. Изученный
инструментарий позволит реализовать описанную выше систему, которая в
свое время благодаря своим преимуществам может обойти конкурентов и
внести вклад в реорганизацию дорожного трафика больших городов. Также, в
ходе
подготовки
детектировании
средствами.
проекта
были
автотранспорта
на
получены
дорожном
практические
полотне
навыки
в
программными
17
Приложение А
Листинг разработанного программного продукта.
Листинг файла Blob.cpp:
// Blob.cpp
#include "Blob.h"
////////////////////////////////////////////////////////////////////////////////////////////
///////
Blob::Blob(std::vector<cv::Point> _contour) {
currentContour = _contour;
currentBoundingRect = cv::boundingRect(currentContour);
cv::Point currentCenter;
currentCenter.x = (currentBoundingRect.x + currentBoundingRect.x +
currentBoundingRect.width) / 2;
currentCenter.y = (currentBoundingRect.y + currentBoundingRect.y +
currentBoundingRect.height) / 2;
centerPositions.push_back(currentCenter);
dblCurrentDiagonalSize = sqrt(pow(currentBoundingRect.width, 2) +
pow(currentBoundingRect.height, 2));
dblCurrentAspectRatio = (float)currentBoundingRect.width /
(float)currentBoundingRect.height;
blnStillBeingTracked = true;
blnCurrentMatchFoundOrNewBlob = true;
intNumOfConsecutiveFramesWithoutAMatch = 0;
}
////////////////////////////////////////////////////////////////////////////////////////////
///////
void Blob::predictNextPosition(void) {
int numPositions = (int)centerPositions.size();
if (numPositions == 1) {
predictedNextPosition.x = centerPositions.back().x;
predictedNextPosition.y = centerPositions.back().y;
}
else if (numPositions == 2) {
int deltaX = centerPositions[1].x - centerPositions[0].x;
int deltaY = centerPositions[1].y - centerPositions[0].y;
predictedNextPosition.x = centerPositions.back().x + deltaX;
predictedNextPosition.y = centerPositions.back().y + deltaY;
}
else if (numPositions == 3) {
int sumOfXChanges = ((centerPositions[2].x - centerPositions[1].x) * 2) +
18
((centerPositions[1].x - centerPositions[0].x) * 1);
int deltaX = (int)std::round((float)sumOfXChanges / 3.0);
int sumOfYChanges = ((centerPositions[2].y - centerPositions[1].y) * 2) +
((centerPositions[1].y - centerPositions[0].y) * 1);
int deltaY = (int)std::round((float)sumOfYChanges / 3.0);
predictedNextPosition.x = centerPositions.back().x + deltaX;
predictedNextPosition.y = centerPositions.back().y + deltaY;
}
else if (numPositions == 4) {
int sumOfXChanges = ((centerPositions[3].x - centerPositions[2].x) * 3) +
((centerPositions[2].x - centerPositions[1].x) * 2) +
((centerPositions[1].x - centerPositions[0].x) * 1);
int deltaX = (int)std::round((float)sumOfXChanges / 6.0);
int sumOfYChanges = ((centerPositions[3].y - centerPositions[2].y) * 3) +
((centerPositions[2].y - centerPositions[1].y) * 2) +
((centerPositions[1].y - centerPositions[0].y) * 1);
int deltaY = (int)std::round((float)sumOfYChanges / 6.0);
predictedNextPosition.x = centerPositions.back().x + deltaX;
predictedNextPosition.y = centerPositions.back().y + deltaY;
}
else if (numPositions >= 5) {
int sumOfXChanges = ((centerPositions[numPositions - 1].x centerPositions[numPositions - 2].x) * 4) +
((centerPositions[numPositions - 2].x - centerPositions[numPositions 3].x) * 3) +
((centerPositions[numPositions - 3].x - centerPositions[numPositions 4].x) * 2) +
((centerPositions[numPositions - 4].x - centerPositions[numPositions 5].x) * 1);
int deltaX = (int)std::round((float)sumOfXChanges / 10.0);
int sumOfYChanges = ((centerPositions[numPositions - 1].y centerPositions[numPositions - 2].y) * 4) +
((centerPositions[numPositions - 2].y - centerPositions[numPositions 3].y) * 3) +
((centerPositions[numPositions - 3].y - centerPositions[numPositions 4].y) * 2) +
((centerPositions[numPositions - 4].y - centerPositions[numPositions 5].y) * 1);
int deltaY = (int)std::round((float)sumOfYChanges / 10.0);
predictedNextPosition.x = centerPositions.back().x + deltaX;
predictedNextPosition.y = centerPositions.back().y + deltaY;
}
else {
// should never get here
}
}
19
Листинг файла Blob.h:
// Blob.h
#ifndef MY_BLOB
#define MY_BLOB
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
////////////////////////////////////////////////////////////////////////////////////////////
///////
class Blob {
public:
// member variables
///////////////////////////////////////////////////////////////////////////
std::vector<cv::Point> currentContour;
cv::Rect currentBoundingRect;
std::vector<cv::Point> centerPositions;
double dblCurrentDiagonalSize;
double dblCurrentAspectRatio;
bool blnCurrentMatchFoundOrNewBlob;
bool blnStillBeingTracked;
int intNumOfConsecutiveFramesWithoutAMatch;
cv::Point predictedNextPosition;
// function prototypes
////////////////////////////////////////////////////////////////////////
Blob(std::vector<cv::Point> _contour);
void predictNextPosition(void);
};
#endif
// MY_BLOB
20
ИСТОЧНИКИ И ЛИТЕРАТУРА
1 Федеральная служба государственной статистики. [Электронный
ресурс].
–
Режим
доступа:
http://www.gks.ru/bgd/regl/b11_14p/isswww.exe/stg/d01/05-17.htm
2 Публичная статья «Население Томска». [Электронный ресурс]. – Режим
доступа:
https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%B5%D0%BB%D0
%B5%D0%BD%D0%B8%D0%B5_%D0%A2%D0%BE%D0%BC%D1%81%D0%
BA%D0%B0
3 Публичная статья «Томск». [Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D0%BC%D1%81%D0%BA
4 Публичная статья «Видео». [Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%B4%D0%B5%D0%BE
5 Публичная статья «Транспортный поток». [Электронный ресурс]. –
Режим
доступа:
https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D1%81%D0
%BF%D0%BE%D1%80%D1%82%D0%BD%D1%8B%D0%B9_%D0%BF%D0%
BE%D1%82%D0%BE%D0%BA
6 Публичная статья «Идентификация». [Электронный ресурс]. – Режим
доступа:
https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0
%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F
7 Публичная статья «Светофор». [Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%B5%D1%82%D0%BE%D1
%84%D0%BE%D1%80
8 Корпоративный сайт «FLIR Systems, Inc.». [Электронный ресурс]. –
Режим доступа: www.flir.com
21
9 Ресурс для IT – специалистов «Хабрахабр». [Электронный ресурс]. –
Режим доступа: https://habrahabr.ru/post/133826/
10 Корпоративный сайт консорциума «Интегра-С». [Электронный
ресурс]. – Режим доступа: http://www.integra-s.com/products/integrakdd/
11 Ресурс для IT – специалистов «Хабрахабр». [Электронный ресурс]. –
Режим доступа: https://habrahabr.ru/post/208092/
12 Аналитический центр «Яндекс.Пробки». [Электронный ресурс]. –
Режим доступа: http://yaprobki.ru/
13 Информационно-аналитический ресурс, посвященный машинному
обучению, распознаванию образов и интеллектуальному анализу данных,
MachineLearning.ru.
[Электронный
ресурс].
–
Режим
доступа:
http://www.machinelearning.ru/wiki/images/6/6f/MultiTracking.pdf
14 Публичная статья «OpenCV». [Электронный ресурс]. – Режим доступа:
https://ru.wikipedia.org/wiki/OpenCV
15 Публичная статья «Microsoft Visual Studio». [Электронный ресурс]. –
Режим доступа: https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio
Скачать