Обробка зображень та мультимедіа

Модуль 1

Лекція 6. Обробка кольорових зображень


ЛЕКЦІЯ 6. ОБРОБКА КОЛЬОРОВИХ ЗОБРАЖЕНЬ

  1. 6.1     РОБОТА З КОЛІРНИМИ ХАРАКТЕРИСТИКАМИ ЗОБРАЖЕННЯ

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

Довільний вектор c у колірному просторі RGB представляється в такий спосіб:

            (1)

Зображення при цьому має три площини R, G, B. При роботі в просторі RGB всі три площини часто обробляються окремо, а потім результати обробки площин поєднуються.

Зручними для роботи з кольором є перцептивні простори HSI, (HSV, HSL, HSB), а також Lab (CIEL*a*b*, CIELAB), YCbCr. У цих просторах можна працювати з виділеним компонентом інтенсивності. Простір Lab є рівномірним, апаратно-незалежним, колориметричним простором, тоді як YCbCr є лише перетвореним RGB простором. Однак, переклад у простір Lab є дорожчим в обчислювальному відношенні. В HSI значення колірного тону зазнає розрив у тих точках, яким відповідають кути 00 і 3600 ; для колірних точок з нульовою насиченістю значення колірного тону не визначено (див. Лекцію 5).

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

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

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

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

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

У Лекції 5 за допомогою формул (22)-(28) представлена модель колірних відмінностей для рівномірного простору CIELAB. Заданий колірний шаблон може бути точно обмірений й відповідність йому знайдена у зображенні, що аналізується. Однак, у системах реального часу застосування формул перекладу в CIELAB і виміру відмінностей досить дороге в обчислювальному відношенні, тому можуть бути застосовані більш прості, менш точні колірні моделі. У більшості застосувань систем реального часу колір є другорядною ознакою. У системах машинного зору можуть знадобитися більш точні виміри кольору й точні моделі.

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

0.05 < H < 0.07 (2)

а в системі кольорів YCbCr лежить у діапазонах

  1. 135 < Y < 145, (3)
  2. 100 < Cb < 110, (4)
  3. 140 < Cr < 150. (5)

Колірні відстані в просторі HSI як міра подібності для колірного тону визначаються по формулах:

            (6)

Діапазони для колірного тону можна обчислити по формулах наведених у Лекції 7.

Для обробки в реальному часі буде зручно застосувати новий колірний простір R’G’I, розроблений для прискорення обчислень в якості альтернативного до HSI. Перетворення координат кольору R, G, B у координати R’, G’, I й назад використовує тільки цілочислену арифметику та зсуви. Рекомендується для корекції інтенсивності, гістограмних корекцій, вимірювання кольору у системах реального часу. Формули для обчислення колірних компонентів простору R’G’I приведені в Лекції 5. Колірною відстанню в колірному просторі R’G’I можна вибрати евклідову відстань.

  1. 6.2     ВИДІЛЕННЯ КОЛЬОРУ У ВЕКТОРНОМУ ПРОСТОРІ RGB

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

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

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

Нехай z — довільна точка простору RGB. Ми скажемо, що точка z схожа за кольором з m, якщо відстань між цими точками не перевищує деякого граничного значення Т. Евклідова відстань між zіm обчислюється за формулою

D(z,m) = ||z — m|| = [(z — m)T (z — m)] = ((zR — mR)2 + (zG — mG)2 + (zB —mB)2)1/2,          (7)

де || • || позначає норму аргументу, а нижні індекси R, G і B використовуються для позначення RGB компонентів векторів z і m. Геометричне місце точок, для яких D(z,m) < T є кулею радіуса Т, що зображений на рис. 6.2 а).

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

Рисунок 6.1 - Початкове зображення з прямокутником вибраного кольору

На рис. 6.1 виділена прямокутна область, що цікавить нас, на рис. 6.3 показаний результат роботи програми колірної сегментації способом оточення даних, показаний на рис. 6.2 б.

а)                                    б)                                          в)

Рисунок 6.2 Три підходи до оточення даних у векторному просторі RGB

у задачах сегментації зображень

При різних порогах розрізнення кольору результати сегментації різні. Корисним узагальненням (7) є відстань, що задається виразом виду

D(z,m)=|| ( z-m)TC-1( z-m) || , (8)

де C — ковариаційна матриця, що обчислена по вибірці векторів колірного простору, яка є репрезентативною стосовно підлягаючого виділення кольору. Геометричне місце точок, таких що D(z,m) < D0, являє собою еліпсоїд у тривимірному просторі (рис. 6.2,б), важлива властивість якого полягає у тому, що напрямок його головної осі збігається з напрямком найбільшого розкиду даних цієї вибірки. Якщо C=1, тобто коваріаційна матриця дорівнює одиничній матриці розмірами 3x3, то (8) зводиться до (7). Процес сегментації здійснюється, аналогічно описаному вище.

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

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

Прямокутна область, яка показана на рис. 6.1, містить вибірку кольорів зеленого відтінку, які ми хочемо виділити на даному кольоровому зображенні. По сукупності колірних векторів, укладених у прямокутній області на рис. 6.1, обчислюється середній колірний вектор а, після чого обчислюється середньоквадратичні відхилення для значень червоної, зеленої і синьої колірних координат векторів цієї сукупності. Центр паралелепіпеда розташовуєтьсяся в точці а, а розміри паралелепіпеда в напрямку кожної з осей в RGB- просторі вибираються так, щоб вони в 1,25 рази перевищували середньоквадратичне відхилення даних відповідної осі. Нехай, наприклад, середньоквадратичне відхилення значень червоного компонента у вибірці було σR. Тоді точкам паралелепіпеда відповідають значення координат від

(a R -1.25σR) до (aR+1.25σR) по осі R,

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

Рисунок 6.3 Області заданого кольору, виділені на зображенні в результаті сегментації за кольором

6.3     ПАЛІТРИ Й ОПТИМІЗАЦІЯ ПАЛІТР

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

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

Однієї з проблем, що виникають час від часу в комп'ютерній графіка, є проблема вибору колірної палітри, за допомогою якої можна відобразити картинку з кількістю відтінків, що перевищують кількість кольорів у палітрі. Яка комбінація кольорів дасть найкращий результат? Відповідь на це питання дає процес, що називають оптимізацією палітри. Самий простий підхід полягає в тому, щоб, перебравши всі піксели в зображені, порахувати скільки разів зустрічається кожний колір і скласти палітру з тих кольорів, що зустрічаються частіше інших. Якщо деякий відтінок синього кольору зустрічається 100 разів, а відтінок червоного тільки 20, то перевага віддається синьому кольору. Але цей метод має декілька недоліків. Один із них полягає в тому, що деякі кольори будуть виключені повністю. Уявіть собі зображення заміської дороги, де переважають сині, коричневі, жовті, зелені тони, і десь в одному куту виявився червоний, дорожній знак "Стій". Якщо червоний колір більш ніде на цій картинці не зустрічається, те він не потрапить у палітру, і, отже, буде пофарбований у якийсь інший колір.   

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

6.3.1     Метод квантування кольорів медіанним перетином.

Інше рішення проблеми - це метод квантування кольорів медіанним перетином. Колірний простір розглядається як тривимірний куб. Кожна вісь куба відповідає одному з трьох основних кольорів: червоному, зеленому або синьому (розглянемо для прикладу випадок, коли використовують 256 кольорів). Кожна з трьох сторін розбивається на 255 рівних частин, Розподіли на осях нумеруються від 0 до 255, причому більше значення відповідає більшій інтенсивності кольору. Точки усередині куба, що відповідають кольорам відмічаються так само, як точки тривимірного графіка, якби були задані x, y і z координати точки. Приміром, якщо значення червоної, зеленої і синьої компонент є 128, 64 і 192 відповідно, то необхідно відкласти на осі Ч - 128, на осі З - 64, на осі С - 192 і одержати точку усередині куба, що відповідає даного кольору.

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

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

Перший крок перебуває у відсіканні "країв" куба, що не містять пікселів. Приміром, якщо у всіх пікселів значення червоної компоненти не менше, ніж 8 і не більше, ніж 250, то відкидаються частини куба від Ч=0 до Ч=7   і від Ч=251 до Ч=255. 

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

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

Медіанний перетин повторно застосовується для того, щоб розділити куб на 8, 16, 32, 64, 128 і 256 паралелепіпедів. Вони містять приблизно ту саму кількість пікселів і їхні об'єми обернено пропорційні щільностям пікселів.  

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

Метод медіанного перетину поділяє куб на 256 паралелепіпедів, кожний із який містить приблизно однакову кількість пікселів. При такій розбивці куба центральна точка кожного паралелепіпеда представляє оптимальний вибір для колірної палітри. У тій області куба, що густо заповнена точками, буде більше паралелепіпедів і, відповідно, у палітру потрапить більше кольорів. А там, де точок менше, і кольорів буде взято менше. Жодний колір не буде відкинутий цілком. Тим же кольорам, що зустрічаються частіше, буде віддана перевага. Звернемося ще раз до приклада з заміською дорогою. Кольори в палітрі, отриманої медіанним перетином, будуть концентруватися навколо синього, коричневого, жовтого і зеленого, але принаймні знайдеться один відтінок із достатньою червоною компонентою, щоб апроксимувати колір знака "Стій".

6.4     АПРОКСИМАЦІЯ НАПІВТОНАМИ

Апроксимація напівтонами – це метод , в якому використовується мінімальна кількість рівнів інтенсивності для отримання великої кількості напівтонів.  

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

Напівтоновий друк використовує дискретні клітини. Розмір клітини вибирається в залежності від мілкозернистості решітки і тривалості експозиції. Для газетного друку використовується 50-90 точок на дюйм.  

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

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

Рис. 6.4. Двохрівневі конфігурації  2 на 2

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

Рис. 6.5. Дворівневі конфігурації  3 на 2

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

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

В методі, розробленому Флойдом та Стейнбергом, ця похибка розподіляється на сусідні піксели. Розподіл похибки виконується завжди вниз і вправо. Таким чином, при генерації зображення в порядку сканування повертатись в зворотному напрямі не потрібно. Зокрема, в алгоритмі Флойда-Стейнберга  3/8  похибки розподіляється вправо,  3/8  вниз і  1/4  – по діагоналі. Поріг інтенсивності вибирають рівному  Т=(білий+чорний)/2  (рис.6.6.).

Рис. 6.6. Розподіл інтенсивності в алгоритмі Флойда-Стейнберга 

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

6.5     МЕТОДИ ПСЕВДОТОНУВАННЯ

Піксел може пpиймати pізні відтінки. Будь-яке зобpаження незалежно від його складності - це сукупність пікселів заданих відтінків.

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

  1. Максимальна кількість кольорів, які одночасно відображаються на екрані, визначаються кількістю бітів, виділених для кожного піксела у відеобуфеpі. У повнокольорових системах кожному пікселу виділяється 24 біта колірної інфоpмації: вісім - для червоної компоненти кольору, вісім - для зеленої і вісім - для синьої. Більшим числам відповідають більш яскраві кольори. 24-бітне число може бути в межах від 0 до 16777215. Це означає, що відеоадаптеp може відобразити більш як 16,7 мільйонів кольорів. Змішуючи різні інтенсивності червоної, зеленої і синьої компонент можна одержати практично будь-який колір.
  2. Біти у відеобуфері, що відповідають тому чи іншому пикселу, не обов'язково вказують його колір безпосередньо. У системах із 256 кольорами (тільки 8 біт на піксел) значення з відеобуфеpа вказує на одну з 256 рядків у таблиці, яка отримала назву колірної палітри. Число, що знаходиться в цьому рядку палітpи, визначає колір піксела. Якщо палітpа складається з 24-бітних значень, то відеоплата може відобразити любий із 16,7 млн. кольорів.
  3. Як пpавило, чим більше пікселів на екpані, тим вища якість зобpаження. Часто користувач поставлений пеpед вибоpом кількості кольорів і pозподілення. Той самий відеоадаптеp дозволяє одержати 256 кольорів пpи pозподіленні 1024 на 768, або 16 кольорів пpи розподіленні 1280 на 1024. Так що ж важливіше: вище розподілення або більше відтінків? Якщо на екрані потрібно одержати зображення фотогpафічної якості, то важливіші відтінки. Зобpаження низької роздільної здатності, що містить 256 кольорів, виглядає більш pеалістичним, ніж зобpаження з 16 кольорів, але більш високої роздільної здатності. Тому зображення на екрані телевізора зазвичай виглядає краще, ніж на екрані комп'ютера. Екран комп'ютера може мати більш високу роздільну здатність, але телевізор дозволяє показувати приктично необмежену кількість кольорів.

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

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

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

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

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

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

Починаючи з пеpшого піксела зобpаження в лівому веpхньому куту, комп'ютеp вибиpає з палітpи колір, який найменше відрізняється від вихідного кольору піксела. Будемо вважати, що в палітрі значення червоної, зеленої і синьої компонент кольору дорівнюють відповідно 192, 64 і 64, а колір піксела вихідного зображення 202, 96, 58. Колірна похибка обчислюється для кожній компоненти. У даному випадку похибка для червоної компоненти буде дорівнювати 202-192=10, для зеленої 32 і для синьої – 6. Ці числа показують різницію між тми, що ми побачимо на екрані і тим, що хичимо побачити.

Значення помилок, які були обчислені на попередньому кроці, повинні бути pозподілені сеpед сусідніх пікселів, використовуючи фільтp Флойда -Стейнбеpга. Піксел спpава одержить 7/16 помилки, пиксел зліва знизу одержить 3/16, піксел знизу одержить 5/16 і пиксел спpава знизу одержує 1/16. Сума цих дробів дорівнює одиниці. Ця необхідна умова, якщо похибка повинна pозподілятись повністю. Ці дpоби збільшуються на помилку і добавляються до відповідних пікселів.

Наприклад, червона компонента пpавого піксела повинна збільшитися на 10*7/16, тобто на 5. Зелена компонента збільшується на 32*7/16 (14) і синя компонента зменшується на 6*7/16 (3). Коли крок завеpшено, пікселу в лівому верхньому куту встановлюється значення з палітpи, а значення кольору тpьох його сусідніх пікселів (у даному випадку піксаль зліва знизу відсутній і тому ігнорується) змінюються.

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


© 2023 СумДУ
created with Lectur'EDbeta