Опис image processing toolbox

Робота з кольором

Визначення глибини кольору

Більшість комп'ютерів при відображенні використовує 8, 16 або 24 біт на піксель. Цим визначається глибина кольору зображення, що відображається.

Незалежно від того скільки кольорів відображає система, MATLAB може запам'ятовувати і обробляти зображення з різною кількістю біт на піксель: 224 квітів для RGB-зображень у форматі uint8, 248 кольорів для RGB-зображень у форматі uint16 і 2159 квітів для RGB-зображень у форматі подвоєною точності. Ці зображення найкраще відображаються в системі з 24-бітовим поданням кольору, хоча джерела формування зображень не завжди можуть забезпечувати таку глибину кольору. У більшості випадків вони забезпечують 16-бітове представлення кольору.

Далі буде розглядатися

  • Опис визначення глибини кольору системи
  • Опис вибору кольору

Опис кольору

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

MATLAB повертає число біт на піксель:

8-бітове представлення відображається 256 квітами. 8-бітові напівтонові зображення є складовою частиною 24-бітного представлення графічної інформації.

16-бітове представлення зазвичай використовує 5-біт на кожну колірну компоненту, що дорівнює 32 градаціях (тобто 2 5) на червону, зелену і синю складові. В результаті таке уявлення підтримує 32,768 (тобто 2 15) різних кольорів. Деякі системи використовують додатковий біт для збільшення числа градацій відображуваного кольору. У нашому випадку число різних кольорів при 16-бітному поданні одно 64,536 (тобто 2 16).

24-бітна візуалізація використовує 8 біт на кожну з трьох колірних складових, тобто 256 (2 8) градацій на червону, зелену і синю компоненту. В результаті виходить 16,777,216 (тобто 2 24) різних кольорів.

32-бітна візуалізація використовує 24 біта для запам'ятовування інформації кольорів а ще 8 біт використовується для запам'ятовування насиченості (прозорості) даних. Це так званий альфа канал.

Опис вибору кольору

Залежно від використовуваної системи, можна встановлювати різні значення кількості біт на піксель. (Це може бути також пов'язане з дозволом графічних об'єктів. У більшості випадків 24-бітове представлення забезпечує хорошу візуалізацію. Якщо є необхідність використовувати меншу кількість біт на піксель, то можна використовувати 16-бітове представлення. При обробці напівтонових зображень, в більшості випадків, достатньо 8 біт на піксель.

Зменшення числа кольорів на зображенні

У цьому пункті описано метод зменшення числа квітів в індексних або RGB зображеннях. Розглянемо також метод дифузійного псевдозмішення квітів (dithering). Цей метод використовує візуальне збільшення кількості квітів на зображенні.

Внизу приведені короткі описи функцій зменшення квітів на зображенні в додатку Image Processing Toolbox.

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

Створює палітровое зображення з кольорового зображення RGB.

У системах з 24-бітовим відображенням кольору RGB зображення можуть відображатися 16,777,216 (тобто 2 24) квітами. У системах з меншою кількістю кольорів RGB зображення також будуть відображатися добре, тому що MATLAB автоматично використовує апроксимацію квітів і диффузионное псевдозмішення квітів.

Індексні зображення можуть мати проблеми з великим числом квітів. В основному, обмежуються 256 квітами. Це пов'язано з наступними причинами:

  • У системах з 8-бітовим відображенням при візуалізації індексних зображень, які мають більше, ніж 256 кольорів, застосовується метод дифузійного псевдозмішення квітів (dithering), оскільки не всі кольори можуть бути представлені системою.
  • У деяких системах палітра в принципі не може мати більше, ніж 256 позицій.
  • Якщо індексне зображення містить більше, ніж 256 кольорів, MATLAB запам'ятовує дані зображення в масив не в форматі uint8, а в форматі подвоєною точності. Це призводить до збільшення обсягу запам'ятовуються даних, оскільки кожен піксель займає 64 біта.
  • Файли зображень великих розмірів бажано записувати в форматі, який використовує при візуалізації 256 квітів. Якщо під час запису (з використанням функції imwrite) в цьому ж форматі зображення мають більше ніж 256 кольорів, то в подальшому можливі помилки при візуалізації.

Зменшення числа кольорів на індексному зображенні

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

  • квантування
    • рівномірний квантування
    • Квантування з найменшою дисперсією
  • відображення палітри

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

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

При розгляді цього питання застосовується поняття куб RGB кольорів. Куб RGB кольорів є тривимірний масив всіх кольорів, які визначені для цього типу даних. Оскільки зображення в MATLAB можуть бути представлені в різних форматах (uint8, uint16 або double), то це буде впливати на дискретизацию квітів в кубі RGB.

Рівномірний квантування. Для виконання рівномірного квантування використовується функція rgb2ind з відповідними параметрами.

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

На зображенні продемонстровано рівномірне квантування зображення, представленого в форматі uint8. Для зручності на зображенні показаний двомірний зріз колірного куба, де червоний колір дорівнює 0, а діапазон зеленого і блакитного дорівнює [0, 255].

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

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

Зменшення кількості кольорів на індексному зображенні

Для зменшення кількості кольорів на зображенні використовується також функція imapprox. Функція imapprox використовує деякі методи апроксимації. По суті, функція imapprox спочатку за допомогою функції ind2rgb виконує перетворення зображення в формат RGB, а потім використовує функцію rgb2ind для перетворення в індексний зображення зі зміненим кількістю квітів.

Приклад.
Розглянемо приклад формування зображень, які містять 128 і 16 кольорів з використанням функцій rgb2ind і imapprox відповідно.

Опис image processing toolbox

Зображення з 128 квітами

Опис image processing toolbox

Зображення з 16 квітами

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

Згладжування колірних переходів

Метод дифузійного псевдозмішення квітів (dithering)

При використанні функцій rgb2ind або imapprox для зменшення кількості кольорів на зображенні, якість результуючого зображення трохи нижче. Це пов'язано зі зменшенням кількості квітів, за допомогою яких відображається зображення. Обидві функції - rgb2ind і imapprox - застосовують метод дифузійного псевдозмішення квітів (dithering). Це призводить до візуального збільшення кількості кольорів. Метод dithering змінює кольори пікселів околиці таким чином, що середній колір околиці аппроксимирует вихідний RGB-колір.

Розглянемо приклад роботи методу дифузійного псевдозмішення квітів (dithering).

  1. Зчитування і візуалізація вихідного зображення.

Опис image processing toolbox

  • Створення індексного зображення з вісьмома квітами без застосування методу дифузійного псевдозмішення квітів (dithering).

    Опис image processing toolbox

  • Створення індексного зображення з вісьмома квітами із застосуванням методу дифузійного псевдозмішення квітів (dithering).

    [X_dither, map] = rgb2ind (rgb, 8, 'dither'); figure, imshow (X_dither, map);

    Опис image processing toolbox

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

    Виконання перетворення колірних просторів

    Перетворення колірних даних між колірними просторами

    Найбільш часто в Image Processing Toolbox для опису цифрових зображень використовується колірна система RGB. У цьому випадку стовпчики палітри є інтенсивності червоного, зеленого і синього складових. Палітровие зображення можуть мати довільну глибину кольору, хоча найбільш широкого поширення набули палітровие зображення, глибина кольору яких становить відповідно 4 і 8 біт на піксель.

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

    Перетворення між пристрій-залежними колірними просторами

    Розглянемо два колірних простору RGB і CMYK. Будь-який колір в просторі RGB формується як сума різних кількостей червоною, зеленою і синій складових. Коли значення всіх складових дорівнюють нулю, тоді формується чорний колір. Якщо всі складові беруть максимально можливе значення, тоді формується білий колір. Однак поняття "білий колір" є наближеним. Справа в тому, що RGB-складові забезпечують тільки хороше наближення, а справжній білий колір може бути отриманий тільки складанням всіх його спектральних складових, а не тільки R, G і B. У CMYK-просторі білий колір досягається обнуленням всіх його складових, а Cyan (C, Блакитний), Magenta (M, Пурпурний) і Yellow (Y, Жовтий) використовуються в ньому для створення інших кольорів. Недоліком цього колірного простору є те, що пристрої, які його використовують, не можуть відображати яскраві і насичені кольори.

    Кольорові простору RGB і CMYK є пристрій-залежними, так як колір в них прив'язаний до того чи іншого пристрою, для якого задані ці значення. "Пристроєм" може бути принтер, сканер, монітор та ін. Дійсно, кожен принтер, сканер або монітор одне і те ж зображення будуть відображати своїми квітами, хоча значення RGB на них подаються однакові.

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

    У таблиці наведено список пристрій-залежних колірних просторів, які підтримуються додатком по обробці зображень системи Matlab.

    Приклад: Подання зображень в різних колірних просторах

    Вважаємо зображення у форматі RGB у робочий простір MATLAB і перетворимо колірні дані в колірний простір XYZ:

    1. Зчитування вихідних даних.

    Опис image processing toolbox

  • Створимо структуру перетворення кольору. У цій структурі визначені перетворення між двома кольоровими просторами. Для формування цієї структури використовується функція makecform.

  • У цьому прикладі створюється структура перетворення колірних даних з RGB в XYZ.
  • Виконання перетворень. Для виконання описаних перетворень використовується функція applycform, яка в якості аргументу використовує вихідні дані і структуру перетворення кольору. Результатом роботи функції applycform є перетворені дані.

    Опис image processing toolbox

    Кодування даних, які представлені в різних колірних просторах

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