TGViewer
generative camera blog generative camera blog @generative_photography · 117 subscribers
Post #317 146
Quantization.

Следующим направлением развития фильтров в mIRO))) для меня стала работа с квадратными формами. Начать движение в эту сторону я решил с эффекта пикселизации. Пикселизация превращала изображение в мозаику из разноцветных клеток, напоминающих увеличенные пиксели.

Работая с этим эффектом я прошел несколько этапов:

1. Использование простой пикселизации, разбивающей изображение на равные квадраты. Этот эффект не перекрашивает пиксели, а работает с uv-разверткой (системой координат) изображения. Развертка деформируется таким образом, что левый верхний пиксель в границах заданной области увеличивается до размеров всей клетки. Подобный эффект можно увидеть и в оптических пикселизаторах.
// соотношение сторон кадра
float aspectRatio = canvasWidth/canvasHeight;
// размер ячейки в процентах от размера кадра
vec2 cellSize = vec2(0.1);
// преобразование прямоугольной ячейки в квадратную
cellSize.y *= aspectRatio;
// пикселизация развертки (системы координат)
vec2 uv = uv-mod(uv, cellSize);


2. Поворот пикселизованной сетки. Чтобы нарушить ровные ряды клеток, их можно поворачивать на произвольные углы. Угол поворота можно брать из самого изображения, разделив его на несколько однородных областей, каждая из которых будет задавать свой угол. Такое разделение на однотонные зоны можно получить через постеризацию. Математически постеризация работает так же, как и пикселизация — путем квантования, преобразования плавных градиентов (яркости, координат) в ступенчатые значения.
// получения яркости из зеленого канала
float bw = img.g;
// постеризация яркости через квантование
float bwPosterized = bw-mod(bw, 0.1);
// постеризированная яркость используется как угол поворота
float a = bwPosterized;
// поворот системы координат через матрицу вращения
uv *= mat2(cos(a), -sin(a), sin(a), cos(a));


3. Перспективное искажение сетки. Для того, чтобы стека пикселей наклонялась не только в стороны, но и вглубь изображения, можно использовать преобразование из декартовых (прямоугольных) координат в полярные (круговые), заполняя изображением стены условного туннеля, уходящего внутрь снимка.
// сдвиг точки перспективы к центру кадра
uv -= vec2(0.5);
// перевод развертки в полярные координаты
uv = vec2(length(uv), atan(uv.y, uv.x));


Итоговый фильтр пикселизовал изображение и наклонял сегменты клеток в разные стороны, визуально разделяя объекты в кадре. Позже к этому эффекту я добавил дисплейсмент для более хаотичного визуала.

Изображения сняты через фильтр:
▹ mIRO))) / Deerhoof / AB
More from @generative_photography
  1. Sep 1, 2026Навигация по блогу. 🔠 • Windy Pixel: Shading - Displacement - Mask - Stamp - Shake - Feed…
  2. Aug 20, 2026Paper. Еще до знакомства с шейдерами я случайно заметил, как непредсказуемо дисплейсмент с…
  3. Aug 6, 2026Keyboard. Случайно сгенерированные фильтры я разделял на три категории: 1. Которые нравили…
  4. Jul 30, 2026Series. Обычно при генеративной съемке я стремился к максимальной ситуативности. Фильтры г…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →