С Олегом Кислюком по фрактальным мирам

    Олег Кислюк Искусство структурной реальности
    Введение
    Мир, в котором мы живем, и наше восприятие этого мира включают стандартные модели. Примерами этих паттернов являются: различные виды симметрии, паттерны роста, которые трансформируют бутон, побег, стохастические узоры, создаваемые ветром на гладкой поверхности Существуют также шаблоны восприятия: перспектива, скрытые части объектов, изменение яркость поверхности с глубиной.
     Мы можем рассматривать эти шаблоны как простые строительные блоки.
Затем эти блоки могут быть связаны вместе, чтобы создать сложные структуры, и эти структуры используется для создания изображений.
     Этот подход можно назвать структурной реальностью. Это берет образцы, которые существуют в действительности и связывают
они вместе относительно случайным образом.
     Чтобы найти структуры, которые производят интересные изображения, мы используем мутацию паттернов и случайных
расщепление и слияние структур рисунка.
     Этот эволюционный подход делает структуры все более и более сложными. Сложные структуры имеют тенденцию создавать интересные образы.
Существуют разные способы реализации этого очень общего подхода. Одним из возможных способов является представить изображения в виде сложной функции Color = F (x, y) и построить эту функцию как суперпозиция простых функций. Мы используем этот метод для генерации изображений, которые вы можете увидеть

     Эта работа имеет две цели:
     1. Изучите новый метод построения изображений. Это как метод рисования и
мы исследуем, какие картинки мы можем создать, используя этот метод.
     2. Исследуйте структуру реальности. Мы объединяем шаблоны реальности необычным способом. Какая мы получим в результате?
     Дерево функций
     Мы используем специальные деревья, которые представляют изображения.
Дерево содержит два типа узлов: один корневой узел и несколько функциональных узлов.
      Корневой узел. Корневой узел используется для преобразования скалярного значения в цвет. Этот узел имеет один дочерний: функциональный узел.
      Этот функциональный узел создает скалярное значение s для конкретной точки изображения (x, y). Затем корневой узел преобразует это значение s в цветовой вектор с красным, зеленым и синим компоненты.
      Цвет = Цвет (ы)
      Каждое дерево имеет только один корневой узел;
      Пример простой цветовой функции корневого узла:
      Цвета):
      Если s <o: s = -s
      Если s> 1: s = 1 / с
      возвращение color_1 * s + color_2 * (1-с)
      Где color_1 и colr_2 являются векторами красного, зеленого и синего компонентов цвета.
      Функциональные узлы. Все остальные узлы дерева являются функциональными узлами. Каждый функциональный узел может иметь ноль или более дочерних узлов. (Обычно есть 0,1,2 или 3 дочерних узла)
      Каждый функциональный узел имеет функцию corespondent
      Р (х, у)
      куда
      x, y - координаты точки на изображении.
      F возвращает скалярное значение с плавающей запятой.
      Функция F может вызывать дочерние функции один или несколько раз с возможно разными значениями x и y.
      Функциональные узлы также могут иметь скалярные параметры, которые могут быть изменены локальными мутациями.
      Например:
 0-функциональный узел: F (x, y) = sin (a * x) * sin (b * y);
 1-дочерний функциональный узел: F (x, y)=F (x + a * sin (x), y);
 2-дочерний функциональный узел: F (x, y)= if (F1 (x, y)> 0) возвр-ет F1 (x, y);
 иначе вернуть F2 (x, y);
Куда:
 a, b: параметры;
 F1, F2: F функции child1 и child2.
Это пример дерева:
    4
    Узлы A, B, C, D являются функциональными узлами.
    5
    Эволюционное создание изображений
    Список узлов
    Сначала нам нужно построить список функциональных узлов.
    Мы используем 4 разных корневых узла и около 100 разных функциональных узлов.
Функциональные узлы могут представлять некоторые реальные шаблоны, такие как симметрия, проекция перспективы и т. Д., Или
мы можем исследовать некоторые довольно абстрактные функции. Мы используем очень стандартные операции для построения
функции: арифметические операции, функции sin, cos, if / else и псевдослучайные функции.
     По сути, мы стараемся сделать функциональные узлы очень простыми.
     Создание случайных деревьев
     Процесс построения дерева сначала берет один из корневых узлов из списка, а затем строит дерево
      Функциональные узлы. Процесс случайным образом выбирает узлы из списка, делает копию узла и прикрепляет его к дереву. Существует ограничение на максимальную глубину дерева. (Обычно 5-7)
      Деревья, которые дают интересные изображения, обычно содержат 20-200 узлов
      Мутации деревьев
      Мы можем изменить дерево, используя три типа мутаций.
      Локальные мутации: случайное изменение значения параметров узла. Не
изменить структуру дерева. Можно регулировать относительную шкалу параметра
меняется.
     Глобальные мутации: измените структуру дерева. Случайно выберите две ветви
дерево и сделать замену.
     Мутации цвета: случайным образом выберите цвет на поддоне и измените корневой узел.
     Эволюционный процесс
     Создание и Мутация.
     Мы можем создавать картинки прямо из списка узлов. Процесс построения дерева будет случайным образом строить дерево. Единственное ограничение - максимальная длина ветви дерева.
    6
    Если нам не нравится изображение, созданное деревом, у нас есть два варианта: построить другое дерево или использовать мутации. Локальные мутации обычно сохраняют основные темы изображения (но не всегда), если нам нужно
больше изменений мы можем попробовать структурные мутации.
    Цветовые мутации изменяют только корневой узел. Корневой узел имеет 2-5 цветов, которые используются для построения образ. Цветовые мутации фандомно заменяют новые цвета на корневой узел. Цветные мутации принимают цвета из поддона, которые мы можем подготовить вручную.
     Разложение и генерация нового списка узлов
     Сначала вероятность создания деревьев, которые дают действительно интересные изображения, невелика. Если у нас уже есть интересные деревья, мы можем значительно увеличить шансы на успех. Предположим, у нас есть два или более интересных деревьев. Мы можем случайным образом разделить деревья на части и поместить эти части в новый список узлов. На самом деле это больше не будет список узлов, потому что он содержит не только отдельные узлы, но и дерево.
частей. Тем не менее мы можем использовать один и тот же процесс строительства для создания новых деревьев. Вероятность получить деревья, которые генерируют интересные изображения в этом случае значительно выше. Это эволюционный процесс, в котором мы объединяем части «интересных деревьев» для создания новых

     «Интересные деревья».
     7
     Картины структурной реальности
     Это картинки, созданные с помощью метода, описанного выше. Каждое дерево, которое генерирует картинка содержит 15 -200 узлов. Есть также примеры групп изображений, созданных то же самое дерево, используя локальные мутации. (Локальные мутации изменяют параметры узлов, но не меняют древовидная структура).
Я попытался исследовать предложенный метод как некоторую альтернативную технику искусства. и эта коллекция показывает что можно создать с помощью этого подхода.
     Изображения, которые вы видите здесь, являются «сюрреалистическими» или «структурно реалистичными»: мы объединяем в Случайным образом разные шаблоны, которые мы получаем из реального мира.
     Я выбрал фотографии по двум критериям:
         1. Эстетическая ценность
         2. Разнообразие возможных изображений, которые мы можем создать, используя эволюцию функциональных деревьев.
     8
Содержание.
Введение
Дерево функций
Эволюционное создание изображений
Список узлов
Создание случайных деревьев
Мутации деревьев
Эволюционный процесс
Создание и Мутация.
Разложение и генерация нового списка узлов
Картины структурной реальности
Локальные мутации и вариации изображения
Приложение I. Реализация.
     Эволюционное создание изображений
     Список узлов
     Сначала нам нужно построить список функциональных узлов.
Мы используем 4 разных корневых узла и около 100 разных функциональных узлов.
Функциональные узлы могут представлять некоторые реальные шаблоны, такие как симметрия, проекция перспективы и т. Д., Или мы можем исследовать некоторые довольно абстрактные функции. Мы используем очень стандартные операции для построения функции: арифметические операции, функции sin, cos, if / else и псевдослучайные функции.
     По сути, мы стараемся сделать функциональные узлы очень простыми.
     Создание случайных деревьев
     Процесс построения дерева сначала берет один из корневых узлов из списка, а затем строит дерево Функциональные узлы. Процесс случайным образом выбирает узлы из списка, делает копию узла и прикрепляет его к дереву. Существует ограничение на максимальную глубину дерева. (Обычно 5-7)
     Деревья, которые дают интересные изображения, обычно содержат 20-200 узлов
Мутации деревьев.
     Мы можем изменить дерево, используя три типа мутаций.
     Локальные мутации: случайное изменение значения параметров узла. Не
изменить структуру дерева. Можно регулировать относительную шкалу параметра
меняется.
     Глобальные мутации: измените структуру дерева. Случайно выберите две ветви
дерево и сделать замену.
     Мутации цвета: случайным образом выберите цвет на поддоне и измените корневой узел.
     Эволюционный процесс
      Создание и Мутация.
      Мы можем создавать картинки прямо из списка узлов. Процесс построения дерева будет случайным образом строить дерево. Единственное ограничение - максимальная длина ветви дерева.
     6
     Если нам не нравится изображение, созданное деревом, у нас есть два варианта: построить другое дерево или использовать мутации. Локальные мутации обычно сохраняют основные темы изображения (но не всегда), если нам нужно
больше изменений мы можем попробовать структурные мутации.
     Цветовые мутации изменяют только корневой узел. Корневой узел имеет 2-5 цветов, которые используются для построения образ. Цветовые мутации фандомно заменяют новые цвета на корневой узел. Цветные мутации принимают цвета из поддона, которые мы можем подготовить вручную.
      Разложение и генерация нового списка узлов
Сначала вероятность создания деревьев, которые дают действительно интересные изображения, невелика.
      Если у нас уже есть интересные деревья, мы можем значительно увеличить шансы на успех.
      Предположим, у нас есть два или более интересных деревьев.
Мы можем случайным образом разделить деревья на части и поместить эти части в новый список узлов.
      На самом деле это больше не будет список узлов, потому что он содержит не только отдельные узлы, но и дерево.
частей.
      Тем не менее мы можем использовать один и тот же процесс строительства для создания новых деревьев.
      Вероятность получить деревья, которые генерируют интересные изображения в этом случае значительно выше.
      Это эволюционный процесс, в котором мы объединяем части «интересных деревьев» для создания новых «Интересные деревья».

     Локальные мутации и вариации изображения
     Локальные мутации - эффективный инструмент для создания вариаций основной темы картины.
     Локальные мутации изменяют параметры узлов, но сохраняют структуру дерева
     Вот несколько примеров основной темы и ее вариаций.
       Приложение I. Реализация.
      Существует экспериментальная реализация Java-инструмента, поддерживающего эту технику рисования.
      Здесь можно найти больше информации и примеров:
      https://sites.google.com/site/structuralreality/


Рецензии