Лекция 3. Растровое и векторное изображение. Понятие конвейеров ввода и вывода графической информации Все изображения, с которыми работают программы машинной графики, разделяются на два класса: растровые и векторные. В терминологии машинной графики (отрасли практической информатики, занимающейся автоматизацией построения изображений и их обработки с помощью компьютеров) растровые или точечным изображением принято называть массив пикселов — одинаковых по размеру и форме плоских геометрических фигур (чаще всего — квадратов или кругов), расположенных в узлах регулярной (то есть состоящей из ячеек одинаковой формы и размера) сетки. Для каждого пиксела тем или иным способом задается цвет (обычно цвета кодируются числами фиксированной разрядности). Представление растрового изображения в памяти компьютера это массив сведений о цвете всех пикселов, упорядоченный определенным образом (например, по строкам, как в телевизионном изображении). Наиболее близким аналогом такого явления виртуального мира, как пиксельное изображение, в реальном мире является мозаика. Пиксельное изображение состоит из равномерно расположенных на плоскости элементов одинакового размера и формы (пикселов), подобно мозаике, состоящей из кусочков цветного стекла — смальты. При соблюдении определенных условий (главные из них — небольшие размеры фрагментов смальты и достаточно большое удаление зрителя от поверхности изображения) отдельные кусочки смальты, составляющие мозаичное изображение, не видны — глаз зрителя воспринимает изображение как единое целое. ПРИМЕЧАНИЕ Это явление называется визуальным смыканием и играет огромную роль в полиграфии, компьютерной графике и традиционном изобразительном искусстве. Эта идея лежит в основе пуантилизма — техники живописи, используемой импрессионистами. Посетив в Санкт-Петербурге Исаакиевский собор, Храм Воскресения Христова (Спас на крови), Русский музей или Эрмитаж, легко убедиться, что техника работы с пиксельными изображениями была доведена до совершенства задолго до появления первых компьютеров. Другой пример пиксельных изображений — так называемые японские кроссворды, получившие в последнее врем: г широкое распространение. Изображение на экране любого компьютерного монитора — пиксельное, и это хорошо видно через увеличительное стекло. Большинство принтеров воспроизводят на бумаге именно пиксельные изображения. Векторным изображением в компьютерной графике принято называть совокупность более сложных и разнообразных геометрических объектов. Номенклатур таких объектов может быть более или менее широкой, но, как правило, в нес включаются простейшие геометрические фигуры (круги, эллипсы, прямоугольники, многоугольники, отрезки прямых и дуги кривых линий). Важнейшая особенность векторной графики состоит в том, что для каждого объекта (или, как мы будем более точно говорить далее, класса геометрических объектов) определяются управляющие параметры, конкретизирующие его внешний вид. Например, для окружности такими управляющими параметрами являются диаметр, цвет, тип и толщина линии, а также цвет внутренней области. Представление векторного изображения в памяти компьютера сложнее, чем пиксельного (хотя, как правило, при этом оно намного компактнее). Несколько упрощая, можно считать, что оно является перечнем всех объектов, из которых составлено изображение, причем для каждого объекта указано, к какому классу объектов он принадлежит, и Приведены значения всех управляющих параметров. Подобрать аналог векторному изображению в реальном мире не так-то просто. Впрочем, на эту роль вполне может претендовать тот человечек, которого в детстве рисовали, наверное, все, приговаривая: «Точка, точка, запятая, минус, рожица кривая, палка, палка, огуречик...». Последняя фраза, по сути дела, представляет собой перечисление объектов векторного изображения. ПРИМЕЧАНИЕ Из-за того, что в этой фразе отсутствуют какие-либо намеки на значения управляющих параметров, человечки у всех получались разные. В школьной программе векторные изображения появлялись на уроках геометрии, черчения и математики (графики функций). Тем, кому довелось учиться в технических вузах, приходилось сталкиваться с векторными изображениями на занятиях по аналитической геометрии. Процесс вывода пиксельного изображения на экран или бумагу достаточно прост - на экране пикселу соответствует группа из трех частиц люминофора, светящихся различными цветами, принтер изображает пикселы капельками чернил или пятнами тонера (красящего порошка). К устройствам, непосредственно фиксирующим векторные изображения, относятся, пожалуй, только довольно редко встречающиеся вне стен конструкторских бюро графопостроители. Почти всегда векторное изображение перед выводом (или непосредственно в процессе вывода) преобразуется в точечное — в компьютерной графике этот процесс называется рендерингом. ПРИМЕЧАНИЕ Рендеринг представляет собой частный случай преобразования векторного изображения в пиксельное — растрирования после слияния слоев (см. урок 17) без сохранения результата в файле. На основании приведенного выше описания двух классов изображений вы можете сделать вывод, что с векторными изображениями работать значительно сложнее и что область их применения весьма узкая. Ничуть не бывало. В очень многих случаях решающую роль играют специфические достоинства и недостатки пиксельных и векторных изображений. Основной недостаток пиксельного изображения состоит в том, что размер пикселов является фиксированным Из-за этого в случае изменения размера изображения возникают крайне нежелательные эффекты. При его увеличении между плотно «прижатыми» друг к другу пикселами появляется свободное место. Заполнить его, строго говоря, нечем, разве что размещая на свободных местах копии находящихся рядом пикселов. Это эквивалентно увеличению размера пиксела при увеличении изображения. Однако сильно увеличивать размер пиксела нельзя — слишком крупные пикселы перестанут восприниматься глазом зрителя как однородное изображение, видимость смыкания разрушится. Этот эффект хорошо известен профессиональным фотографам, которые говорят про чрезмерно увеличенную фотографию: «полезло зерно». И в самом деле, увеличенное точечное изображение приобретает отчетливо видимую зернистую структуру, а это нужно только при создании специфических художественныхэффектов. В машинной графике подобное явление называется искажением растрирования. При этом под растрированием подразумевается процесс преобразования векторного изображения в растровое (или одного пиксельного изображения в другое со сменой характеристик пикселов). При уменьшении пиксельного изображения с сохранением прежнего размера пикселов неизбежно приходится выбрасывать некоторые пикселы, что приводит к потере части содержащейся в изображении информации. Не спасает положения и уменьшение размеров пиксела, поскольку устройства отображения информации (дисплеи, полиграфические машины и принтеры) все равно не могут воспроизводить слишком маленькие пикселы — в результате детали изображения становятся плохо различимыми. Более того, оказывается, что размеры пиксельного изображения при сохранении исходного размера пикселов можно увеличивать лишь кратно - в два, три и т. д. раза. Если это условие не соблюдается, на изображении может возникать муар — волнообразные полосы, точки или клетки. Избавиться от муара, не искажая само изображение, не так-то просто. Вторым, не менее существенным, недостатком пиксельных изображений является отсутствие внутренней структуры, соответствующей структуре изображенных объектов. Попробуем разобраться в этом на примере. Если на точечном изображении мы видим мужчину в галстуке-бабочке и со значком на лацкане, это — результат работы нашего мозга, выделившего в изображении такие объекты, как значок и галстук. Чтобы идентифицировать соответствующие этим объектам пикселы при работе с программой редактирования пиксельной графики, придется немало потрудиться. Если, работая над изображением, вы удалите значок, то после этого придется еще както заполнять образовавшуюся после удаления пикселов значка «дыру» в изображении — фактически, дорисовывать его. Еще больше вам придется потрудиться, если вы захотите слегка поправить покосившийся галстук Третий недостаток пиксельных изображений связан с тем, что для их хранения необходим большой объем памяти. При работе с точечными изображениями высокой четкости и сравнительнобольшого размера нередки случаи, когда объемы соответствующих им файлов составляют сотни мегабайтов. Работа с такими громоздкими объектами зачастую оказывается не под силу даже самым современным и мощным компьютерам. Работе с векторным изображением присуща большая гибкость. Чтобы увеличить или уменьшить его, требуется всего лишь изменить один управляющий параметр изображения в целом — масштаб. При этом размер файла с векторным изображением не увеличится ни на один байт. Внесенные изменения будут учтены при рендеринге, и четкость изображения не пострадает. В отличие от пиксельного изображения, степень структуризации векторного изображения может быть произвольной. Она определяется создающим его художником. Как мы увидим в последующих уроках, составляя изображение значка на лацкане из двух кругов и текстовой надписи, можно объединить эти объекты в группу и даже дать ей имя «Значок», чтобы потом было легче найти эти объекты. Удаление этой группы приведет к исчезновению значка, но не к возникновению «дыры» на пиджаке — ведь изображение пиджака составлено из других объектов, которые просто становятся видны в том месте, где раньше был значок. У вас не будет затруднений, если вы также захотите «поправить галстук» — достаточно изменить значение угла поворота группы объектов, из которых составлено его изображение. Объем файлов с векторными изображениями в большинстве случаев намного меньше объема файлов с изображениями пиксельными. В завершение сравнительного анализа классов изображений отметим, что преобразование векторного изображения в пиксельное (растрирование или рендеринг) представляет собой достаточно простой и абсолютно формальный процесс, который выполняется большинством программ машинной графики без вмешательства Объектно-ориентированный подход 15 пользователя. Преобразование же пиксельного изображения в векторное (векторизация или трассировка) в подавляющем большинстве случаев требует не просто вмешательства, а творческого участия пользователя