Введение
Мы хотим рисовать полноцветные картины масляными и акриловыми красками роботом-рукой с закрепленной кистью по заданному изображению — на вход подается картинка, на выходе набор команд роботу для движений кистью по холсту. Готовых решений для задачи полноцветной живописи роботом-рукой по произвольному изображению найдено не было. Область робо-живописи является новой, как правило защищается в режиме ноу-хау. В тех статьях, которые нашли, в основном подход либо однослойной сегментации, либо монохромные техники карандашом или подобным инструментом, что является существенно более простой задачей, чем полноцветная живопись.
Поэтому мы разработали собственный алгоритм, который внедрен в продукте робот-художник нашей компании, и применяется для рисования полноцветных картин маслом и акрилом. Робот-художник и картины, созданные им, не раз выставлялись на художественных и технологических выставках и других ивентах http://roboticartgallery.com/publications.
Рис. 1
Важным аспектом задачи является также то, что задача робота-художника – создание арт-объектов живописи на базе заданного входного изображения, но не являющееся его прямым копированием, слабо поддается формализации на высоком уровне. Другими словами, один и тот же сюжет можно изобразить по-разному, что и делали художники на протяжении всей истории живописи. Для того чтобы, тем не менее, сформулировать задачу была выбрана техника и подход классической живописи “блокировка” с последующим уточнением рисунка и сделана попытка его алгоритмизировать и воплотить в роботе-художнике.
Блокировка (Blocking In) – это техника живописи, используемая художниками для быстрого создания базы картины с минимальным количеством деталей. На начальном этапе работы над картиной наносятся широкие мазки приглушенных цветов, чтобы передать общие цвета и формы картины, а детали добавляются позже. Степень перекрытия красочными слоями после блокировки варьируется художниками в зависимости от индивидуального стиля. Например, Сезанн использовал метод блокировки в некоторых своих картинах, чтобы создать мягкое, обобщенное впечатление от сцены, вместо того чтобы продолжать заполнять более мелкие детали. Используя этот метод, Сезанн смог запечатлеть сцены с натуры с минимальной детализацией, при этом передавая эмоции через цвет и движение.
Рис. 2. Поль Сезанн, Mt. Saint-Victoire, 1906 г.
Блокировка – привлекательная техника для роботизированной живописи из-за ее способности свести к минимуму количество мазков и, как следствие, время, необходимое для завершения картины. Рисуя на основе фотографии, мы хотели бы избежать чрезмерной детализации второстепенных областей, в результате чего картина была бы более похожа на картину, созданную художником-человеком. Кроме того, максимально быстрое наложение композиции и основных цветов по всей площади рисунка способствует минимизации последствий изменения свойств красок и кистей в процессе рисования по сравнению с последовательным рисованием по областям картины.
Существенной частью итогового алгоритма рисования является решение задачи необходимой для “блокировки” – разбиения изображения на сегменты одного цвета под заданный размер кисточки, который не получается свести к классической задаче сегментации потому, что робот рисует кисточками с определенной толщиной мазка. В общем случае нельзя разбить изображение на сегменты таким образом, чтобы их можно было полностью закрасить кисточкой круглым пятном некоторого радиуса, то есть чтобы было одновременно ни перекрытий разными цветами одной области, ни осталось незакрашенных областей изображения.
Вторая важная задача – это задача “уточнения” на последующих слоях более тонкими кистями, которая сводится к получению масок областей изображения для уточнения.
Решению этих задач и посвящена статья.
Сформулируем задачу для робоживописи следующим образом:
Цель – воспроизвести технику блокировки и последующего уточнения с помощью кисточек разного размера в алгоритме рисования роботом с учетом специфики и ограничений роботов.
Для достижения цели необходимо получить такие последовательные послойные сегментации изображения, которые бы позволяли заполнять рисунок круглыми кистями заданного размера последовательно уточняя рисунок с контролируемым уровнем перекрытия на слоях.
При разработке алгоритма необходимо учесть специфику и ограничения рисования роботом-манипулятором в рассматриваемом подходе:
- Ограниченное количество размеров кистей.
- Ограниченное количество красок на палитре из-за ограниченной рабочей области робота.
- Ограничения точности, степеней свободы и способности выполнять мелкие движения робота-манипулятора по сравнению с человеческой рукой.
- Время рисования роботом довольно большое и мы хотим его сделать как можно меньше – уменьшая соответственно количество мазков.
Примем, что заданы круглые кисти произвольного диаметры D1, Di, ...DL. Рисуем от больших кистей к тонким (обычно используется 2-4 кисти).
Сначала полностью рисуем, то есть “блокируем” изображение кистью D1, потом уточняем рисунок кистью D2 по форме и цвету и так далее.
Разделим алгоритм на две основные части:
- B-сегментация – разбиение изображения на сегменты одного цвета с учетом толщины кисти
- Уточнение рисунка – получение маски для каждой последующей кисти меньшего диаметра.
B-сегментация
В рамках данной статьи под сегментацией изображения будем понимать такое его отображение, которое разделяет изображения на несколько областей (сегментов). Сегментация изображения основана на идее, что объекты на изображении могут быть представлены в виде набора связанных пикселей, у разных типов сегментации могут быть различные метрики сходства с исходным изображением [4]. Рассмотрение типов сегментации и их метрик выходит за рамки настоящей статьи.
Цель сегментации изображения, как и в рассматриваемом случае состоит в том, чтобы упростить или изменить представление изображения для анализа и преобразований.
На неформализованном уровне задача стояла следующим образом: необходимо подобрать и доработать программно такой тип (из множества) сегментаций и такие его параметры и гиперпараметры, чтобы на выходе получать картины требуемого качества. Поскольку готовых решений в открытом доступе не нашлось, под указанный выше стиль “блокировка” был выбран и доработан один из в наибольшей степени подходящих типов сегментации, поэтому итоговое решение названо В-сегментацией. В связи с этим при постановке формализованной задачи и ее решения – то есть выбора типа сегментации, совокупности настроек и программных доработок, использован символ циркумфлекс.
Строго говоря, каждый тип сегментации может включать в себя разные параметры настройки, однако практически любая может быть охарактеризована прямо или косвенно настраиваемыми параметрами: количеством сегментов N и количеством цветов C сегментированного изображения.
Для целей применения к рисованию роботом мы ввели также еще один варьируемый параметр – цветовое расстояние Dist (применялось евклидово расстояние), при цветовом расстоянии меньше порогового значения цвета определялись как близкие и сегменты объединялись в один цвет большего сегмента.
Сформулируем исходные данные для задачи исследования. Для того чтобы нарисовать кистью диаметра Di изображение, нам нужно получить такое разбиение картинки на области одного цвета, которое обладает следующими свойствами:
- Каждый B-сегмент должен иметь такую форму, чтобы в физическом пространстве он мог быть полностью “нарисован” заданной кисточкой, то есть, в отображении на пространство сегментации покрыт перемещением круга диаметра Di.
- B-cегменты разного цвета должны пересекаться минимально, чтобы не пачкать краски на физическом уровне. Удельную площадь областей “пересечения” обозначим как T.
- Сегменты должны максимально близко примыкать друг к другу с минимумом “дырок” (здесь дырки – это области сегментированного изображения, не покрытые перемещением круга диаметра Di), чтобы уже после первого слоя самой крупной кистью было прописаны основные обобщенные формы и цветовые отношения. Обозначим суммарную удельную площадь дырок за O;
- Предполагаем, что цвета сегментов могут быть любые, но их количество С не должно превышать некоторое количество цветов Сi для заданного размера кисточки Di, ограничение вызвано способом получение цветов на картине, реализация которого выходит за рамки данной статьи;
- Ограничим также количество сегментов N и введем параметр Dist цветового расстояния, он позволит объединять сегменты с близкими цветами, уменьшая количество сегментов, например, не рисовать черный квадрат с разбиением на N частей, когда достаточно 2-х – фона и самого квадрата.
Таким образом, задача сводится к нахождению такой B-сегментации изображения BSegm(Img) для каждого размера кисти Di , что:
:
где
при следующих ограничениях:
здесь nsegm – количество сегментов, не большее порогового значения N;
Csegm – количество цветов (отметим, что это параметр не связан с nsegm), не большее порогового значения С;
d(colorj,k) - евклидово расстояние между цветами двух любых сегментов по осям: цвет, насыщенность, яркость, формат HSV;
k - является коэффициентом-гиперпараметром и задает относительные веса пересечений и дырок; например, для акриловых красок больший вес у дырок, так как пересечения не так критичны из-за того, что акриловые краски быстро сохнут, а у масляных – пересечения так как масляные краски сохнут медленно и при пересечении загрязняют друг друга.
Для решения задачи были проанализированы популярные алгоритмы сегментации Felzenswalb, Slic, Quickshift, Watershed, сегментация по цветам с помощью K-means.
Ни один из существующих методов, очевидно, не удовлетворяет формальному критерию, что сегменты должны быть такой формы, что могут быть получены перемещение круга радиуса Di.
Нужные B-сегменты тем не менее легко могут быть получены из любой сегментации наивным методом, например, путем Morphological dilation окружностью диаметра Di, примененному к каждому сегменту, либо Morphological erosion окружностью диаметра 2Di с последующей Morphological dilation окружностью диаметра Di.
При B-сегментации первым способом мы, очевидно, получаем 0 дырок, но зато значительную площадь пересечений; второй метод дает наоборот - 0 пересечений, но значительную долю “дырок” которая зависит от количества и формы сегментов.
Для получения более оптимальных B-сегментаций, зависящих от размера кисти, была использована композиция методов на базе сегментации алгоритмом Slic с применением dilation, erosion, fill_holes и Kmeans с параметрами, подобранными под размер кисти.
Итоговый метод B-сегментации:
1. Сегментация Slic с параметрами:
- , где MaskShare - относительная площадь маски слоя (для первого слоя равна 1).
2. Для каждого сегмента назначим доминантный цвет области изображения, полученный методом Kmeans.
3. Понизим количество сегментов до Cm – в сегментированном изображении отдельные сегменты объединим друг с другом по цветам методом Kmeans.
4. Для каждого из сегментов, отсортированных по площади в порядке убывания, выполняются преобразования:
- Dilation c радиусом 0,25*Di
- Remove small holes с порогом thr = 7,85* Di2
- Erosion с радиусом 0,75*Di
Уточнение рисунка – получение маски коррекции для каждой последующей кисти меньшего диаметра
Для уточнения рисунка каждой следующей кистью требуется определить маску областей изображения, которые следует последовательно уточнять для каждой кисточки Di на основе того, что уже нарисовано кисточками D1,..Di-1. Мы хотим уточнять те области изображения, которые проработаны хуже всего на текущем этапе рисования картины, то есть имеют большую ошибку между исходным и нарисованным изображением.
Определим размер ошибки как взвешенную сумму модулей цветовой разницы CIE2000 (6) и разницы в оттенках серого нарисованного изображения Paintingi-1 и исходного изображения Img в матричном виде:
ERRi = ErrWeight* |CIE2000(Img, Paintingi)| + (1-ErrWeight)*|GrayScale(Img) - GrayScale(Paintingi)|,
Здесь weight [0-1] задает относительный вклад в ошибку цвета против яркости.
Также введем для каждого размера кисти параметр – порог THRi – как максимальная удельная площадь для перерисовки на слое i. Он будет определять, насколько мы детализируем картину на каждом слое. А также минимальный значимый размер ошибки MinError – элементы с ошибкой меньшей, чем MinError, не будем перерисовывать.
Варьируемые параметры ErrWeight, MinError и THRi задаются субъективно и определяют “стиль” картины.
Области для проработки на текущем слое мы хотим, чтобы были соразмерны размеру кисточки на текущем слое, соответственно мы хотим обобщить их и получить некоторые укрупненные области, а не поточечную маску. Для этого предлагается применить сегментацию уже к матрице ошибки ERR.
Итоговый алгоритм получения маски выглядит следующим образом:
- Считаем матрицу ошибки ERRi,
- Получаем сегментацию slic(ERRi),
- Считаем для каждого сегмента размер средней ошибки,
- Добавляем в маску сегменты из сортированного по убыванию ошибки списка до тех пор, пока удельная площадь маски будет оставаться меньше THRi и размер ошибки сегмента будет больше MinError.
- Полученную маску применяем к изображению и выполняем B-сегментацию, описанную выше.
- Рисуем слой кисточкой Di (преобразование B-сегментированного изображение в координаты мазков и управление роботом по их нанесению на холст выходит за рамки данной статьи).
Результаты рисования последовательно кисточками 20, 9, 5, 3 в сравнении с рисованием только кисточкой 20 и только кисточкой 3.
Рис. 3. Исходные изображения
Рис. 4. Результаты рисования кистью 20 - рендер визуализация
Рис. 5. Результаты рисования кистью 3 - рендер визуализация
Рис. 6. Результаты рисования последовательно кистями 20, 9, 5, 3
Таблица 1
Количество мазков
Размер кисти/номер картины |
1. Кувшин |
2. Кот |
3. Дерево |
4. Портрет |
---|---|---|---|---|
Кисточка 20 мм |
1337 |
1070 |
1107 |
1286 |
Кисточка 3 мм |
21984 |
19781 |
19702 |
20950 |
Многослойный - кисточки 20,9,5,3 мм |
4491 |
8105 |
6914 |
5554 |
Таблица 2
Средняя ошибка ERR
Размер кисти/номер картины |
1. Кувшин |
2. Кот |
3. Дерево |
4. Портрет |
---|---|---|---|---|
Кисточка 20 мм |
0.103768935054 |
0.153061972636 |
0.120560884012 |
0.111547269718 |
Кисточка 3 мм |
0.091552433136 |
0.167630478327 |
0.150564071965 |
0.106443215353 |
Многослойный - кисточки 20,9,5,3 мм |
0.0832954092431 |
0.116096561234 |
0.123654635691 |
0.0899653886862 |
Известные метрики ошибки, как применяемая в методе многослойной B-сегментации в данной статье (таблица 2), так и другие известные метрики, не показывают явного результата, и, местами, противоречит субъективной визуальной оценке результата. Это вызывает сложности при оптимизации параметров алгоритма. Тем не менее применение многослойного метода дает однозначную кратную экономию по количеству мазков многослойного метода кистями разного размера по сравнению с однослойным рисованием тонкой кистью. Многослойный метод кистями разного размера позволяет рисовать картины субъективно и по метрикам, не хуже, чем при использовании самой маленькой кисти в один слой и 2.5-5 раз меньшим количеством мазков (таблица 1), как следствие, сокращая время рисования картины.
Скорость рисования важный фактор для робота-художника – высокая скорость делает робота-художника более коммерчески привлекательным в разных областях.
Также использование кисточек разного размера дает субъективно художественный эффект из-за сочетания гладкой структуры на мазках широкой кистью и мелких структурных мазках маленькой кистью (см. рисунок 7).
Рис. 7. Исходное изображение, рендер и готовая картина, написанная роботом-художником
Таким образом, предлагаемый послойно модифицированный алгоритм сегментации является достаточно универсальным подходом к роботизированному рисованию красками и кистями. Алгоритм не требует подбора параметров для различных входных изображений и размеров кисти. При этом он позволяет сохранять творческий контроль над конечным продуктом - можно управлять размерами кистей, количеством слоев, значимостью ошибки, степенью перекрытий и оставляет возможность добавления дополнительных гиперпараметров.
Кроме того, при использовании в составе программного обеспечения робота-художника данный алгоритм позволяет создавать полноцветные картины маслом и акрилом с хорошими результатами, достаточными для декоративно-прикладных и творческих задач, что подтверждается участием в художественных выставках http://roboticartgallery.com/publications. Роботизированная живопись с использованием этого алгоритма имеет потенциальные применения в изобразительном искусстве, декоративно-прикладном искусстве и других областях творчества.
Дальнейшие исследования должны быть сосредоточены на оптимизации производительности этого алгоритма, чтобы повысить его точность при применении к различным типам картин или других художественных произведений, созданных как роботами, так и людьми.