-
Notifications
You must be signed in to change notification settings - Fork 4
/
experiments.tex
78 lines (63 loc) · 7.56 KB
/
experiments.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
\chapter{ЭКСПЕРИМЕНТАЛЬНЫЕ РЕЗУЛЬТАТЫ}
\section{Подготовка данных}
Для проведения экспериментов были получены данные видеосъёмки дроном Phantom DJI 4. Из этих видеороликов мной были подготовлены \textit{наборы данных} (\textbf{datasets}). Мной было экспериментально установлено, что для того чтобы получить $70\%$ перекрытие на соседних изображениях (необходимое условие для хорошего сопоставления) требуется нарезать видео с частотой хотя бы 1 кадр в 2 секунды. Отдельно рассматривались прямые и обратные (в противоположную сторону) пролеты БПЛА над одной и той же местностью, для возможности имитации задачи возвращения дрона домой по построенной карте. Пример полученной раскадровки представлен на рисунке \ref{fig:dataset}.
\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{dataset.png}
\caption{Снимки, полученные с БПЛА}
\label{fig:dataset}
\end{figure}
\section{Эксперименты по сопоставлению изображений}
Как первое приближение используется решение \quotes{в лоб}: каждый снимок, сделанный на прямом пролете (кривая $AB$), сопоставляется с каждым снимком из обратного пролёта (кривая $BA$). Для $n$ прямых снимков и $m$ обратных получаем $n*m$ сравнений. В итоге для каждый пары снимков получаем \textit{результат сравнения} (\textbf{score}) их ключевых точек, на основе которого можно судить, соответствуют ли эти снимки одной и той же точке в пространстве.
Этот алгоритм для экспериментов был реализован мной на языке программирования $Python$, с использованием библиотеки \hyperref[itm:opencv]{OpenCV [\ref{itm:opencv}]}. В экспериментах я использовал дескрипторы SIFT и ORB. В качестве параметров программа принимает название алгоритма и максимальное количество ключевых точек, которые будут выделятся на изображении. Далле на рисунках представлены результаты работы программы. На рисунке \ref{fig:features} красным цветом показаны выявленные ключевые точки, а на рисунке \ref{fig:matches} эти точки сопоставлены на двух изображениях и совпадения соединены зелёной линией.
\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{features.png}
\caption{Найденные ключевые точки}
\label{fig:features}
\end{figure}
\begin{figure}[h]
\centering
\includegraphics[width=1.0\textwidth]{matches.png}
\caption{Совпадения ключевых точек}
\label{fig:matches}
\end{figure}
Варьируя количество выделяемых ключевых точек и используя разные алгоритмы, были проведены эксперименты. Для визуализации качества сопоставления были построены \textit{тепловые карты} (\textbf{heatmaps}) -- диаграммы показывающие насколько хорошо совпадает изображение $x_i$ с $y_j$ (расположены соответственно на осях абсцисс и ординат). Чем выше score сопоставления $x_i$ с $y_j$ изображения, тем \quotes{теплее} цвет пикселя на диаграмме.
Сопоставление можно считать успешным, если на диаграмме хорошо прослеживается траектория: так как при пролётах туда-обратно мы должны получать, что на $x_0$ и $y_n$, $x_1$ и $y_{n-1}$ ... и т.д. видны одни и те же точки пространства. Также анализировалось время работы программы. На рисунке \ref{fig:heatmaps} представлены полученные результаты на наборах из 40x32 изображений (1280 сравнений). Подписи к изображеням: \textit{алгоритм -- количество точек -- время работы}.
\begin{figure}[h]
\centering
\begin{subfigure}[h]{0.45\textwidth}
\includegraphics[width=\textwidth]{orb_heatmap200.png}
\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 мин.}
\label{fig:mouse}
\end{subfigure}
~
\begin{subfigure}[h]{0.45\textwidth}
\includegraphics[width=\textwidth]{sift_heatmap1000.png}
\caption{SIFT -- 1000 точек -- 4 ч.}
\label{fig:mouse}
\end{subfigure}
\caption{Сравнительные тепловые диаграммы}
\label{fig:heatmaps}
\end{figure}
\section{Выводы}
Анализ полученных результатов позволяет сделать следующие выводы:
\begin{itemize}
\item при малом количестве выделяемых ключевых точек прослеживается траектория полёта;
\item $SIFT$ даёт много ложных сопоставлений при очень большом времени работы -- 3,5 часа против 20 минут у $ORB$;
\item при увеличении точек совпадения \quotes{размазываются} по всей диаграмме -- это значит, что ошибка растёт и нужно улучшать методы feature extraction для получения лучших ключевых точек.
\end{itemize}
Учитывая время работы и полученные результаты, навигация БПЛА с использованием решения \quotes{в лоб}, не представляется возможной. Однако это решение может быть использовано в качестве первого приближения, от которого можно отталкиваться в дальнейшем и сравнивать с ним результаты последующей работы.
\newpage