fbpx

Опубликован алгоритм аппроксимации изображений за счет геометрических фигур

image approximation

Исследователи из Осло опубликовали алгоритм, который создает представления изображений, используя  геометрические фигуры. Алгоритм создан с целью максимально точно аппроксимировать изображения и для разработки новых художественных стилей. Изображения аппроксимируются прозрачными, перекрывающимися и геометрическими формами разных типов — многоугольниками, кругами, линиями.

Алгоритм

Все изображения (геномы) реализованы в программе как объекты, состоящии из «генов». Каждый ген состоит из параметров, которые определяют размер холста, цвет фигуры, прозрачность, местоположение. Исходная структура гена состоит из следующих параметров:

  • Ширина и высота целевого изображения.
  • Массив цветов от 0 до 255.
  • Значение прозрачности от 0 до 1.

Дополнительные параметры: количество вершин, длина радиуса, толщина линии добавляются в конец гена при его создании. Ниже приведена таблица примера параметров и визуальное изображение.

геометрические фигуры

Мутации

Любой ген может иметь мутации, вероятность которых можно настроить в программе. Мутация гена происходит путём извлечения параметров гена и их изменения в соответствии с данными параметрами. Алгоритм имеет три вида мутаций:

  1. Мягкая — обновляет параметры в пределах лимита.
  2. Средняя — заменяет существующие параметры новыми значениями.
  3. Гибридная — объединяет две мягких и одну среднюю в соотношении 2:1.

Также существует два фактора мутации: мутация вероятности (probability mutation) и мутация фрагмента (chunk mutation).

Изображение

Для создания изображения создаётся чёрный холст, а затем каждый ген (геометрическая фигура) в генотипе выводится на холст один за другим. Для реализации использовалась библиотека OpenCV, способная отображать формы с правильными альфа-значениями, которая также предоставила простой метод работы с RGB цветами.

Эксперименты

Во всех тестах использовалось одно и то же изображение Мона Лизы:

Исходные параметры:

Получившиеся изображения после 10 000 генераций, с количеством вершин 3, 8 и 20 соответственно:

Получившиеся изображения после 10 000 генераций с сочетанием генов:

1) 10 окружностей и 10 многоугольников; 2) 5 окружностей и 15 многоугольников; 3) 5 окружностей, 5 многоугольников и 10 линий.