Смекни!
smekni.com

Імовірнісні методи ощадливого кодування інформації (стр. 5 из 6)

Квантуемая інформаційна вибірка часто представлена числами зі знаком, симетрично розподіленими щодо нуля. Маленькі по абсолютній величині значення звичайно не грають визначальної ролі - їхнє перекручування залишається практично непомітним для нашого сприйняття. У подібних ситуаціях базовий зсув інтервалу xq має сенс вибирати рівним —∆/2. При такому виборі значення в околиці [—∆/2, ∆/2) будуть замінятися нулями (так називана мертва зона). З метою поліпшення схеми квантування розмір мертвої зони збільшують, залишаючи незмінними розміри інших інтервалів. Крім підвищення ефективності це дозволяє спростити процедуру квантування: якщо вибрати розмір мертвої зони рівним 2?, визначення номера інтервалу при квантуванні зведеться до розподілу квантуемого значення на параметр квантування. Дане рішення використається в багатьох практичних додатках, зокрема, у стандартах кодування відеоінформації JPEG, JPEG2000, MPEG, Н.261, Н.263.

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

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


3. Ефективні алгоритми кодування відеоінформації

3.1 Алгоритм медіанного перетину

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

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

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

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

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

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

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

Часто реалізації алгоритму використають спеціальні структури для зберігання розбивки колірного простору. Прикладом такої структури може служити BSP дерево.

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

3.2.1 Методи кластерізації для квантування зображень

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

3.2.2 Метод K-середніх

Це один із самих популярних алгоритмів для кластеризации. Зафіксуємо число K- розмір палітри - і будемо розбивати всі значення атрибутів зображення на K кластерів.

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

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

3.2.3 Метод связности графа

Побудуємо матрицю відстаней D між значеннями атрибутів вихідного зображення. Як відстань можна взяти квадрат евклідової метрики. Потім виберемо число T - поріг. Після цього побудуємо матрицю B по матриці D за наступним правилом:

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

Нехай це число дорівнює 0. Далі вибираємо випадкову вершину й "підпалюємо" її, тобто кладемо в неї число 1. Потім для кожної вершини, що з'єднана ребром з обраної, кладемо 1. Після цього те ж саме робимо для зв'язних сусідів вершин, куди вже поклали 1, - їм також кладемо число 1, і т.д. Таким чином, ми запустили хвилю. Коли вона зупиниться, це означає, що отримано всі значення кластера. Далі, варто вибрати випадково ту вершину, що не потрапила в кластер, тобто зберігає 0. І запустити для неї хвильовий алгоритм, наприклад, із числом 2. Проробивши таку процедуру кілька разів, одержимо розбивку на кластери. У палітру варто покласти центри кластерів, що вийшли.

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

3.2.4 Ієрархічний метод

Припустимо, що в зображенні n пикселей і кожний з них утворить свій кластер. Зв'яжемо із кластером величину, називану центром ваги кластера. Для кластера, що складає з одного значення, центром ваги є саме значення (у нашому випадку, значення атрибута пикселя). Побудуємо матрицю відстаней D між кластерами. Як відстань береться, наприклад, квадрат евклідової метрики між центрами ваги кластерів. Потім виберемо число T - поріг і пари кластерів (i*, j*) так, щоб (i*, j*) = arg min(i,j) dij (т. е, щоб di*j* було мінімальним у матриці). Об'єднаємо кластери, що відповідають i* й j*, поклавши центром ваги нового кластера напівсуму центрів ваги поєднуваних кластерів. Таким чином, одержимо n-1 кластерів. Для цих кластерів також побудуємо матрицю відстаней D* і знову знайдемо пару, що має мінімальна відстань між центрами ваги. Замінимо знайдену пару одним кластером, обчисливши його центр ваги. Отже, одержимо n - 2 кластерів і т.д.

Ми можемо зробити максимум n - 1 ітерацію. У такому випадку після останньої ітерації ми одержимо тільки один кластер. Щоб одержати K кластерів, потрібно зробити n - K ітерацій.

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

3.2.5 Узагальнений метод K-середніх або метод динамічних згущень

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