Інтернет Windows Android

Растрове кодування. Двійкове кодування графічної інформації Кодування з палітрою

Питання 7. Глибина кольору

Глибина кольоруце кількість біт, що відводяться для кодування одного пікселя.

Якщо для кодування одного пікселя взяти 1 біт- то з його допомогою ми можемо отримати тільки 2 кольори:чорний (0) та білий (1), тобто чорно-біле зображення.

2 біти- 4 кольори (00, 01, 10, 11)

8 біт- 2 8 кольорів = 256 квітів і т.д.

Таким чином, кількість кольорів можна визначити за формулою:

де, N– кількість кольорів,

I - бітова глибина кольору.

Висновок: чим більше біт застосовується для кодування 1 пікселя, тим більше кольорів і реалістичніше зображення, але розмір файлу теж збільшується.

Таким чином, обсяг файлу точкової графіки– це добуток ширини та висоти зображення у пікселях на глибину кольору.

При цьому байдуже, що зображено на фотографії. Якщо три параметри однакові, розмір файлу без стиснення буде однаковий для будь-якого зображення.

Приклад розрахунку. Визначити розмір 24-бітного графічного файлу з роздільною здатністю 800 х 600.

Рішення. З умови файл має параметри

А = 800 пікселів

= 600 пікселів

Глибина кольору I= 24 біти(3 байти)

тоді формула об'єму файлу V = A + B + I

V = 800 х 600 х 24 = 11520000 біт = 1440000байт = 1406,25 Кбайт = 1,37 Мб

приклад 2.У процесі оптимізації кількість кольорів було зменшено з 65 536 до 256. У скільки разів зменшився обсяг файлу.

З формули N = 2 I випливає, що глибина кольору I 1 = log 2 65536 = 16 біт, а після оптимізації I 2 = log 2 256 = 8 біт

При цьому розміри картинки в пікселях не змінилися. використовуючи формулу для обчислення обсягу файлу маємо: V 1 = a x b x 16 = 16 ab

V 2 = a x b x 8 = 8 ab

Складаємо пропорцію V 1: V 2 = 16 ab: 8 ab

Отже: розмір графічного файлу залежить від розмірів зображення та кількості кольорів.

При цьому якісне зображення з 24 або 32 бітним кодуванням виходить досить великим (мегабайт).

Це дуже незручно для зберігання та передачі зображень (особливо у мережі Інтернет). Тому графічні файли піддаються оптимізації.

Глибина кольору- Кількість біт, що проходить на 1 піксел (bpp). Найбільш популярною роздільною здатністю є 8 bpp (256 кольорів), 16 bpp (65536 кольорів)

З 80-х років. розвивається технологія обробки на ПК графічної інформації. Форму представлення на екрані дисплея графічного зображення, що складається з окремих точок (пікселів), називають растрової.

Мінімальним об'єктом у растровому графічному редакторі є точка. Растровий графічний редактор призначений до створення малюнків, діаграм.

Роздільна здатність монітора (кількість точок по горизонталі та вертикалі), а також кількість можливих кольорів кожної точки визначаються типом монітора.

Поширена роздільна здатність - 800 х 600 = 480 000 пікселів.

1 піксель чорно-білого екрану кодується 1 бітом інформації (чорна точка або біла точка). Кількість різних кольорів і кількість бітів їх кодування пов'язані формулою: К = 2b.

Сучасні монітори мають такі колірні палітри: 16 кольорів, 256 кольорів; 65536 кольорів (high color), 16777216 кольорів (true color).

У табл. 1 показана залежність інформаційної ємності одного пікселя від палітри кольору монітора.

Таблиця 1

Кількість кольорів

монітора

Кількість біт, що кодують одну точку

16 (2 16 = 65 536)

24 (2 24 =16 777 216)

Обсяг пам'яті, необхідної для зберігання графічного зображення, що займає весь екран (відеопам'яті), дорівнює добутку роздільної здатності на кількість біт, що кодують одну точку. У відеопам'яті ПК зберігається бітова карта (двійковий код зображення), вона зчитується процесором не рідше 50 разів на секунду і відображається на екрані.

У табл. 2 наведені об'єми відеопам'яті для моніторів з різною роздільною здатністю та колірною палітрою.

Таблиця 2

256 кольорів

65536 кольорів

167777216 кольорів

Введення та зберігання в ЕОМ технічних креслень та подібних до них графічних зображень здійснюються по-іншому. Будь-який креслення складається з відрізків, дуг, кіл. Положення кожного відрізка на кресленні задається координатами двох точок, що визначають його початок та кінець. Коло задається координатами центру та довжиною радіусу. Дуга – координатами початку та кінця, центром та радіусом. Для кожної лінії вказується її тип: тонка, штрихпунктирна тощо. Така форма представлення графічної інформації називається векторною. Мінімальною одиницею, що обробляється векторним графічним редактором, є об'єкт (прямокутник, коло, дуга). Інформація про креслення обробляється спеціальними програмами. Зберігання інформації у векторній формі на кілька порядків скорочує необхідний обсяг пам'яті порівняно з растрової форми представлення інформації.

Відеопам'ятізнаходиться двійкова інформація про зображення, яке відображається на екрані. Майже всі створювані, оброблені або переглядаються за допомогою комп'ютера зображення можна розділити на великі частини - растровую і векторну графіку.

Растрові зображенняє одношаровою сіткою точок, званих пікселами (pixel, від англ. picture element). Код пікселамістить інформацію про його колір.

Для чорно-білого зображення (без півтонів) піксел може набувати лише два значення: білий і чорний (світиться - не світиться), а для його кодування достатньо одного біта пам'яті: 1 - білий, 0 - чорний.

Піксел на кольоровому дисплеї може мати різне забарвлення, тому одного біта на піксел недостатньо. Для кодування 4-колірного зображення потрібні два біти на піксел, оскільки два біти можуть приймати 4 різні стани. Може використовуватися, наприклад, такий варіант кодування кольорів: 00 - чорний, 10 - зелений, 01 - червоний, 11 - коричневий.

На RGB-моніторах вся різноманітність кольорів виходить поєднанням базових кольорів - червоного (Red), зеленого (Green), синього (Blue), з яких можна отримати 8 основних комбінацій:

колір

коричневий

Зрозуміло, якщо мати можливість керувати інтенсивністю (яскравістю) світіння базових кольорів, кількість різних варіантів їх поєднань, що породжують різноманітні відтінки, збільшується. Кількість різних кольорів - К та кількість бітів для їх кодування - N пов'язані між собою простою формулою: 2 N = К.

На противагу растровій графіці векторне зображеннябагатошарово. Кожен елемент векторного зображення - лінія, прямокутник, коло або фрагмент тексту - розташовується у власному шарі, пікселі якого встановлюються незалежно від інших шарів. Кожен елемент векторного зображення є об'єктом, який описується за допомогою спеціальної мови (математичних рівнянь ліній, дуг, кіл і т. д.). Складні об'єкти (ламані лінії, різні геометричні фігури) представляються як сукупності елементарних графічних об'єктів.

Завдання

Контрольні питання

1. Скільки двійкових розрядів необхідно для кодування символу 1?

2. Середня швидкість читання учня становить 160 символів за хвилину. Скільки інформації він переробить за 7 годин безперервного читання тексту?

3. У чому суть растрової форми подання графічної інформації?

4. Скільки бітів інформації необхідно для кодування 1 точки чорно-білого екрана монітора?

5. За якою формулою визначається обсяг відеопам'яті дисплея?

6. У чому суть векторної форми представлення графічної інформації?

Завдання 1.Визначити розмір 24-бітного графічного файлу з роздільною здатністю 1024 х 600.

Завдання 2.У процесі оптимізації кількість кольорів була зменшена з 65536 до 2. У скільки разів зменшився обсяг файлу.

Завдання 3.Дано двійковий код малюнка. Відомо, що малюнок монохромний та матриця має розмір 8X8. Відновіть малюнок за кодом:

а) 00111100 01000010 00000010 01111110 10000010 10000010 10000110 01111011

б) 10111110 11000001 10000001 00111110 00000001 00000001 10000001 01111110

в) 00111111 01000010 01000010 01000010 00111110 00100010 01000010 11000111

Завдання4 . Зображення на екрані дисплея будується з окремих точок (пікселів). Нехай встановлено роздільну здатність екрана 1200x1024. Скільки байт займе образ екрану пам'яті комп'ютера, якщо зберегти його (поточково, у форматі bit map -* bmp) як:

а) монохромне зображення;

б) 256-кольоровий малюнок;

в) 24-розрядний рисунок.

Завдання 5.Для кодування відтінку кольору однієї точки (пікселя) кольорового зображення відповідно до RGB моделлю кольороутворення використовується 1 байт (8 біт): 3 біти для кодування рівня яскравості червоного (Red) кольору, 2 біти для кодування рівня яскравості зеленого (Green) кольору та 3 бита на синій (Blue) колір. Визначте:

а) скільки рівнів яскравості кожного кольору може бути закодовано таким чином;

б) скільки всього відтінків зображення можна передати.

Розв'яжіть те саме завдання, але за умови використання режиму True Color, коли для передачі кольору одного пікселя використовується 3 байти - по одному на кожен колір.

Тест

1. Навчальна програма займає 19 Кбайт пам'яті ПК. Інструкція до програми займає 1 кадр дисплея (25 рядків по 80 символів). Яку частину програми посідає інструкція?

а) 2000 б;

в) 1/10 частина;

2. Екран комп'ютера може працювати в різних режимах, які відрізняються роздільною здатністю та кількістю можливих кольорів кожної точки.

Заповніть таблицю:

3. Що є мінімальним об'єктом, який використовується в растровому графічному редакторі?

а) Крапка екрану (піксель);

б) об'єкт (прямокутник, коло тощо);

в) палітра кольорів;

г) знайоме місце (символ).

4. Навіщо призначений векторний графічний редактор?

а) Для створення креслень;

б) для побудови графіків:

в) для побудови діаграм;

г) для створення та редагування малюнків.

6. Якої кількості інформації потребує двійкове кодування 1 точки на чорно-білому екрані (без градації яскравості)?

г) 16 байт.

7. Растровий графічний файл містить чорно-біле зображення з 16 градаціями сірого кольору розміром 10х10 пікселів. Який інформаційний обсяг файлу?

б) 400 б;

г) 100 б.

Правильні відповіді до тесту 2.2: 1-г, 3-а, 4-а, 5-б, 6-а, 7-а.

Код – це набір умовних позначень (або сигналів) для запису (або передачі) деяких наперед визначених понять.

Кодування інформації – це формування певного представлення інформації. У вужчому сенсі під терміном «кодування» часто розуміють перехід від однієї форми подання інформації до іншої, зручнішої для зберігання, передачі або обробки.

Зазвичай кожен образ при кодуванні (іноді кажуть - шифрування) поданні окремим знаком.

Знак - це елемент кінцевої множини відмінних один від одного елементів.

У вужчому сенсі під терміном "кодування" часто розуміють перехід від однієї форми подання інформації до іншої, зручнішої для зберігання, передачі або обробки.

Комп'ютер може обробляти лише інформацію, подану у числовій формі. Вся інша інформація (наприклад, звуки, зображення, показання приладів тощо) для обробки на комп'ютері повинна бути перетворена на числову форму. Наприклад, щоб перевести в числову форму музичний звук, можна через невеликі проміжки часу вимірювати інтенсивність звуку на певних частотах, представляючи результати кожного вимірювання у числовій формі. За допомогою програм для комп'ютера можна виконати перетворення отриманої інформації, наприклад, "накласти" один на одного звуки від різних джерел.

Аналогічно на комп'ютері можна обробляти текстову інформацію. При введенні в комп'ютер кожна буква кодується певним числом, а при виведенні зовнішні пристрої (екран або друк) для сприйняття людиною по цих числах будуються зображення букв. Відповідність між набором літер та числами називається кодуванням символів.

Як правило, всі числа в комп'ютері представляються за допомогою нулів та одиниць (а не десяти цифр, як це звичайно для людей). Іншими словами, комп'ютери зазвичай працюють у двійковій системі числення, оскільки при цьому пристрої для їх обробки виходять значно простішими. Введення чисел у комп'ютер та виведення їх для читання людиною може здійснюватися у звичній десятковій формі, проте необхідні перетворення виконують програми, що працюють на комп'ютері.

Методи кодування інформації.

Одна й та інформація може бути представлена ​​(закодована) у кількох формах. З появою комп'ютерів виникла необхідність кодування всіх видів інформації, з якими має справу і окрема людина, і людство загалом. Але вирішувати завдання кодування інформації людство почало задовго до появи комп'ютерів. Грандіозні досягнення людства – писемність та арифметика – є не що інше, як система кодування мови та числової інформації. Інформація ніколи не з'являється в чистому вигляді, вона завжди представлена, як-то закодована.

Двійкове кодування – один із найпоширеніших способів подання інформації. У обчислювальних машинах, роботах і верстатах з числовим програмним управлінням, зазвичай, вся інформація, з якою має справу пристрій, кодується як слів двійкового алфавіту.

Кодування символьної (текстової) інформації.

Основна операція, вироблена над окремими символами тексту – порівняння символів.

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

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

Таблиця перекодування - таблиця, що містить впорядкований певним чином перелік символів, що кодуються, відповідно до якої відбувається перетворення символу в його двійковий код і назад.

Найбільш популярні таблиці перекодування: ДКОІ-8, ASCII, CP1251, Unicode.

Історично склалося, що як довжина коду для кодування символів було обрано 8 біт або 1 байт. Тому найчастіше одному символу тексту, що зберігається на комп'ютері, відповідає один байт пам'яті.

Різних комбінацій з 0 та 1 при довжині коду 8 біт може бути 28 = 256, тому за допомогою однієї таблиці перекодування можна закодувати не більше 256 символів. При довжині коду 2 байти (16 біт) можна закодувати 65536 символів.

Кодування числової інформації.

Подібність у кодуванні числової та текстової інформації полягає в наступному: щоб можна було порівнювати дані цього типу, у різних чисел (як і різних символів) повинен бути різний код. Основна відмінність числових даних від символьних полягає в тому, що над числами крім операції порівняння виробляються різноманітні математичні операції: додавання, множення, вилучення кореня, обчислення логарифму та ін.

Основною системою числення для представлення чисел у комп'ютері є бінарна позиційна система числення.

Кодування текстової інформації

В даний час, більшість користувачів, за допомогою комп'ютера обробляє текстову інформацію, яка складається з символів: літер, цифр, розділових знаків та ін. Підрахуємо, скільки всього символів і скільки біт нам потрібно.

10 цифр, 12 розділових знаків, 15 символів арифметичних дій, літери російського та латинського алфавіту, ВСЬОГО: 155 символів, що відповідає 8 біт інформації.

Одиниці виміру інформації.

1 байт = 8 біт

1 Кбайт = 1024 байтам

1 Мбайт = 1024 Кбайт

1 Гбайт = 1024 Мбайт

1 Тбайт = 1024 Гбайтам

Суть кодування полягає в тому, що кожному символу ставлять у відповідність двійковий код від 00000000 до 11111111 або відповідний десятковий код від 0 до 255.

Необхідно пам'ятати, що в даний час для кодування російських букв використовують п'ять різних кодових таблиць (КОІ - 8, СР1251, СР866, Мас, ISO), причому тексти, закодовані за допомогою однієї таблиці, не будуть правильно відображатися в іншій.

Основним відображенням кодування символів є код ASCII - American Standard Code for Information Interchange-американський стандартний код обміну інформацією, який представляє собою таблицю 16 на 16, де символи закодовані в шістнадцятковій системі числення.

Кодування графічної інформації.

Важливим етапом кодування графічного зображення є розбиття його на дискретні елементи (дискретизація).

Основними способами представлення графіки для її зберігання та обробки за допомогою комп'ютера є растрові та векторні зображення

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

Растрове зображення є сукупністю точок (пікселів), отриманих в результаті дискретизації зображення відповідно до матричного принципу.

Матричний принцип кодування графічних зображень у тому, що зображення розбивається задану кількість рядків і стовпців. Потім кожен елемент отриманої сітки кодується за вибраним правилом.

Pixel (picture element - елемент рисунка) - мінімальна одиниця зображення, колір і яскравість якої можна встановити незалежно від решти зображення.

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

Якість зображення буде тим вищою, чим "щільніше" розташовані пікселі, тобто чим більша здатність пристрою, і чим точніше закодований колір кожного з них.

Для чорно-білого зображення код кольору кожного пікселя визначається одним бітом.

Якщо малюнок кольоровий, то кожної точки задається двійковий код її кольору.

Оскільки і кольори кодуються в двійковому коді, то якщо, наприклад, ви хочете використовувати 16-кольоровий малюнок, то для кодування кожного пікселя вам знадобиться 4 біти (16 = 24), а якщо є можливість використовувати 16 біт (2 байти) для кодування кольору одного пікселя, то ви можете передати тоді 216 = 65 536 різних кольорів. Використання трьох байтів (24 біти) для кодування кольору однієї точки дозволяє відобразити 16777216 (або близько 17 мільйонів) різних відтінків кольору - так званий режим "істинного кольору" (True Color). Зауважимо, що це використовувані нині, але не граничні можливості сучасних комп'ютерів.

Кодування звукової інформації.

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

Для комп'ютерної обробки аналоговий сигнал потрібно якимось чином перетворити на послідовність двійкових чисел, а для цього його необхідно дискретизувати та оцифрувати.

Можна зробити так: вимірювати амплітуду сигналу через рівні проміжки часу і записувати отримані числові значення в пам'ять комп'ютера.

Під графічною інформацією можна розуміти малюнок, креслення, фотографію, картинку в книзі, зображення на екрані телевізора або кінозалі і т. д. Розглянемо принципи кодування графічної інформації на прикладі зображення на екрані телевізора. Це зображення складається з горизонтальних ліній - рядків, кожна з яких у свою чергу складається з елементарних дрібних одиниць зображення - точок, які прийнято називати пікселями (picsel - PICture"S ELement - елемент картинки). Весь масив елементарних одиниць зображення називають растром .

Ступінь чіткості зображення залежить від кількості рядків на весь екран та кількості точок у рядку, які представляють роздільна здатність екрану, або просто Розширення . Чим більше рядків і точок, тим чіткіше і краще зображення.

Якщо ми подивимося на показники дозволу сучасних плазмових та рідкокристалічних телевізорів, то виявимо, що найпоширеніші дозволи – 640×480 (РК-телевізори із співвідношенням сторін 4:3); 852×480 (плазмові панелі зі співвідношенням сторін 16:9), 1024×768 (ВК та «плазма» як 4:3, так і 16:9); 1366×768 (HD Ready); 1920×1080 (Full HD) пікселі. Зустрічаються, але рідко, деякі інші значення роздільної здатності, наприклад 800×600 або 1024×1024 пікселів.

Позначення роздільної здатності, наприклад 640×480, означає, що використовується 480 горизонтальних рядків по 640 пікселів у кожному. Таким чином, зображення на екрані являє собою послідовність 640 480 = 307200 пікселів.

Зображення можуть бути монохромними та кольоровими.

Монохромне зображенняскладається з будь-яких двох контрастних кольорів – чорного та білого, зеленого та білого, коричневого та білого тощо. буд. Для простоти обговорення будемо вважати, що один із кольорів – чорний, а другий – білий. Тоді кожен піксель зображення може мати або чорний або білий колір. Поставивши у відповідність чорному кольору двійковий код "0", а білому - код "1" (або навпаки), ми зможемо закодувати в 1 біт стан 1 пікселя монохромного зображення. Однак отримане таким чином зображення буде надмірно контрастним.

Загальноприйнятим на сьогоднішній день, що дає досить реалістичні монохромні зображення, вважається кодування стану 1 пікселя за допомогою 1 байта, яке дозволяє передавати 256 різних відтінків сірого кольору від повністю білого до повністю чорного. У цьому випадку для передачі всього растру з 640х480 пікселів потрібно 307200 байт.

Кольорове зображенняможе формуватися з урахуванням різних моделей. Найбільш поширені колірні моделі:

· RGB найчастіше використовується в інформатиці;


· CMYK – основна колірна модель у поліграфії;

· У телебаченні для стандарту PAL застосовується колірна модель YUV, для SÉCAM – модель YDbDr, а для NTSC – модель YIQ;

· Зразкова модель XYZ заснована на вимірах параметрів людського ока.

Модель RGB(від слів Red, Green, Blue – червоний, зелений, синій) найбільш точно підходить до принципів виведення зображення на екран монітора – три числа задають яскравість світіння зерен червоного, зеленого та синього люмінофора у заданій точці екрану. Тому дана модель набула найширшого поширення в області комп'ютерної графіки, орієнтованої на перегляд зображень на екрані монітора.

Модель RGB спирається на те, що око людини сприймає всі кольори як суму трьох основних кольорів. червоного , зеленого і синього (Рис.4.1). Так як колір формується в результаті додавання трьох кольорів, цю модель часто називають адитивний(підсумовує).

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

Якщо кожен з кольорів кодувати за допомогою 1 байта (яскравість кожного компонента визначається числами від 0 до 255), як це прийнято для реалістичного монохромного зображення, з'явиться можливість передавати по 256 відтінків кожного з основних кольорів. А всього в цьому випадку забезпечується передача різних кольорів, що досить близько до реальної чутливості людського ока. Таким чином, при даній схемі кодування кольору зображення 1 пікселя потрібно 3 байти або 24 біта пам'яті. Цей спосіб представлення кольорової графіки прийнято називати режимом True Color (true color - істинний колір) або повнокольоровим режимом .

Існують професійні пристрої (наприклад, сканери), що дозволяють отримувати зображення, в яких кожен піксел описується не трьома, а шістьма (16 бітів на кожну колірну складову) або навіть вісьмома байтами. Подібні режими використовуються для кращої передачі відтінків і, що найголовніше, яскравості точок зображення. Це дозволяє достовірно відтворювати зображення таких складних з технічної точки зору сюжетів, як, наприклад, вечірні або світанки.

Рис. 4.1. RGB-кольорова модель представлена ​​у вигляді куба

Приклад 4.7.У Win32 стандартний тип представлення кольорів – COLORREF. Для визначення кольору в RGB використовується 4 байти у вигляді:

BB, GG, RR - значення інтенсивності відповідно синій, зеленій та червоній складових кольору. Максимальне їхнє значення - 0xFF.

Тоді визначити змінну типу COLORREF можна так:

COLORREF C =(b, g, r);

b, gі r- інтенсивність (в діапазоні від 0 до 255) відповідно синій, зеленій та червоній складових визначається кольору C. Тобто яскраво-червоний колір може бути визначений як (255,0,0), яскраво-фіолетовий - (255,0,255), чорний - (0,0,0), а білий – (255,255,255).

Повнокольоровий режим потребує багато пам'яті. Тому пам'яті розробляються різні режими та графічні формати, які трохи гірше передають колір, але вимагають значно менше пам'яті. Зокрема, можна згадати режим High Color (high color - багатий колір), в якому для передачі кольору 1 пікселя використовується 16 біт, і, отже, можна передати 65535 колірних відтінків, а також індексний режим, що базується на заздалегідь створеному для даного малюнку таблиці використовуваних у ньому колірних відтінків. Потім потрібний колір пікселя вибирається з таблиці за допомогою номера - індексу, який займає всього 1 байт пам'яті. При записі зображення пам'ять комп'ютера, крім кольору окремих точок, необхідно фіксувати багато додаткової інформації - розміри малюнка, роздільна здатність, яскравість точок тощо. буд. Конкретний спосіб кодування всієї необхідної під час запису зображення пам'ять комп'ютера інформації утворює графічний формат. Формати кодування графічної інформації, засновані на передачі кольору кожного окремого пікселя, з якого складається зображення, відносять до групи растрових або BMP (Bit MaP - бітова карта) форматів .

Модель CMYK(Cyan, Magenta, Yellow, blacK) субтрактивна схема формування кольору, що використовується насамперед у поліграфії для стандартного тріадного друку. Схема CMYK (рис. 4.2), як правило, має порівняно невелике колірне охоплення .

Рис. 4.2.Схема субтрактивного синтезу CMYK

Російською ці кольори часто називають так: блакитний, пурпурний, жовтий . Колір у такій схемі залежить не тільки від спектральних характеристик барвників та від способу їх нанесення, а й кількості, характеристик паперу та інших факторів. Наприклад, є американський, європейський та японський стандарти для крейдованого та некрейдованого паперів.

Хоча теоретично чорний колір можна отримувати змішуванням у рівній пропорції пурпурного, блакитного та жовтого, на практиці змішання реальних пурпурного, блакитного та жовтого кольорів дає скоріше брудно-коричневий або брудно-сірий колір. Оскільки чистота та насиченість чорного кольору надзвичайно важливі у друкованому процесі, у модель було введено ще один колір – чорний .

Пояснення перших трьох літер в абревіатурі CMYK наведено вище, а з приводу четвертої одна з версій стверджує, що K- Скорочення від англ. blac K (якби взяли B, то виникла б плутанина з моделлю RGB, де B – це синій колір). Згідно з цією версією, при виведенні поліграфічних плівок на них однією літерою вказувався колір, якому вони належать. Згідно з іншим варіантом, літера Kвиникла від скорочення англ. слова Key : в англомовних країнах терміном key plateпозначається друкарська форма чорної фарби.

CMYK називають субтрактивною моделлю, тому що цю модель застосовують в основному в поліграфії при кольоровому друку, а папір та інші друковані матеріали служать поверхнями, що відображають світло: зручніше вважати, скільки світла (і кольору) відбилося від тієї чи іншої поверхні, ніж - скільки поглинулося. Таким чином, якщо відняти з білого три первинні кольори, RGB, ми отримаємо трійку додаткових кольорів CMY. "Субтрактивний" означає "віднімається" - ми віднімаємо первинні кольори з білого.

Кожне з чисел, що визначає колір у CMYK, являє собою відсоток фарби даного кольору, що становить колірну комбінацію. Наприклад, для отримання темно-жовтогарячого кольору слід змішати 30% блакитної фарби, 45 пурпурової, 80 жовтої та 5% чорної фарби. Це можна позначити так: (30,45,80,5). Іноді мають таке позначення: C30M45Y80K5.

Контрольні питання та завдання

1. Що називається форматом даних?

2. Як у комп'ютерах кодується цифрова інформація?

3. Як пов'язаний діапазон представлення цілого числа з форматом його зберігання.

4. Чи є відмінності у відображенні позитивних чисел у прямому, зворотному та додатковому кодах?

5. Подайте число -78 у прямому, зворотному та додатковому кодах в однобайтовому форматі.

6. Як пов'язані точність і діапазон уявлення речового числа з розрядністю мантиси?

7. Чому порядок при поданні речовинного числа називають зміщеним?

8. Чому при поданні нормалізованого речового числа не зберігають першу цифру мантиси?

9. Подайте число 34.256 в одинарному форматі речовинного числа.

10. Як у комп'ютерах кодується текстова інформація?

11. Навіщо використовуються кодові таблиці? Які кодові таблиці ви знаєте?

12. Чим відрізняються базова таблиця ASCII від розширеної?

13. Які переваги дає уявлення текстової інформації у форматі Юнікод?

14. Дайте визначення поняттям піксель, растр, роздільна здатність .

15. Скільки байт пам'яті необхідно, щоб закодувати зображення на екрані комп'ютерного монітора з роздільною здатністю 800х600 при 256 кольорах?

16. Які моделі формування кольорових зображень вам відомі?

17. Які кольори вважаються основними у моделях RGB та CMYK?


5. Основні поняття алгебри логіки

а) б)

Рисунок 6.3 – Растровий малюнок

а) растр; б) моделювання малюнка

Растровий малюнок – це набір пікселів-квадратиків. Розмір квадратика визначається дозволом. Роздільна здатність – це кількість пікселів, що припадають на одиницю довжини зображення. Дозвіл вимірюється в пікселях на дюйм, ppi – pixels per inch. Наприклад, роздільна здатність 254 ppi означає, що на 1 дюйм (25,4 мм) припадає 254 пікселя, тому кожен піксель має розмір 0,1 ∙ 0,1 мм. Чим більша роздільна здатність, тим точніше (точніше) моделюється малюнок.

6.2 Кодування кольору

Кожен піксель кодується вказівкою кольору. Наприклад, для чорно-білого малюнка білий колір – 1, чорний колір – 0. Тоді малюнок 6.3 можна закодувати матрицею 4 9, перші три рядки якої, заповнені кодами, показані нижче:

Як бути, якщо малюнок кольоровий? Наприклад, малюнок прапора, у якому використовуються 4 кольори – чорний, білий, червоний, синій (рисунок 6.4, а). У додатку наводиться малюнок у кольорі.

синій
червоний

Рисунок 6.4 – Кодування кольорового растрового малюнка;

а) растровий малюнок; б) матриця кодування малюнка

Для кодування одного з чотирьох варіантів кольору потрібно 2 біти, тому код кожного кольору (і код кожного пікселя) складатиметься з двох бітів. Нехай 00 позначає чорний колір, 01 – червоний, 10 – синій та 11 – білий. Тоді отримуємо таблицю кодів (рисунок 6.4 б).

6.2.1 Кодування кольорів на екрані

Вважається, що будь-який випромінюванийколір можна імітувати, використовуючи лише три світлові промені (червоний, зелений та синій) різної яскравості. Отже, будь-який колір (зокрема і «білий») приблизно розкладається на три складові – червону, зелену та синю. Змінюючи яскравість цих складових, можна скласти будь-які кольори. Ця модель кольору отримала назву RGB за початковими буквами англійських слів red- червоний, green– зелений та blue- Синій (рисунок 6.5, а). Малюнок у кольорі наведено у програмі.



У моделі RGB яскравість кожної складової найчастіше кодується цілим числом від 0 до 255. При цьому код кольору – це трійка чисел (R, G, B), яскравість окремих складових. Колір (0,0,0) – це чорний колір, а (255,255,255) – білий. Якщо всі складові мають рівну яскравість, утворюються відтінки сірого кольору, від чорного до білого. Наприклад, (75,75,75) – темно-сірий, а (175,175,175) – світло-сірий.

Щоб зробити світло-червоний (рожевий) колір, потрібно в червоному (255,0,0) однаково збільшити яскравість зеленого і синього кольорів, наприклад, (255, 155, 155) - це рожевий колір. Це можна перевірити у редакторі MSWord, інструмент – колір тексту – інші кольори… - спектр(Малюнок 6.5,б).

а) б)


Рисунок 6.5 – Модель кольору RGB;

а) модель RGB; б) інструмент "колір тексту" в MSWord

Коди деяких кольорів представлені нижче у таблиці 6.1.

Таблиця 6.1 – Коди кольорів

Усього є по 256 варіантів яскравості кожного із трьох кольорів. Це дозволяє закодувати 256 3 = 16777216 відтінків (більше 16 мільйонів), що більш ніж достатньо для людини. Так як
256 = 2 8 кожна з трьох складових займає в пам'яті 8 біт або один байт, а вся інформація про якийсь колір - 24 біти (або три байти). Ця величина називається глибиною кольору.



Глибина кольору– це кількість біт, що використовується для кодування кольору пікселя.

Кожному пікселю відводиться від 1 біта до 3 байтів відеопам'яті ( зображення формується у відеопам'яті). Наприклад:

Монохромний режим, 2 кольори (чорно-білий) – 1 біт (рис. 6.3, б).

Кольоровий режим, 8 кольорів – 3 біти. Red = 0; 1. Green = 0; 1. Blue = 0; 1. RGB = 23 = 8.

Кольоровий режим, 16 кольорів – 4 біти; i = 0; 1 – інтенсивність (яскравий, тьмяний); i RGB = 2∙2 3 = 2 4 = 16 (таблиця 6.2).

Кольоровий режим, 256 кольорів – 8 біт; i = 00000, ..., 11111 = = 2 5 = 32 градації інтенсивності; i RGB = 2 5 * 2 3 = 2 8 = 256.

Або по 2 градації інтенсивності та по 2 кольори RGB
i 2 R 2 G 2 B 2 = 4*4*4*4 =2 8 = 256 (таблиця 6.3).

Кольоровий режим, 16 млн. кольорів – 3 байти = 24 біт
(Рисунок 6.5, б).

Таблиця 6.2 – Коди для формування 16 кольорів

Колір i RGB
Black (чорний)
Blue (синій)
Green (зелений)
Cyan (синьо-зелений)
Red (червоний)
Magenta (фіолетовий)
Brown (коричневий)
Light Gray (світло-сірий)
Dark Gray (темно-сірий)
Light Blue (яскраво-синій)
Light Green (яскраво-зелений)
Light Cyan (бірюзовий)
Light Red (яскраво-червоний)
Light Magenta (ліловий)
Yellow (жовтий)
White (білий)

Таблиця 6.3 – Коди для формування 256 кольорів

i R G B
∙∙∙ ∙∙∙ ∙∙∙ ∙∙∙

24-бітове кодування кольору часто називають режимом істинного кольору(Англ. True Color- Істинний колір). Для обчислення обсягу малюнка в байтах за такого кодування потрібно визначити загальну кількість пікселів (перемножити ширину і висоту) і помножити результат на 3, оскільки колір кожного пікселя кодується трьома байтами. Наприклад, малюнок розміром 20х30 пікселів, закодований в режимі істинного кольору, займатиме 20х30х3 = 1800 байт.

Крім режиму істинного кольору, використовується також 16-бітне кодування (англ. High Color– «високий» колір), коли на червону та синю складову відводиться по п'ять біт, а на зелену, до якої людське око більш чутливе – шість біт (всього 16 біт). У режимі High Color можна закодувати 2 16 = 65 536 різних кольорів. У мобільних телефонах 12-бітове кодування кольору (4 біти на складову, 2 12 = 4096 кольорів).

Зв'язок між глибиною кольору та кількістю формованих кольорів можна показати таблицею 6.4.

Таблиця 6.4 – Глибина кольору та кількість кольорів

Як правило, чим менше кольорів використовується, тим більше спотворюватиметься кольорове зображення. Таким чином, при кодуванні кольору теж є неминуча втрата інформації, яка додається до втрат, викликаних дискретизацією. Дискретизація виникає під час заміни малюнка набором пікселів-квадратиків. Однак при збільшенні кількості кольорів одночасно зростає обсяг файлу. Наприклад, у режимі істинного кольоруфайл вийде вдвічі більше, ніж при
12-бітне кодування.

Дуже часто (наприклад, у схемах, діаграмах та кресленнях) кількість кольорів у зображенні невелика (не більше 256). У цьому випадку застосовують кодування з палітрою.

Палітра кольорів– це таблиця, у якій кожному кольору, заданому як складових у моделі RGB, зіставляється числовий код.

Розмір палітри- Це кількість байт, що вказують кольори палітри.

Наприклад, чорно-біла палітра, всього 2 кольори (рисунок 6.3):

ü чорний: RGB-код (0,0,0); двійковий код 0 2;

ü білий: RGB-код (255,255,255); двійковий код 1 2 .

Тут розмір панелі 6 байт.

Кодування зображення прапора, чотири кольори (рисунок 6.4):

ü чорний: RGB-код (0,0,0); двійковий код 00 2;

ü червоний: RGB-код (255,0,0); двійковий код 01 2;

ü синій: RGB-код (0,0,255); двійковий код 10 2;

ü білий: RGB-код (255,255,255); двійковий код 11 2 .

Тут розмір панелі 12 байт.

Нижче наведено дані щодо деяких варіантів кодування з палітрою (Таблиця 6.5).

Таблиця 6.5 - Варіанти кодування з палітрою

При відомих характеристиках екрана монітора (дозвіл екрану та кількість кольорів пікселя) можна обчислити мінімальний обсяг відеопам'яті для формування якісного зображення (таблиця 6.6).

Таблиця 6.6 – Об'єм відеопам'яті

6.2.2 Кодування кольору на папері

RGB-кодування найкраще описує колір, який випромінюється деяким пристроєм, наприклад монітором або екраном ноутбука. Коли ми дивимося на зображення, надруковане на папері, ситуація зовсім інша. Ми бачимо не прямі промені джерела, які у око, а відбиті від поверхні. «Біле світло» від якогось джерела (сонце, лампочка), що містить хвилі у всьому видимому діапазоні, потрапляє на папір, на якому нанесена фарба. Фарба поглинає частину променів (їх енергія йде на нагрівання паперу), а відбиті кольори, що залишилися, потрапляють в око, це і є той колір, який ми бачимо.

Наприклад, якщо фарба поглинає червоні промені, відбиваються лише сині та зелені – ми бачимо блакитний колір. У цьому сенсі червоний та блакитний кольори доповнюють один одного, так само, як і пари «зелений – фіолетовий» та «синій – жовтий». Справді, якщо з білого кольору "відняти" зелений, то вийде колір фіолетовий, а якщо "відняти" синій, то вийде колір жовтий.

Зазначимо синоніми кольорів: фіолетовий = пурпуровий.

Нижче показані співвідношення падаючого та відображеного кольорів (Таблиця 6.7).

Таблиця 6.7 – Співвідношення падаючого та відображеного кольорів

На трьох додаткових кольорах – блакитному, фіолетовому та жовтому – будується колірна модель CMY(Англ. Cyan– блакитний, Magenta- фіолетовий, Yellow– жовтий), яка застосовується для виведення на друк (рис. 6.6,б). Таким чином, моделі кольорів RGB та CMY - оборотні (рисунок 6.7). Малюнок у кольорі показано у програмі.

Малюнок 6.6 – Моделі кольорів;

а) модель RGB (для монітора); б) модель CMY (для принтера)

Рисунок 6.7 – Зворотні моделі кольорів

Значення C=M=Y=0 свідчать, що у білий папір
не наноситься жодна фарба, тому всі промені відбиваються, це білий колір.

При накладанні блакитної, фіолетової та жовтої фарб теоретично повинен вийти чорний колір (малюнок 6.6,б), всі промені поглинаються. Однак на практиці фарби не ідеальні, тому замість чорного кольору виходить брудно-коричневий. Крім того, під час друку чорних областей доводиться «виливати» потрійну порцію фарби в одне місце. Потрібно також враховувати, що зазвичай на принтерах часто роздруковують чорний текст, а кольорове чорнило значно дорожче за чорне.

Щоб вирішити цю проблему, набір фарб додають чорну, це так званий ключовийколір (англ. Keycolor), тому модель, що вийшла, позначають CMYK.

Крім колірних моделей RGB та CMY (CMYK), існують і інші. Найцікавіша з них – модель HSB(англ. Hue – тон, відтінок; Saturation – насиченість, Brightness – яскравість), що найближче до природного сприйняття людини. Тон - це, наприклад, синій, зелений, жовтий. Насиченість – це чистота тону, при зменшенні насиченості до нуля виходить сірий колір. Яскравість визначає, наскільки колір світлий чи темний. Будь-який колір при зниженні яскравості до нуля перетворюється на чорний.

6.3 Особливості растрового кодування

При растровом кодуванні малюнок розбивається на пікселі (дискретизується). Для кожного пікселя визначається колір, який найчастіше кодується за допомогою коду RGB.

Растрове кодування має переваги:

ü універсальний метод (можна закодувати будь-яке зображення);

ü єдиний метод для кодування та обробки розмитих зображень, які не мають чітких меж, наприклад, фотографій;

і недоліки:

ü при дискретизації завжди є втрата інформації;

ü при зміні розмірів зображення спотворюється колір і форма об'єктів на малюнку, оскільки при збільшенні розмірів треба якось відновити пікселі, а при зменшенні – замінити кілька пікселів одним;

ü розмір файлу не залежить від складності зображення, а визначається лише роздільною здатністю та глибиною кольору; як правило, растрові малюнки мають великий обсяг.

Існує багато різних форматів растрових малюнків. Найчастіше зустрічаються такі розширення в іменах файлів:

.bmp(англ. bitmap – бітова карта) – стандартний формат в операційній системі Windows; підтримує кодування з палітрою та в режимі істинного кольору;

.jpgабо .jpeg(англ. Joint Photographic Experts Group – об'єднана група фотографів-експертів) – формат, розроблений спеціально для кодування фотографій; підтримує лише режим справжнього кольору; для зменшення обсягу файлу використовується сильне стискування, при якому зображення трохи спотворюється, тому не рекомендується використовувати його для малюнків з чіткими межами;

.gif(англ. Graphics Interchange Format – формат для обміну зображеннями) – формат, який підтримує лише кодування з палітрою (від 2 до 256 кольорів); на відміну від попередніх форматів частини малюнку можуть бути прозорими; у сучасному варіанті можна зберігати анімовані зображення; використовується стиск без втрат, тобто при стисканні зображення не спотворюється;

.png(англ. Portable Network Graphics - переносні мережеві зображення) - формат, що підтримує як режим істинного кольору, так і кодування з палітрою; частини зображення можуть бути прозорими і навіть напівпрозорими (32-бітне кодування RGBA, де четвертий байт задає прозорість); зображення стискається без спотворення; анімація не підтримується.

6.4 Зауваження про кодування файлу

Раніше було сказано, що всі види інформації зберігаються в пам'яті комп'ютера у вигляді двійкових кодів, тобто ланцюжків з нулів та одиниць. Отримавши такий ланцюжок, абсолютно неможливо сказати, що це текст, малюнок, звук або відео. Наприклад, код 11001000 2 може позначати число 200, літеру «І», одну зі складових кольору пікселя в режимі істинного кольору, номер кольору на панелі для малюнка з палітрою 256 кольорів, кольору 8 пікселів чорно-білого малюнка і т.п. комп'ютер розуміється на двійкових даних? Насамперед потрібно орієнтуватися на розширення імені файлу. Наприклад, найчастіше файли з розширенням .txt містять текст, а файли з розширеннями .bmp, .gif, .jpg, .png - малюнки.

Однак розширення файлу можна змінювати як завгодно. Наприклад, можна зробити так, що текстовий файл матиме розширення .bmp, а малюнок у форматі JPEG – розширення txt. Тому на початок всіх файлів спеціальних форматів (крім простого тексту, .txt) записується заголовок, яким можна «дізнатися» тип файлу та його характеристики. Наприклад, файли у форматі BMP починаються із символів «BM», а файли у форматі GIF – із символів «GIF». Крім того, в заголовку вказується розмір малюнка та його характеристики, наприклад, кількість кольорів на палітрі, спосіб стиснення тощо. Використовуючи цю інформацію, програма декодує (розшифровує) основну частину файлу та виводить його на екран.

6.5 Питання та завдання

1. Які два принципи кодування малюнків використовуються у комп'ютерній техніці?

2. Чому не вдається вигадати єдиний метод кодування малюнків, придатний у всіх ситуаціях?

3. У чому полягає ідея растрового кодування?
Що таке растр?

4. У чому полягає ідея векторного кодування? Що таке графічний примітив?

5. Що таке піксель? Як утворилося таке слово?

6. Що таке дискретизація малюнка? Чому вона потрібна?

7. Що губиться при дискретизації малюнка?

8. Що таке роздільна здатність (екрана, принтера)? У яких одиницях воно вимірюється?

9. Що таке глибина кольору? В яких одиницях вона
вимірюється?

10. Що таке режим справжнього кольору (True Color)?

11. Що таке режим високого кольору (High Color)?

12. Що таке кодування з палітрою? У чому його важлива відмінність від режиму істинного кольору?

13. У чому полягають переваги та недоліки растрового кодування?

14. У чому полягають переваги та недоліки векторного кодування?

15. У яких форматах доцільно зберігати фотографії?

16. У яких форматах доцільно зберігати креслення, малюнки з чіткими межами?

17. Як запишеться код наступного малюнка? Чорно-біле растрове зображення кодується рядково, починаючи з верхнього лівого кута і закінчується в правому нижньому кутку. При кодуванні 0 означає чорний колір, а 1 – білий.

Рішення. Запис коду зображення буде наступним:

010100 011111 101010 011101 = 010100011111101010011101 2 =

24375235 8 = 51FAD 16 .


Список використаних джерел

1. Андрєєва Є. В. Математичні основи інформатики: навч. посібник / Є. В. Андрєєва, Л. Л. Босова, І. Н. Фаліна. - М.: БІНОМ. Лабораторія знань, 2007.

2. Поспєлов Д. А. Арифметичні основи обчислювальних машин дискретної дії / Д. А. Поспєлов. - М.: Енергія, 1970.

3. Савельєв А. Я. Арифметичні та логічні основи цифрових автоматів / А. Я. Савельєв. - М.: Вища школа, 1980.

4. Поздняков С. Н. Дискретна математика: підручник
/ С. Н. Поздняков, С. В. Рибін. - М.: Академія, 2008.

5. Хартлі Р. В. Л. Передача інформації / Р. В. Л. Хартлі
// Теорія інформації та її застосування. - М.: Фізматгіз, 1959.

6. Шеннон К. Математична теорія зв'язку. (Shannon C.E. A Matematical Theory of Communication. Bell System Technical Journal. – 1948. – c. 379-423, 623-656).

7. Юшкевич А. П. Історія математики в середні віки
/ А. П. Юшкевич. - М.: Фізматгіз, 1961.


24-бітовий колір(який є підмножиною TrueColor англ. «істинний колір») у комп'ютерній графіці - метод представлення та зберігання зображення, що дозволяє відобразити велику кількість кольорів, напівтонів та відтінків. Колір представляється з використанням 256 рівнів для кожної з трьох компонентів моделі RGB: червоного (R), зеленого (G) і синього (B), що в результаті дає 16 777 216 (2 24) різних кольорів.

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

Кількість біт при оцифровці сигналу

Не слід плутати кількість біт при оцифровці сигналу (сканером або цифровою камерою) та кількість біт при зберіганні та виведенні на екран.

Колір з 256 рівнями на канал зберігається у гамма-коректованому вигляді, тоді як з пікселів камери оцифровується сигнал у лінійному вигляді. Він зазвичай і зберігається в сирих даних камери у форматі Raw.

Напишіть відгук про статтю "TrueColor"

Примітки

Уривок, що характеризує TrueColor

Графіня так втомилася від візитів, що не веліла приймати більше нікого, і швейцару наказано було тільки звати неодмінно їсти всіх, хто ще приїжджатиме з привітаннями. Графіні хотілося віч-на-віч поговорити з другом свого дитинства, княгинею Ганною Михайлівною, яку вона не бачила гарненько з її приїзду з Петербурга. Ганна Михайлівна, зі своїм виплаканим і приємним обличчям, посунулася ближче до крісла графині.
– З тобою я буду абсолютно відвертою, – сказала Ганна Михайлівна. - Мало нас залишилося, старих друзів! Від цього я так і дорожу твоєю дружбою.
Ганна Михайлівна подивилася на Віру та зупинилася. Графіня потиснула руку своєму другові.
- Віра, - сказала графиня, звертаючись до старшої доньки, мабуть, нелюбимої. - Як у вас ні на що гадки немає? Хіба не відчуваєш, що ти тут зайва? Іди до сестер, або…
Красива Віра зневажливо посміхнулася, мабуть, не відчуваючи жодної образи.
- Якби ви мені сказали давно, мамо, я б відразу пішла, - сказала вона, і пішла до своєї кімнати.
Але, проходячи повз диван, вона помітила, що в ній біля двох вікон симетрично сиділи дві пари. Вона зупинилася і зневажливо посміхнулася. Соня сиділа близько біля Миколи, який переписував їй вірші, вперше написані ним. Борис із Наташею сиділи біля іншого вікна і замовкли, коли увійшла Віра. Соня та Наташа з винними та щасливими обличчями глянули на Віру.
Весело і зворушливо було дивитися на цих закоханих дівчаток, але їхній вигляд, очевидно, не збуджував у Вірі приємного почуття.
– Скільки разів я вас просила, – сказала вона, – не брати моїх речей, у вас є своя кімната.
Вона взяла від Миколи чорнильницю.
- Зараз, зараз, - сказав він, мокаючи перо.
– Ви все вмієте робити не під час, – сказала Віра. – То прибігли до вітальні, тож усім соромно стало за вас.
Незважаючи на те, чи саме тому, що сказане нею було цілком справедливе, ніхто їй не відповідав, і всі четверо тільки перезиралися між собою. Вона зволікала в кімнаті з чорнильницею в руці.

Растри, пікселі, дискретизація, дозвіл

Як і всі види інформації, зображення на комп'ютері закодовані у вигляді двійкових послідовностей. Використовують два принципово різні методи кодування, кожен з яких має свої переваги та недоліки.

І лінія, і область складаються з безлічі точок. Колір кожної з цих точок потрібно закодувати. Якщо їх багато, ми відразу приходимо до висновку, що для цього потрібно багато пам'яті. Тому «поточковим» способом закодувати зображення не вдасться. Проте, цю все-таки ідею можна використати.

Почнемо із чорно-білого малюнка. Уявімо, що на зображення ромба накладена сітка, яка розбиває його на квадратики. Така сітка називається растром. Тепер для кожного квадратика визначимо колір (чорний чи білий). Для тих квадратиків, у яких частина була зафарбована чорним кольором, а частина білим, виберемо колір залежно від того, яка частина (чорна чи біла) більша.

Малюнок 1.

У нас вийшов так званий растровий малюнок, що складається із квадратиків-пікселів.

Визначення 1

Піксель(англ. pixel = picture element, елемент малюнка) – це найменший елемент малюнка, котрій можна задати свій колір. Розбивши "звичайний" малюнок на квадратики, ми виконали його дискретизацію - розбили єдиний об'єкт на окремі елементи. Справді, ми мали єдиний і неподільний малюнок – зображення ромба. Результати ми отримали дискретний об'єкт – набір пікселів.

Двійковий код для чорно-білого малюнка, отриманого в результаті дискретизації, можна побудувати таким чином:

  • замінюємо білі пікселі нулями, а чорні – одиницями;
  • виписуємо рядки отриманої таблиці один за одним.

Приклад 1

Покажемо це на простому прикладі:

Рисунок 2.

Ширина цього малюнка – $8$ пікселів, тому кожен рядок таблиці складається з $8$ двійкових розрядів – бітів. Щоб не писати дуже довгий ланцюжок нулів і одиниць, зручно використовувати шістнадцяткову систему числення, закодувавши $4$ сусідніх біта (зошит) однією шістнадцятковою цифрою.

Рисунок 3.

Наприклад, для першого рядка отримуємо код $1A_(16)$:

а для всього малюнка: $1A2642FF425A5A7E_(16)$.

Примітка 1

Дуже важливо зрозуміти, що ми придбали і втратили внаслідок дискретизації. Найважливіше – ми змогли закодувати малюнок у двійковому коді. Однак при цьому малюнок спотворився – замість ромба ми отримали набір квадратиків. Причина викривлення в тому, що в деяких квадратиках частини вихідного малюнка були зафарбовані різними кольорами, а в закодованому зображенні кожен піксель має один колір. Таким чином, частина вихідної інформації під час кодування була втрачена. Це виявиться, наприклад, зі збільшенням малюнка - квадратики збільшуються, і малюнок ще більше спотворюється. Щоб зменшити втрати інформації, потрібно зменшувати розмір пікселя, тобто збільшувати роздільну здатність.

Визначення 2

Розширення– це кількість пікселів, які перебувають на дюйм розміру зображення.

Роздільна здатність зазвичай вимірюється в пікселях на дюйм (використовується англійське позначення $ppi$ = pixels per inch). Наприклад, роздільна здатність $254$ $ppi$ означає, що на дюйм ($25,4$ мм) припадає $254$ пікселя, так що кожен піксель «містить» квадрат вихідного зображення розміром $0,1×0,1$ мм. Чим більша роздільна здатність, тим точніше кодується малюнок (менше інформації втрачається), однак одночасно зростає і обсяг файлу .

Кодування кольору

Що робити, якщо малюнок кольоровий? В цьому випадку для кодування кольору пікселя вже не обійтися одним бітом. Наприклад, у зображенні російського прапора $4$ кольору: чорний, синій, червоний і білий. Для кодування одного з чотирьох варіантів потрібно $2$ біта, тому код кожного кольору (і код кожного пікселя) складатиметься з двох бітів. Нехай $00$ означає чорний колір, $01$ – червоний, $10$ – синій і $11$ – білий. Тоді отримуємо таку таблицю:

Рисунок 4.

Проблема тільки в тому, що при виведенні на екран потрібно визначити, який колір відповідає тому або іншому коду. Тобто інформацію про колір потрібно виразити у вигляді числа (або набору чисел).

Людина сприймає світло як багато електромагнітних хвиль. Певна довжина хвилі відповідають деякому кольору. Наприклад, хвилі довжиною $500-565$ нм – це зелений колір. Так зване «біле» світло насправді є сумішшю хвиль, довжини яких охоплюють весь видимий діапазон.

Згідно з сучасним уявленням про кольоровий зір (теорії Юнга-Гельмгольца), око людини містить чутливі елементи трьох типів. Кожен їх сприймає весь потік світла, але перші найбільш чутливі у сфері червоного кольору, другі – області зеленого, а треті – у сфері синього цвета. Колір – це результат збудження всіх трьох типів рецепторів. Тому вважається, що будь-який колір (тобто відчуття людини, яка сприймає хвилі певної довжини) можна імітувати, використовуючи лише три світлові промені (червоний, зелений та синій) різної яскравості. Отже, будь-який колір приблизно розкладається на три складові – червону, зелену та синю. Змінюючи силу цих складових, можна скласти будь-які кольори. Ця модель кольору отримала назву RGB за початковими буквами англійських слів red (червоний), green (зелений) та blue (синій).

У моделі RBG яскравість кожної складової (або, як кажуть, кожного каналу) найчастіше кодується цілим числом від $0$ до $255$. При цьому код кольору – це трійка чисел (R, G, B), яскравість окремих каналів. Колір ($0,0,0$) – це чорний колір, а ($255,255,255$) – білий. Якщо всі складові мають рівну яскравість, утворюються відтінки сірого кольору, від чорного до білого.

Малюнок 5.

Щоб зробити світло-червоний (рожевий) колір, потрібно в червоному кольорі ($255,0,0$) однаково збільшити яскравість зеленого та синього каналів, наприклад колір ($255, 150, 150$) – це рожевий. Рівномірне зменшення яскравості всіх каналів робить темний колір, наприклад, колір із кодом ($100,0,0$) – темно-червоний.

Всього є по $256 варіантів яскравості кожного з трьох кольорів. Це дозволяє закодувати $256^3= 16 777 216$ відтінків, що більш ніж достатньо для людини. Так як $ 256 = 2 ^ 8 $, кожна з трьох складових займає в пам'яті $ 8 $ біт або $ 1 $ байт, а вся інформація про якийсь колір - $ 24 $ біта (або $ 3 $ байта). Ця величина називається глибиною кольору.

Визначення 3

Глибина кольору– це кількість біт, що використовується для кодування кольору пікселя.

$24$-бітне кодування кольору часто називають режимом істинного кольору (True Color - істинний колір). Для обчислення об'єму малюнка в байтах при такому кодуванні потрібно визначити загальну кількість пікселів (перемножити ширину та висоту) та помножити результат на $3$, оскільки колір кожного пікселя кодується трьома байтами. Наприклад, малюнок розміром $20×30$ пікселів, закодований у режимі справжнього кольору, займатиме $20×30×3 = 1800$ байт.

Крім режиму істинного кольору використовується також $16$-бітне кодування (англ. High Color – «високий» колір), коли на червону та синю складову відводиться по $5$ біт, а на зелену, до якої людське око більш чутливе – $6$ біт. У режимі High Color можна закодувати $2^(16) = 65536$ різних кольорів. У мобільних телефонах $12$-бітне кодування кольору ($4$ біта на канал, $4096$ кольорів).

Кодування з палітрою

Як правило, чим менше кольорів використовується, тим більше спотворюватиметься кольорове зображення. Таким чином, при кодуванні кольору теж є неминуча втрата інформації, яка додається до втрат, викликаних дискретизацією. Дуже часто (наприклад, у схемах, діаграмах та кресленнях) кількість кольорів у зображенні невелика (не більше $256$). У цьому випадку застосовують кодування з палітрою.

Визначення 4

Палітра кольорів– це таблиця, у якій кожному кольору, заданому як складових у моделі RGB, зіставляється числовий код.

Кодування з палітрою виконується так:

  • вибираємо кількість кольорів $N$ (як правило, не більше $256$);
  • з палітри істинного кольору ($16 777 216$ кольорів) вибираємо будь-які $N$ кольорів і для кожного з них знаходимо складові моделі RGB;
  • кожному з квітів надають номер (код) від $0$ до $N–1$;
  • складаємо палітру, записуючи спочатку RGB-складові кольори, що має код $0$, потім складові кольору з кодом $1$ і т.д.

Колір кожного пікселя кодується не як значень RGB-складових, а як номер кольору на панелі. Наприклад, при кодуванні зображення російського прапора (див. вище) було обрано $4$ кольори:

  • чорний: RGB-код ($0,0,0$); двійковий код $002$;
  • червоний: RGB-код ($255,0,0 $); двійковий код $012$;
  • синій: RGB-код ($0,0,255$); двійковий код $102$;
  • білий: RGB-код ($255,255,255$); двійковий код $112$.

Тому палітра, яка зазвичай записується в спеціальну службову область на початку файлу (її називають заголовком файлу), являє собою чотири трибайтні блоки:

Рисунок 6.

Код кожного пікселя займає лише два біти.

Палітри з кількістю кольорів більше $256$ практично не використовуються.

Переваги та недоліки растрового кодування

Растрове кодування має переваги:

  • універсальний метод (можна закодувати будь-яке зображення);
  • єдиний метод для кодування та обробки розмитих зображень, які не мають чітких меж, наприклад, фотографій.

І недоліки:

  • при дискретизації завжди є втрата інформації;
  • при зміні розмірів зображення спотворюється колір і форма об'єктів на малюнку, оскільки при збільшенні розмірів треба якось відновити пікселі, а при зменшенні – замінити кілька пікселів одним;
  • розмір файлу не залежить від складності зображення, а визначається лише роздільною здатністю та глибиною кольору.

Як правило, растрові малюнки мають великий обсяг.