Исследователи из Осло опубликовали алгоритм, который создает представления изображений, используя геометрические фигуры. Алгоритм создан с целью максимально точно аппроксимировать изображения и для разработки новых художественных стилей. Изображения аппроксимируются прозрачными, перекрывающимися и геометрическими формами разных типов — многоугольниками, кругами, линиями.
Алгоритм
Все изображения (геномы) реализованы в программе как объекты, состоящии из «генов». Каждый ген состоит из параметров, которые определяют размер холста, цвет фигуры, прозрачность, местоположение. Исходная структура гена состоит из следующих параметров:
- Ширина и высота целевого изображения.
- Массив цветов от 0 до 255.
- Значение прозрачности от 0 до 1.
Дополнительные параметры: количество вершин, длина радиуса, толщина линии добавляются в конец гена при его создании. Ниже приведена таблица примера параметров и визуальное изображение.
Мутации
Любой ген может иметь мутации, вероятность которых можно настроить в программе. Мутация гена происходит путём извлечения параметров гена и их изменения в соответствии с данными параметрами. Алгоритм имеет три вида мутаций:
- Мягкая — обновляет параметры в пределах лимита.
- Средняя — заменяет существующие параметры новыми значениями.
- Гибридная — объединяет две мягких и одну среднюю в соотношении 2:1.
Также существует два фактора мутации: мутация вероятности (probability mutation) и мутация фрагмента (chunk mutation).
Изображение
Для создания изображения создаётся чёрный холст, а затем каждый ген (геометрическая фигура) в генотипе выводится на холст один за другим. Для реализации использовалась библиотека OpenCV, способная отображать формы с правильными альфа-значениями, которая также предоставила простой метод работы с RGB цветами.
Эксперименты
Во всех тестах использовалось одно и то же изображение Мона Лизы:
Исходные параметры:
Получившиеся изображения после 10 000 генераций, с количеством вершин 3, 8 и 20 соответственно:
Получившиеся изображения после 10 000 генераций с сочетанием генов: