Диссертация (1149687), страница 9
Текст из файла (страница 9)
Система оценки положения достаточно проста. Для каждогодвижущегося объекта, о котором сообщил модуль оценки положений камер истатичных объектов, заводится текущее оценка его координат в каждый момент времени. Эта оценка на основе новых координат проекций обновляетсясогласно выбранному методу. Каждый метод параметризуется размером шага,а также значением по умолчанию для начального приближения.563.4Калибровка камерыДля калибровки камеры применяется стандартный подход на основе использования изображений шахматной доски. В данном методе на каждом изображении производится поиск клеток шахматной доски известного размера.
Дляуспешной калибровки необходимо знать физические размеры клеток, их количество по вертикали и по горизонтали. Для обнаружения доски могут использоваться функции из библиотеки OpenCV, а также утилита для полуавтоматического поиска, которая требует от человека ввода четырех углов доски, послечего она может находить все остальные ее точки. В сложных случаях, например при большой дисторсии, даже полуавтоматический метод будет работатьнекорректно, поэтому предоставляется возможность выбрать все точки доскивручную. Обычно это требуется сделать лишь на одной фотографии, после чегопо ней будут грубо оценены параметры дисторсии, которые впоследствии станут использоваться для удаления дисторсии перед запуском алгоритмов поискашахматной доски.После обнаружения доски на всех входных файлах, осуществляется полная реконструкция всех положений камеры и всех положений доски.
Для этогоиспользуются модификации метода уравнивания связок на основе алгоритмаоптимизации Левенберга-Марквардта, короткое описание которого было дано впервой главе. Суть модификации метода заключается в том, что доска моделируется не как бессвязный набор точек, а как единый плоский объект. Данныйобъект параметризуется положением левого верхнего угла доски и ориентацией плоскости.
Для вычисления ошибки перепроектирования на основе какой-тооценки этих параметров, генерируются виртуальные точки шахматной доски,которые проектируются в изображение для подсчета расстояний до наблюдаемых реальных проекций точек доски. Такой подход существенно уменьшает57количество параметров в общей модели и позволяет разумней использоватьимеющиеся калибровочные изображения.Для успешной калибровки существуют некоторые рекомендации о том,каким образом лучше производить съемку:–изображения доски должны иметь большое разнообразие в ракурсах,–желательно, чтобы шахматная доска покрывала большую часть кадра,для этого возможно понадобится выбрать размеры доски в соответствиис соотношением сторон светочувствительного элемента камеры,–осуществлять съемку при помощи штатива,–осуществлять съемку при большой выдержке и малой чувствительностьматрицы камеры, это позволить снизить помехе на изображениях,–критически важно отключать автофокусировку, т.к.
она изменяет внутренние параметры камеры между фотографиями.3.5Детали использования комплекса и визуализацияРазработанный программный комплекс может использоваться в виде подключаемых python модулей, а также в виде независимых консольных приложений. Основные из них перечислены в списке:–register_camera.py — зарегистрировать камеру в системе. Данное приложение может принимать на вход опциональные калибровочные параметры, которые будут приписаны камере. В качестве результата возвращается идентификатор зарегистрированной камеры.–features.py — сдетектировать и сопоставить точки на видео или изображениях. Запускает фоновый процесс, который осуществляет постепенное детектирование особых точек и их последующее сопоставление.
Навход принимается список файлов видео и изображений, а также кон-58фигурационных файл, содержащий настройки детектора особых точеки алгоритма сопоставления. Все вычисления происходят только, еслисоответствующие данные отсутствуют.–attach_camera.py — привязывает видео или изображения к имеющейсяв системе камере. На вход принимается список файлов видео и изображений, а также идентификатор камеры.–reconstruction.py — произвести реконструкцию по видео или по наборуизображений. Данное приложение требует, чтобы для всех кадров видеоили для всех изображений были предварительно найдены и сопоставлены особые точки, при невыполнении данного условия, будет выданосоответствующее сообщение. Также перед запуском этого приложениянеобходимо, чтобы все видео и изображения на входе были привязанык некоторой камере. В качестве результаты выводится идентификаторполучившейся модели, содержащей все положения камер, статичных идвижущихся объектов.–manual_data.py — приложение для добавления данных вручную.
Позволяет загружать координаты особых точек, их траектори, положениякамер и т.п. Все данные могут быть привязаны как к реально существующим видео или изображений, так и к виртуальным, служащимдля целей имитационного моделирования.–calibrate.py — приложение для калибровки. Принимает на вход списокизображений с шахматной доской, конфигурацию этой доски и идентификатор камеры, с которой впоследствии будут связаны данные калибровки. Приложение позволяет производить калибровку в полуавтоматическом режими, в случаях, когда методы автоматической детекциишахматной доски плохо работают.Успешное использование системы было бы невозможным без визуализации результатов.
Визуализация позволяет легко анализировать получающиесяданные и делать соответствующие выводы о работе алгоритмов. Основными59результатами работы системы являются положения обнаруженных на видео иизображениях объектов. Для визуализации статического окружения реализованы удобные экспорты получившихся трехмерных моделей в стандартный формат для такого рода файлов PLY. Такого рода файлы можно просматривать, кпримеру, в популярной и открытой программе MeshLab. Визуализация траекторий движущихся объектов, также может быть осуществленна путем экспорта вPLY формат, в таком случае они будут отображаться в нем, как последовательности отрезков, соединяющих точки траектории.
Также вместе с ними можносериализовывать и траекторию движения камеры. Кроме сериализации в PLYформат, реализованы отображения на графики проекций траектории на разные координатные оси. Имеется возможность отобразить зависимость глубиныобъекта от времени, его X и Y координат и т.п. При наличии истинных данныхо положении объекта, их можно отобразить вместе с оценками алгоритмов, каки в PLY формат, так и на графики проекций.
Во всех этих приложениях выбор объекта для отрисовки осуществляется на основе идентификатора. Спискиобъектов для модели, полученной из модуля реконструкции, можно получитьпри помощи утилиты list_objects.py, передав в нее соответствующий идентификатор. Кроме графической визуализации все данные можно экспортироватьв tsv файлы.Иногда требуется добавить объект в систему вручную, не полагаясь на автоматические алгоритмы детекции особых точек. Для этого реализован простойUI интерфейс на базе модуля highgui из библиотеки OpenCV.
В нем можно просматривать видео или группу изображений и выделять на них точки искомыхобъектов. Далее эти точки будут использоваться для поиска этого объекта надругих кадрах или изображений при помощи соответствующих методов. Длявидео будут использоваться алгоритмы оптического потока, а для изображений будут использоваться дескрипторы SIFT или SURF. Добавляемым вручнуюобъектам присваивается идентификатор, который потом можно использоватьдля целей визуализации.60В системе также реализована утилита для просмотра видео. Она позволяет вместе с проигрыванием видео отрисовывать на изображения кадров сдетектированные точки, их траектории, проекции объектов, для которых были оценены координаты для соответствующих кадров и т.п.
Для удобства в ней разнымицветами помечаются статичные объекты, движущиеся объекты, а также объекты добавленные вручную. Кроме этого можно задать отображения траекторийособых точек, что может быть использовано для контроля работы алгоритмових сопоставления и детекции.В заключении раздела приведем типичный пример использования разработанной системы:–зарегистрировать камеру при помощи register_camera.py.–откалибровать камеру при помощи изображений шахматной доски.–обработать видео при помощи утилиты features.py.–привязать видео к созданной камере.–если необходимо, выбрать на добавленном видео интересующие объекты.–обработать видео при помощи reconstruct.py.–воспользоваться средствами визуализации в соответствии с поставленными задачами.3.63.6.1Имитационное моделированиеТестирование рандомизированного асимптотическогонаблюдателя для обратной глубиныВ тестировании рассматривалось несколько сценариев.
В каждом из нихпредполагалось, что положение и ориентация камеры точно известны в каж-61дый момент времени. В качестве начального положения камеры использовалось0 = (0,0,0)T ,междуа ее скорость движения либо равнялась нулю, либо менялась+ = (1,0,0)Tи− = (−1,0,0)Tс периодом в10 итераций. Для простотыизменения ориентации камеры не моделировались, т. к. они несущественно влияют на алгоритм оценивания.
Начальное положение точки устанавливалось в0 = (0,0,10)T , а ее динамика разбивалась на два случая: стационарная точка илинейно движущаяся точка с постоянной скоростьючальное приближение глубины точки равняласьветственно,point = (0.1, 0.1, 0.1)T . На-100, а начальная ошибка, соот-ˆ 0 | = 90. Наконец, рассматривалось три случая помехи в оп|0 − тическом потоке: = 0, = Uniform , = Uniform +(0.05,0.05,0.05)T , где Uniformравномерно распределенный случайный вектор, такой чтоличина шага в алгоритме была установлена в|Uniform |∞ ≤ 0.1.Ве-0.5.Алгоритм тестировался на последовательностях данных в200итераций.Из тестов было получено, что алгоритм подавляет ошибку начального приближения в большинстве случаев к 80-ой итерации.
На основе этого для оценкикачества работы алгоритма использовалась средняя ошибка оценок, начиная с100 итерации (для более стабильного определения). Табл. 3.1 содержит результаты тестирования. Каждое значение в ней подсчитано усреднением по 1000запускам алгоритма. На Рис. 3.2, 3.3, 3.1 показаны примеры траекторий, производимых алгоритмом.Результаты тестирования показывают, что алгоритм успешно справляетсясо своей задачей во всех рассмотренных примерах. Даже в случаях, когда помеха была смещенной, алгоритм в итоге предоставлял траекторию движения,которая сходилась к истинным значениям. Предсказуемыми были результаты отом, что в случае движения объекта, оценки будут получаться менее точными.62Таблица 3.1 — Средняя ошибка после 100-ой итерацииСтац.
камера, стац. точка0.18442.06093.8970Стац. камера, движущаяся точка2.52187.83009.8289Рисунок 3.1 — Случай линейно движущейся точки и помехи .3.6.2Тестирование рандомизированного алгоритма оценкиположения объектаВ простейшем случае рассматривался вариант, когда = 0и = 0.Были протестированы разные варианты помехи в начальном приближении. Вслучае, когда начальная ошибка мала, алгоритм успешно справлялся с отслеживанием истинного значения обратной глубины (см. рис.