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

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

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

Министерство образования и науки Российской Федерации

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

А.И. ДРУЖИНИН, Т.А. ДРУЖИНИНА

АЛГОРИТМЫ КОМПЬЮТЕРНОЙ ГРАФИКИ

Часть 3

Утверждено Редакционно-издательским советом университета в качестве учебного пособия

НОВОСИБИРСК

2009

УДК 004.92.021(075.8) Д 761

Рецензенты: канд. техн. наук, ст. преп. Е.Л. Веретельникова, канд. пед. наук, канд. техн. наук, доц. В.В. Вихман

Работа подготовлена на кафедре вычислительной техники для студентов II курса АВТФ

(направление 230100) и студентов V курса АВТФ заочного отделения (специальности 230101, 230105)

Дружинин А.И.

Д 761 Алгоритмы компьютерной графики : учеб. пособие. В 3 ч. / А.И. Дружинин, Т.А. Дружинина – Новосибирск : Изд-во НГТУ,

2009. – Ч. 3. – 48 с.

ISBN 978-5-7782-1240-4

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

Пособие адресовано студентам, изучающим курс «Компьютерная и инженерная графика» дневного отделения и курс «Компьютерная графика» заочного отделения АВТФ, а также может быть полезно разработчикам программного обеспечения.

 

УДК 004.92.021(075.8)

ISBN 978-5-7782-1240-4

© Дружинин А.И., Дружинина Т.А., 2009

 

© Новосибирский государственный

 

технический университет, 2009

2

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

1.ПРИНЦИПЫ ФОРМИРОВАНИЯ ОТТЕНКОВ

1.1.Модели смешения

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

Для самосветящихся объектов используется аддитивное формирование оттенков (от английского addition – сложение), когда цвет формируется за счет смешения трех основных цветов. Обычно используется модель RGB (Red – красный, Green – зеленый, Blue – синий).

Для несамосветящихся объектов используется cубтрактивное формирование оттенков (от английского subtraction – вычитание), основанное на вычитании из падающего света определенных длин волн. В этом случае обычно применяется модель CMY (Cyan – голубой, Magenta – пурпурный, Yellow – желтый).

Эти модели смешения цветов показаны на рис. 1.1 и 1.2. На рис. 1.3 приведены результаты смешения для аддитивной и субтрактивной моде-

лей, где R – Red (красный), G – Green (зеленый), B – Blue (синий), W – White (белый), C – Cyan (голубой), M – Magenta (пурпурный), Y – Yellow

(желтый), K – blacK (черный).

Ошибка!

Рис. 1.1. Аддитивная модель смешения цветов (RGB)

3

Рис. 1.2. Субтрактивная модель смешения цветов (CMY)

Рис. 1.3. Результаты смешения цветов для аддитивной и субтрактивной моделей

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

4

(синий + красный), так как белый = зеленый + синий + красный = зеленый + пурпурный.

Итак, дополнительные цвета:

R – C

G – M

B – Y.

Пример субтрактивного формирования оттенков (в упрощенном виде) представлен на рис. 1.4.

Белый цвет

Голубая краска

Желтая краска Белая бумага

Рис. 1.4. Субтрактивное формирование оттенков

При освещении белым светом (W = R + G + B) в слое голубой краски поглощается красный, а в слое желтой – синий (так как это дополнительные цвета). В результате мы видим зеленый цвет, который отражается от белой бумаги.

1.2. Цветовые модели

Назначение цветовой модели – дать средства описания цвета в пределах некоторого цветового охвата, в том числе и для интерполяции цветов. Наиболее часто используемые модели – RGB, CMY, CMYK, YIQ, HSV (HSB) и HLS.

1.2.1. Модель RGB

Модель RGB (Red, Green, Blue – красный, зеленый, синий) – аппаратно ориентированная модель, используемая в самосветящихся объектах для аддитивного формирования оттенков (рис. 1.5).

5

Рис. 1.5. Цветовой куб модели RGB

Начало отсчета (0,0,0) соответствует черному цвету (K – blacK), максимальное значение (1,1,1) соответствует белому цвету (W – White). По диагонали располагаются оттенки серого цвета.

1.2.2. Модели CMY и CMYK

Модель CMY (Cyan, Magenta, Yellow – голубой, пурпурный, желтый) – аппаратно ориентированная модель, используемая в полиграфии для субтрактивного формирования оттенков (рис. 1.6).

Рис. 1.6. Цветовой куб модели CMY

6

Начало отсчета (0,0,0) соответствует белому цвету, максимальное значение (1,1,1) соответствует черному цвету. По диагонали располагаются оттенки серого цвета.

Преобразование между пространствами RGB и CMY определяется по следующей формуле:

[R G B] = [1 1 1] – [C M Y]

Модель CMYK (Cyan, Magenta, Yellow, blacK– голубой, пурпур-

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

1.2.3. Модель YIQ

Модель YIQ – аппаратно ориентированная модель, используемая в телевидении и служащая для сокращения передаваемой полосы частот за счет использования психофизиологических особенностей зрения. Модель используется в телевизионных передающих системах, поддерживающих североамериканский стандарт NTSC. Каждый цвет в ней задается с помощью установки трех параметров Y- интенсивности (luminance) и двух цветностей I и Q, позволяющих совместно управлять созданием цвета с помощью зеленого, синего, желтого и пурпурного цветов. Установка минимальных значений I и Q (0, 0) приводит к получению зеленого цвета, а установка максимальных значений (255, 255) дает пурпурный цвет. В случае использования монохромного дисплея на экране будет отображена только компонента Y. Преобразования между пространствами RGB и YIQ для телевизионного формата NTSC определяются по формулам, представленным на рис. 1.7 и 1.8.

Y

0.299

0.587

0.114

R

I

0.569

0.274

0.322

G

Q

0.211

0.522

0.311

B

Рис. 1.7. Преобразование RGB–YIQ

7

R

1

0.956

0.623

Y

G

1

0.272

0.648

I

B

1

1.105

0.705

Q

Рис. 1.8. Преобразование YIQ–RGB

1.2.4. Модели HSV и HSB

Модели HSV (Hue, Saturation, Value – цветовой фон, насыщен-

ность, светлота) и HSB (Hue, Saturation, Brightness – цветовой фон, на-

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

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

Подпространство HSV можно представить как перевернутую шестигранную пирамиду (рис. 1.9).

Рис. 1.9. Цветовая модель HSV

По вертикальной оси пирамиды задается V – светлота, меняющаяся от 0 до 1. При значении V = 1 цвета наиболее интенсивны.

Цветовой тон – H, задается углом, отсчитываемым вокруг вертикальной оси: 0º – красный, 60º – желтый, 120º – зеленый, 180º – голу-

8

бой, 240º – синий, 300º – пурпурный. При этом дополнительные цвета расположены напротив друг друга.

Насыщенность – S меняется от 0 до 1.

Точка V = 0, в которой находится вершина пирамиды, соответствует черному цвету. Значения S при этом могут быть любыми. Точка с координатами V = 1, S = 0 соответствует белому цвету. Промежуточные значения V при S = 0 (ось конуса) соответствуют серым цветам. Если S = 0, то значения H считаются неопределенными.

Далее приведены подпрограммы перехода от RGB к HSV и обратно

(рис. 1.10 и 1.11).

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

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

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

//RGB – красный, зеленый, синий; основные цвета (0-1) //Min, Max – функции определения минимума и максимума

real RGBtoHSV (real R, real G, real B) { real H, S, V, Cr. Cg, Cb, Temp;

//Определение светлоты

V=Max(R, G, B);

//Определение насыщенности

Temp=Min(R, G, B); if (V==0)

S=0; else

S=(V-Temp)/V;

//определение цветового тона if (S==0)

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

Cr=(V-R)/(V-Temp);

Cg=(V-G)/( V-Temp);

Cb=(V-B)/( V-Temp);

//цвет между желтым и пурпурным if (R==V)

H=Cb-Cg;

//цвет между голубым и желтым if (G==V)

H=2+Cr-Cb;

//цвет между пурпурным и голубым if (B==V)

H=4+Cg-Cr;

9

//перевод в градусы

H=60*H;

//приведение к положительным величинам if (H<0)

H=H+360;

}

}

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

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

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

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

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

void main() {

real H, S, V, R, G, B, N, M, K; int I;

//проверка ахроматического случая if (S==0)

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

R=V;

G=V;

B=V;

}

else

cout<<”Ошибка, H определено”<<endl; else {

//хроматический случай if (H==360)

H=0; else

H=H/60;

I=Floor(H); //Функция, выделяющая целую часть

числа

F=H-I; M=V*(1-S); N=V*(1-S*F);

K=V*(1-S*(1-F)); if (I==1) {

R=V; G=K; B=M;

}

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

10

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