Лекція 03. Вихідне кодування повідомлень в цифровому середовищі
Курс “Теорія інформації та кодування”

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

Кодування тексту: огляд стандартів та кодові сторінки
Кодування тексту: стандарт Unicode
Кодування звуку
Кодування зображень

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

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

Цим підходам відповідають два актуальних нині способи кодування тексту: історично першим зявився спосіб так званих «кодових сторінок» (CP), що пристосований для використання локальних алфавітів; нині ж більше поширення одержав спосіб універсального кодування (Unicode), який спирається на спільний загальний алфавіт — рис.3.1.

Рисунок 3.1 Способи кодування тексту

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

Спосіб універсального кодування (Unicode) передбачає виділення кожному знаку унікального коду, що виключає плутанину із відображенням. Стандарт Unicode передбачає виділення знаку його власного номеру (такий нумерований список має назву Universal character set — UCS). Надалі номери знаків трансформуються в двійкові формати з довжиною коду, що кратна байту. Зокрема стандартизовані три схеми такого переведення (Unicode Transformation Format - UTF), які різняться мінімальною розрядністю кодування: UTF-8 використовує коди довжини від 1 до 4 байтів (при цьому широко вживані знаки кодуються найбільш компактно); UTF-16 застосовує стандартну довжину кодів 2 знаків байти; UTF-32 передбачає використання 4 байтів на знак. На практиці схеми кодування UTF-8 та UTF-16 використовуються в дещо різних сферах, а UTF-32 внаслідок значної збитковості не знайшла розповсюдження. Надалі ми розглянемо розповсюджені способи кодування знаків тексту більш детально.

Стандарт ASCII та кодові сторінки
Кодові сторінки являють собою таблиці відповідності знаків та їх двійкових однобайтових кодів (рис.3.2):

Рисунок 3.2 Структура кодових сторінок (CP)

- власно знаки розташовуються в осередках таблиці, а їх коди утворюються номерами відповідних рядків та стовпчиків. Зокрема для нумерації 16 рядків та стовпців зручно використовувати по одній 16-ковій цифрі, якій буде відповідати четвірка двійкових розрядів. Пара таких номерів розташовуються в одному байті (код рядка відповідає старшому напівбайту, а код рядка — молодшому). Отже наприклад, 16-ковий код 62h відповідає осередку таблиці з номером рядка 0110 (6h) і номером стовпця 0010 (2h). При цьому іноді використують і десяткової нумерацією осередків (зокрема 62h відповідає десяткове 98d);

- верхня половина CP (рядки із номерами 0-7) має стандартне наповнення. Тут розміщені найбільш вживані знаки, що використовуються в текстах, а також спеціальні знаки, що застосовуються для управління стандартними пристроями і передачею даних. Всі вони охоплюються стандартом ASCII (American Standard Code for Information Interchange). Зокрема, тут розташовані латинські букви, цифри, знаки роздільників і математичних операцій (в таблиці їх 95). Інтерпретація їх кодів завжди однакова: наприклад, для будь-якої CP код 62h відповідатиме латинській літері b. У таблиці представлені також 33 спеціальних знаки. Прикладами тут можуть служити знаки LF і CR (переходи «назад до початку рядка» і «на наступний рядок») із кодами відповідно 0Ah і 0Dh. При цьому такі коди можуть відображатися на екрані як символи (наприклад, 0Ah відповідає символ "нота");

- нижня половина CP (рядки із номерами 8-F) призначена для відображення знаків національних алфавітів і може відрізнятися для різних комп'ютерних платформ і операційних систем. При цьому один і той же код буде відображатися різними кодовими сторінками по-різному. Зокрема, знаки кириличного алфавіту в Windows відображаються сторінкою CP-1251. Аналогічні сторінки будуть відрізнятися не тільки для комп'ютерів Apple або мейнфреймів IBM, а й для інших ОС на платформі Intel. Так в Microsoft-DOS знаки кирилиці розміщуються на сторінці CP866. При цьому якщо для Windows CP-1251 коду E1h буде відповідати буква "б", то для CP866 MS-DOS- кирилична літера "з".


3.2 Кодування тексту: стандарт Unicode

Кодування UTF-16 в Unicode
Представлення символів в Unicode зазвичай має форму U+XXXX, де XXXX – 16-ковий унікальний номер знаку в загальному стандартизованому списку UCS. В форматі UTF-16 всі коди знаків мають стандартну довжину 2 байти, що дає певні переваги при їх обробці. Отже цей спосіб широко застосовується наприклад у Windows. Пояснемо додатково особливості кодування в UTF-16, спираючись на рис.3.3:

Рисунок 3.3 Приклади кодування в UTF-16

- зазвичай структура коду знака безпосердньо відповідає його номеру в Unicode. Наприклад, кирилічна строчна буква «б» має за стандартом номер U+0431, якому в UTF-16 відповідає 16-ковий код 04 31 та двійковий код 00000100 00110001 (нагадаємо, що кожній 16-ковій цифрі відповідає четвірка 2-кових цифр;

- спосіб кодування, що відображений на рис.3.3, здається природнім, але на практиці поряд з ним може застосовуватись зворотній порядок слідування байтів, коли «молодший» байт в номері іде першим в коді (саме такий порядок відображення чисел прийнятий зокрема в процесорах Intel). Відповідно ці два способи кодування обозначають як UTF-16BE та UTF-16LE (такий суфікс розшифровується як Big Endian або Little Endian - «порядок від більшого» або «порядок від меньшого»). Інформація про використаний варіант кодування зазвичай розміщується на початку блоку даних у вигляді «мітки порядку байтів» (Byte order mark — BOM). Зокрема значення BOM U+FEFF відповідає BE, а U+FFFE - способу LE;

- проблема стандартного кодування знаків із великими номерами, що перевищують формат 16 розрядів, вирішується за рахунок використання двох пар байтів (так звані «сурогатні пари») — рис.3.3. Для реалізації такого способу в загальному просторі 16-кових номерів від 0000h-FFFFh виділений спеціальний діапазон D800h-DFFFh, що використовується для адресації чотирьохбайтних кодів (подібних до прикладу на рис.3.4). Його розмір дає змогу адресувати коди до 220 знаків (біля мільйону). Цей спосіб надалі детально пояснюється додатково.

* Кодування UTF-16 – спосіб утворення чьотирьохбайтніх кодів знаків
Принцип розширення кількості знаків, які кодуються в UTF-16 пояснює рис.3.4.
Діапазон двохбайтних кодів D800h-DFFFh розділляється на рівні частини (зокрема, D800h- D8FFh та DС00h- DFFFh), кожна з яких містить по 1024 значення. Ці два піддіапазони можна розглядати відповідно як номери рядків та стовпчиків таблиці, в комірках якої містяться номери відповідних знаків в Unicode (рис.3.4). Отже кожен такий знак може кодуватись парою двохбайтних значень, які визначаються як номери відповідного ряка та стовпчика. І навпаки, якщо маємо пару кодів, що відповідають рядку та стовпчику в таблиці, то можемо визнати номер знаку в Unicode.

Рисунок 3.4 Спосіб утворення 4-байтних кодів («сурогатних пар») в UTF-16

Практична процедура кодування виглядає таким чином:
- від коду символу віднімається 10000h. В результаті вийде значення від нуля до FFFFFh, яке поміщається в розрядну сітку 20 біт (це дає можливість кодування додатково біля мільйона символів);
- cтарші 10 біт (число в діапазоні 0000h..03FFh) підсумовуються з D800h, і результат йде в провідне (перше) слово, яке входить в діапазон D800h..DBFFh;
- молодші 10 біт (теж число в діапазоні 0000h..03FFh) підсумовуються з DC00h, і результат йде в наступне (друге) слово, яке входить в діапазон DC00h..DFFFh.

Кодування UTF-8 в Unicode
Використання стандартної довжини коду знаків 16 біт при кодуванні UTF-16 має певні недоліки. Зокрема, для часто вживаних символів стандарту ASCII (таких, як букви латиниці, цифри, знаки математичних операцій тощо) двохбайтне кодування є вочевидь збитковим. Тому в сферах, де використання таких знаків переважає (наприклад в Інтернет), широко застосовується більш економічний формат UTF-8, який використовує коди змінної довижини. Особливості кодування за цим форматом пояснює рис.3.5.

Рисунок 3.5 Особливості кодування в UTF-8

Кодування в UTF-8 має наступні важливі особливості:

- довжина коду знаків може становити від 1 до 4 байтів в залежності від їх номера в Unicode. Природньо для знаків з меншими номерами використовуються коротші формати (верхня таблиця на рис.3.5). Водночас саме ці знаки зазвичай частіше вживаються, отже на практиці таке кодування виявляється більш економічним порівняно із UTF-16. Зокрема відзначимо, що однобайтне кодування знаків стандарту ASCII тут повністю збігається із їх представленням за допомогою кодових сторінок CP;

- для побудування кодів знаків, що включають ланцюжки із 2, 3 або 4 байтів, додатково використовуються службові розряди, які дозволяють визначити кількість байтів в ланцюжку і позицію конкретного байту. Відповідні шаблони кодування відображені у верхній таблиці на рис.3.5. Тут також означена кількість інформаційних бітів в ланцюжках різної довжини;

* - при побудуванні кода UTF-8 спочатку згідно його номеру в Unicode обирається необхідна кількість байтів, а потім двійковий код цього номеру послідовно розташовується у відповідних позиціях, починаючи із молодших розрядів. Наприклад, 16-ковий номер 431 кирилічної букви «б» вочевидь може бути розташований в двох байтах (він менше за 7FF). При цьому 6 молодших двійкових розрядів опиняються в молодшому байті, а ще 6 — в старшому. Завдяки використанню службових розрядів підсумковий вид коду D0 B1 ніяк не збігається із номером символу 431. Але такий номер легко відновлюється при декодуванні.

Подання кодів знаків в текстових файлах
Аналіз такого представлення зручно виконати на прикладі дослідження з лабораторної роботи №1 — рис.3.5+

Рисунок 3.5+ Дослідження подання кодів знаків в текстових файлах

Дослідження виконується на прикладі текстового файлу (формат .txt), що містить два однакових слова, які введені кирилицею та латиницею на двох послідовних рядках. Зокрема такий файл створений за допомогою стандартної програми Windows “Блокнот”. Текст зберігається в трьох версіях, які різняться способом кодування, що пропонує програма. Зокрема це кодування ANSI (з CP-1251), кодування UTF-8 та кодування UTF-16. Порядок кодів знаків в файлі переглядається за допомогою популярного файлового менеджера FAR.

Зокрема аналіз послідовності кодів підтверджує:
- при збереженні в режимі кодування ANSI всі знаки кодуються оодним байтом згідно CP-1251. При цьому переходу на другий рядок відповідає пара кодів управління курсором CR+LF (в тексті відображаються символами псевдографіки);

- при використанні 16-бітного кодування UTF-16BE кожному знаку відповідає пара байтів. Порядок слідування байтів відповідає опції BE, яка визначає порядок “старший байт спочатку”. Додатково використовується двохбайтний маркер (BOM), який повинен визначати саме такий режим кодування;

- при кодуванні UTF-8 знаки латиниці та коди управління закономірно кодуються одним байтом, а знаки кирилиці — двома. При цьому на відміну від UTF-16 коди двохбайтних знаків не збігаються із номерами цих знаків в Unicode.

Контрольні запитання
1. Порівняйте два основних сучасних способи кодування тексту
2. Поясніть структуру кодових сторінок і спосіб формування коду знаків. В чому різниця використання верхьої та нижньої половин таблиці.
3. Охарактеризуйте особливості кодування UTF-16. Де його доцільно використовувати.
4. Яким чином в межах UTF-16 кодуються знаки, для яких номер перевищуе ємність двобайтних кодів
5. Охарактеризуйте особливості кодування UTF-16. Де його частіше використовують.
6. На прикладі рис.3.5 поясніть побудування коду із кількох байтів в UTF-8.


3.3 Кодування звуку

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

Рисунок 3.6 Приклад відображення параметрів кодування звукового файлу

Частота дискретизації та розрядність кодування в даному випадку є стандартними. Як ми уже знаємо вони визначаються властивостями слуху людини. Зокрема частота дискретизації обрана виходячи із межі частотного діапазону слуху (20 кГц), а розрядність — з урахуванням достатнього діапазону гучності (біля 100 дБ). При цьому конкретне значення 44100 обумовлене наслідуванням попередніх технологій на момент створення стандарту кодування звуку на CD. Звернемо також увагу на параметр “розмір блоку”, який враховує кількість звукових каналів (якщо б у прикладі розглядалось кодування двох стереоканалів, такий розмір складав би 4 байти).

Сумарний потік, або швидкість кодування визначається як добуток частоти дискретизації та розміру блоку коду. В заголовку звукового файлу цей параметр задається в розмірності байт/с. Водночас широко використовується аналогічний за призначенням параметр, який має назву “бітрейт”. Цей параметр визначається в розмірності кбіт/с. Для даного прикладу значення бітрейту буде 88200х8/1000 = 705,6 кбіт/с (для двохканального кодування відповідно 1411,2 кбіт/c). Як ми знаємо з практики, при зберіганні звукових даних в форматі mp3 широко використовується значення бітрейта 256 та 320 кбіт/c, для якого якість звуку вважається досить високою. Отже вихідне кодування звуку, що потребує в 4-5 разів вищого бітрейту, вочевидь має суттєву збитковість.

В цифровій телефонії кодування звуку виконується з метою максимальної економічності за умовою розбірливості мовлення. Отже тут використовується частота fd=8 кГце при 8-бітному кодуванні амплітуд, що забезпечує бітрейт 8х8=64 кбіт/с — на порядок менше, ніж при стандартному кодуванні звуку.

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

Рисунок 3.7 Порядок слідування байтів при кодуванні звуку

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

- код амплітуди вилучається з одного або з двох байт (в залежності від заданої розрядності кодування). При цьому старший розряд зокрема кодує знак. У разі стереозвуку пара амплітуд для різних каналів зберігається в четвірці суміжних байтів;

- частота, з якою амплітуди читаються для відновлення звуку, також задається в заголовку звукового файлу. Крім уже згаданих значень (8 кГц для мовлення і 44,1 кГц для довільного звуку), використовуються і інші значення - наприклад, 22 кГц при невисоких вимогах до якості звуку, або 48 кГц і навіть 96 кГц при високих вимогах.

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

Рисунок 3.8 Схема оцифровки та відновлення звуку

- безперервний сигнал u(t) (наприклад, сигнал з виходу мікрофону) спочатку надходить на вхід блоку фіксації та утримання, де амплітуда u (i) фіксується на час Δt для подачі на вхід аналого-цифрового перетворювача АЦП;

- за час Δt АЦП встигає сформувати двійковий код K(i), який відповідає дискретному рівню сигналу u*(i). Сучасні АЦП є стандартні мікросхемами, чиї розрядності зазвичай належать ряду 8, 10, 12 і 16 розрядів;

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

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

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

Як ми уже знаємо, при вірному виборі частоти дискретизації (за правилом Найквіста) та відповідному виборі розрядності квантування відновлена залежність u*(t) буде достатньо близькою до вихідної залежності u(t).

Контрольні запитання
1. Перелічьте основні параметри кодування звуку і назвіть їх стандартні значення при кодуванні довільного звуку і кодуванні мовлення в цифровій телефонії.
2. Поясніть, яким чином з послідовності байтів в тілі звукового файлу вибудовується послідовність звукових амплітуд. Розгляньте зокрема випадки одноканального та двохканального 16-бітного кодування.
3. Спираючись на рис.3.8, поясніть роботу схеми оцифровки та відновлення звуку.


3.4 Кодування зображень

Параметри растрового кодування зображень
Як ми уже знаємо, основним способом оцифровки зображень є растровий. Зокрема растрові зображення зберігаються в файлах форматів bmp, tiff, png, pcx та деяких інших. Основні параметри кодування растрового зображення відображені на рис.3.9.

Рисунок 3.9 Приклад парамерів оцифрованого зображення

Нагадаємо, що габарити растру (кількість стовпчиків та рядків) визначають загальну кількість пікселів Np (зазвичай відображується в мільйонах пікселів — MP). Термін «глибина кольору» означає розрядність кодування кольору пікселя nc. При цьому кількість кольорів Nc визначається такою розрядністю у співвідношенні Nc = 2nc. Зазвичай використвуються варіанти із 1, 4, 8, 16 та 24 розрядами (відповідно 2, 16, 256, 65 тис. та 16 млн. кольорів).

Розмір файлу із зображенням в кілобайтах визначається за формулою Q = Np * nc/ 1024 (тут кількість пікселів задається в одиницях, а коефіцієнт 1024 відповідає кількості байтів в кілобайті 210=1024). Якщо використовувати розмірність мегабайт, то необхідно ще раз ділити на 1024. Зрозуміло, що довжина файлу враховує заголовок (на практиці це несуттєво). Зазвичай така довжина відображується із округленням. Слід також зазначити, що більшість растрових форматів файлів передбачають можливість стискання коду зображень без втрат інформації і при збереженні файла режим такого стискання може бути включеним автоматично. Отже, на практиці аналізуючи розмір коду, слід це враховувати.

Параметри зображення зазвичай включають такі, що використовуються при його друці. Ключовим тут є щільність розташування пікселів, яка традиційно відображується в одиницях dpi (dot per inch – точок на дюйм. Один дюйм відповідає 2,54 см). Вважається, що для друкованої продукції слід рієнтуватись на щільність 300 dpi, в інтерєрному дизайні 150 dpi, а в наружному — від 72 dpi. Ці вимоги разом із габаритами растру визначають обмеження щодо розмірів друкованих зображень. Нагадаєм, що такі вимоги не є жорсткими.

Представлення даних кольорових зображень
Кодування зображень може виконуватись двома різними способами: безпосереднім завданням кольору кожного пікселя та опосередкованим завданням із використанням палітр кольорів. (рис.3.10).

Рисунок 3.10 Способи кодування кольорів

В варіанті безпосереднього кодування код кольору пікселя зазвичай розміщається в одному, двох, або трьох байтах:

- для найбільш популярного нині трьохбайтного кодування кожен з байтів містить двійковий код яскравості відповідного кольора (на рис.3.10 відображені складові колірної моделі RGB, але ми уже розуміємо, що аналогічно можуть застосовуватись базові елменти інших колірних моделей, зокрема CMY або YUV);

- при використанні двох байтів може застосовуватись режим кодування із виділенням 5 розрядів на колір (останній біт не використовується), а також варіант де зелений колір кодується 6 бітами (саме цей колір сприймається зором як найважливіший);

- при однобайтному кодуванні навпаки «дискримінованим» лишається синій колір (2 біти замість 3), який для зору є найменш важливим.

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

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

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

Рисунок 3.11 Колірні моделі та RGB та CMY

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

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

- на практиці крім RGB і CMY/CMYK застосовуються також інші колірні моделі. Зокрема виділимо так звану кольоро-різністну модель YUV (YCrCb), яка знадобиться нам при вивченні стискання зображень. Вона включає разом із двома базовими кольорами (так званим хроматичним червоним і хроматичним синім) також сумарну яскравість пікселя Y. Оскільки така яскравість може бути визначена підсумовуванням кодів базових кольорів (зрозуміло, з урахуванням обмежень розрядності коду), нескладно побудувати процедури взаємних переходів між моделями RGB та YUV (YСrCb). Ми ознайомимось з ними надалі.

Поняття про векторний спосіб представлення зображення
Разом з растровим кодуванням в практиці також використовується так званий векторний спосіб представлення зображень (рис.3.12). Коротко охарактерізуємо його особливості:

Рисунок 3.12 Принцип побудування векторних зображень

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

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

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

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

* Приклад опису простого векторного зображення
Наочним прикладом компактного опису векторного зображення може служити рис.3.13.

Рисунок 3.13 Приклад опису векторного зображення мовою SVG

Тут показаний текст опису простого зображення на мові розмічання тексту SVG (підмножина XML). SVG-текст інтерпретується сучасними браузерами в растрову картинку. При цьому сам він представляється знаками ASCII, які займають по 1 байту.

Зокрема на рис.3.12 показаний приклад опису трьох різнокольорових прозорих кіл, які вписані в квадрат. Наприклад, передостанній рядок тексту задає опис зеленого кола радіусом 104 пікселя, центр якого розміщується на 52 пікселя нижче і на 60 пікселів лівіше центру фонового квадрата зі сторонами 400х400 пікселів. Ви легко самостійно визначте сенс інших параметрів опису цього зображення. Важливо, що даний опис у багато разів компактніше, ніж файл з відповідною растрової картинкою.

Контрольні запитання
1. Перелічьте основні параметри оцифрованих растрових зображень. Наведіть приклад розрахунку розміру файлу з растровим зображенням.
2. Охарактеризуйте найбльш поширені колірні моделі. Яким саме чином такі моделі використвуються при відтворенні кольорів пікселів.
3. Розкажіть про принцип векторного представлення зображень. Назвіть основні переваги та обмеження векторного способу відносно растрового.
4. Проаналізуйте приклад опису векторного зображення на рис.3.13 і запропонуйте конкретні зміни в цьому описі для зміни кольору одного з його елементів.


О дисциплине ТИК
Почему «Теория информации и кодирования» - одна из самых интересных дисциплин, которые изучают будущие системщики и защитники информации?

В ней сочетаются золотая классика и самая актуальная современность computer-science.

продолжение
О сайте
Здесь вы найдете материалы, которые помогут в изучении дисциплины “Теория информации и кодирования” (ТИК) в том виде, как она преподается на кафедре ЭВМ ДИИТа.

На сайте размещены методические материалы:
  • электронный конспект лекций;
  • методическое обеспечение к лабораторным работам;
  • полезные ссылки.

продолжение
© 2008-2020 • Теория информации и кодирования
UP