Лекциите на ФМИ

За да изглеждаме умни пред другите

Начало

Начална страница

Членове на
сайта

Присъедини
се

За автори

Препоръки за писане на
статии

Формат на статиите

Форум

Новини от
форума

Последни
промени

Списък със
задачи

Първи курс

Анализ

ЕАИ

Геометрия

ООП

Втори курс

Структури от Данни

Компютърни Архитектури

КАрх - Практикум

Основи на компютърната
графика

Функционално програмиране

ФП - Практикум

Трети курс

Логическо програмиранеУпражнения

Числени методиУпражнения

Системно
програмиранеУпражнения

Мрежово
програмиранеУпражнения

За
администратори

Create account or Sign in

Начало

Начална страница

Членове на сайта

Присъедини се

За автори

Препоръки за писане на
статии

Формат на статиите

Последни
промени

Панел за
администратори

Лекции

Първи Курс

Анализ

ЕАИ

Геометрия

ООП

Втори курс

Структури от Данни

Компютърни Архитектури

КАрх - Практикум

Основи на компютърната
графика

Функционално програмиране

ФП - Практикум

Трети курс

Логическо програмиранеУпражнения

Числени методиУпражнения

Системно
програмиранеУпражнения

Мрежово
програмиранеУпражнения

Избираеми дисциплини

Математическа Логика

Дискретна Оптимизация

Теория на Множествата

Теория на Графите

Избрани Глави от
Анализа

Тема 3 - Цветови модели

ФМИ за начинаещи
» Основи на компютърната графика » Тема
3 - Цветови модели

Цветови модели (RGB, HSV, CMYK, YCrCb, CIELAB)

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

foldunfold

Table of Contents

Увод

RGB

CMYK

CIELab

Пресмятане

HSV

YCrCb

Увод

Както знаете на екрана изображенията се показват чрез растер, т.е правоъгълна
матрица от пиксели. Всеки пискел има свой собствен цвят. Това, което ще
разгледаме в тази лекция са различните начини на задаване на цвят на даден
пиксел, именно - цветовия модел. За пълнота ще споменем и не
съвсем цветните модели

черно-бял. Обърнете внимание, че за разлика от черно-белите телевизори тук
има САМО черно и бяло - т.е няма никакво сиво :)

възможни цветове - черен и бял

заемана памет: 1 бит. Всеки бит е единица (1) или нула (0) и съответства
на черно / бяло (може и наобратно). Ако малко си поиграете с побитови
операции ще постигнете този минималистичен размер. Някои стари дисплеи (може
и на телефони) имат само един цвят при тях един пиксел се кодира точно в
един бит - пести се доста памет.

полутонови. Това е еквивалента на черно-белите телевизори. Има всички
цветове между бялото и черното. Т.е всички степени на сивото.

възможни цветове - всички степени на сивото

заемана памет: 1 байт1. В един байт се кодират 255 различни нюанса
на сивото. За повечето употреби това е напълно достатъчно.

цветни. Тук нещата стават интересни

възможни цветове - всички2

заемата намет - 3 байта3. Обикновенно всеки цвят има 3 компоненти,
като можем да смятаме, че 3те са от 0 до 255 и да ги кодираме в
по един байт. (разбира се, тези 3 компоненти могат да значат различни неща.
Виж по надолу).

Ще разгледаме най-основните начини за представяне на цвят и разбира се как от
едно представяне да преминем към друго.

RGB

Най-известният начин е така нареченото RGB, съкратено от
Red, Green, Blue. Както може
да се досетите, трите компоненти, определящи даден цвят, са именно интензитетите
на основните цветове (с каква сила основните цветове присъстват в дадения)

Още информация за трите цвята

Скрий

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

Всички останали цветове се получават от
подходящо смесване на основните. Този начин е най-широко разпространен,
мониторите използват точно това представяне, за да изобразят нещо. Всеки пиксел
е всъщност 3 малки лампички - червена, зелена и синя. Тъй като в миналото не са
си давали зор да правят голяма абстракция между хардуера и софтуера, то и
програмистите са били принудени да използват този начин на задаване на цветове,
освен всичко друго той не е чак толкова контра-интуитивен. Под "миналото" се има
предвид "преди две седмици".

CMYK

3те допълнителни цвята на RGB са Cyan,
Magenta, Yellow (в приблизителен превод "светло синьо",
"алено" - нарича се и просто "магента", и "жълто"). В RGB те се получават
така:
Cyan = Green + Blue
Magenta = Red +
Blue
Yellow = Red + Green
Ако разсъждаваме в термините на
RGB, черното обозначава липсата на всеки от трите основни цвята
от RGB (т.е, ако трите цветни компонента - червена, зелена, синя - са нула, се
получава черно, а ако са max - 255 или 1, зависи дали ги разполагаме в
дискретния интервал [0, 255], или в реалния интервал [0, 1] - се получава
бял).
Съществува цветова схема, в която циановото,
магентата и жълтото, тези три допълнителни (за RGB) цвята са
основни, а червеното, зеленото и
синьото пък са допълнителни и се получават чрез смесването на първите
три. Тази схема се нарича CMYK (Cyan,
Magenta, Yellow, Black).
Какво? К означава черно, ок? По-добре ли щеше да е, ако го бяха
кръстили ЦМУБ?

Още информация за трите цвята

Скрий

При материален носител - когато цветна повърхност отразява светлина - се
наблюдава поглъщане. Накратко, от осветената повърхност се поглъщат
някои дължини на вълните на светлината, отговарящи на дадени цветове, а други се
отразяват. Цветът на повърхността зависи от това, кои вълни се
отразяват от нея. Тоест, не се "добавя" към първоначалната
тъмнина, а се "изважда" цвят от първоначалната светлина. Например тревата е
зелена, тъй като хлорофилът в нея отразява вълните с дължина, равна на дължината
на вълната на зеления цвят. Тази различна специфика на цветообразуване означава,
че при смесване на цветовете ще се поглъщат все повече дължини на вълните.
Затова, първоначално в печатарската индустрия, се избират други основни цветове
- Cyan, Magenta, Yellow,
Black. Тези цветове са такива, че при смесването на първите три
се получава черно, а бяло получаваме чрез неоцветената бяла повърхност, върху
която печатаме желаното изображение.
Черното е добавено към първите три
поради техничски причини. Доста използвано е в печата - текстовете са предимно
черни, тъмните полутонове на изображенията и т.н. - и е значително по-евтино да
има евтин черен цвят, отколкото да се смесват големи количества от три по-скъпи
цвята. Освен това е много трудно с бои да се получи *точно* черно - почти винаги
става тъмно тъмно кафяво. Основните цветове при CMYK са
допълнителни при RGB
и обратно. Това би трябвало да е сравнително очевидно, тъй като RGB е
адитивна система, а CMYK е субтрактивна. Например, Жълтото. То
се получава като се извади синия цвят от бялата светлина(CMYK) или като се
добави към черната тъмнина червено и зелено.

CIELab

Както казахме по-рано RGB е възникнало поради чисто технически причини,
зависещи от методологията на работа на мониторите. За добро или лошо, начинът по
който работи компютърът не съвпада много с начина, по който разсъждава човекът.
Ето затова възникнал въпросът за представяне на цветовете по някакъв по-добър,
по-осезателен за човека начин. Било решено яркостта да бъде отделена
като един от компонентите, а другите 2 да отговарят за цвета. Пресмятането на
RGB цвят в L*a*b е 'нагласено'. Само погледнете цветовете в матрицата по-долу.
Това нагласяне идва от факта, че RGB цвета по никакъв начин не отразява неговата
яркост (lightness, brightness value) - един доста важен показател при
дигитална обработка на изображения. Ето малко за значението на 3те
компонента

L*

яркост

а*

тоново отношение между червеното и зеленото

b*

тоново отношение между жълтото и синьото

Пресмятане

Първо, за всеки цвят трябва да определим
по следния начин (приемаме, че цветовете RGB са представени с реално число от
интервала [0, 1]):
(1)

Стойностите на
при белия цвят (т.е )
са по-интересни за нас, бележим ги с :
(2)

Освен тези 3 числа, особено голям интерес е и числото .
Защо - ще разберете след малко.
Сега вече дойде ред на пресмятането на самите
компоненти ().
То става по следните формули:
(3)

Какви са всички тези измислени константи? Какви са тези магически числа в
стил 0.119193? Само истинските джедаи ще имат шанса да разберат, в края на
обучението си.

HSV

Това представяне е най-известното в обработката на изображения. Компонентите
му значат:

H

Hue

тон

S

Saturation

наситеност

V/B

Brightness Value

яркост

Последната буква понякога е V, понякога B. И двете отговарят за яркостта -
няма разлика между самите модели. Изчисляването на H става по следния
начин:
(4)

Това, разбира се, е спрямо предходния цветови модел.
В пространството може
да си мислим HSV като обърнат конус, в който сме разположили цветовете. H е ъгъл
(има тригонометрична функция), V показва на какво разстояние сме от върха на
конуса, S показва отношението между разстоянието от точката до височината на
конуса и радиуса на сечението, перпендикулярно на основата през точката.

YCrCb

Американската телевизия не може да остане назад - затова си измисля собствена
цветова схема за лично ползване. Основните и компоненти са

Y

яркост

Cr

close to red - близост до червеното

Cb

close to blue - близост до синьото

Footnotes

1. разбира се може и повече/по-малко

2. Освен Октарина

3. зависи от начина, по който се кодират цветовете, но 3
байта (по един за всеки основен цвят/компонент) е
най-стандартно

page_revision: 17, last_edited: 1233704502|%e %b %Y, %H:%M %Z (%O ago)

EditRate
(+2)Tagsdiscuss (0) History Files Print
Site tools+ Options

Edit sections Append Edit meta Watchers Backlinks Page source Parent Lock
page Rename Delete

Help | Terms
of Service | Privacy | Report a bug | Flag as objectionable
Powered by Wikidot.com

Unless otherwise stated, the content of
this page is licensed under Creative
Commons Attribution-NonCommercial-ShareAlike 3.0 License

Click here to edit contents of this page.

Click here to toggle editing of individual
sections of the page (if possible). Watch headings for an "edit" link when
available.

Append content without editing the whole
page source.

Check out how this page has evolved in the past.

If you want to discuss contents of this page -
this is the easiest way to do it.

View and manage file attachments for this page.

A few useful tools to manage this Site.

See pages that link to and include this page.

Change the name (also URL address, possibly
the category) of the page.

View wiki source for this page without
editing.

View/set parent page (used for creating
breadcrumbs and structured layout).

Notify administrators if there is
objectionable content in this page.

Something does not work as expected? Find out
what you can do.

General Wikidot.com documentation and help
section.

Wikidot.com Terms of Service - what you can,
what you should not etc.

Wikidot.com Privacy Policy.