Введение в компьютерную графику

Понятие о компьютерной графике

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

В компьютерной графике рассматриваются следующие задачи:

  • представление изображения;

  • подготовка изображения к визуализации;

  • создание изображения;

  • осуществление действий с изображением.

Области применения компьютерной графики:

  • научная графика – наглядное представление результатов расчетов и вычислительных экспериментов;

  • деловая графика – наглядное представление результатов работы учреждения или фирмы;

  • инженерная графика – связана с материальным производством и включает построение чертежей, схем, профилей и т.д.

  • художественная графика – создание произвольных изображений.

  • дизайнерская графика – создание изображений, используемых в полиграфии, дизайне, рекламе.

По способу создания изображения компьютерную графику можно разделить на пользовательскую (изображение создается в формате WYSIWYG – что вы видите, то и получите на выводе) и программную (изображение формируется с помощью программных средств). В свою очередь, пользовательская графика делится на растровую и векторную. Программы для работы с пользовательской графикой делятся на просмотрщики изображений и графические редакторы.

Растровая графика. Цвет

Растровая графика связана с устройствами ввода-вывода типа камеры, монитора или принтера. Так, характеристикой камеры является разрешение, измеряемое в виде произведения количества точек по ширине на количество точек по высоте. Эти точки называются пикселями, а их совокупность (матрица) – растром. Чтобы задать изображение, необходимо для каждого пикселя растра задать его цвет.

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

Растровое изображение характеризуется размерами изображения, способом задания цвета и его глубиной (цветовая модель), разрешением. Размеры изображения задаются, как правило, в пискселях или линейных единицах. Разрешение характеризует плотность пискселей и позволяет перходить от размеров в пикселей к размерам в линейных единицах.

Для характеристики цвета используются следующие атрибуты:

  1. Цветовой тон. Цветовой тон позволяет отличать один цвет от другого – например, зеленый от красного, желтого и других.

  2. Яркость. Определяется энергией, интенсивностью светового излучения. Выражает количество воспринимаемого света.

  3. Насыщенность или чистота тона. Выражается долей присутствия белого цвета. В идеально чистом цвете примесь белого отсутствует.

Цветовая модель – это математическая модель представления цветов в виде последовательности трех чисел, называемых цветовыми компонентами или цветовыми координатами.

Существует три типа цветовых моделей.

  1. Аппаратно-зависимые – цветовые модели данной группы описывают цвет применительно к конкретному, цветовоспроизводящему устройству (например, монитору) – RGB, RGBA, CMYK

  2. Аппаратно – независимые модели – эта группа цветовых моделей для того, чтобы дать однозначную информацию о цвете – XYZ, Lab.

  3. Психологические – модели, которые основываются на особенностях восприятия цвета человеком – HSB, HSV, HSL.

Максимальное количество цветов, используемое в изображении, определяется как \(N=2^b\), где N – количество цветов, b – глубина цвета в битах. Существуют типы изображений с различной глубиной цвета, например: полноцветные, черно-белые в оттенках серого, изображения с индексированным цветом. Некоторые типы изображений имеют одинаковую глубину цвета, но различаются по цветовой модели.

Пиксель на экране монитора строится как сочетание трех маленьких лучей основных цветов. Поэтому для работы с экраном используют модели аддитивных цветов. Аддитивные цвета – цвета, основанные на сложении цветов (излучаемые цвета). Наиболее известные модели аддитивных цветов – модели RGB и RGBA. Цвет рассматривается как сумма 3 компонентов - красного, зеленого и голубого (модель RGB), к которой добавляется степень прозрачности (модель RGBA). Интенсивности компонентов задаются как целые числа в диапазоне от 0 (минимальная интенсивность) до 255 (максимальная интенсивность), степень прозрачности изменяется от 0 (непрозрачное изображение) до 1 (полностью прозрачное изображение). Результирующий цвет определяется соотношением интенсивностей компонентов, если они равны, то получим черный цвет. Неоднозначность задания черного цвета есть главная проблема аддитивных моделей.

При печати получается изображение, которое не излучает свет, а наоборот, отражает какие-то лучи, то есть преобразуют белый свет, “вычитая” из него определенные цвета. Эти цвета называются субтрактивными (вычитательными). Они получаются после вычитания из белого основных цветов. При вычитании красного получается голубой (C – cyan), при вычитании зеленого – пурпурный цвет (M – magenta), а при вычитании синего – желтый цвет (Y – yellow). Проблема черного цвета решается введением дополнительной компоненты – черного цвета (K – blacK). Это также дает определенную экономическую выгоду, поскольку черный пигмент гораздо дешевле остальных. Рассмотренная модель называется моделью CMYK.

Если объединить модели RGB и CMYK, получится цветовой круг, в котором каждый цвет расположен напротив дополняющего его (“комплементарного”) цвета и, при этом, между цветами, из которых он получен. Чтобы усилить какой-то цвет, достаточно ослабить цвет, находящийся напротив (дополняющий его цвет). Например, чтобы усилить желтый, нужно ослабить синий. Положение цвета в цветовом круге характеризуется цветовым тоном или оттенком (H — hue), от 0 до 360 градусов. Второй параметр – насыщенность (S — saturation) – определяет чистоту цвета от 0% (серый цвет) до 100% (насыщенный цвет). С уменьшением насыщенности цвет становится блеклым, размытым (это равносильно добавлению в цвет белой краски). Рисунок 5. Цветовой кругТретий параметр – яркость (B — brightness) – определяет освещенность или количество света. Уменьшение яркости цвета означает его зачернение (то есть добавление в цвет черной краски). При нулевой яркости (0%) мы не можем видеть никаких цветов, поэтому любой цвет воcпринимается как черный. Абсолютную яркость (100%) имеет только белый цвет. В общем случае, любой цвет можно представить как цветовой тон, смешанный с белой и черной (то есть с серой) краской в разных пропорциях. Такая модель получила название HSB/

Цветовая модель L*a*b была создана Международной комиссией по освещению (CIE) как универсальная и не зависящая от конкретного устройства (монитора, принтера). В ней любой цвет определяется светлотой L (от 0 до 100) и двумя цветовыми параметрами a и b, каждый из которых меняется в интервале от -128 до 127. Эта модель используется как промежуточная ступень при преобразовании цвета из одной модели в другую.

Операции растровой графики ориентированы на работу с пикселями. Ниже перечислены основные алгоритмы данных операций.

Базовыми алгоритмами создания растровых изображений являются следующие.

  • Алгоритмы вывода прямой линии. Они вычисляют положение пикселей, которые должны быть закрашены цветом линии. Линия формируется из последовательностей связных пикселей, расположенных рядом по горизонтали, вертикали или диагонали.

  • Алгоритм вывода окружности — аналогичен предыдущему. При ближайшем рассмотрении контур окружности имеет ступенчатый вид.

  • Алгоритм построения кривой Безье — позволяет по заданным точкам построить кривую, которая повторяет характер расположения точек, но не проходит через них.

  • Алгоритм построения литер. Контуры литер формируются на матрице точек 8x10 (минимум 5 х 7). Для каждого стиля текста создаются и хранятся свои маски литер.

  • Алгоритм вывода простейших фигур. Фигура — плоский геометрический объект, состоящий из линий контура и точек заполнения, которые помещаются внутри контура.

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

Алгоритмы закрашивания

Сначала определяются координаты произвольного пикселя, находящегося внутри очерченного контура фигуры. Цвет пикселя изменяется на цвет заполнения. Затем проводится анализ цветов всех соседних пикселей. Если цвет некоторого соседнего пикселя не равен цвету границы контура или цвету заполнения, то цвет этого пикселя изменяется на цвет заполнения. И так далее, пока внутри контура все пиксели не перекрасятся в цвет заполнения.

Алгоритм закрашивания может быть более сложный, т.е. может использовать стиль заполнения. Для обозначения стилей заполнения используют такие понятия как кисть и текстура.

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

Текстура — это закрашивание, которое имитирует внешний вид, материал поверхности. Наиболее часто при использовании текстур используется наложение специально изготовленных растровых изображений.

К основным инструментам растровой графики относятся такие средства обработки изображений как:

  • инструменты выделения (помогают ограничить контуром область);

  • слои (помогают разделить фрагменты изображения);

  • каналы и маски (позволяют регулировать прозрачность точек изображения);

  • инструменты для цветовой и тоновой коррекции (позволяют улучшить восприятие картины);

  • инструменты ретуширования (позволяют исправить дефекты картины);

  • фильтры (спецэффекты, позволяют модифицировать картину).

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

Устранение ступенчатого эффекта

В растровых системах при невысокой разрешающей способности на контурных линиях существует проблема ступенчатого эффекта (aliasing): пиксели линий образуют как бы ступени лестницы. Чтобы растровое изображение линии выглядело более ровным, можно цвет угловых пикселей заменить определенным оттенком цвета, промежуточным между цветом объекта и цветом фона.

Устранение резких переходов цвета

Для получения более реалистичного перехода цветов используют метод разрежения (dithering). Этот метод позволяет увеличить число оттенков цветов на основе снижения разрешения растрового изображения. Алгоритм связан с изменением цвета пикселей на границе областей разных цветов. Пограничные пиксели окрашиваются цветом нового оттенка, усредняющего цвета областей.

Ретуширование

Ретушь (retouch) — коррекция изображения с целью устранения мелких дефектов, исправления тонального и цветового балансов. Инструменты ретуширования изображений предназначены для восстановления поврежденных изображений, например, для ретуши фотографий. Иногда ретуширование используется для украшения изображения, придания ему большей убедительности. Алгоритм включает выполнение двух операций:

  • устранение деталей, мешающих созданию нужного эффекта.

  • добавление деталей, чтобы подчеркнуть (усилить) нужный эффект.

Бинаризация

Бинаризация — приведение размытого растрового изображения к чернобелому изображению.

Белой точкой (White point) называется то место изображения, где оно выглядит очень светлым, но при этом в нем еще можно различить какие-то детали изображения. Белую точку в изображении можно задать искусственно более темной. В этом случае все элементы изображения, более светлые, чем указанные данным инструментом, будут полностью белыми, без видимых деталей.

Черной точкой (Black point) называется то место изображения, где оно выглядит очень темным, но при этом в нем еще можно различить какие-то детали изображения. Черную точку в изображении можно задать искусственно более светлой. В этом случае все элементы изображения, более темные, чем указанные данным инструментом, будут полностью черными, без видимых деталей.

Алгоритм позволяет очищать изображение от случайного «шума», восстанавливать «засвеченные» области; метод бинаризации может помочь в оцифровке и восстановлении чертежей, которые долгие годы хранились в архивах.

Анализ изображений

В ходе данной операции ищется ответ на вопрос - есть ли на изображении объекты заданного типа.

Векторная графика

Второе название векторной графики - объектная графика, связано это с тем, что изображение описывается так называемыми объектами, которые построены из основных элементов, называемых примитивами, то есть простых геометрических фигур, таких как линии, кривые, круги, многоугольники. Каждый из примитивов описывается параметрами, например, в случае сегмента - координатами его концов, а в случае круга - координатами центра и размером радиуса. Такие объекты также имеют определенные атрибуты, такие как толщина и цвет линии, цвет заливки фигуры или неравномерная заливка, например градиентная заливка или заливка узором, или степень прозрачности. Атрибуты в основном зависят от используемого стандарта описания векторной графики.

Основные инструменты векторных редакторов

  • Кривые Безье позволяют создавать прямые, ломаные и гладкие кривые, проходящие через узловые точки, с определёнными касательными в этих точках;

  • Заливка позволяет закрашивать ограниченные области определённым цветом или градиентом;

  • Текст создаётся с помощью соответствующего инструмента, а потом часто преобразуется в кривые, чтобы обеспечить независимость изображения от шрифтов, имеющихся (или отсутствующих) на компьютере, используемом для просмотра;

  • Набор геометрических примитивов;

  • Карандаш позволяет создавать линии «от руки». При создании таких линий возникает большое количество узловых точек, от которых в дальнейшем можно избавиться с помощью «упрощения кривой».

Кривые Безье

Вся идея кривых Безье заключается в обобщении следующего принципа: имея список точек на плоскости, мы хотим описать кривую, которая проходит от первой до последней точки, и «направляется» между остальными точками. Легко заметить, что графические редакторы типа Microsoft Paint рисуют кривые именно как кривые Безье. Также кривыми Безье являются сплайны, используемые в черчении. В самом деле, изначально сплайн строился на чертеже следующим образом. В направляющие точки втыкались чертежные булавки, между которыми помещалась гибкая линейка так, чтобы число точек по разные стороны ее было бы одинаковым. Далее карандашом обводилась линейка.

Рассмотрим строгое определение и некоторые полезные свойства данных кривых. Обозначим через \(P_0, P_1, …, P_n\) набор точек, по которым строится кривая, \(t\) - параметр в диапазоне от 0 до 1. Тогда по определению кривых Безье получаем

\(B_0(t)=P_0\), \(B_{0...n}(t)=(1-t)B_{0...(n-1)}+t B_{1...n}\), или \[B_{0...n}(t)=\mathop{\sum_{k=0}^n}\left( \begin{array}{c} n\\ k \end{array}\right)(t−1)^{n−k}t^kP_k\], где

\[ \left( \begin{array}{c} n\\ k \end{array} \right)=\frac{n!}{k!(n-k)!}\].

Из определения следует, что

  1. кривая Безье 0 порядка - начальная точка;

  2. кривая Безье 1 порядка - прямая из точки P0,в P1, её уравнение \(B(t)=(1-t)P_0+tP_1\);

  3. кривая Безье 2 порядка - дуга окружности, касающаяся сторон угла \(P_0P_1P_2\) в точках \(P_0\) и \(P_1\);

  4. В параметрической форме кубическая кривая Безье (\(n = 3\)) описывается следующим образом:

    Четыре опорные точки \(P_0\), \(P_1\), \(P_2\), и \(P_3\), заданные в 2- или 3-мерном пространстве, определяют форму кривой.

    Линия берёт начало из точки \(P_0\), направляясь к \(P_1\) и заканчивается в точке \(P_3\), подходя к ней со стороны \(P_2\). То есть, кривая не проходит через точки \(P_1\) и \(P_2\), они используются для указания её направления. Длина отрезка между \(P_0\) и \(P_1\) определяет, как скоро кривая повернёт к \(P_3\).

Свойства кривой Безье:

  • непрерывность заполнения сегмента между начальной и конечной точками;

  • кривая всегда располагается внутри фигуры, образованной линиями, соединяющими контрольные точки;

  • при наличии только двух контрольных точек сегмент представляет собой прямую линию;

  • прямая линия образуется при коллинеарном (на одной прямой) размещении управляющих точек;

  • кривая Безье симметрична, то есть обмен местами между начальной и конечной точками (изменение направления траектории) не влияет на форму кривой;

  • масштабирование и изменение пропорций кривой Безье не нарушает её стабильности;

  • изменение координат хотя бы одной из точек ведет к изменению формы всей кривой Безье;

  • любой частичный отрезок кривой Безье также является кривой Безье;

  • степень (порядок) кривой всегда на одну ступень меньше числа контрольных точек;

  • окружность не может быть описана параметрическим уравнением кривой Безье;

  • невозможно создать параллельные кривые Безье, за исключением тривиальных случаев (прямые линии и совпадающие кривые), хотя существуют алгоритмы, строящие приближённую параллельную кривую Безье с приемлемой для практики точностью.

Свойства кривой Безье позволяют легко управлять ей при помощи преобразований опорных точек.

Преобразования векторной графики

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

В отличие от растровой графики, векторная является полностью масштабируемой графикой, что означает, что векторные изображения можно неограниченно увеличивать и изменять их пропорции без ущерба для качества. Это оправдано математическим описанием элементов(примитивов), поэтому изображение может отображаться в максимально доступном разрешении для данного экрана или распечатки. Качество самого изображения зависит только от точности описания изображения с помощью примитивов: черные волосы нарисованного персонажа можно описать как замкнутую кривую, заполненную черным цветом, хотя также можно описать каждый волос кривой относительно небольшой толщины и черного цвета.

В случае растровой графики поворот изображения может исказить его, вызывая потерю качества (особенно, если это не поворот на кратный прямой угол). Типичные редакторы векторной графики позволяют, помимо изменения параметров и атрибутов примитивов, также преобразовывать объекты, например, вращать, перемещать, зеркально отображать, растягивать, наклонять или изменять порядок объектов на оси глубины. Таким образом, это еще один шаг в описании идеологического, а не буквального образа.

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

Операция обратного преобразования, так называемая векторизация или трассировка сложны и часто не дают ожидаемых результатов. Основная проблема здесь - это поиск ребер, которые часто нелегко найти программам векторизации. При решении этой задачи обычно используются приемы из области искусственного интеллекта, наиболее часто исследуются изменения таких параметров, как контраст, цвет или насыщенность.