КОЛІРНІ МОДЕЛІ. ЗМІШУВАННЯ КОЛЬОРІВ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
О
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2005
Тип роботи:
Практична робота
Предмет:
Моделювання

Частина тексту файла

Міністерство освіти і науки України Національний університет
„Львівська Політехніка”
Практична робота 1
„ КОЛІРНІ МОДЕЛІ. ЗМІШУВАННЯ КОЛЬОРІВ” з курсу „ Геометричне моделювання у конструюванні інженерних об'єктів і систем ”
Львів-2005
ІНДИВІДУАЛЬНЕ ЗАВДАННЯ Варіант 3 а)
провести перетворення кольору (див. Додаток 2, номер кольору=номеру варіанту) з RGB => CMY; б)
зробити один колір (див. Додаток 2, перший колір = номер варіанту) світлішим на 35%, та другий колір (див. Додаток 2, другий колір = номер варіанту+35) світлішим на 1/5 та змішати два отриманих кольори.
3. aqua 00 FF FF 38. darkviolet 94 00 D3
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
КОЛІРНА МОДЕЛЬ CMYK Більшість кольорів, що ми бачимо в оточуючому нас світі, є наслідком відбивання і поглинання світла. Наприклад, сонячне світло, падаючи на зелену траву, частково поглинається, і відбивається тільки його зелена складова. При друкуванні на принтері, на папір наноситься кольорова фарба, що відбиває тільки світло визначеного кольору. Усі інші кольори поглинаються, чи віднімаються із сонячного світла. На ефекті віднімання кольорів побудована модель представлення кольору, що називається CMYK. Модель використовується в поліграфії. Як основні кольори тут також приймаються три: Cyan (голубой), Magenta (рожевий чи його ще називають пурпурний), Yellow (жовтий), К (чорний від слова ЬіасК) використовується для підвищення контрастності надрукованих зображень. Ця модель використовується для опису відбитих від поверхні папера кольорів, тому вона називається субтрактивной (subtract -віднімати). Між моделями RGB та CMYK немає однозначної відповідності, тобто деякі відтінки кольору однієї моделі не можуть бути в принципі відтворені в іншій моделі і навпаки. Саме цим викликана необхідність калібрування устаткування (сканера, монітора і принтера) на предмет відповідності кольорів (рис. 8). Рис. 8 Геометричне представлення колірної моделі CMYK
Вибір кольорів для моделі невипадковий, вони тісно зв'язані з кольорами моделі RGB. Блакитний колір утвориться при поглинанні червоного, пурпурний при поглинанні зеленого, а жовтий відбитий колір виходить у результаті поглинання синього. При нанесенні більшої кількості фарб різних кольорів поглинається більше кольору і менше відбивається. Таким чином, при змішуванні максимальних значень цих трьох кольорів ми повинні одержати чорний колір, а при повній відсутності фарби повинний вийти білий колір. Однак у дійсності при змішуванні трьох фарб виходить брудно-бурий колір, тому що використовувані реальні барвники відбивають і поглинають колір не так, як описано в теорії. Чорний колір виходить тільки при додаванні чорної фарби, тому в модель CMYK і додана чорна складова. Система CMYK широко застосовується в поліграфії. Типографське устаткування працює винятково з цією моделлю, та й сучасні принтери теж використовують барвники чотирьох кольорів. При друкуванні на папір наносяться кілька шарів прозорої фарби, і в результаті ми одержуємо кольорове зображення, що містить мільйони різних відтінків. Системи RGB і CMYK зручні при роботі з конкретним устаткуванням, але не дуже зручні для людського сприйняття. У різновиді цієї моделі, що називається CMY, відсутній чорний колір, вона застосовується значно рідше.
ЗМІШУВАННЯ КОЛЬОРІВ
Кольори на основі додавання та віднімання. Хоча світловий потік і складається з хвиль різної довжини, наші очі в першу чергу реагують на світлові довжини хвиль червоного, зеленого і синього кольорів. Червоний, зелений і синій називають аддитивньїми чи кольорами на основі додавання (additive primaries), тому що нескінченна безліч кольорів може бути створена шляхом додавання різних ступенів насиченості червоного, зеленого і синього світла. Шляхом додавання одних основних кольорів до інших одержують ще три кольори: ціан, маджента і жовтий. Якщо скласти разом червоний, зелений і синій, вийде білий колір. Нижче видно, як червоний, зелений і синій, сполучаючись один з одним, створюють білий, ціан, мадженту і жовтий: червоний + зелений + синій = білий зелений + синій = ціан синій + червоний = маджента зелений + червоний = жовтий З ціану, мадженти і жовтого можуть бути створені інші нескінченні кольори. Наприклад, нижче показується, як ці три кольори можуть застосовуватися для одержання чорного, червоного, зеленого і синього: ціан + маджента + жовтий = чорний ціан + маджента = синій жовтий + маджента = червоний жовтий + ціан = зелений Ціан, маджента і жовтий створюють інші кольори шляхом абсорбції і вирахування кольорів. Тому їх іноді називають кольорами на основі віднімання чи субтрактивньїми (subtractive primaries). Це основа більшої частини процесу друк. Наприклад, коли крапки жовтої друкованої фарби перекривають крапки друкованої фарби маджента, виходить червоний. Коли дві друковані фарби комбінуються, вони поглинають зелені і сині довжини світлових хвиль і відбивають оку тільки червоні. Найпростіший спосіб змішати два кольори сі та с2, це обчислити середні значення rgb-значень (тобто 50% на 50%). Приклад на Delphi [5]: function
GetMixColor
(cl,
c2:
TColor):
TColor; begin //
обчислюємо
середні
значення Червоного,
Синього
і
Зеленого значень //
кольорів
сі
та
с2: Result
:= RGB
( (GetRValue
(cl)
+
GetRValue
(c2))
div
2, (GetGValue
(cl)
+
GetGValue
(c2))
div
2, (GetBValue
(cl)
+
GetBValue
(c2))
div
2 ); end;
ПОБУДОВА СВІТЛІШИХ ТА ТЕМНІШИХ КОЛЬОРІВ Далі показаний принцип одержання зі звичайного стандартного кольору більш темний чи більш світлий. Так само розглянуто, як цей принцип реализовани в програмному коді на Delphi. Кожний із трьох основних кольорів (Червоний, Зелений, Синій) можуть мати значення від 0 до 255, відповідно скомбінувавши їх ми можемо одержати 16,777,216 можливих кольорів. Візуально це можна предствить як три осі куба, у якому напрямку х, у та z відповідають за кольори червоний, зелений і синій. У сполученні ці напрямки дають точку в кубі, що представляє один колір з 16 мільйонів. Точка куба, у якій значення дорівнює 0 (0,0,0) відповідає чорному кольору, значення (255,255,255) - білому кольору, (255,0,0) - чисто червоному тощо. Якщо візуально провести лінію між яким-небудь кольором (r,g,b) і білим кольором (255,255,255), то вийде, що на цій лінії будуть лежати всі значення даного кольору (r,g,b). Якщо ми будемо рухатися по лінії у бік білого кольору, то яскравість буде збільшуватися доти, поки не одержимо чисто білий колір. Те ж саме можна зробити і для зменшення яскравості кольору. Досить провести лінію з кольору (r,g,b) у чорний (0,0,0). Тобто при русі по лінії до чорного кольору ми будемо зменшувати яскравість доти, поки не одержимо чорний колір. Функція Darker повертає нове значення кольору, що буде на певну кількість відсотків темніше. Відповідно при 100% ми одержимо чорний колір. Функція Lighter повертає колір, що світліше на певну кількість відсотків вхідного. 100% - білий колір. Функції Darker та Lighter вимагають 2 параметри і використовуються приблизно так: Panell.Color
:=
Darker(clBlue,20); Отримуємо панель кольору, що на 20% темніше звичайного синього кольору. Функції: function Darker(Color:TColor; Percent:Byte):TColor; var r,g,b:Byte; begin Color:=ColorToRGB(Color); r:=GetRValue(Color); g:=GetGValue(Color); b:=GetBValue(Color); r:=r-muldiv(r,Percent,100);
//процент % зменшення яскравості g:=g-muldiv(g,Percent,100); b:=b-muldiv(b,Percent,100); result:=RGB(r,g,b); end; function Lighter(Color:TColor; Percent:Byte):TColor; var r,g,b:Byte; begin Color:=ColorToRGB(Color); r:=GetRValue(Color); g:=GetGValue(Color); b:=GetBValue(Color); r:=r+muldiv(255-r,Percent,100); //процент збільшення яскравості g:=g+muldiv(255-g,Percent,100); b:=b+muldiv(255-b,Percent,100); result:=RGB(r,g,b); end; Також представлені деякі функції, у яких вже додані стандартні значення процентов. function SlightlyDark(Color:TColor):TColor; begin Result := Darker(Color,25); end; function Dark(Color:TColor):TColor; begin Result := Darker(Color,50); end; function VeryDark(Color:TColor):TColor;
begin Result := Darker(Color,75);
end; function SlightlyLight(Color:TColor):TColor;
begin Result := Lighter(Color,25);
end; function Light(Color:TColor):TColor;
begin Result := Lighter(Color,50);
end; function VeryLight(Color:TColor):TColor;
begin Result := Lighter(Color,75);
end; Приклад застосування:
Panell.Color := Light(clBlue);
Panell.Color := SlightlyDark(clRed);
Panell.Color := VeryLight(clMagenta);
Текст програми unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, StdCtrls, ExtCtrls;
type
TMainForm = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
XPManifest1: TXPManifest;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Label7: TLabel;
Label8: TLabel;
Shape5: TShape;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
function Lighter(r,g,b:integer;Percent:byte):Tcolor; begin
r:=r+muldiv(255-r,percent,100);
g:=g+muldiv(255-g,percent,100);
b:=b+muldiv(255-b,percent,100);
lighter:=RGB(r,g,b);
end; function GetMixColor(c1,c2: TColor):Tcolor; begin GetMixColor:=RGB(
(getRValue(c1)+GetRValue(c2)) div 2,
(getGValue(c1)+GetGValue(c2)) div 2,
(getBValue(c1)+GetBValue(c2)) div 2
); end;
procedure TMainForm.Button1Click(Sender: TObject); var
r,g,b,c,m,y,r2,g2,b2:integer; begin
r:=StrToInt(Edit1.Text);
g:=StrToInt(Edit2.Text);
b:=StrToInt(Edit3.Text);
r2:=StrToInt(Edit7.Text);
g2:=StrToInt(Edit8.Text);
b2:=StrToInt(Edit9.Text);
c:=255-r;
m:=255-g;
y:=255-b;
Edit4.Text:=IntToStr(c);
Edit5.Text:=IntToStr(m);
Edit6.Text:=IntToStr(y);
Shape1.Brush.Color:= b shl 16 or g shl 8 or r;
Shape2.Brush.Color:= b2 shl 16 or g2 shl 8 or r2;
Shape3.Brush.Color:=Lighter(r,g,b,35);
Shape4.Brush.Color:=Lighter(r2,g2,b2,20);
Shape5.Brush.Color:=GetMixColor(Shape3.Brush.Color,Shape4.Brush.Color); end;
procedure TMainForm.Button2Click(Sender: TObject); begin Close; end;
end.
Результат роботи програми

Висновок В даній лабораторній роботі ми ознайомилисьз Колірною моделлю CMYK, з перетворенням кольорів з однієї моделі в іншу, змішуванням кольорів та побудовою світліших кольорів.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Новини