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

Алгоритмы компьютерной графики. В 3 ч. Ч. 3 (200

.pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
730.51 Кб
Скачать

}

if (I==3) { R=M; G=V; B=K;

}

if (I==4) { R=M; G=N; B=V;

}

if (I==5) { R=K; G=M; B=V;

}

if (I==6) { R=V; G=M; B=N;

}

}

}

Рис. 1.11. Подпрограмма перехода от HSV к RGB

Модель HSB используется в графическом редакторе Adobe Photoshop. Геометрически эта модель представляется либо в виде перевернутого конуса (по вертикальной оси задается значение яркости – R), либо в виде цветового цилиндра (см. [9], рис 4.3).

1.2.5. Модель HLS

Модель HLS (Hue, Lightness, Saturation – цве-

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

Подпространство HLS – двойной конус

(рис. 1.12).

Черный цвет задается вершиной нижнего конуса и соответствует значению L = 0, а белый цвет – вершиной верхнего конуса и соответствует значению L = 1. Максимально интенсивные цветовые тона соответствуют основаниям конусов при L = 0.5, что не совсем удобно. В некоторых источниках [1] цветовая модель HLS представляется в виде двойной шестигранной пирамиды (рис. 1.13).

Рис. 1.12. Цветовая модель HLS

11

R

Рис. 1.13. Цветовая модель HLS в виде двойной пирамиды

Подпрограммы перехода от RGB к HLS и обратно (рис. 1.14 и 1.15).

//Алгоритм преобразования RGB в HLS

//RGB – красный, зеленый, синий; основные цвета (0-1) //H – цветовой тон (0-360˚), 0˚ - красный

//L – светлота (0-1)

//S - насыщенность (0-1)

//Max – функция определения максимума //Min – функция определения минимума //определение светлоты

real RGBtoHLS (real R, real G, real B) { real M1, M2, Н, L, S, Cr, Cg, Cb; M1=Max(R, G, B);

M2=Min(R, G, B); L=(M1+M2)/2;

//определение насыщенности //ахроматический случай

if (M1==M2) { S=0;

H=-100; //неопределенность

}

else {

//хроматический случай

12

if (L<=0.5) S=(M1-M2)/(M1+M2);

else S=(M1-M2)/(2-M1-M2);

//определение цветового тона

Cr=(M1-R)/(M1-M2);

Cg=(M1-G)/(M1-M2);

Cb=(M1-B)/(M1-M2); if (R==M1)

H=Cb-Cg; if (G==M1)

H=2+Cr-Cb; if (B==M1)

H=4+Cg-Cr; H=60*H;

if (H<0) H=H+360;

}

return H;

}

Рис. 1.14. Подпрограмма перехода от RGB к HLS

//Алгоритм преобразования HLS в RGB

//H – цветовой тон (0-360˚), 0˚ - красный //L – светлота (0-1)

//S – насыщенность (0-1)

//RGB – красный, зеленый, синий; основные цвета (0-1)

void main () {

real Н, L, S, M1, M2; if (L<=0.5)

M2=L*(1+S); else M2=L+S-L*S; M1=2*L-M2;

//проверка на нулевую насыщенность if (S==0)

if ((H<=0)||(H>=360)) { //неопределенность переменной

R=L;

G=L;

B=L;

}

else

cout<<”Ошибка вследствие неверных данных”<<endl; else {

13

//расчет координат RGB RGB (H+120, M1, M2); R=Value;

RGB (H, M1, M2); G=Value;

RGB (H-120, M1, M2); B=Value;

}

}

//функция расчета координат RGB int RGB (int H, int M1, int M2) {

//приведение цветового тона и заданного диапазона int Value;

if (H<0) H+=360;

if (H>360) H-=360;

//определение координат if (H<60)

Value=M1+(M2-M1)*H/60; if ((H>=60)&&(H<180))

Value=M2;

if ((H>=180)&&(H<240)) Value=M1+(M2-M1)*(240-H)/60;

if ((H>=240)&&(H<=360)) Value=M1;

return Value;

}

Рис. 1.15. Подпрограмма перехода от HLS к RGB

2. ПОСТРОЕНИЕ РЕАЛИСТИЧЕСКИХ ИЗОБРАЖЕНИЙ

2.1. Введение. Свойства человеческого глаза

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

14

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

Воспринимаемый свет с помощью гибкого хрусталика фокусируется на задней части сетчатки глаза, которая содержит два типа светочувствительных рецепторов – колбочки (короткие и толстые рецепторы дневного зрения) и палочки (длинные и тонкие рецепторы ночного зрения). Колбочки (5–7 млн шт.) чувствительны только к относительно высоким уровням освещенности и присоединены к отдельному нерву, что позволяет различать мелкие детали. Палочки (75–150 млн шт.) чувствительны к низким уровням освещенности, но так как к одному нерву присоединены сразу несколько палочек, то они не способны различать мелкие детали. Цвет воспринимают только колбочки, которые бывают трех типов, – красные, зеленые и синие. Поэтому при низкой освещенности, когда колбочки теряют свою чувствительность, все предметы кажутся черно-белыми. И это объясняет, почему «ночью все кошки серы».

Пределы чувствительности глаза к яркости очень высоки, но он приспосабливается к «средней» освещенности обозреваемой сцены. Поэтому область с постоянной яркостью на темном фоне кажется ярче, чем на светлом (рис. 2.1), где I – интенсивность.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а

 

 

б

Рис. 2.1. Одновременный контраст

Это явление называется одновременным контрастом. На рис. 2.1, а и 2.1, б яркость центрального квадрата равна приблизительно 0.5 от максимальной яркости, но центральный квадрат на темном фоне (рис. 2.1, б) кажется более ярким. Эффект одновременного контраста особенно заметен при наблюдении уличного фонаря или дальнего света автомобиля днем и ночью.

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

15

ся как области, имеющие переменную интенсивность. Это явление называется эффектом полос Маха. Более точное определение эффекта дано в Большом психологическом словаре (сост. Б. Мещеряков, В. Зинченко, Олма-пресс, 2004):

«Полосы Маха (англ. Mach bands) – зрительная иллюзия, которую можно классифицировать как эффект одновременного краевого контраста. Эффект впервые описан австрийским физиком и философом Э. Махом (1860-е гг.) и носит его имя. Стимулом, на который смотрит наблюдатель, являются два гомогенных поля (пятна), имеющих разную яркость и разделенных областью постепенного, плавного яркостного перехода (градиента) от яркости одного поля к яркости другого. В этой ситуации наблюдатель на краях переходной области видит иллюзорные полоски: на границе светлого пятна видится еще более светлая полоса, а на границе темного пятна – еще более темная полоса. Таким образом, вместо монотонных переходов яркости “наблюдаются” резкие перепады, что можно также назвать “подчеркиванием (или усилением) контраста”».

Эффект полос Маха особенно заметен на полутоновых поверхностях, заданных многоугольниками.

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

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

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

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

16

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

Начнем рассмотрение простой модели освещения с диффузного отражения.

2.2.1. Диффузное отражение

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

Id = Ilkd cos θ,

где Id – интенсивность диффузно отраженного света; Il – интенсивность точечного источника;

kd – коэффициент диффузного отражения (0 ≤ kd ≤ 1), который зависит от материала объекта и длины волны падающего на него света, но в простых моделях освещения обычно является постоянным;

θ – угол между направлением на источник света и нормалью к поверхности, если θ > π/2, то источник света расположен за объектом

(рис. 2.2).

θ

Рис. 2.2. Диффузное отражение

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

17

ются очень большие вычислительные затраты, то в простой модели освещения используются: ka – коэффициент диффузного отражения рассеянного света (0 ≤ ka ≤ 1) и Ia – интенсивность рассеянного света, которые считаются постоянными для данной сцены. Таким образом, формула интенсивности диффузно отраженного света преобразуется к следующему виду:

Id = Iaka + Ilkd cos θ.

В этой формуле не учитывается расстояние от источника освещения до объекта. И если не учитывать расстояние, то объекты, расположенные на разных расстояниях до источника освещения, будут выглядеть одинаково. Теоретически освещенность зависит от расстояния как 1/d2 (если только источник освещения находится не в бесконечности), но практически 1/d2 дает большую разницу в освещенности близко расположенных объектов, и сцена получается нереалистична. Поэтому вместо коэффициента 1/d2 в простых моделях освещения используется коэффициент 1/(d + K), где K – это произвольная постоянная, выбираемая эмпирически или из каких-то эстетических соображений.

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

Id = Iaka + Ilkd cos θ /(d + K).

2.2.2. Зеркальное отражение

Интенсивность зеркального отраженного света зависит от угла падения и длины волны падающего света, а также от свойств поверхности объекта и положения наблюдателя (рис. 2.3).

Ө Ө

α

Рис. 2.3. Зеркальное отражение

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

18

наблюдения не совпадает с вектором отражения (вектора R и S), не может видеть зеркально отраженный свет. Но так как поверхность «обычно» не идеальна, то количество света, достигающего наблюдателя, зависит от пространственного распределения зеркально отраженного света. У гладких поверхностей распределение узкое или сфокусированное (маленькое яркое пятно), у шероховатых – широкое (большое расплывчатое пятно). При этом зеркальные блики перемещаются при перемещении наблюдателя.

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

Is = Ilw(θ, λ) cosnα,

где Il – интенсивность точечного источника;

w(θ, λ) – кривая отражения, представляющая отношение зеркально отраженного света к падающему как функцию угла падения (θ) и длины волны падающего света (λ). Так как функция w(θ, λ) очень сложна, то в простой модели освещения ее заменяют на коэффициент ks;

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

На рис. 2.4 показана функция cosnα для разных значений n, при этом (–π/2 ≤ α ≤ π/2).

cosnα

Рис. 2.4. Приближенная функция пространственного распределения зеркально отраженного света

19

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

2.2.3. «Полная» простая модель освещения

Суммируя все результаты, получим формулу

I= Id + Is = Iaka + Il(kd cos θ + ks cosnα )/(d + K).

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

 

 

 

 

 

 

m

II

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I I

 

k

 

 

j

k

 

cos θ

 

k

 

cosn

 

.

 

 

 

a

a

 

 

 

d

j

s

j

 

 

 

 

 

d

K

 

 

 

 

 

j

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

Если применить формулы скалярного произведения векторов, то

 

 

 

 

 

 

cosθ

 

 

n L

 

 

 

nˆ

ˆ

,

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

L

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R S

ˆ

ˆ

 

 

 

 

 

 

 

 

 

 

 

cos α

 

 

R

 

 

 

S

 

 

 

R S ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где

nˆ

ˆ ˆ

ˆ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, L,S и R – единичные векторы соответственно нормали к поверх-

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

 

II

 

kd nˆ

ˆ

ˆ ˆ n

 

I Ia ka

d

 

L ks R S

.

 

K

 

 

 

2.2.4. Определение нормали к поверхности

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

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]