Skip to content

About

Процедурная генерация PNG по мотивам картины Айвазовского «Девятый вал» на Python/Pillow/NumPy

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Ninth Wave (Девятый вал)

Процедурная генерация картины по мотивам «Девятого вала» И. К. Айвазовского (1850) — на Python, Pillow и NumPy.

Девятый вал

О проекте

Проект программно создаёт морской пейзаж, воспроизводящий ключевые композиционные элементы знаменитой картины Айвазовского:

  • Небо на рассвете — многоступенчатый градиент от тёмно-пурпурного к золотому горизонту с фрактальными облаками
  • Солнце — многослойное свечение с ярким ядром
  • Девятый вал — асимметричный гребень с пеной и брызгами
  • Слои моря — многослойные волны с освещёнными гребнями
  • Обломки корабля — сломанная мачта с силуэтами выживших
  • Пост-обработка — цветокоррекция, масляное смешение, зерно холста, виньетка

Требования

Установка

git clone https://github.com/akarakuts/ninth-wave.git
cd ninth-wave
pip install -r requirements.txt

Запуск

python3 ninth_wave.py

Изображение сохраняется в output/ninth_wave_pil.png (1600×1080).

Генерация занимает 10–30 секунд в зависимости от железа.

Настройки

Параметры задаются в начале файла ninth_wave.py:

Параметр Описание По умолчанию
W, H Размер изображения 1600, 1080
random.seed(...) Seed для воспроизводимости 101
horizon Высота горизонта (доля от H) H * 0.45
peak_x Позиция пика волны (доля от W) W * 0.60

Как это работает

  1. Небо — вертикальный градиент по цветовым стопам, смешанный с шумом фрактального броуновского движения (fbm) для облаков
  2. Солнце — концентрические эллипсы с убывающей прозрачностью для радиального свечения
  3. Море — синусоидальные композиты на нескольких частотах, накладываемые сзади наперёд
  4. Главная волна — асимметричный гауссов профиль с многооктавной рябью; сплошная заливка полигона + вертикальный градиент
  5. Свечение гребня — полупрозрачный слой, имитирующий прохождение света сквозь тонкую воду (фирменный приём Айвазовского)
  6. Пена — тысячи мелких эллипсов, сконцентрированных у гребня волны
  7. Пост-обработка — усиление контраста/цвета, смешение с размытой копией для эффекта «масляной краски», добавление зерна, применение виньетки

Ограничения

Это стилизованная абстракция, а не фотореалистичная копия. Процедурная отрисовка на PIL имеет принципиальные ограничения:

  • Нет настоящих мазков кисти и фактуры краски
  • Прозрачность волны имитируется альфа-градиентами, а не физически точно
  • Пена строится точками, а не методами гидродинамики

Для фотореалистичной генерации рассмотрите использование API нейросетевой генерации изображений (например, qwen-image-3.0-pro).

Лицензия

MIT

Автор

akarakuts

About

Процедурная генерация PNG по мотивам картины Айвазовского «Девятый вал» на Python/Pillow/NumPy

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages