Формирование 3D-модели из растрового изображения
Существует ряд программ, позволяющих превратить фотографию в барельеф с помощью 3D-принтера. Однако, когда автор столкнулся с работой по созданию большого количества сувенирных медалей с портретами людей по фотографиям разного качества, ему захотелось выполнять подобные работы более удобным инструментом.
При подготовке растрового изображения для создания STL-модели, которую можно распечатать на 3D-принтере или изготовить на фрезерном станке с ЧПУ, приходится многократно ретушировать изображение в графическом редакторе, формировать файл STL, просматривать его специальной программой-просмотрщиком, снова ретушировать и повторять весь процесс снова. При накоплении опыта такой работы количество подобных циклов снижается, однако на многих фотографиях свет и тени расположены так, что барельеф, полученный на основании яркости пикселей изображения не всегда правильно передает рельеф оригинала.
Для того, чтобы сделать описанный процесс более производительным, автор решил максимально ускорить процесс формирования и просмотра файла STL для принятия решения о продолжении ретуширования изображения.
Разрабатывая удобный для такой работы инструмент, автор исходил из следующего.
Для ускорения процесса формировани файла STL нужного качества и воспроизводимости результатов, все необходимые параметры преобразования должны задаваться числами, сохраняться для использования или изменения в очередном цикле, минимизируя работу с клавиатурой и мышью. Программа должна строить триангулированную замкнутую поверхность для возможности (при необходимости) редактирования ее в различных 3D-редакторах. Сформированная модель должна автоматически визуализироваться в выбранном внешнем просмотрщике файлов STL. И, конечно, программа, выполняющая поставленные задачи, должна быть кроссплатформенной или запускаться на удаленном сервере из браузера пользователя.
Для реализации программы по понятным причинам выбран язык Java.
Интерфейс программы для локального компьютера имеет следующий вид.
Кнопкой Image selection вызывается диалог выбора нужного растрового файла. Изображение может быть цветным или в градациях серого, с альфа каналом или без. Работать с изображением в градациях серого удобней при ретушировании.
Сделанный выбор, как и значения других параметров, сохраняется для следующего цикла формирования барельефа.
Выводится имя и расположения выбранного файла и его размеры в пикселях.
Вводится желаемый размер формируемой модели. Достаточно ввести высоту или ширину модели, второй параметр рассчитывается автоматически.
Параметр Step задает шаг в пикселах для обработки исходного изображения. Шаг больший 1 может быть использован как при обработке слишком подробных изображений, чтобы избежать слишком большой точности модели, которая не сможет быть реализована печатающим устройством, либо как одно из средств сглаживания поверхности модели. Например, при заданных параметрах для отображения каждого пикселя требуется точность 35/834/3=0.014мм, что должно быть согласовано с возможностями печатающего устройства.
Параметр Zmax задает толщину барельефа в миллиметрах. Следует помнить, что растровые изображения имеют 256 градаций яркости, поэтому для отображения всех ступеней яркости в нашем примере требуется толщина слоя печати 2мм/256=0.008мм. При подготовке модели к изготовлению, слайсер сократит количество слоев в соответствии с настройками печатающего устройства. Если этот параметр имеет отрицательное значение, барельеф сформируется не выпуклым, а вогнутым.
Параметр Base задает толщину основы в миллиметрах. Этот параметр имеет чисто технологический смысл. Основа нужна для надежного соединения модели с рабочей поверхностью принтера во время печати.
Параметр Smoothing используется для сглаживания поверхности модели. Для вычисления высоты каждой точки поверхности в нашем примере используется среднее значение высот трех точек (включая текущую) по вертикали и горизонтали. При значении параметра равном 1 сглаживание не происходит.
В качестве просмотрщика созданной модели может быть выбрана любая удобная программа. В нашем примере выбрана прекрасная бесплатная программа Best STL Viewer, которая запускается и приступает к работе без обременительных диалогов.
Эта программа позволяет рассмотреть модель с разных сторон и в разном масштабе. После закрытия окна просмотрщика можно продолжить работу в графическом редакторе для доведения изображения до нужного качества.
Работа с сервлетом, расположенном на удаленном сервере Java
В браузере в адресной строке вводится URL сервлета (в данном примере использован localhost) и на стороне клиента формируется WEB страница для ввода необходимых параметров и передачи их на сервер. Все вычисления выполняются на стороне сервера и пользователю возвращается адрес для скачивания файла STL. Файлы STL создаются в двоичном формате.
Устаревшие файлы на сервере уничтожаются автоматически. В сервлете предусмотрена потокобезопасность, позволяющая одновременно работать с сервлетом большому количеству пользователей.
Ролик, демонстрирующий работу программ в реальном времени, можно посмотреть по ссылке:
Автор статьи – Виталий Трейгер, email
👍👍👍