Алгоритмы компьютерной графики. В 3 ч. Ч. 3 (200
.pdfМинистерство образования и науки Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
А.И. ДРУЖИНИН, Т.А. ДРУЖИНИНА
АЛГОРИТМЫ КОМПЬЮТЕРНОЙ ГРАФИКИ
Часть 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