Содержание
Хотя эти файлы растровых изображений, заполняющие наши компьютеры и жизни, чаще всего используются для представления изображений, я считаю полезным для художника компьютерной графики иметь еще одну точку зрения - более интересную. И с этой точки зрения растровое изображение, по сути, представляет собой набор данных, организованных в определенную структуру, а точнее, таблицу, заполненную числами (матрица, говоря математически).
Число в каждой ячейке таблицы может использоваться для представления цвета, и таким образом ячейка становится пикселем, что означает «элемент изображения». Существует множество способов численного кодирования цветов. Например, (вероятно, самый простой) явно определить соответствие числа к цвету для каждого значения, т.е. 3 означает темно-красный, 17 - бледно-зеленый и так далее. Этот метод часто использовался в старых форматах, таких как .gif, поскольку он позволял получить определенные преимущества в размере за счет ограниченной палитры.
Другой способ (наиболее распространенный) - использовать непрерывный диапазон от 0 до 1 (не 255!), Где 0 означает черный, 1 - белый, а числа между ними обозначают оттенки серого соответствующей яркости. Таким образом, мы получаем логичный и элегантно организованный способ представления монохромного изображения в растровом файле.
Термин «монохромный» оказывается более подходящим, чем «черно-белый», поскольку один и тот же набор данных может использоваться для изображения градаций от черного до любого другого цвета в зависимости от устройства вывода - как и многие старые мониторы были черно-зелеными. а не черно-белое.
Эта система, однако, может быть легко расширена до полноцветного случая с помощью простого решения - каждая ячейка таблицы может содержать несколько чисел, и, опять же, есть несколько способов описания цвета с несколькими (обычно тремя) числами, каждое из которых находится в диапазоне от 0 до 1. диапазон. В модели RGB они обозначают количество красного, зеленого и синего света, в HSV они обозначают оттенок, насыщенность и яркость соответственно. Но важно отметить, что это все еще не что иное, как числа, которые кодируют определенное значение, но не должны интерпретироваться таким образом.
Логическая единица
Теперь позвольте мне перейти к тому, почему пиксель не является квадратом: это потому, что таблица, которая представляет собой растровое изображение, сообщает нам, сколько элементов находится в каждой строке и столбце, в каком порядке они размещены, но ничего не о том, какая форма или даже в какой они пропорции.
Мы можем сформировать изображение из данных в файле различными способами, не обязательно с помощью монитора, который является лишь одним из вариантов устройства вывода. Например, если мы возьмем наш файл изображения и распределим камешки размером, пропорциональным значениям пикселей на некоторой поверхности, мы все равно будем формировать практически то же изображение.
И даже если мы возьмем только половину столбцов, но проинструктируем себя использовать камни в два раза шире для распределения - результат все равно будет показывать в основном ту же картинку с правильными пропорциями, только без половины горизонтальных деталей.
«Инструктировать» - ключевое слово здесь. Эта инструкция называется соотношением сторон пикселя, которое описывает разницу между разрешением изображения (количеством строк и столбцов) и пропорциями. Он позволяет сохранять кадры, растянутые или сжатые по горизонтали, и используется в определенных форматах видео и фильмов.
Теперь поговорим о разрешении - оно показывает максимальное количество деталей, которое может вместить изображение, но ничего не говорит о том, сколько оно на самом деле вмещает. Плохо сфокусированную фотографию невозможно улучшить независимо от того, сколько пикселей имеет матрица камеры. Точно так же масштабирование цифрового изображения в Photoshop или любом другом редакторе увеличит разрешение без добавления к нему каких-либо деталей или качества - дополнительные строки и столбцы будут просто заполнены интерполированными (усредненными) значениями изначально соседних пикселей.
Аналогичным образом, параметр PPI (пикселей на дюйм, обычно также называемый DPI - точек на дюйм) - это всего лишь инструкция, устанавливающая соответствие между разрешением файла изображения и физическими размерами вывода. Таким образом, PPI бессмысленен сам по себе, без любого из этих двух.
Хранение пользовательских данных
Возвращаясь к числам, хранящимся в каждом пикселе, конечно, они могут быть любыми, включая так называемые числа вне диапазона (значения выше 1 и отрицательные), и в каждой ячейке может храниться более трех чисел. Эти функции ограничены только определенным определением формата файла и широко используются в OpenEXR, чтобы назвать его.
Большим преимуществом хранения нескольких чисел в каждом пикселе является их независимость, поскольку каждое из них можно изучать и обрабатывать индивидуально как монохромное изображение, называемое каналом, или своего рода суб-растр.
Дополнительные каналы к обычным каналам с описанием цвета красного, зеленого и синего могут нести любую информацию. Четвертым каналом по умолчанию является Alpha, который кодирует непрозрачность (0 означает прозрачный пиксель, 1 означает полностью непрозрачный). Z-глубина, нормали, скорость (векторы движения), мировое положение, окружающая окклюзия, идентификаторы и все остальное, что вы можете придумать, можно сохранить либо в дополнительных, либо в основных каналах RGB.
Каждый раз, когда вы что-то визуализируете, вы решаете, какие данные включить и где их разместить. Таким же образом вы решаете при компоновке, как манипулировать данными, которыми вы владеете, для достижения желаемого результата. Этот числовой способ мышления об изображениях имеет первостепенное значение и принесет вам большую пользу при работе с визуальными эффектами и анимированной графикой.
Выгоды
Применение этого образа мышления к вашей работе - когда вы используете проходы рендеринга и выполняете композитную работу - жизненно важно.
Например, базовая цветокоррекция - это не что иное, как элементарные математические операции над значениями пикселей, и просмотр сквозь них очень важен для производственной работы. Кроме того, математические операции, такие как сложение, вычитание или умножение, могут выполняться над значениями пикселей, а с такими данными, как Нормали и Положение, многие инструменты 3D-затенения можно имитировать в 2D.
Слова: Денис Козлов
Денис Козлов - специалист по компьютерной графике с 15-летним опытом работы в кино, телевидении, рекламе, играх и образовании. В настоящее время он работает в Праге супервизором по визуальным эффектам. Эта статья впервые появилась в 181 выпуске 3D World.