Резка по рисунку в программе управления станком с ЧПУ на Ардуино
Введение
В связи с пожеланиями пользователей задумался над возможностью резки, гравировки по рисунку в программе.
То есть, берем чистый лист бумаги, рисуем на нем траекторию для движения лазера / фрезы.
Сканируем изображение, открываем его в программе и запускаем резку.
Если решить указанную задачу, то автоматически будет решена задача резки по выкройкам и шаблонам, скачанным из интернета, в различных растровых форматах (BMP,JPG,PNG).
Предполагается, что резка будет осуществляться без изменения мощности и скорости. То есть в идеале рисунок должен буть черно белым.
На первый взгляд сделать - ничего не стоит. Но не тут-то было.
Основные проблемы при обработке изображения:
- Разные изображения будут отличаться по контрасту, яркости и прочим характеристикам, что требует предварительной обработки картинки.
- Рисунок необходимо преобразовать в черно-белое изображение. Требуются дополнительные работы в графическом редакторе.
- После бинаризации толщина линий может варьироваться. Требуются математические алгоритмы для векторизации изображения.
- Моя программа не работает с векторными изображениями. Необходимо преобразовать векторное изображение в двухцветную растровую картинку с толщиной линий - 1 пиксель.
Полностью автоматическую систему обработки изображения и формирование управляющих команд для резки лазером или фрезой сделать крайне сложно.
В одном проекте, не связанном с ЧПУ, для разбора и структуризации информации поисковым роботом мной использовалась нейронная сеть.
Для хранения и работы сети применялись уникальные методы и алгоритмы, позволяющие конкурировать с более дорогими и "тяжелыми" сетями.
Архитектуру этой сети собственной разработки решено было использовать при работе над задачей подготовки растрового изображения для ЧПУ резки.
Систему, состоящую из блока первичной обработки изображений, нейронной сети, алгоритмов сглаживания и формирования управляющих команд для ЧПУ, сделать удалось.
Результат обрадовал и удивил. Не ожидал. Вообще, при работе с нейросетями результаты часто превосходят ожидание и зачастую удивляют, как, например, в этом случае.