Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Конспект лекций (полный)

.pdf
Скачиваний:
70
Добавлен:
13.11.2013
Размер:
1.08 Mб
Скачать

Буферы кадра

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

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

Работа в реальном времени с растровыми графическими устройствами осуществляется путем одновременного доступа к группам от 16 до 24 пикселей. В случае цветного буфера каждый пиксель может содержать до 32 бит, при этом все битовые плоскости для каждого пикселя доступны одновременно. При среднем времени доступа к каждой группе пикселей 1600 нсек, работа в реальном времени для буферов кадров размером 512 х 512 и 1024 х 1024. Хотя производить реальные работы на растровых устройствах труднее, чем на векторных дисплеях, но на них легче изображать сплошные фигуры с плавными переходами цветов.

Буферы кадра с растровой технологией

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

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

Адресация растра

Цифровая память, в которой может храниться пиксель, организована в один линейный список адресов, а координаты точки имеют линейные параметры (X, Y). Таким образом, необходимо преобразование координат в линейное пространство.

Предположим, что начальный адрес из памяти не равен нулю, тогда преобразование будет иметь вид:

Адрес = (Xmax - Xmin) (Y - Ymin) + (X - Xmin) + базовый адрес

Эта же схема работает и в случае, когда положительная ось Х направлена направо, а положительная ось Y – вниз, при условии адресации пикселей относительно верхнего левого угла.

Как правило, для заданного буфера кадра Xmax, Xmin, Ymin и базовый адрес постоянны и уравнение можно записать в следующем виде:

Адрес = K1 + K2 Y + X

K1 = базовый адрес - K2 Ymin - Xmin

K2 = Xmax - Xmin

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

Адрес (X ± 1, Y) = Адрес (X, Y) ± 1

Адрес (X, Y ± 1) = Адрес (X, Y) ± K2

Адрес (X ± 1, Y ± 1) = Адрес (X, Y) ± K2± 1

Изображение литер

Алфавитно-цифровые символы (литеры) записываются в буфер кадра с помощью маски. Литерная маска – маленький растр, содержащий относительные адреса пикселей, используемых для представления литеры. Сама маска просто содержит двоичные величины, обозначающие, используется или нет конкретный пиксель в маске для представления литеры.

Для простых черно-белых изображений 1 означает, что пиксель используется в представлении, а 0 – не используется.

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

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

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

Визуализация изображений

Человеческий глаз – очень сложная система. Он имеет почти сферическую форму с диаметром около 20 мм. Воспринимаемый свет с помощью гибкого хрусталика фокусируется на сетчатке глаза, в которой есть два типа рецепторов: колбочки и палочки. В центре задней полусферы собрано 6-7 млн колбочек, чувствительных только к сравнительно высоким уровням освещенности, причем каждая из них присоединена к отдельному нерву. Колбочки позволяют различать мелкие детали. В сетчатке находится около 75-150 млн палочек, чувствительных к очень низким уровням освещенности. К одному нерву присоединено сразу несколько палочек, поэтому они не способны различать мелкие детали.

Простейшая модель освещения

Световая энергия, падающая на поверхность, может быть поглощена, отражена или пропущена. Частично она поглощается и превращается в тепло, а частично отражается или пропускается. Объект можно увидеть, только если он отражает или пропускает свет; если он поглощает весь свет, то он невидим и называется абсолютно черным телом. Цвет объекта определяется поглощаемыми длинами волн.

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

Свет точечного источника отражается от идеального рассеивателя по закону косинусов Ламберта: интенсивность отраженного света пропорциональна косинусу угла между направлением света и нормалью к поверхности, т.е.

I = I0*k*cosΘ, где

I – интенсивность отраженного света

I0 – интенсивность точечного источника

k – коэффициент диффузного отражения поверхности (0 ≤ k ≤ 1)

Θ – угол между направлением света и нормалью к поверхности (0 ≤ Θ ≤ π/2)

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

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

I = I0*k*cosΘ + Iа*kа, где

Iа – интенсивность рассеянного света

kа – коэффициент диффузного отражения рассеянного света (0 ≤ kа ≤ 1), обычно константа.

Пусть даны два объекта, одинаково ориентированные относительно источника, но расположенные на разном расстоянии от него. Если найти их интенсивность по предложенной формуле, то она окажется одинаковой. Это значит, что когда предметы перекрываются, их невозможно различить, хотя в реальности один объект должен быть темнее другого. Если предположить, что источник света находится в бесконечности, то диффузная составляющая этой модели освещения обратится в ноль. В случае перспективного преобразования сцены в качестве коэффициента пропорциональности диффузной составляющей можно взять расстояние d от центра проекции до объекта. Однако, если центр проекции лежит близко к объекту, то коэффициент 1/ d2 изменяется очень быстро, и разница интенсивности очень велика. Как показывает практика, наиболее приемлемого можно добиться при линейном затухании. В этом случае модель освещения выглядит следующим образом:

I Iа * kа

 

I0 * k *cos

, где

d K

 

 

 

d – расстояние от центра проекции до объекта

K – экспериментальная постоянная

В некоторых случаях в простых моделях освещения пользуются эмпирической моделью Буи-Туонга Фонга, которая имеет вид:

I = I0*w (i, λ)*cosn α, где

w (i, λ) – кривая отражения, представляющая отношение зеркально отраженного света к падающему как функцию угла падения i и длины волны

λ.

n – степень, аппроксимирующая пространственное распределение зеркально отраженного света.

Большие значения n обычно характерны для металлов и других блестящих поверхностей, а малые – для неметаллических поверхностей, например, бумаги.

Можно отметить, что коэффициент зеркального отражения для некоторых неметаллов может быть всего 4%, в то время как для металлов более 80%.

Объединяя результаты модели Фонга и предыдущей модели, можем получить модель освещения следующего вида:

I I

 

*k

 

 

I

0

n

)

а

а

d K

(k *cos w i, *cos

 

 

 

 

 

 

 

 

 

 

 

 

Функция w (i, λ) достаточно сложна, поэтому ее заменяют константой, которую выбирают из эстетических соображений, либо определяют экспериментально.

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

Если есть несколько источников света, то их эффекты суммируются. В этом случае модель освещения определяется как:

m

I

 

 

I Iа *kа

 

0 j

(k *cos j

d K

j 1

 

 

 

 

k

 

n

 

 

)

2

*cos

j

 

 

 

 

,

где

m – количество источников света.

Закраска методом Гуро

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

Данный метод имеет недостатки в том, что:

1.Заметно проявление эффекта полос Маха. Это объясняется тем, что метод интерполяции обеспечивает лишь непрерывность значений интенсивности вдоль границ многоугольников, но не обеспечивает непрерывность изменения интенсивности.

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

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