3D-сканер из молока и смартфона

0b614f9360af4ee4b0a1d57fb79155a3.jpg

На сайте Instructables опубликована инструкция, как собрать самый простой и дешёвый 3D-сканер из подручных средств. Автор проекта GotMesh подсмотрел идею использовать молоко у коллег из проекта Milkscanner, которые применили его для создания сложных 3D-моделей ещё до того, как 3D-печать пошла в массы. Новый способ намного проще, автоматизирован с помощью скрипта и OpenCV, а также оптимизирован конкретно для 3D-печати отсканированного предмета.
Суть метода заключается в том, что молоко медленно вытекает из ёмкости, проявляя контуры объекта.

В контейнерах просверливается небольшое отверстие для перетекания молока, а в в верхнем контейнере нужно сделать удерживающее устройство для смартфона. Процесс снимается на камеру смартфона/фотоаппарата/etc., в режиме time-lapse, то есть покадровой съёмки.

e7b5004f40054f9b82056869e79c1312.jpg

Затем сделанные фотографии копируются в отдельную папку на компьютере. Питоновский скрипт обрабатывает фотографии, используя библиотеку OpenCV для преобразования набора фотографий в набор вершин — файл в формате .xyz. Репозиторий со скриптом здесь.

Чёрный экран с белыми контурами на экране отображает работу детектора границ Канни — функция Canny в OpenCV.

3a4f9dcfbfd842d18be1a03fe51898cd.png

Созданный файл конвертируется в полноценную 3D-модель .stl в программе MeshLab. Перед этим можно очистить модель от ненужных артефактов, удалив лишние вершины (Edit --> Select Vertexes).

df7a96fcc4bc4b75a16fd978ff0dee9e.png

И всё. Действительно, проще некуда. Если жалко денег на 5 литров молока, то можно взять любую другую непрозрачную жидкость. Главное, чтобы она отличалась по цвету от сканируемого предмета. Но автор говорит, что перепробовал много жидкостей, в том числе разбавленную краску, соду и пищевые красители, и понял, что молоко подходит лучше всего.

Стоимость такого сканера равна стоимости двух пластиковых контейнеров, то есть менее 12 долларов. Ну и сами контейнеры пригодны для многоразового использования.

© Geektimes