0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Рисунок 1.1 - Фрагмент
зображення
На рисунку 1.1 поле зображення
покрите сіткою 8х8. Зіставимо біт 0 тим полям, що вільні від зображення і 1
тим, що покриті фарбою.
Якщо тепер кожен рядок інтерпретувати
як двійкове число, то зображення можна записати (закодувати) послідовністю
восьми десяткових чисел: 0, 4, 132. 254, 254, 4, 4, 0, або у шістнадцятковому
вигляді: 00, 04, 84, FE,, 04, 04, 00 і зберігати у пам’яті ЕОМ у вигляді
байтів.
.3 Основні алгоритми
стиснення зображень
Растрові файли мають дуже великі
розміри. Якщо знехтувати заголовками файла й іншими неграфічними даними, те
його розмір пропорційний кількості пікселів у зображенні і кількості бітів,
необхідних для представлення кожного пiксела. Повнокольорове зображення
розміром 1024х768 пікселів займає більш двох мегабайт пам'яті, а одна секунда
вiдеофільма телевізійної якості в растровому виді вимагає біля тридцятьох
мегабайт. Тому жорсткий диск можна заповнити миттєво. Навіть компакт-диск, що вміщає
біля 700 мегабайт даних, не настільки великий, щоб помістити такий об'єм
інформації.
Використовуючи метод, який
називається стисненням зображень, можна різко зменшити в розмірі графічні
файли. При стисненні графічної інформації використовуються спеціальні прийоми,
що зменшують кількість байтів, необхідних для представлення зображення. Степінь
стиснення залежить від методу стиснення і вмісту графічного файла. Як правило
графічний файл стискується в п'ять і більш разів. Існують методи, що стискують
ще сильніше, але з втратами якості. При відновленні зображення втрачається
деяка частина колірної інформації. У підсумку, розпаковане зображення може
стати злегка розмитим або знебарвленим.
Методи стиснення растрової
інформації діляться на дві великі групи: стиснення з втратами і стиснення без
втрат. Методи стиснення без втрат дають більш низький коефіцієнт стиснення, але
зате зберігають точне значення пікселів вихідного зображення. Методи з втратами
дають більш високі коефіцієнти стиснення, але не дозволяють відтворити
початкове зображення з точністю до піксела. Для файлів, які формуються
програмами автоматизованого проектування, дуже важливо зберегти всю інформацію,
тому що втрата хоча б одного біта може змінити зміст усього файла. Зовсім інша
справа з растровими даними. Людське око не сприймає всі відтінки кольору в
звичайному растровому зображенні. Таким чином, деякі деталі можуть бути опущені
без видимого порушення інформаційного змісту зображення.
Розглянемо два найбільш
розповсюджені методи стиснення зображень. Спочатку познайомимося з одним із
варіантів групового кодування (run-lenght encoding - RLE). Ідея методу полягає
в тому, що послідовність значень, що повторюються, заміняється парою чисел:
одне з них вказує на довжину групи (число повторень даного значення), а інше -
на власне це значення. Це дуже загальний і дуже простий метод без втрат. Він
використовується в багатьох популярних сьогодні форматах графічних файлів і,
зокрема, у PCX і BMP. У його основі лежить той факт, що багато зображень
надлишкові, оскільки містять велику кількість суміжних пікселів одного кольору.
Розглянемо, наприклад, як за допомогою групового кодування стискається
зображення, у якому зустрічається підряд 100 пікселів із нульовим значенням. Ця
послідовність із 100 нулів кодується парою чисел (100,0). Отже такий фрагмент
картинки скоротиться в п'ятдесят разів.
Іншій методом, яким користуються
досить часто, - JPEG (метод, що стискує з утратами) одержав свою назву від
абревіатури об'єднаної групи експертів в області фотографії (Joint Photographic
Expert Group - JPEG), що його і розробила. JPEG широко використовується при
стиснення статичних зображень. Цей метод істотно складніший, чим RLE. Основна
ідея методу перебуває в поділі інформації в зображенні за рівнем важливості, і
потім відкиданні менше важливої її частини, зменшуючи тим самим загальний об'єм
збережених даних. Це досягається перетворенням матриці колірних значень у
матрицю амплітуд, що відповідають визначеним частотам розкладання зображення.
(Звукові коливання, наприклад, можна розкласти математичними методами на прості
синусоїдальні гармоніки різних амплітуд і частот, що при додаванні відтворюють
вихідний сигнал). Рядок або стовпець пікселів зображення теж можна представити
амплітудами і частотами. Мова в даному випадку йде не про спектральний склад
світла, а про форму представлення кривих, що утворять графіки, якщо значення
пікселів служать ординатами. Відзначимо, що формула перетворення матриці
пікселів у матрицю амплітуд не проста. JPEG-стиснення відкидає частину високочастотних
компонент зображення, залишаючи компоненти з низькими частотами. Людське око
менше критичне до високочастотних варіацій кольору, оскільки загальний вид
зображення визначається низькими частотами. Значення піксела, отримане при
відновленні зображення, дещо відрізняється від вихідного значення, тому що
частина інформації була загублена, хоча звичайно вони дуже близькі.
У методі JPEG є дуже цікава особливість:
користувач може задавати коефіцієнт якості. Високий коефіцієнт якості дозволяє
зберегти більше деталей, але при цьому зменшується ступінь стиснення. При
низькому коефіцієнті якості степінь стиснення збільшується, але зображення стає
менше чітким.
Чим нижче коефіцієнт якості, тим
більша кількість інформації відкидається.
Коли любий із методів (RLE або JPEG)
застосовується до повнокольорового зображення, то червона, зелена і синя
компоненти стискуються незалежно. Якщо в растровому зображені використовується
палітра або просто відтінки сірого, то значення пікселів можливо закодувати в
один прохід.
Алгоритм групового
кодування
Починаючи з першого рядка, програма
групового кодування переглядає значення пікселів зліва праворуч і шукає
відрізки пікселів, що повторюються. Всякий раз, коли зустрічаються три або
більше пікселів, що йдуть підряд, з однаковим значенням, програма заміняє їх
парою чисел: перше число вказує на довжину відрізка, друге - на значення
пікселів. Число, що визначає довжину відрізка, називають міткою відрізка.
Щоб ідентифікувати серії значень
пікселів, що не повторюються, програма також уставляє мітки, що вказують на
кількість таких значень у серії. Зарезервований біт необхідний для того, щоб
можна було відрізнити мітку відрізка від мітки серії значень, що не
повторюються. Наприклад, у 8-ми бітах можна задати послідовності довжиною до 127
пікселів; восьмий біт у кожній мітці може відрізняти відрізок від серії
пікселів, що не повторюються. Точно так само обробляється кожний рядок пікселів
і відрізки однакових значень пікселів стискуються у всьому зображенні.
Графічна програма декодує зображення,
зчитуюючи стиснутий файл і відновлює відрізки повторюваних значень пікселів.
Зауважимо, що відновлене зображення цілком збігається з оригіналом.
Алгоритм JPEG
Насамперед програма поділяє
зображення на блоки - матриці розміром 8х8 пікселів. При використанні методу
JPEG час, що затрачається на стиснення зображення, пропорційний квадрату числа
пікселів у блоці. Обробка декількох блоків меншого розміру робиться значно
швидше, чим обробка всього зображення цілком.
До значень пікселів застосовується
формула, названа дискретним косинусоїдальним перетворенням (Discrete Cosine
Transform - DCT). DCT переводить матрицю значень пікселів 8х8 у матрицю значень
амплітуд тієї ж розмірності, що відповідає визначеним частотам синусоїдальних
коливань. Лівий верхній кут матриці відповідає низьким частотам, а правий
нижній - високим.
Коефіцієнт якості, введений
користувачем, використовується в простій формулі, що генерує значення елементів
іншої матриці 8х8, яка називається матрицею квантування. Чим нижче коефіцієнт
якості, тим більші значення будуть мати елементи матриці.
Кожне значення в матриці, яка була
сформована після DCT-перетворення, ділиться на відповідне значення з матриці
квантування, потім округляється до найближчого цілого числа. Оскільки великі
числа знаходяться в правій нижній половині матриці квантування, то основна
частина високочастотної інформації зображення буде відкинута. Тому нижня права
частина матриці пікселів буде перебувати в основному з нулів.
Далі програма зчитує елементи
матриці і кодує їх послідовно методами без втрат. Зауважимо, що стиснення
істотно залежить від нулів у правій нижній половині матриці. Чим нижче
коефіцієнт якості, тим більше нулів у матриці і, відповідно, тим вище ступінь
стиснення.
Декодування JPEG-зображення
починається з кроку зворотного кодуванню без втрат, у результаті чого
відновлюється матриця квантування пікселів.
Значення з матриці пікселів
перемножується на значення з матриці квантування, щоб відновити, наскільки це
можливо, матрицю, що була обчислена на кроку застосування DCT. На етапі
квантування була загублена деяка частина інформації, тому числа в матриці
будуть близькі до початкових, але не буде абсолютного збігу.
Зворотна до DCT формула (IDCT)
застосовується до матриці для відновлення значень пікселів вихідного зображення.
Ще разом відзначимо, що отримані кольори не будуть цілком відповідати
початковим через втрату інформації на кроку квантування. Відновлене зображення,
при порівнянні з оригіналом, буде виглядати декілька розмитим і знебарвленим.
Алгоритм Хаффмана
Один з класичних алгоритмів.
Використовує тільки частоту появи однакових байт в зображенні. Порівнює
символів вхідного потоку, які зустрічаються більше число разів, ланцюжок біт
меншої довжини. І навпаки - зустрічаються рідко - ланцюжок більшої довжини. Для
збору статистики вимагає двох проходів по зображенню. Коефіцієнти стиснення: 1
/ 8, 2 / 3, 1. Вимагає запису у файл таблиці відповідності кодуються символів і
кодують ланцюжків. На практиці використовуються його різновиди. Так, в деяких
випадках резонно або використовувати постійну таблицю, або будувати її
«адаптивно», тобто в процесі архівації / розархівації. Ці прийоми позбавляють
від двох проходів по зображенню і необхідності зберігання таблиці разом з
файлом. Кодування з фіксованою таблицею застосовується як до останнього етапу
архівації в JPEG.
Близька модифікація алгоритму
використовується при стисненні чорно-білих зображень. Послідовності поспіль
йдуть чорних і білих крапок замінюються числом, рівним їх кількості з ознакою
кольору. А цей ряд вже, у свою чергу, стискується по Хаффману з фіксованою
таблицею. Алгоритм реалізований у форматі TIFF.
JBIG
Алгоритм розроблений групою
експертів ISO (-Joint Bi level Experts Group) спеціально для стиснення
однобітних чорно-білих зображень. Наприклад, факсів або відсканованих
документів. У принципі може застосовуватися і до 2-х, і до 4-х двійкового
картинок. При цьому алгоритм розбиває їх на окремі бітові площині. JBIG
дозволяє управляти такими параметрами, як порядок розбиття зображення на бітові
площині, ширина смуг в зображенні, рівні масштабування. Остання можливість
дозволяє легко орієнтуватися в базі великих за розмірами зображень,
переглядаючи спочатку їх зменшені копії. Настроюючи ці параметри, можна
використовувати цікавий ефект при отриманні зображення по мережі або з
будь-якого іншому каналу, пропускна здатність якого мала в порівнянні з
можливостями процесора. Розпаковуватися зображення на екрані буде поступово, як
би повільно «проявляючись». При цьому людина починає аналізувати зображення
задовго до кінця процесу розархівації.
Алгоритм побудований на базі
Q-кодувальника, патент на який володіє IBM. Q-кодер також, як і алгоритм
Хаффмана, використовує для частіше з'являються символів короткі ланцюжки, а для
рідше з'являються довгі. Однак, на відміну від нього, в алгоритмі
використовуються і послідовності символів. Характерною особливістю JBIG є різке
зниження ступеня стиснення при підвищенні рівня шумів вхідний картинки.
Фрактальний стиск
Ця група алгоритмів, мабуть, є
найбільш перспективною і розвивається зараз найбільш бурхливо. Перші практичні
результати були отримані зовсім недавно - у 1992 році - і виробили
приголомшливе враження. Коефіцієнт стискування у фрактальних алгоритмів
варіюється в межах 2-2000. Причому великі коефіцієнти досягаються на реальних зображеннях,
що, взагалі кажучи, нетипово для попередніх алгоритмів. Крім того, при
розархівації зображення можна масштабувати. Унікальна особливість цього
алгоритму полягає в тому, що збільшене зображення не дробиться на квадрати. Під
фрактального стиснення використовується принципово нова ідея - не близькість
квітів у локальній області, а подібність різних за розміром областей
зображення. Це, безумовно, найбільш прогресивний підхід на сьогоднішній день.
Алгоритм орієнтований на повнокольорові зображення і зображення в градаціях
сірого кольору.
Його особливістю є потреба в
колосальних обчислювальних потужностях за архівації. При цьому розпаковування
вимагає менше обчислень, ніж у JPEG.
.4 Огляд та аналіз
сучасних програмних засобів конвертування зображень
FastStone Photo Resizer
Безкоштовна програма для
конвертування графічних файлів.
Рисунок
1.2. - Робоча область FastStone Photo
Resizer
Можливості FastStone Photo Resizer:
Дозволяє змінювати
розміри, перейменовувати, обрізати, обертати, змінювати колірні схеми, додавати
текст і інші ефекти на зображення.
- Може перейменовувати зображення, з
порядковим номером.
Підтримка форматів JPEG, BMP, GIF,
PNG, TIFF і JPEG2000.
Пошук і заміна тексту в іменах
файлів.
Може працювати в пакетному режимі
Дозволяє зберігати і завантажувати
налаштування і т.д.
Зміни в останній версії:
Додана можливість коригування USM
(Unsharp Mask).
Покращений ефект «Водяний знак».
Інші незначні поліпшення і
виправлення помилок.
Автор: FastStone Soft
Ліцензія / Ціна: Free
Оновлено: 2011-05-04
Версія Windows: XP/Vista/7.
IrfanView
Компактна і в той же час потужна
програма для перегляду і конвертації графічних файлів з просунутими
можливостями, що підтримує безліч форматів графіки.
Рисунок 1.3. - Робоча
область програми IrfanView
Основні властивості IrfanView:
- Перегляд великої
кількості форматів графічних файлів, а також програвання відео та аудіо файлів.
Слайдшоу
(можливість збереження слайдшоу у форматі EXE/SCR або запису на CD).
Показ
EXIF/IPTC/коментарів для зображень в режимі слайдшоу або повного екрану.
Збільшення/зменшення
видимого розміру зображення, та зміна розміру самого зображення. Поворот зображення, різні ефекти (Sharpen, Blur, Adobe 8BF, Filter Factory, Filters Unlimited). Копіювання, вирізування, вставка виділеної частини зображення.
Захоплення
зображення з екрана, створення скріншотів.
Підтримка отримання
зображення із сканерів.
Витягання іконок з
файлів EXE, DLL, ICL.
Пакетне
перетворення форматів файлів і їх перейменування.
Створення
веб-сторінки із зображень.
Підтримувані
формати:, BMP, DIB, CLP, CPT, DCX, EMF, ICL, EXE, DLL, ICO, IFF, LBM, PBM, PCD,
PCX, PGM, PNG, PPM, PSD, TGA, TIF, TIFF, TXT, WMF, AIF, AU, SND, MID, WAV, ASF,
AVI, MPG, MPEG, WMA, WMV.
Після встановлення
плагінів можливий перегляд форматів: B3D, CAM, CRW, CR2, DCM, ACR, IMA, DDS,
DJVU, IW44, DXF, DWG, HPGL, CGM, SVG, ECW, EPS, PS, PDF, FITS, FPX, FSH, G3,
HDR, ICS, IMG, JP2, JPC, J2K, JPM, KDC, LDF, LWF, Mac PICT, QTIF, MNG, JNG,
MrSID, SID, DNG, EEF, NEF, MRW, ORF, RAF, DCR, SRF, PEF, X3F, NLM, NOL, NGG,
PIC, PSP, RAS, SUN, RAW, RLE, SFF, SFW, SGI, RGB, SWF, TTF, WAD, WAL, WBMP,
XBM, XPM, MED, MP3, OGG, RA, MOV.
Зміни в останній
версії:
Змінено/оновлені
додатки.
Автор: Irfan Skiljan
Оновлено: 2012-03-30
Версія Windows: Windows All.
CutePDF Writer
Це
безкоштовна версія комерційного продукту для конвертації і друку документів у
форматі PDF (Adobe Portable Document Format).
Вона встановлюється
як віртуальний принтер, доступний з будь-якого додатку, що підтримує опцію
«Друк».
CutePDF Writer не
має графічного інтерфейсу користувача, тому її не потрібно налаштовувати.
Також, так як цей принтер є віртуальним драйвером, вам не потрібно буде
встановлювати додаткові компоненти Office для створення файлів PDF. CutePDF
Writer є безкоштовним для персонального і комерційного використання і не
містить рекламних модулів.
Рисунок 1.4. - Робоче середовище CutePDF Writer
Зміни в останній
версії:
Додана підтримка 32
- і 64-бітної Windows 7.
Автор: Acro Software Inc.
Оновлено: 2011-07-03
Версія Windows: Windows All.
XnView
Безкоштовна
програма для перегляду і конвертації графічних файлів.
Крім своїх основних
функцій - якісного показу графіки і її конвертації з одного формату в іншій,
програма володіє і безліччю додаткових інструментів: робота зі сканером,
створення html-сторінок з графікою, підрахунок використаних в картинці
кольорів.
Рисунок 1.5. - XnView
Основні можливості
XnView:
Можливість
збереження налаштувань, як сценаріїв.
Імпорт понад 400
графічних форматів.
Експорт 50
графічних форматів.
Підтримка
багатосторінкових TIFF-файлів, анімовані GIF і ICO.
Підтримка метаданих
IPTC, EXIF.
Зміна розмірів
зображення.
Перегляд відео
файлів за наявності відповідних кодеків в системі.
Налаштування
кольорів і контрастності.
Повний екран.
Слайд-шоу.
Браузер
зображень.).
Підтримка
друку.WAIN.
Підтримка
перетягування (Drag & Drop).
Підтримка 44 мов (у
тому числі української та російської).
Зміни в останній
версії:
Виправлені помилки.
Автор: XnView
Оновлено: 2012-06-06
Версія Windows: Windows All.
2. Програмна реалізація конвертора графічних файлів
.1 Постановка задачі та
вимоги до програмного продукту
У відповідності до
технічного завдання програмний засіб «Конвертатор графічних файлів» повинен
забезпечувати можливість конвертування графічних даних із одного формату в
інший.
На основі
проведеного аналізу предметної області встановлено, що конвертатор повинен бути
у вигляді легкої для сприйняття програми, яка має можливість зберігання файлів
у потрібномк нам форматі. При конвертуванні з меню повинен вибиратись потрібен
нам об'єкт, потім задаватись назва зображення і місце, куди даний об'єкт
потрібно зберігати.
· бути
легкий у використанні;
· мати
прозорий інтерфейс;
· не
бути нагромадженим;
· не
мати лишніх процедур та функцій;
· мати
підказки (при потребі).
Отже, основними
функціональними можливостями для даного програмного продукту є:
· задання
назви зображення при збереженні його на диску;
· можливість
вибору даних зі списка (одного чи декількох);
· збереження
зображення у потрібне місце на жорсткому диску;
· доступ
до даних користувача;
· конвертування зображень у потрібний формат.
Дана
програма може конвертувати зображення у такі формати:
· JPEG;
· BMP;
· PNG;
· EMF;
· WMF.
.2 Програмна реалізація
Для
реалізації програми було використано такі компоненти як Label, Bevel, Button, MainMenu, OpenDialog, SaveDialog, Image.
Label - мітка, яка відображає
текст, який не змінюється користувачем. Ніяке оформлення тексту не передбачене,
крім кольору мітки і тексту (показано на рисунку 2.1)
Рисунок 2.1. - Використання мітки Label
Для
відокремлення різних частин робочої області було використано компонент Bevel (кромка). Він служить для виділення окремих частин форми
тривимірними рамками і смугами (його застосування у програмі показано на
рисунку 2.2)
Рисунок 2.2. - Застосування компонента Bevel
Для
виводу на екран логотипа програми було використано компонент Image (малюнок). Приклад логотипа наведено на рисунку 2.3.
Рисунок 2.6. - Використання компонента Image
Для зображення кнопок на формі та реалізації у програмі команд за
допомогою обробника події OnClick було використано
компонент Button. Ці компоненти позначені на наступному рисунку.
Рисунок 2.7. - Використання компонента Button
Для
створення меню програми використовувався компонент MainMenu, який не є
візуальним. Він дозволяє конструювати і створювати на формі смугу головного
меню, а також наступні випадаючі меню.
Рисунок 2.8. - Меню програми
Для
відкриття (вибору) потрібного зображення використовується компонент OpenDialog, який дозволяє
обрати потрібний нам об’єкт із жорсткого диска.
Для
збереження уже відконвертованого зображення використовується компонент SaveDialog, який зберігає
об’єкт в потрібне місце на жорсткому диску.
2.3 Тестування
програмного засобу
Програма була успішно протестована:
всі доступні користувачу функції працюють коректно.
2.4 Опис роботи
програмного засобу
Отже,
після запуску програми маємо вікно, яке містить меню, кнопки, робочу область,
де буде розташоване зображення.
Після
того, як обрали зображення і занесли його у програму, даний програмний засіб
аналізує його на роздільну здатність, розмір, а також дозволяє обрати потрібний
користувачеві формат, у який це зображення потрібно конвертувати.
Наступним
кроком потрібно обрати певний формат (для цього достатньо натиснути кнопку з
відповідним форматом). Коли файл буде конвертований, то на екрані з’явиться
повідомлення про завершення операції.
Натискаємо
Файл - Зберегти, тоді зберігаємо у потрібне місце на диску з потрібною назвою.
Висновки
Проведений аналіз основних методів
стиснення зображень показав відсутність універсальних алгоритмів, незалежних
від класу зображень. Найбільш перспективним методом стиснення без втрат є
DEFLATE, але в чистому вигляді його застосування не дасть вагомих результатів.
Запропоновано використовувати нові підходи до стиснення зображень на основі
методу DEFLATE з використанням етапу попередньої обробки та переходом до
кольорорізницевої моделі представлення кольорів.