Все известные форматы представления изображений (как неподвижных, так
и движущихся) можно разделить на растровые и векторные.
В векторном формате изображение разделяется на примитивы -- прямые линии,
многоугольники, окружности и сегменты окружностей, параметрические кривые,
залитые определенным цветом или шаблоном, связные области, набранные определенным
шрифтом отрывки текста и т. д. (рис. 1.5). Для пересекающихся примитивов
задается порядок, в котором один из них перекрывает другой. Некоторые
форматы, например, PostScript, позволяют задавать собственные примитивы,
аналогично тому, как в языках программирования можно описывать подпрограммы.
Такие форматы часто имеют переменные и условные операторы и представляют
собой полнофункциональный (хотя и специализированный) язык программирования.
Рис. 1.5. Двухмерное векторное изображение
Каждый примитив описывается своими геометрическими координатами. Точность
описания в разных форматах различна, нередко используются числа с плавающей
точкой двойной точности или с фиксированной точкой и точностью до 16-го
двоичного знака.
Рис. 1.6. Трехмерное векторное изображение
Двухмерные векторные форматы очень хороши для-представления чертежей,
диаграмм, шрифтов (или, если угодно, отдельных букв шрифта) и отформатированных
текстов. Такие изображения удобно редактировать — изображения и их отдельные
элементы легко поддаются масштабированию и другим преобразованиям. Примеры
двухмерных векторных форматов — PostScript, PDF (Portable Document Format,
специализированное подмножество PostScript), WMF (Windows MetaFile), PCL
(Printer Control Language, система команд принтеров, поддерживаемая большинством
современных лазерных и струйных печатающих устройств). Примером векторного
представления движущихся изображений является MacroMedia Flash. Трехмерные
векторные форматы широко используются в системах автоматизированного проектирования
и для генерации фотореалистичных изображений методами трассировки лучей
и т. д.
Однако преобразование реальной сцены (например, полученной оцифровкой
видеоизображения или сканированием фотографии) в векторный формат представляет
собой сложную и, в общем случае, неразрешимую задачу. Программы-векторизаторы
существуют, но потребляют очень много ресурсов, а качество изображения
во многих случаях получается низким. Самое же главное — создание фотореалистичных
(фотографических или имитирующих фотографию) изображений в векторном формате,
хотя теоретически и, возможно, на практике требует большого числа очень
сложных примитивов. Гораздо более практичным для этих целей оказался другой
подход к оцифровке изображений, который использует большинство современных
устройств визуализации: растровые дисплеи и многие печатающие устройства.
В растровом формате изображение разбивается на прямоугольную матрицу элементов,
называемых пикселами (слегка искаженное
PICture ELement — этемент картинки). Матрица называется
растром. Для каждого пиксела определяется его яркость и, если изображение
цветное, цвет. Если, как это часто бывает при оцифровке реальных сцен
или преобразовании в растровый формат (растеризации) векторных изображений,
в один пиксел попали несколько элементов, их яркость и цвет усредняются
с учетом занимаемой площади. При оцифровке усреднение выполняется аналоговыми
контурами аналого-цифрового преобразователя, при растеризации — алгоритмами
анти-алиасинга.
Размер матрицы называется разрешением растрового
изображения. Для печатающих устройств (и при растеризации изображений,
предназначенных для таких устройств) обычно задается неполный размер матрицы,
соответствующей всему печатному листу, а количество пикселов, приходящихся
на вертикальный или горизонтальный отрезок длиной 1 дюйм; соответствующая
единица так и называется — точки на дюйм (DPI, Dots
Per Inch).
Для черно-белой печати обычно достаточно 300 или 600 DPI. Однако принтеры,
в отличие от растровых терминалов, не умеют манипулировать яркостью отдельной
точки, поэтому изменения яркости приходится имитировать, разбивая изображение
на квадратные участки и регулируя яркость относительным количеством черных
и белых (или цветных и белых при цветной печати) точек в этом участке.
Для получения таким способом приемлемого качества фотореалистичных изображений
300 DPI заведомо недостаточно, и даже бытовым принтерам приходится использовать
гораздо более высокие разрешения, вплоть до 2400 DPI.
Вторым параметром растрового изображения является разрядность одного пиксела,
которую называют цветовой глубиной. Для черно-белых
изображений достаточно одного бита на пиксел, для градаций яркости серого
или цветовых составляющих изображения необходимо несколько битов (рис.
1.7). В цветных изображениях пиксел разбивается на три или четыре составляющие,
соответствующие разным цветам спектра. В промежуточных данных, используемых
при оцифровке и редактировании растровых изображений, цветовая глубина
достигает 48 или 64 бит (16 бит на цветовую составляющую). Яркостный диапазон
современных Мониторов, впрочем, позволяет ограничиться 8-ю битами, т.
е. 256 градациями, на одну цветовую составляющую: большее количество градаций
просто незаметно глазу.
Рис. 1.7. Растровое изображение
Наиболее широко используемые цветовые модели — это RGB (Red, Green, Blue
— красный, зеленый, синий, соответствующие максимумам частотной характеристики
светочувствительных пигментов человеческого глаза), CMY (Cyan, Magenta,
Yellow — голубой, пурпурный, желтый, дополнительные к RGB) и CMYG — те
же цвета, но с добавлением градаций серого. Цветовая модель RGB используется
в цветных кинескопах и видеоадаптерах, CMYG — в цветной полиграфии.
В различных графических форматах используется разный способ хранения пикселов.
Два основных подхода — хранить числа, соответствующие пикселам, одно за
другим, или разбивать изображение на битовые плоскости -сначала хранятся
младшие биты всех пикселов, потом — вторые и так далее. Обычно растровое
изображение снабжается заголовком, в котором указано его разрешение, глубина
пиксела и, нередко, используемая цветовая модель.