Отбор изображений - Программа трехмерной реконструкции сцены по изображениям и данным сканирования глубины

Для отбора цветных снимков в процессе сканирования применяется алгоритм Crete [1] определения размытия изображения. На каждом временном интервале процесса сканирования из всех цветных изображений отбирается одно изображение, для которого значение наименьшее. Значение рассчитывается по алгоритму:

Вход: Изображение F - переведенное в градации серого изображение . Размер изображения.

Выход: значение.

1. Вычисление изображения размытого по и :

, , где - фильтр:

2. Вычисление

3. Вычисление :

4. Суммирование:

5. Вычисление

В данной реализации интервал - 2 секунды.

    2. Архитектура программы и особенности реализации 2.1 Выбранные инструменты

Для реализации программы были использованы следующие инструменты и программные средства:

    - Для взаимодействия с RGB-D камерой используется OpenNI Framework 2. - Для геометрической реконструкции сцены используется KinFu - реализация алгоритма KinectFusion в библиотеке PCL. - Для построения пользовательского интерфейса используется Qt Framework 5.1 и OpenGL. - Для операций с матрицами и решения систем уравнений в алгоритме вычисления цвета вершин, включая операции с разреженными матрицами, используется библиотека Eigen [2].

Приложение написано на языке программирования C++ в среде разработки Microsoft Visual Studio 2012.

2.2 Архитектура приложения

диаграмма классов приложения

Рисунок 4. Диаграмма классов приложения

Приложение состоит из трех основных компонентов:

    1. Интерфейс приложения, представленный классами Scanelium и glWidget:
      - Scanelium - интерфейс приложения. Содержит обработчики событий и обеспечивает взаимодействие с пользователем. - GlWidget - интерфейсный объект для отображения 3D графики в интерфейсе. Отображает облако точек с камеры на этапе инициализации, текущее состояние модели на этапе сканирования, полученную трехмерную модель после сканирования и расцвеченную трехмерную модель после выполнения алгоритма вычисления цвета вершин.
    2. Компонент геометрической реконструкции, состоящий из классов KinfuController, ONICapture и ImageProcessThread:
      - KinfuController предназначен для управления процессом трехмерного сканирования, проводит инициализацию, запуск и получение реконструкции. KinfuController использует компонент KinfuTracker, который является реализацией алгоритма KinectFusion. Класс запускается в отдельном потоке от интерфейса. - ONICapture предназначен для взаимодействия с RGB-D камерой. Проводит инициализацию OpenNI и получает снимки глубины и цветные изображения с камеры. - ImageProcessThread проводит отбор цветных снимков в отдельном потоке. Отбор производится путем выбора изображений с наименьшим уровнем размытия (см. 2.4). Запускается в отдельном от KinfuController потоке, чтобы не влиять на скорость геометрической реконструкции.
    3. Компонент вычисления цвета вершин полигональной модели, представленный классами ColorMapper и CameraThread:
      - ColorMapper содержит реализацию алгоритма Zhou&;Koltun. Так как на каждой итерации алгоритма системы уравнений для каждого изображения вычисляются независимо, вычисления распределяются по нескольким потокам с помощью класса CameraThread.

- CameraThread проводит вычисление матриц и решение уравнений для одного изображения. Используются компоненты библиотеки Eigen SparseMatrix для представления матрицы и SimplicialCholesky для решения уравнения (11).

Режимы работы программы (ProgramState):

    1. INIT - выбор параметров сканирования сцены, отображение текущего облака точек с устройства для выбора необходимого расположения камеры. 2. KINFU - выполнение сканирования сцены по заданным параметрам. Процесс сканирования можно завершить или начать заново. Результатом сканирования является трехмерная модель и набор цветных изображений с информацией о положении камеры для каждого снимка. 3. COLOR - просмотр полученной на предыдущей стадии модели и запуск алгоритма вычисления цвета вершин. 4. FINAL - просмотр итоговой полигональной модели. Сохранение итоговой модели в файл формата PLY. 2.3 Процесс реконструкции 2.3.1 Инициализация и геометрическая реконструкция

Процесс реконструкции сцены с помощью данного приложения производится следующим образом: подключив RGB-D камеру к компьютеру, пользователь запускает приложение. На первоначальном этапе пользователь имеет возможность настроить параметры реконструкции, такие как размер сцены, точность сканирования, разрешение снимков глубины и цветных изображений. Также пользователь может указать, как расположена камера относительно сцены в момент начала сканирования, например, можно указать ее начальное расположение в центре сканируемой сцены, либо на боковой грани. Во втором случае камера будет направлена на сцену с центра задней грани. Далее пользователь запускает процесс сканирования. На этой стадии компонент KinfuController выполняет следующие действия:

    - Загрузка в KinFu нового снимка глубины; - Получение от KinFu визуализации текущей трехмерной реконструкции; - Сохранение цветных снимков.

Во время сканирования пользователь видит визуализацию и использует ее для слежения за процессом реконструкции, чтобы проконтролировать охват сцены. На визуализацию дополнительно наложена карта глубины и красноватым цветом подсвечены участки, которые не могут быть просканированы при текущем положении камеры (рис. 5) (поверхность слишком далеко, слишком близко, поверхность обрывается, либо присутствуют другие помехи).

процесс реконструкции

Рисунок 5. Процесс реконструкции

При сканировании следует соблюдать следующие правила:

    1. Перемещать камеру необходимо плавно, без рывков, так как алгоритм ICP, используемый в KinFu, не рассчитан на быстрое перемещение. Плавное перемещение также помогает избежать размытия цветных изображений, получаемых параллельно с реконструкцией. 2. Необходимо избегать ситуаций, когда в кадр попадает только плоская стена, так как это может привести к неверному определению смещения;

Когда пользователь охватил все интересующие его области сцены, он может прервать сканирование. На этом этапе он получает трехмерную полигональную модель и набор цветных снимков, для которых известно приблизительное положение камеры. Модель можно осмотреть перед переходом к следующему шагу.

2.3.2 Вычисление цвета вершин

Для полученной на предыдущем шаге модели, на данном этапе производится вычисление цвета вершин. Пользователь может указать количество итераций алгоритма Zhou&;Koltun и запустить вычисление.

Вычисление цвета происходит в отдельном от интерфейса потоке, поэтому пользователь может осматривать предварительную бесцветную модель, пока выполняется алгоритм. Внизу интерфейса показан статус выполнения алгоритма, что позволяет следить за выполнением. Начало алгоритма (определение видимых вершин для каждого изображения) и начало итерации (вычисление по формуле (7)) не выполняется параллельно. Вычисление матриц и решение уравнения для одного изображения выполняются в отдельных потоках (максимально 8 одновременных потоков - одновременно обрабатываемых изображений).

Цветную полигональную модель, полученную после выполнения алгоритма, пользователь может осмотреть и сохранить в файл формата PLY, содержащий данные о координатах и цвете вершин и список полигонов.

2.4 Пример реконструкции

реконструкция сцены разработанной программой

Рисунок 6. Реконструкция сцены разработанной программой.

Параметры реконструкции:

    - В реконструируемой сцене содержится несколько объектов, в том числе с глянцевыми поверхностями. - Длительность сканирования - 34-35 секунд.
    - Объем сканируемого пространства - 1 . - RGB-D камера Asus Xtion Pro Live. Разрешение цветного изображения 1280х1024, разрешение снимка глубины - 640х480. - Количество вершин - 469982, количество полигонов - 923122, количество цветных изображений - 17, количество итераций алгоритма Zhou&;Koltun - 50.
сравнение модели до и после работы алгоритма zhou&;koltun. слева - 0 итераций, в центре - 25 итераций, справа - 50 итераций

Рисунок 7. Сравнение модели до и после работы алгоритма Zhou&;Koltun. Слева - 0 итераций, в центре - 25 итераций, справа - 50 итераций.

Сравнение визуального качества трехмерной реконструкции разработанной программы и реконструкций Scanect и RecFusion приведено в приложении Д.

Похожие статьи




Отбор изображений - Программа трехмерной реконструкции сцены по изображениям и данным сканирования глубины

Предыдущая | Следующая