В качестве маски можно использовать текст, точку, линию. Например рисунок на банкнотах.
Каждый фрагмент мозаики либо монотонен, либо сам является некоторым изображением.
Алгоритм:
1 Выбор примитивов (форма, размер, цвета, текстура; подбираем все элементы, которые могут понадобиться)
2 Выбор схемы размещения
○ Виды:
■ Нерегулярные (элементы могут накладываться друг на друга, возможны пустые места)
■ Регулярные (элементы не могут накладываться друг на друга)
○ Алгоритм:
■ Если участок изображения монотонен и на нём нет контуров, начинаем подбирать элемент мозаики для него (шаг 3)
■ В противном случае делим изображение на части и рекурсивно повторяем процедуру с каждой
3 Построение схемы размещения — выбираем наиболее подходящий элемент мозаики.
4 Пост-обработка (удаление лишних элементов, цветовая коррекция, размытие и др.)
Описываемые методы принимают на входе растр и обрабатывают его так, будто оно нарисовано карандашом: штрихи видно не только на микро-, но и на макроуровне.
● Изображение состоит из штрихов (нерегулярных отрезков переменной длины и направлений, но одного цвета и толщины)
● Яркость участков изображений определяется частотой штрихов
● Форма передаётся направлением штрихов
● Изображение текстур тоже передаётся с помощью штрихов
● Больше штрихов
Алгоритм:
1 Создаётся пустое изображение
2 Находится изображение-разность между текущим изображением и целевым (входным)
3 Находится точка максимального отклонения (с учётом размытия штрихов). При этом учитывается:
○ Направление, в котором возрастает разность яркости
○ Границы: если штрих пересекает некоторый объект, то его лучше направить вдоль границы
○ Нормали (в случае 3D): штрих должен лежать в плоскости нарисованной грани
○ Положение звёзд Случайный фактор
4 Определяется длина и направление штриха
5 Штрих рисуется и размывается
6 Переход к п.2, пока не надоест. пока не достигнем нужной степени схожести или не исчерпаем время/количество штрихов
<Нижеследующего, судя по лекциям, у нас не было, но на всякий случай пусть будет>
Штриховка может использоваться для генерации текстур. При этом текстуру может потребоваться рисовать разной яркостью. При работе со штрихованными текстурами нельзя просто повысить/понизить их яркость.
Штрихованная текстура задаётся в виде упорядоченной последовательности штрихов. Для любого штриха хранится длина, направление и координата.
Сортировка штрихов:
В зависимости от требуемой яркости текстуры рисуются только первые n штрихов (чем ярче текстура, тем больше штрихов, и наоборот).
Штрихи делятся на два класса:
● штрихи, задающие форму текстуры;
● штрихи, задающие яркость текстуры.
Требуемая текстура задаётся двумя числами (M, N). Используем, соответственно, два списка (?). В зависимости от требуемой яркости рисуем заданное количество штрихов нужной формы и яркости.
Как и любые растровые изображения, штрихованные текстуры плохо масштабируются (например, если просто растянуть такую текстуру, то все штрихи станут толстыми), поэтому для каждого масштаба нужно честно строить свою текстуру.
</Вышеизложенного, судя по лекциям, у нас не было, но на всякий случай пусть будет>