Воспроизведение изображений с примитивными формами. (Задача оптимизации графики)

Замечание об отступлении: согласно официальному руководству Matplotlib использование модуля pylab больше не рекомендуется. Пожалуйста, подумайте об использовании модуля matplotlib.pyplot вместо этого, как описано в , этот другой ответ .

blockquote>

Кажется, что работает следующее:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

Это делает ширину фигуры 5 дюймов и ее высоту 10 дюймов .

Класс Figure затем использует это как значение по умолчанию для одного из своих аргументов.

24
задан FogleBird 5 October 2010 в 03:10
поделиться

2 ответа

Я бы начал экспериментировать с цветами вершин (иметь разные значения RGBA для каждой вершины), это немного увеличит сложность, но значительно увеличит способность быстро соответствовать целевому изображению (предполагая, что фотографические изображения, как правило, имеют естественные градиенты в их).

Ваш вопрос, кажется, предлагает отойти от генетического подхода (то есть попытаться найти хороший треугольник, который бы подходил, а не развивал его). Однако это можно интерпретировать в обоих направлениях, поэтому я отвечу на основе генетического подхода.

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

Вы также можете (в то же время) улучшить мелкую детализацию, выполнив меньшую проверку на основе сетки на наилучшем соответствующем квадрате сетки.

Например, если вы используете сетку 8x8 над изображением:

  • Определите, какой из 64 квадратов сетки является наихудшим совпадением и флаг пересекается (или рядом с / окружающие) треугольники для более высокой вероятности мутации.
  • Определите, какой из 64 квадратов сетки является лучшим совпадением , и повторите с другой меньшей сеткой 8x8 только внутри этого квадрата (то есть сетка 8x8 в пределах этого лучшего квадрата сетки). Они могут быть отмечены для вероятных мест для добавления новых треугольников или просто для точной настройки деталей.
2
ответ дан jhabbott 5 October 2010 в 03:10
поделиться

Очень интересная проблема! Моим способом анализа такой проблемы было использование алгоритма оптимизации эволюционной стратегии . Это не быстро и подходит, если количество треугольников мало. Я не достиг хорошей аппроксимации исходного изображения - но это отчасти потому, что мое исходное изображение было слишком сложным - поэтому я не пробовал много перезапусков алгоритма, чтобы посмотреть, какие другие неоптимальные результаты может дать EVO ... В любом кейс - это неплохо, как метод генерации абстрактного искусства: -)

1
ответ дан Agnius Vasiliauskas 5 October 2010 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: