
- •2.1 Мета роботи
- •2.2 Методичні вказівки з організації самостійної роботи студентів.
- •3.1 Мета роботи
- •3.2 Методичні вказівки з організації самостійної роботи студентів.
- •4.1 Мета роботи
- •4.2 Методичні вказівки з організації самостійної роботи студентів.
- •5.1 Мета роботи
- •5.2 Методичні вказівки з організації самостійної роботи студентів.
- •Порядок виконання роботи і методичні вказівки з її виконання.
5.1 Мета роботи
Ознайомитися з основними принципами роботи фрактальної компресії і декомпресії.
5.2 Методичні вказівки з організації самостійної роботи студентів.
Фрактали дивовижні математичні об'єкти, підкуповують своєю простотою і багатими можливостями з побудови об'єктів складної природи за допомогою всього лише кількох коефіцієнтів і простий итеративной схеми.
Саме ці можливості і дозволяють використовувати їх для стиснення зображень, особливо для фотографій природи та інших складних самоподібних зображень.
Для початку все-таки доведеться трохи заглибитися в математику і ввести кілька визначень.
Нам знадобляться наступні:
• метрика - функція, задана на просторі, що повертає відстань між двома точками цього простору. Наприклад, звична нам евклідовой метрика. Якщо на просторі задана метрика, воно називається метричним. Метрика повинна відповідати певним умовам, але не будемо заглиблюватися;
• стискати відображення (перетворення) - функція на метричному просторі, рівномірно зменшує відстань між двома точками простору. Наприклад, y = 0.5x.
Стискають відображення володіють важливою властивістю. Якщо взяти будь-яку точку і розпочати ітеративні дії, а саме застосовувати до неї одне і те ж стискуюче відображення: f (f (f ... f (x))), то результатом буде завжди одна і та ж точка. Чим більше разів застосуємо, тим точніше знайдемо цю точку. Називається вона нерухомою точкою для кожного стискає відображення вона існує, причому тільки одна.
Кілька афінних стискають відображень утворюють систему ітерованих функцій (СІФ). По суті, СИФ - це розмножувальна машина. Вона приймає вихідне зображення, спотворює його, переміщує, і так кілька разів.
Наприклад, ось так за допомогою СІФ з трьох функцій будується трикутник Серпінського (Рис.5.1).
Рисунок 5.1 Приклад як за допомогою СІФ з трьох функцій будується трикутник Серпінського
Початковий трикутник три рази множиться, зменшується і переноситься. І так далі. Якщо так продовжувати до нескінченності, отримаємо відомий фрактал площею 0 і розмірністю 1.585.
Якщо функції, що входять до ДІФ, - стискають, то сама СІФ теж має нерухому точку. От тільки ця «точка» буде вже не звичної нам точкою в N-вимірному просторі, а безліччю таких точок, тобто зображенням. Воно називається аттрактором СІФ. Для СІФ, наведеною вище, аттрактором буде трикутник Серпінського.
Тут ми переходимо на наступний рівень - у простір зображень. У цьому просторі:
• Точка простору - це зображення.
• Відстань між точками показує, наскільки схожі зображення між собою, наскільки «близькі» (природно, якщо його поставити відповідним чином).
• стискати відображення робить два будь зображення більш схожими (в сенсі заданої метрики).
Маючи СІФ, знайти аттрактор просто. У всякому разі, маючи під рукою комп'ютер. Можна взяти абсолютно будь початкове зображення і почати застосовувати до нього СІФ. Приклад з тим же трикутником, але вже побудованим з квадрата (Рис.5.2).
Рисунок 5.2 Приклад з тим же трикутником, але вже побудованим з квадрата.
Виходить, що для побудови досить складної фігури нам знадобилося 18 коефіцієнтів. Виграш, як говориться, у наявності.
От якби ми вміли вирішувати зворотну задачу - маючи аттрактор, будувати СІФ ... Тоді достатньо взяти аттрактор-зображення, схоже на фотографію вашої кішки і можна досить вигідно його закодувати.
Ось тут, власне, починаються проблеми. Довільні зображення, на відміну від фракталів, що не самоподобни, так що так просто це завдання не вирішується. Як це зробити придумав в 1992 році Арнольд Жакін, у той час - аспірант Майкла Барнслі, який вважається батьком фрактального стиснення.
Самоподібність нам потрібно обов'язково - інакше обмежені у своїх можливостях аффінниє перетворення не зможуть правдоподібно наблизити зображення. А якщо його немає між частиною і цілим, то можна пошукати між частиною і частиною. Приблизно так, мабуть, міркував і Жакін.
Спрощена схема кодування виглядає так:
• Зображення ділиться на невеликі неперекривающіеся квадратні області, звані ранговими блоками. По суті, розбивається на квадрати. См. Картинку нижче.
• Будується пул всіх можливих перекриваються блоків в чотири рази великих рангових - доменних блоків.
• Для кожного рангового блоку по черзі «приміряємо» доменні блоки і шукаємо таке перетворення, яке робить доменний блок найбільш схожим на поточний ранговий.
• Пара «перетворення-доменний блок», яка наблизилася до ідеалу, ставиться у відповідність рангових блоку. У закодоване зображення зберігаються коефіцієнти перетворення і координати доменного блоку. Вміст доменного блоку нам ні до чого - ви ж пам'ятаєте, нам все одно з якої точки стартувати.
На зображенні (Рис.5.3) ранговий блок позначений жовтим, відповідний йому доменний - червоним. Також показані етапи перетворення і результат.
Рисунок 5.3 Показані етапи перетворення і результат де ранговий блок позначений жовтим, відповідний йому доменний – червоним.
Можете тренуватись самостійно використовуючи Coder demo.
Отримання оптимального перетворення - окрема тема, проте великої праці воно не становить. Але інший недолік схеми видно неозброєним оком. Можете самі підрахувати, скільки доменних блоків розміром 32 × 32 містить двомегапіксельне зображення. Повний їх перебір для кожного рангового блоку і є основна проблема такого виду стиснення - кодування займає дуже багато часу. Зрозуміло, з цим борються за допомогою різних хитрувань, начебто звуження області пошуку або попередньої класифікації доменних блоків. З різним збитком для якості.
Декодування же проводиться просто і досить швидко. Беремо будь-яке зображення, ділимо на рангові області, послідовно замінюємо їх результатом застосування відповідних перетворень до відповідної доменної області (чого б вона не містила в даний момент). Після декількох ітерацій початкове зображення стане похоже на себе (Рис.5.4).
Рисунок 5.3 Показані, що після декількох ітерацій початкове зображення стане похоже на себе
Афінні перетворення (від лат. Affinis - дотичний, близький, суміжний) - відображення площини або простору в себе, при якому прямі переходять у прямі.
Для підготовки до виконання роботи можливо використати такі електронні джерела: http://www.slideshare.net/studpro/ss-10585853, http://www.liveinternet.ru/users/5130047/post302686049/ для створення наприклад такого малюнку (Рис.5.4).
Рисунок 5.4 Приклад використання WinFract
5.3 Опис лабораторної установки (програмного забезпечення).
Для виконання роботи використовується:
Windows 7 Home Basic 64 bit,
Fractint for Windows vers 20.04,
графічна карта intel gma 4500MHD,
процесор intel core 2 duo su7300.