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

Суть метода заключается в том, что молоко медленно вытекает из ёмкости, проявляя контуры объекта.

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



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

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



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



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

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

Комментарии (28)


  1. GreatRash
    21.04.2016 15:36
    +1

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

    Ибо нужна эмульсия.


    1. severgun
      22.04.2016 15:38
      +1

      Водоэмульсионная краска тоже эмульсия. Как мне кажется суть не в состоянии жидкости, а в ее поверхностном натяжении, плотности и контрастности.


  1. Zzzuhell
    21.04.2016 15:37
    +2

    Работает только для выпуклых моделей?


    1. severgun
      22.04.2016 15:41

      Более того, оно и сужение снизу камня не увидит, ракурс камеры то один. Если положить шарик, то на скане будет только половина шара.


      1. Norno
        22.04.2016 16:23

        хуже, сверху будет полусфера, и снизу конус, т.к. верхняя полусфера заслоняет от камеры некоторый угол.


      1. Zergos_Z
        22.04.2016 17:49

        Можно отсканировать с двух сторон, а потом совместить модели


  1. brzsmg
    21.04.2016 15:37
    +21

    Есть несколько условий:
    1. Объект должен быть сужающийся к верху!
    1. Объект не должен впитывать (мягкие игрушки)!
    1. Объект может быть испорчен жидкостью!
    2. Сканирование кота может затянуться)


    1. mironoffe
      21.04.2016 17:03
      +4

      2. Сканирование кота может затянуться)

      Зато второй контейнер и дырка в первом становятся не нужны=)


    1. K0styan
      21.04.2016 18:01
      +3

      2. Кот, скорее, наоборот, ускорит процесс снижения уровня молока, что исказит вертикальные пропорции скана.


      1. RusakovMxL
        22.04.2016 09:17
        +2

        И толщина кота будет неодинаковой в процессе этой процедуры.


  1. warezzzok
    21.04.2016 15:43
    +1

    Не совсем понял, а если модель расширяется снизу вверх? Или меняет ширину на протяжении всей модели? Можно ли использовать несколько камер с разных сторон, например?

    UPD. на первую часть вопроса ответ получен выше


    1. brzsmg
      21.04.2016 15:46

      Проще тогда свести фотки с разных ракурсов, чем возиться с несколькими телефонами и поднимать один из них с уровнем молока.
      А тут речь именно о сканировании.


      1. AlexZauzolkov
        21.04.2016 16:31

        Есть интересная и бесплатная программа — Autodesk 123D Catch. Это и есть «свести фотки с разных ракурсов». Тупо фотографируем объект с разных сторон, заливаем, и получаем готовую 3D-модель.


    1. kyrie
      21.04.2016 18:26
      +1

      Если снизу вверх — перевернуть. А если меняет ширину, тогда сложнее )


  1. gDaniCh
    21.04.2016 15:47

    Хм… Может воду с крахмалом намешать в нужных пропорциях и тоже будет вроде-бы эмульсия?


    1. Foolleren
      21.04.2016 16:04
      +1

      Вода с крахмалом это суспензия.


  1. GSchultz
    21.04.2016 15:51

    А если я хочу отсканировать что-то грибообразное?


    1. WanderVlad
      21.04.2016 15:56

      Перевернуть, потом долго и упорно работать напильником)



  1. ilya42
    21.04.2016 16:15
    +4

    Пришел в голову ещё такой вариант — кладём предмет в контейнер, заливаем чистой водой, фотографируем с разных ракурс
    ов, затем заливаем полупрозрачной окрашенной жидкостью и фоткаем с тех же ракурсов ещё раз. Чем дальше точка поверхности предмета от стенки сосуда, тем сильнее её цвет на первой фотке будет отличаться от цвета на второй. Таким образом получаем карты глубин и сшиваем их в единый трехмерный образ. Вот только с преломлением не совсем понятно, что делать. Может первую фотосессию делать «всухую», а потом сопоставлять характерные фрагменты на «сухой» и «мокрой» фотках, компенсируя преломление?


    1. BigBeaver
      21.04.2016 22:05

      использовать вместо жидкости туман


  1. Lerg
    21.04.2016 17:03

    Вариант с лазерами куда практичнее и не на много затратнее. А если учитывать долгосрочную цену из-за расходников — молока, то и дешевле.


  1. Alter2
    21.04.2016 20:38

    Уровень жидкости понижается нелинейно, а софт судя по всему это не учитывает.


  1. PaulIsh
    22.04.2016 03:52

    Не совсем в тему, но может у кого-то есть рабочие идеи чем дешево можно бревно 6-ти метровое сканировать? Молоко тут явно не подойдет :) Пробовал первый кинект, но там качество не очень.


    1. isden
      22.04.2016 11:30

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


      1. PaulIsh
        22.04.2016 12:04

        Вдоль. Да, так и думаем делать — катать камеру или кинект на платформе. Проблемы в точности и скорости построения моделей этих бревен.


        1. isden
          22.04.2016 12:12
          +1

          Если у вас бревна подаются продольно на чем-то вроде роликов или конвейера, то можно поставить 3 кинекта кольцом в разрыв, и снимать данные без катающихся платформ и затрат времени.


  1. binariti
    22.04.2016 07:29
    +1

    Можно использовать кинетический песок или какое-нибудь другое текучее но не липкое вещество, чтобы не повреждать объект!