Цифровые графические модели в компьютерной графике

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

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

1. Растровые изображения

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

Рассмотрим растровое изображение, состоящее из m точек по горизонтали и n пикселей по вертикали.

Штриховой рисунок — это двухмерный булевых или однобитовий массив A размером, нулевое значение A [i, j] ставит в соответствие j-м пикселу i-й строки цвет фона, а единица — цвет рисунка.

Изображение в градациях серого цвета кодируются с помощью двухмерного массива байтов. Значение A [i, j] — число от 0 до 255 — значение оттенка серого цвета, причем 0 соответствует черному, а 255 — белому цвету.

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

Полноцветные изображения в модели RGB кодируются или тремя байтовый массивами R [m, n], G [m, n], B [m, n], каждый из которых содержит значение соответствующей цветовой составляющей, или одним массивом, элементы которого трибайтови цветовые коды каждого пиксела.

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

Но простота эта несколько обманчива. Как мы видели выше, количество люминофоров на единицу площади экрана монитора фиксированная, а количество пикселей изображения, которое приходится на единицу площади экрана, вообще говоря, нет. Если одному пикселу экрана отвечать один пиксел изображения с рис. 3.27, то один пиксел экрана должен будет воспроизводить уже 4 пикселы изображения 3.27б и, соответственно, 16 пикселов изображения 3.27в. Это значит, что вывод изображения на экран монитора — это довольно сложный преобразования, заключается в установлении соответствия между разрешением изображения и разрешением монитора. Ясно, что проблемы возникают только в случае, когда разрешение изображения больше разрешения монитора. Противоположный случай неинтересен, поскольку он реализуется повторением одного пикселу изображения несколькими пикселами монитора и проводит к появлению зазубрины в изображены, а в конечном итоге к потере его фотореалистичности.

  

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

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

Нельзя назвать преимуществом также то обстоятельство, что размер растрового изображения практически не зависит от его содержания. Если не применять никаких средств сжатия, то размер изображения будет зависеть только от разрешения, но не от того сфотографировано много предметов, или мало.

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

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

Векторные изображения

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

Математическую основу векторных изображений составляют кривые Безье, названные так по имени французского инженера Пьера Безье. В 70-х годах Безье применил полиномы третьего порядка для управления режущими автоматами с числовым управлением для раскроя для автомобилей на заводах "Рено". Так случилось, что именно кривые Безье стали стандартом для описания векторной графики, хотя и сегодня все еще используются некоторые другие кривые, которые мы рассмотрим позже при изучении шрифтовых изображений.

Кривую Безье задают две пары точек или два вектора, каждый из которых выходит из опорной точки и заканчивается в управляющей точке. Опорные точки определяют начало P0 (x0, y0) и конец P3 (x3, y3) кривой, а управляющие P1 (x1, y1) и P2 (x2, y2) — ее форму.

Конечно по стандарту, определенному фирмой Adobe, кривую Безье задают в параметрической форме:

x (t) = axt3 + bxt2 + cxt + x0;

y (t) = ayt3 + byt2 + cyt + y0;

0 d t d 1.

Коэффициенты определяют следующим образом. При t = 0 получим x = x0, y = y0. Итак кривая проходит через точку P0 (x0, y0). При t = 1 кривая пройдет через P3 (x3, y3), т.е.

x3 = ax + bx + cx + x0,;

y3 .= ay + by + cy + y0.

Управляющие точки определяют следующим образом:

x1 = x0 + cx / 3;

x2 = x1 + (cx + bx) / 3 и

y1 = y0 + cy / 3;

y2 = y1 + (cy + by) / 3.

Главным при выборе управляющих точек является их связь с производными в начальной и конечной опорных точках. Нетрудно убедиться, что

Значения коэффициентов можно вычислить по формулам

cx = 3 (x1 — x0) bx = 3 (x2 — x1) — cx ax = x3 — x0 — cx — bx

cy = 3 (y1 — y0) by = 3 (y2 — y1) — cy ay = y3 — y0 — cy — by

Каноническое уравнение кривой Безье вступит такого вида:

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

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

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

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

Проблемами векторной графики является ее нереалистичность. Это графика рисунков, а не фотографий. другая проблема заключается в отсутствии автоматизированного ввода вроде сканера. Векторное изображение нельзя ввести с оригинала, его надо создавать непосредственно в компьютере.