Моя цель была сделать полнофункциональный сканер, который сможет делать компьютерные 3d модели.
При этом я не хотел тратить на всё это больше $20. Правда, я не считал стоимость материалов, но всё-равно получилось не дороже $100.
Для того, чтобы найти точки в 3D пространстве, существует несколько способов.
Простейший из них — это использовать 3 числа, чтобы описать позицию одной точки по отношению к другой.
Этот способ используется большинством компьютерных моделей.
Другой способ — использовать 3 плоскости или плоскость и линию.
Как видите, проще всего пользоваться третьим способом, а потом привести его результат к первому.
Однако возникает вопрос, как найти плоскости и её точки?
Как оказалось, первое реализуется аппаратной частью, а второе программным обеспечением.
Сначала я люблю объяснить основную идею, а затем переходить к реализации. Это поможет вам находить свои собственные решения.
Итак, нам нужно найти плоскость и как-то записать, где эта плоскость находится, чтобы компьютер смог составить модель.
Хотя многие используют для этого нахождение краёв тени, я решил пойти другим путём.
Я нашёл у себя очень яркий зелёный лазер (можно использовать лазер от обычной лазерной указки, если у вас нет такого).
Лазер я направил через цилиндрическую линзу, которая превращает его в линию. Эту линию я и использовал для нахождения плоскости. Это отлично работает, но имейте в виду, что размер вашего сканера будет сильно ограничен размерами объектива: мой объектив примерно в треть дюйма в диаметре, и я ограничен сканируемым пространством примерно 2' на 6" на 6". Линзы меньшего размера будут работать лучше, но мне это не нужно.
Для начала нам нужно сделать ящик, в котором будет находиться сканер. Низ и задняя стенка ящика сделаны из меламина, боковые стороны из фанеры. После того, как всё было сделано, я решил, что меламин является ненужным: возьмите фанеру и закрасьте её белым цветом. Это сэкономит вам несколько долларов.
Следующим шагом является установка и крепление лазера.
Я использовал старый кусок дерева. Ролики установлены таким образом, что лазер катится по рельсам в верхней части окна. Там лазер и объектив монтируется так, чтобы плоскость света падала перпендикулярно верхней и нижней части окна.
Камера должна быть установлена сбоку, выше объекта. Это гарантирует, что лазерная линия будет отклоняться должным образом.
Теперь можно поставить какой-нибудь объект. Я использовал гнома. Посмотрите на камеру, и убедитесь, что лазер заметно отклоняется над объектом. Посмотрите на фотографию ниже, чтобы получить представление о том, что я имею в виду.
Идея, лежащая в основе программного обеспечения, также довольно проста. Есть ряд точек, каждая из которых соответствует пикселю на камере. Фокус в том, чтобы узнать, как перевести точки между двумя пространствами. Как оказалось, это сводится к довольно простым уравнением.
Пришло время испытать наш сканер!
Сейчас сканируется лишь одна часть объекта — та, которая направлена в камеру. Однако можно доработать сканер.
Ещё некоторые идеи, которые можно реализовать.
От переводчика: Если вам нужны исходные коды, то напишите автору оригинального текста.
При этом я не хотел тратить на всё это больше $20. Правда, я не считал стоимость материалов, но всё-равно получилось не дороже $100.
Подготовка
Для того, чтобы найти точки в 3D пространстве, существует несколько способов.
Простейший из них — это использовать 3 числа, чтобы описать позицию одной точки по отношению к другой.
Этот способ используется большинством компьютерных моделей.
Другой способ — использовать 3 плоскости или плоскость и линию.
Как видите, проще всего пользоваться третьим способом, а потом привести его результат к первому.
Однако возникает вопрос, как найти плоскости и её точки?
Как оказалось, первое реализуется аппаратной частью, а второе программным обеспечением.
Аппаратная реализация
Сначала я люблю объяснить основную идею, а затем переходить к реализации. Это поможет вам находить свои собственные решения.
Итак, нам нужно найти плоскость и как-то записать, где эта плоскость находится, чтобы компьютер смог составить модель.
Хотя многие используют для этого нахождение краёв тени, я решил пойти другим путём.
Я нашёл у себя очень яркий зелёный лазер (можно использовать лазер от обычной лазерной указки, если у вас нет такого).
Лазер я направил через цилиндрическую линзу, которая превращает его в линию. Эту линию я и использовал для нахождения плоскости. Это отлично работает, но имейте в виду, что размер вашего сканера будет сильно ограничен размерами объектива: мой объектив примерно в треть дюйма в диаметре, и я ограничен сканируемым пространством примерно 2' на 6" на 6". Линзы меньшего размера будут работать лучше, но мне это не нужно.
Корпус
Для начала нам нужно сделать ящик, в котором будет находиться сканер. Низ и задняя стенка ящика сделаны из меламина, боковые стороны из фанеры. После того, как всё было сделано, я решил, что меламин является ненужным: возьмите фанеру и закрасьте её белым цветом. Это сэкономит вам несколько долларов.
Установка лазера
Следующим шагом является установка и крепление лазера.
Я использовал старый кусок дерева. Ролики установлены таким образом, что лазер катится по рельсам в верхней части окна. Там лазер и объектив монтируется так, чтобы плоскость света падала перпендикулярно верхней и нижней части окна.
Установка камеры
Камера должна быть установлена сбоку, выше объекта. Это гарантирует, что лазерная линия будет отклоняться должным образом.
Теперь можно поставить какой-нибудь объект. Я использовал гнома. Посмотрите на камеру, и убедитесь, что лазер заметно отклоняется над объектом. Посмотрите на фотографию ниже, чтобы получить представление о том, что я имею в виду.
Программное обеспечение
Идея, лежащая в основе программного обеспечения, также довольно проста. Есть ряд точек, каждая из которых соответствует пикселю на камере. Фокус в том, чтобы узнать, как перевести точки между двумя пространствами. Как оказалось, это сводится к довольно простым уравнением.
Выполняем сканирование
Пришло время испытать наш сканер!
Сейчас сканируется лишь одна часть объекта — та, которая направлена в камеру. Однако можно доработать сканер.
Дальнейшее развитие
Ещё некоторые идеи, которые можно реализовать.
- Автоматизация. Matlab, возможно, не лучший выбор в данном случае. Можно написать своё ПО и добавить больше моторчиков.
- Добавить поворот камеры. Наряду с автоматизацией, это позволит вам сделать полную 3d модель.
- В идеале, программное обеспечение должно убирать шум.
От переводчика: Если вам нужны исходные коды, то напишите автору оригинального текста.