Получение и оптимизация матрицы глубины объекта в реальном времени в 3D при помощи Leap Motion
В последнее время все популярнее стали 3D-принтеры. С каждым годом они совершенствуются и становятся все более доступными для обычных людей. Однако, сам по себе 3D-принтер не представляет интереса, если на нем можно распечатать только скачанные из интернета модели. Таким образом, помимо 3D-принтера хочется иметь некоторое усройство и, соответственно, программное обеспечение к нему, которое бы позволяло отсканировать некий предмет, чтобы потом построить его 3D-модель и распечатать ее на 3D-принтере. Кроме того, конечно, хочется, чтобы устройство было недорогим, компактным, а также имело высокую точность сканирования даже небольших объектов.
Итак, в качестве основного устройства выступил Leap Motion -- небольшой параллелепипед с двумя камерами (две камеры нужны для того, чтобы иметь возможность узнать расстояние до наблюдаемой точки). Сам по себе Leap Motion ориентирован на то, чтобы распознавать руки и жесты, однако эти функции в работе не использовались. Кроме того, чтобы сделать каркас, был использован Arduino и шаговый двигатель для вращения платформы, на которой предлагается размещать объект.
Основные шаги:
1. Изучение API Leap Motion.
2. Поиск оптимального алгоритма для общих точек на двух изображениях с разных камер.
3. Изучение различных алгоритмов поиска матрицы глубины. Выбор оптимального.
4. Разработка аппартной части сканера.
В результате удалось реализовать как аппаратную часть, так и программную. В перспективе можно было бы по данным, которые получаются в итоге, строить 3D-модель объекта.
opencv.org