diff --git a/README.md b/README.md index 47c74f9..7ce9391 100644 --- a/README.md +++ b/README.md @@ -12,15 +12,16 @@ ## course work -* You can read rendered report just - [here](https://drapegnik.github.io/bsu-science/course_work.pdf) +* You can read rendered report just [here](https://drapegnik.github.io/bsu-science/course_work.pdf) +* Check report code in + [release `v1.1.0`](https://github.com/Drapegnik/bsu-science/releases/tag/v1.1.0) * And watch presentation [here](https://docs.google.com/presentation/d/161g6bRi6klaJ416lPPkY5j0UghrihfigWrKDQApp71c/pub?start=false&loop=false&delayms=3000) * Check application [repository](https://github.com/lybros/appa) ## notes -* I use [bsu-style](https://github.com/bsutex/bsustyle) for correct _tex_ - formatting. Recommend to take a look. +* I use [bsu-style](https://github.com/bsutex/bsustyle) for correct _tex_ formatting. Recommend to + take a look. * All reports can be downloaded from [`docs/`](https://github.com/Drapegnik/bsu-science/tree/master/docs) folder diff --git a/annotation.tex b/annotation.tex index cd7d02f..66df0ec 100644 --- a/annotation.tex +++ b/annotation.tex @@ -22,4 +22,4 @@ In this work, the basic algorithms of computer vision and their application to build 3D maps of the area from UAV images were considered. Designed and implemented an application that allows build 3D models and realize search. -\newpage \ No newline at end of file +\newpage diff --git a/conclusions.tex b/conclusions.tex index 7209e38..2827e56 100644 --- a/conclusions.tex +++ b/conclusions.tex @@ -1,4 +1,4 @@ -\chapter*{ЗАКЛЮЧЕНИЕ} +\chapter*{ЗАКЛЮЧЕНИЕ} \addcontentsline{toc}{chapter}{ЗАКЛЮЧЕНИЕ} В процессе выполнения данной работы были получены следующие результаты: @@ -11,7 +11,7 @@ \chapter*{ЗАКЛЮЧЕНИЕ} \item спроектировано и реализовано приложение, позволяющее строить 3D модели и осуществлять поиск по ним. \end{itemize} -Полученные теоретические знания и практические навыки, а также результаты экспериментов являются хорошей основой для будущих исследований. +Полученные теоретические знания и практические навыки, а также результаты экспериментов являются хорошей основой для будущих исследований. Выбранная область и проблема позволяют не останавливаться на достигнутом и, в дальнейшем, продолжить работу над задачей. -\newpage \ No newline at end of file +\newpage diff --git a/contents.tex b/contents.tex index 86c222c..baeb64f 100644 --- a/contents.tex +++ b/contents.tex @@ -1,4 +1,4 @@ \renewcommand{\contentsname}{СОДЕРЖАНИЕ} \tableofcontents -\newpage \ No newline at end of file +\newpage diff --git a/development.tex b/development.tex index f718c28..0d720a6 100644 --- a/development.tex +++ b/development.tex @@ -2,12 +2,12 @@ \chapter{РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ} \section{Выбор технологий} -К разрабатываемому приложению были поставлены следующие требования: высокая производительность, удобный и кроссплатформенный пользовательский интерфейс, минимум зависимостей. Для выполнения процесса \textbf{Structure From Motion} была выбрана реализация от Криса Суини (\textit{Chris Sweeney}) - библиотека проективной геометрии с открытым исходным кодом \hyperref[itm:theia]{Theia [\ref{itm:theia}]}. Автор библиотеки, исследователь Вашингтонского университета, занимается разработками в области компьютерного зрения и виртуальной реальности, имеет степень Ph.D., а также множество научных публикаций. Выбор именно этой библиотеки обусловлен несколькими причинами: легковесность (не имеет зависимостей от больших библиотек, таких как OpenCV или Boost), узкая специализация и направленность на решение конкретной задачи, реализация на С++, очень хорошая и подробная документация. +К разрабатываемому приложению были поставлены следующие требования: высокая производительность, удобный и кроссплатформенный пользовательский интерфейс, минимум зависимостей. Для выполнения процесса \textbf{Structure From Motion} была выбрана реализация от Криса Суини (\textit{Chris Sweeney}) - библиотека проективной геометрии с открытым исходным кодом \hyperref[itm:theia]{Theia [\ref{itm:theia}]}. Автор библиотеки, исследователь Вашингтонского университета, занимается разработками в области компьютерного зрения и виртуальной реальности, имеет степень Ph.D., а также множество научных публикаций. Выбор именно этой библиотеки обусловлен несколькими причинами: легковесность (не имеет зависимостей от больших библиотек, таких как OpenCV или Boost), узкая специализация и направленность на решение конкретной задачи, реализация на С++, очень хорошая и подробная документация. Для написания графического пользовательского интерфейса отлично подходил \hyperref[itm:qt]{$Qt$ [\ref{itm:qt}]}. $Qt$ - это кроссплатформенный инструментарий разработки приложений на языке программирования C++. $Qt$ позволяет запускать написанное с его помощью программное обеспечение в большинстве современных операционных систем (\textit{Windows, macOS, Linux}) путём простой компиляции программы для каждой операционной системы без изменения исходного кода. Также предоставлены обширные инструменты по быстрому и удобному созданию интерфейсов. \section{Разработка алгоритма поиска} -Итак, после выполнения всех этапов Structure From Motion мы имеем 3d модель - реконструкцию поверхности. Модель представляет из себя набор точек пространства, также мы можем привязать к ним gps-данные. Цель алгоритма - найти на построенной 3d карте расположение нового снимка. Предполагается, что снимок взят не, из исходного датасета, но на нём присуствует та же область пространства, иначе ничего не будет найдено. Следующая задача алгоритма - найти геометрическое преобразование и с его помощью определить точные координаты точки пространства из которой был сделан искомый снимок. +Итак, после выполнения всех этапов Structure From Motion мы имеем 3d модель - реконструкцию поверхности. Модель представляет из себя набор точек пространства, также мы можем привязать к ним gps-данные. Цель алгоритма - найти на построенной 3d карте расположение нового снимка. Предполагается, что снимок взят не из исходного датасета, но на нём присуствует та же область пространства, иначе ничего найдено не будет. Следующая задача алгоритма - найти геометрическое преобразование и с его помощью определить точные координаты точки пространства из которой был сделан искомый снимок. Для осуществления поиска по модели вместе с каждой 3d точкой сохраняется набор дескрипторов всех особых точек соответствующих этой, реальной точке. В итоге получается следующий алгоритм: @@ -36,7 +36,7 @@ \section{Приложение для построения рекнострукц В приложении реализован следующий функционал: \begin{itemize} - \item создание / открытие проекта; + \item создание нового / открытие существующего проекта; \item просмотр датасета текущего проекта; \item извлечение ключевых точек; \item построение модели; @@ -61,4 +61,4 @@ \section{Выводы} \includegraphics[width=0.9\textwidth]{appa-options.png} \caption{Различные параметры построения модели} \label{fig:appa-options} -\end{figure} \ No newline at end of file +\end{figure} diff --git a/essay.tex b/essay.tex index 2d4ffa5..5ca4ebd 100644 --- a/essay.tex +++ b/essay.tex @@ -16,6 +16,6 @@ \textbf{Области применения:} модели и алгоритмы, работающие на борту беспилотных летательных аппаратов. -\textbf{Результаты:} сравнительные эксперименты, алгоритм, приложение. +\textbf{Результаты:} сравнительные эксперименты, алгоритм, приложение. -\newpage \ No newline at end of file +\newpage diff --git a/experiments.tex b/experiments.tex index e9e8314..0f73da3 100644 --- a/experiments.tex +++ b/experiments.tex @@ -42,13 +42,13 @@ \section{Matching эксперименты} \caption{ORB - 200 точек - 18 мин.} \label{fig:orb_200} \end{subfigure} - ~ + ~ \begin{subfigure}[h]{0.45\textwidth} \includegraphics[width=\textwidth]{sift_heatmap200.png} \caption{SIFT - 200 точек - 3,7 ч.} \label{fig:sift_200} \end{subfigure} - ~ + ~ \begin{subfigure}[h]{0.45\textwidth} \includegraphics[width=\textwidth]{orb_heatmap1000.png} \caption{ORB - 1000 точек - 26 мин.} @@ -70,4 +70,4 @@ \section{Выводы} Учитывая время работы и полученные результаты при большом числе извлекаемых точек, навигация с использованием этого алгоритма, конечно же, не представляется возможной. Однако мы получили первое приближение, решение \quotes{в лоб}, от которого можно отталкиваться в дальнейшем и сравнивать с ним результаты будущей работы. -\newpage \ No newline at end of file +\newpage diff --git a/introduction.tex b/introduction.tex index f51dee6..a3b324a 100644 --- a/introduction.tex +++ b/introduction.tex @@ -11,4 +11,4 @@ \chapter*{ВВЕДЕНИЕ} Многие проекты, использующие компьютерное зрение, направлены на автоматизацию рутинной работы, уменьшение человеческого труда. Одна из основных задач - улучшение качества жизни путём высвобождения одного из самых дорогих ресурсов - человеческого времени. -\newpage \ No newline at end of file +\newpage diff --git a/literature.tex b/literature.tex index 0649fae..597c32f 100644 --- a/literature.tex +++ b/literature.tex @@ -3,22 +3,22 @@ \chapter*{СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ} \begin{enumerate} \item \label{itm:opencv} GitHub репозиторий библиотеки с открытым исходным кодом OpenCV [Электронный ресурс] / OpenCV Сommunity - 2016. - Режим доступа: \url{https://github.com/opencv/opencv}. - Дата доступа: 26.09.2016. - + \item \label{itm:sift} Mordvintsev, A. Introduction to SIFT (Scale-Invariant Feature Transform) / A. Mordvintsev, K. Abid // OpenCV Python Documentation [Electronic resource] - 2013. - Mode of access: \url{https://goo.gl/5DqpcN}. - Date of access: 10.11.2016. - + \item \label{itm:lowe} Lowe, D. Distinctive Image Features from Scale-Invariant Keypoints / D. Lowe // International Journal of Computer Vision — 2004. — no. 60 (2). — pp. 91-101. - + \item \label{itm:surf} Bay H., Ess A., Tuytelaars T., Van Gool L. SURF: Speeded up robust features // Computer Vision and Image Understanding – 2008. – no. 110. – pp. 346–359. - + \item \label{itm:brief} Calonder M., Lepetit V., Strecha C., Fua P. BRIEF: Binary Robust Independent Elementary Features // Proc. European Conference on Computer Vision – 2010. – pp. 778–792. - + \item \label{itm:gloh} Kalal Z., Matas J., Mikolajczyk K. Forward-backward error: automatic detection of tracking failures ICPR’10 - 2010. – pp. 2756-2759. - + \item \label{itm:orb} Rublee E. ORB: an efficient alternative to SIFT or SURF / Rublee E., Rabaud V., Konolige K., Bradski G. // IEEE International Conference on Computer Vision (ICCV) [Electronic resource] - 2011. - Mode of access: \url{http://www.vision.cs.chubu.ac.jp/CV-R/pdf/Rublee_iccv2011.pdf}. - Date of access: 17.12.2016. - + \item \label{itm:theia} Официальная документация библиотеки с открытым исходным кодом TheiaSfm [Электронный ресурс] / Chris Sweeney - 2016. - Режим доступа: \url{http://www.theia-sfm.org/}. - Дата доступа: 17.04.2017. - + \item \label{itm:last}\label{itm:qt} Официальный сайт C++ фрэймворка QT [Электронный ресурс] / The Qt Company - 2017. - Режим доступа: \url{https://www.qt.io/}. - Дата доступа: 20.04.2017. \end{enumerate} -\newpage \ No newline at end of file +\newpage diff --git a/main.tex b/main.tex index d5074c6..8441746 100644 --- a/main.tex +++ b/main.tex @@ -32,5 +32,3 @@ \input{literature.tex} \end{document} - - diff --git a/theory.tex b/theory.tex index 0a6c448..c5efeb0 100644 --- a/theory.tex +++ b/theory.tex @@ -22,23 +22,23 @@ \section{Постановка задачи} \section{Актуальность и практическая значимость} -Как следует из названия БПЛА не имеют пилота, но это не значит, что они не пилотируемы. Управление беспилотником требует специального обучения, сосредоточенности и является очень утомительным для оператора. Основополагающим необходимым условиям для работы дрона является наличие GPS сигнала, что делает его очень уязвимым и зависимым от внешних обстоятельств. В отсутствие сигнала системы глобального позиционирования дрон теряет управление. +Как следует из названия БПЛА не имеют пилота, но это не значит, что они не пилотируемы. Управление беспилотником требует специального обучения, сосредоточенности и является очень утомительным для оператора. Основополагающим необходимым условием для работы дрона является наличие GPS сигнала, что делает его очень уязвимым и зависимым от внешних обстоятельств. В отсутствие сигнала системы глобального позиционирования дрон теряет управление. В связи с этим возникает задача нахождения и использования альтернативных источников навигации. Так как почти каждый современный беспилотник оснащён камерой возможно применение алгоритмов компьютерного зрения. С помощью разработанного алгоритма и программного обеспечения будет возможна навигация дрона, используя только камеру. Дополнительные возможности применения обширны: патрулирование заданной территории и обнаружение новых объектов, не присутствовавших ранее, возвращение в заданную точку в случае потери gps сигнала, слежение за данным объектом, навигация по заданной графической точке. -\section{Общие теоретические положения} +\section{Общие теоретические положения} -Люди обладают зрением, что позволяет нам распознавать изображения и объекты на них, сравнивать их между собой и всё это мы делаем бессознательно, автоматически. Однако, для машины изображение — всего лишь закодированные данные, набор нулей и единиц. Одной из больших проблем в сопоставлении изображений является очень большая размерность пространства, которое несёт информацию. Если взять картинку размером хотя бы $100*100$ пикселей, то уже получим размерность равную $10^4$ пикселей. Поэтому методы анализа изображения должны быть быстрыми и эффективными. +Люди обладают зрением, что позволяет нам распознавать изображения и объекты на них, сравнивать их между собой и всё это мы делаем бессознательно, автоматически. Однако, для машины изображение — всего лишь закодированные данные, набор нулей и единиц. Одной из больших проблем в сопоставлении изображений является очень большая размерность пространства, которое несёт информацию. Если взять картинку размером хотя бы $100*100$ пикселей, то уже получим размерность равную $10^4$ пикселей. Поэтому методы анализа изображения должны быть быстрыми и эффективными. -Как же компьютер обретает зрение? +Как же компьютер обретает зрение? Основная идея состоит в том, чтобы получить какую-то характеристику, которая будет хорошо описывать изображение, легко вычисляться и для которой можно ввести оператор сравнения. Эта \quotes{характеристика} должна быть устойчива к различным преобразованиям (сдвиг, поворот и масштабирование изображения, изменения яркости, изменения положения камеры). Чтобы определять один и тот же объект на изображениях сделанных с разных углов, расстояний и при разном освещении. -Все эти условия приводят к необходимости выделения на изображении особых, \textit{ключевых точек} (\textbf{key points}). Этот процесс называется \textit{извлечение признаков} (\textbf{feature extraction}). Ключевая точка - эта такая особая точка, которая сильно отличается от близлежащих точек по какой-то обусловленной характеристике. Она должна быть не похожа на остальные точки вокруг, соответственно является, в какой-то степени, уникальным свойством изображения в своей локальной области. Таким образом машина может представить изображение как модель, состоящую из особых точек. Например, на изображении человеческого лица функции ключевых точек могут выполнять глаза, уголки губ, кончик носа. +Все эти условия приводят к необходимости выделения на изображении особых, \textit{ключевых точек} (\textbf{key points}). Этот процесс называется \textit{извлечение признаков} (\textbf{feature extraction}). Ключевая точка - это такая особая точка, которая сильно отличается от близлежащих точек по какой-то обусловленной характеристике. Она должна быть не похожа на остальные точки вокруг, соответственно является, в какой-то степени, уникальным свойством изображения в своей локальной области. Таким образом машина может представить изображение как модель, состоящую из особых точек. Например, на изображении человеческого лица функции ключевых точек могут выполнять глаза, уголки губ, кончик носа. -После выделения особых точек компьютеру нужно уметь их сравнивать. Этот процесс называется \textit{сопоставление признаков} (\textbf{feature matching}). Для сравнения удобно использовать \textit{дескрипторы} (\textbf{descriptor} \quotes{описатель}). Дескриптор - своеобразный описатель или идентификатор ключевой точки, представляющий точку в удобном для сравнения виде. Как мы увидим далее, именно благодаря дескрипторам получается инвариантность относительно преобразований изображений. +После выделения особых точек компьютеру нужно уметь их сравнивать. Этот процесс называется \textit{сопоставление признаков} (\textbf{feature matching}). Для сравнения удобно использовать \textit{дескрипторы} (\textbf{descriptor} \quotes{описатель}). Дескриптор - своеобразный описатель или идентификатор ключевой точки, представляющий её в удобном для сравнения виде. Как мы увидим далее, именно благодаря дескрипторам получается инвариантность относительно преобразований изображений. В итоге получается следующая схема решения задачи сопоставления изображений: \begin{enumerate} @@ -58,10 +58,10 @@ \section{Общие теоретические положения} Далее будут подробнее рассмотрены \textit{алгоритмы основанные на особых точках} (\textbf{feature-based algorithms}). -\section{Алгоритм SIFT} +\section{Алгоритм SIFT} \textbf{Scale-invariant feature transform} (SIFT) - алгоритм компьютерного зрения для выделения ключевых точек и их дескрипторов. Алгоритм был разработан в Университете Британской Колумбии и опубликован Дэвидом Лоу (\textit{David G. Lowe}) в 1999 \hyperref[itm:lowe]{[\ref{itm:lowe}]}. - + На первом этапе часто производится предварительная обработка изображения в целях улучшения его качества для последующего анализа. Например, на фотографиях с камер возможно появление шумов. Чтобы их устранить используют гауссовское размытие с маленьким радиусом или медианные фильтры. \subsection{Извлечение ключевых точек} @@ -69,7 +69,7 @@ \subsection{Извлечение ключевых точек} Основополагающим моментом в нахождении особых точек является построение пирамиды гауссианов (\textbf{Gaussian}) и разностей гауссианов (\textbf{Difference of Gaussian, DoG}). Гауссианом (или изображением, размытым гауссовым фильтром) является изображение: \begin{equation} \label{eq:1} L(x,y,\sigma) = G(x,y,\sigma) * I(x,y) -\end{equation} +\end{equation} В уравнении (\ref{eq:1}): $L$ — значение гауссиана в точке с координатами $(x,y)$, а $\sigma$ — радиус размытия. $G$ — гауссово ядро, $I$ — значение исходного изображения, $*$ — операция свертки. @@ -135,7 +135,7 @@ \section{Анализ других алгоритмов} \subsection{Дескриптор SURF} -В 2008 был представлен ближайший конкурент SIFT дескриптора, \hyperref[itm:surf]{ SURF [\ref{itm:surf}]} дескриптор. В идейном смысле он похож на своего предшественника, но процедура описания окрестности особой точки несколько иная, поскольку в ней используются не гистограммы взвешенных градиентов, а отклики исходного изображения на \textit{вейвлеты Хаара} (\textbf{Haar wavelets}). Вейвлет — математическая функция, позволяющая анализировать различные частотные компоненты данных. Вейвлет Хаара — один из первых и наиболее простых вейвлетов, обладает компактным носителем, хорошо локализован в пространстве, но не является гладким. +В 2008 был представлен ближайший конкурент SIFT дескриптора, \hyperref[itm:surf]{ SURF [\ref{itm:surf}]} дескриптор. В идейном смысле он похож на своего предшественника, но процедура описания окрестности особой точки несколько иная, поскольку в ней используются не гистограммы взвешенных градиентов, а отклики исходного изображения на \textit{вейвлеты Хаара} (\textbf{Haar wavelets}). Вейвлет — математическая функция, позволяющая анализировать различные частотные компоненты данных. Вейвлет Хаара — один из первых и наиболее простых вейвлетов, обладает компактным носителем, хорошо локализован в пространстве, но не является гладким. На первом шаге получения дескриптора вокруг ключевой точки строится квадратная область, которую ориентируют по некоторому предпочтительному направлению. Затем область разделяется на квадратные сектора. В каждом из секторов в точках, принадлежащих регулярной сетке, вычисляются отклики на два вида вейвлетов — горизонтально и вертикально направленные. Отклики взвешиваются Гауссианом, суммируются по каждому сектору, и образуют первую часть дескриптора. @@ -178,4 +178,4 @@ \section{Выводы} В своих дальнейших исследованиях я решил провести эксперименты с использованием SIFT - так как он является стандартом в компьютерном зрении, а ORB использовать как альтернативу и сравнить результаты по времени работы и точности сопоставления. OpenCV предоставляет удобный интерфейс создания дескрипторов и детекторов, что даёт возможность динамически сменять features methods. Практические эксперименты и их результаты будут рассмотрены в следующей главе. -\newpage \ No newline at end of file +\newpage diff --git a/titlepage.tex b/titlepage.tex index fe05e41..21b8224 100644 --- a/titlepage.tex +++ b/titlepage.tex @@ -11,37 +11,37 @@ \begin{center} Кафедра многопроцессорных систем и сетей \end{center} - + \vspace{9em} - + \begin{center} \textbf{\@jobtitle} \end{center} - + \vspace{2em} - + \begin{center} Курсовая работа \end{center} - + \vspace{4em} - + \begin{flushright} Пажитных Ивана Павловича\\ студента 3 курса\\ специальность "информатика"\\ \end{flushright} - + \vspace{1em} - + \begin{flushright} \textbf{Научный руководитель}:\\ Кондратьева Ольга Михайловна\\ старший преподаватель кафедры МСС\\ \end{flushright} - + \vfill - + \begin{center} Минск, 2017 \end{center}