Формати на компресиране на данни

В статията се занимава с разширяване на спектъра и видове уплътнения на достъп. В нея са описани основните функции и предимства на всеки подход.

принципи и характеристики на функционирането на демодулирайки логаритмични усилватели се считат за по-подробно. Особеностите на популярен сред разработчиците на AD8307 усилвател. Тя определя обхвата на използване на логаритмични усилватели.







Таблица. 1. Класификация методи за компресия: без загуба и загуба

Снимки, предавани по интернет са добър пример за това защо е компресия необходимите данни. Да предположим, че искате да изтеглите от интернет цифрова цветна снимка с 33.6-Kbit и модем /. Ако изображението не се компресира (например, е TIFF-файл), тя ще възлезе на около 600 KB. Когато компресирате снимките без загуба (в GIF-файл) ще се намали размера си до около 300 KB. метод за компресиране със загуби (JPEG-формат) ще намали размера на файла до 50 KB за. Натоварването от тези три файлове е 142, 72 и 12, съответно. Това е голяма разлика. JPEG е идеален за работа с цифрови снимки, а GIF се използва само за изображения, съставени.

Вторият начин за класифициране на методите за компресиране на данни е показана в Таблица 2. По-голямата част от програми за компресиране се работи с тези групи, които са взети от изходния файл е компресиран и записва изходния файл. Например, една такава техника е CSQ (грапавият проби и квантуване - неточна вземане на проби и цифровизация). Да предположим, че компресиран цифров сигнал, като например аудио сигнал, който ще се цифровизират до 12-битов. Може да се чете от две съседни проби от изходния файл (24-битов), за да изхвърли една проба напълно изхвърли най-младшите 4 бита на друга проба, след това да напишете останалите 8 бита в изходния файл. Когато 24 входни бита и 8 изход съотношение загуба алгоритъм е 3: 1. Този метод е много ефективен, когато се използва с компресия трансформира. е в основата на JPEG алгоритъм.

Таблица. 2. Класификация на методите за компресиране: фиксирана и променлива големина група

Методът CSQ фиксиран брой битове четат от входния файл, и по-малък на фиксираните номера написан на изходния файл. Други техники за компресиране ви позволяват да създавате различен брой битове, за да четат или пишат. Причината, поради която в таблицата не сте влезли в JPEG и MPEG, че е алгоритмите компонентните, който комбинира различни други методи.

Файлове с данни съдържат едни и същи герои повтарят много пъти подред. Така например, в текстови файлове, използвани за отделяне на жилищните предложения отстъп, маса и т.н. Цифрови сигнали също съдържат същите стойности, което показва, че сигналът остава непроменена. Например, изображението на нощно небе, може да съдържа една дълга поредица от символи, представляващи тъмен фон и цифрова музика може да бъде една дълга поредица от нули между песни. УПИ-кодиране (кодиране по дължина - кодиране по дължина) е метод за компресиране на тези видове файлове.
Фигура 1 показва принципа на тази кодираща последователност данни с честото повторение на поредица от нули. Всеки път, когато се среща нула във входа, на изходния файл е писано две стойности: нула, което показва началото на кодирането, както и броя на нулите в поредицата. Ако средната продължителност тече по-голям от две, компресия се случи. От друга страна, много от единични нули в данните може да доведе до факта, че кодиран файл ще бъде по-голям от оригинала.

Фиг. 1. Пример УПИ кодираща

Входящи данни могат да бъдат разглеждани като отделни байтове или групи като числа с плаваща запетая. УПИ-кодиране може да се използва само в случай на същия знак (в случай на нула в примера по-горе), множество символи или всички символи.

Този метод е разработен от Хъфман през 1950-те години. Методът се основава на относителната честота на възникване на отделните елементи. Общи елементи са кодирани от по-къса последователност от битове. Фигура 2 показва хистограма на стойностите на голям байт ASCII файл. Повече от 96% от файла се състои от 31 знака: малки букви, интервали, запетайки, интервали, както и за връщане.

Алгоритъмът определя всяка от тези пет-малко стандартни символи двоичен код схема 00000 = а, 00001 = б, 00010 = С, и т.н. Тя позволява на 96% от файла, за да се намали обема на 5/8. Последната комбинация е 11 111 ще покаже, че предава символ не е включен в групата от 31 стандартен характер. Следващите осем бита в преписката показват, че е герой в ASCII sootovetstvii със стандартна задача. Така, 4% от символи във входния файл за представяне изисква 5 + 8 = 13 бита.

Принципът на този алгоритъм е да се възложи често използвани символи по-малко битове и рядко срещащи се герои - по-големият брой битове. В този пример, средният брой на битовете, необходими за символ източник, равно на 0.96. 5 + 0.04. 13 = 5,32. С други думи, общото съотношение на сгъстяване е 8 бита / 5.32 бита, или 1.5. 1.

Фиг. 2. Хистограма ASCII текстов фрагмент стойности на тази статия

Фигура 3 представлява опростена схема на кодиране Huffman. На кодова книга съдържа вероятностите символи използват с А на G, наличен в първоначалната последователност данни, и съответствието им. Променливи кодове дължина са сортирани в групи от по осем-битов стандарт. Когато декомпресиране данните всички групи са подредени в последователност от нули и единици, което позволява да се разделят потока от данни без помощта на маркери. Обработка на потока от данни, извличане на програмата генерира валиден код, а след това преминава към следващия знак. Такъв метод за получаване на кодекс предвижда недвусмислено отчитане на данните.







Терминът "делта-кодиране" означава съхраняване на няколко методи или данни под формата на разликата между последователните проби (или символи), но не и да се запази се проби. Фигура 4 показва пример на работа на механизма. Първата стойност в кодиран файл е същото като оригинала. Всички от следните стойности в кодиран файл са равни на разликата между подходящият и предишните стойности на входния файл.

Фиг. 4. Пример делта кодиране

Delta кодиране се използва за компресиране на данни, на оригиналния файл, ако стойностите варират гладко. т.е. разликата между следните стойности за всяка друга е малък. Това не е случаят с текст ASCII, изпълнимия код, но това е често срещан случай, когато информацията идва под формата на сигнал. Например, Фигура 5а показва аудио фрагмент дигитализира с 8 бита, и всички проби поемат стойности в диапазона от -127-127. Фигура 5Ь съдържа кодирана версия на сигнала, основната разлика от оригиналния сигнал, който е по-малка амплитуда. С други думи, кодираща делта увеличава вероятността, че всяка стойност проба е близо до нула, и вероятността, че е значително по-голяма от тази стойност е малък. С неравномерното разпределение на вероятността за работа Хъфман. Ако оригиналният сигнал не се променя или се променя линейно, в резултат на делта-кодиране ще бъде проби от серията със същите стойности, тя работи с УПИ-алгоритъм. Така, в стандартния метод на компресия използва делта кодиране, последвано от прилагане на метод или Huffman УПИ кодиране.

Фиг. 5. Пример делта кодиране

Механизъм на делта кодиране може да се разшири до по-пълно метод, наречен линеен предсказващо кодиране (Linear предсказуем кодиране, LPC).
За да се разбере този метод, ние си представим, че е кодирана първите 99 проби от входния сигнал и е необходимо да се направи избор на номер 100. Ние се чудят за какво най-вероятно е неговото значение? Делтата кодиране отговорът на този въпрос е предположението, че стойността на предишното, 99-пробата. Това очакваната стойност се използва като референтна стойност на кодирането на пробата 100. По този начин разликата между стойността на пробата и очакването, се поставя в кодиран образ. метод ЗЗК установява най-вероятната стойност на базата на последните няколко проби. Алгоритмите, използвани в настоящото се отнася Z-трансформация и други математически методи.

Пример кодова книга

Фиг. 6. Пример компресия съгласно таблицата за кодиране

метод LZW компресира данни, използвайки 256-4095 кодове, представляващи последователност от байтове. Например, код 523 може да представлява последователност от три байта: 231 124 234. Когато последователността на компресия алгоритъм открива във входната файл, файлът се поставя в кодирания код 523. Когато разопаковане на код 523 се превръща чрез маса в оригиналната последователност на три байта. Колкото по-дълго последователност, идентичност отнесен код и по-често се повтаря, толкова по-голяма степента на сгъстяване.
Има две основни пречки за използването на този метод на компресия: 1) как да се определят кои последователности трябва да бъдат уточнени в кодовата таблица, и 2) как да се гарантира, че програмата се декомпресира и съща маса, която използва една програма за компресиране. LZW алгоритъм може да реши тези проблеми.

Когато програмата LZW започва да се кодира файла, таблицата съдържа само първите 256 вписвания - останалата част от него е празен. Това означава, че първите кодовете са получени в компресиран файл са единични байтове на файла източник, за да бъдат превърнати в 12-битови групи. С продължаване на алгоритъм за кодиране идентифицира LZW-повтаряне поредици от данни и ги добавя към кодовата таблица. Компресиране започва, когато последователността е намерена отново. Същността на метода е, че последователността на входния файл не се добавя към кодовата таблица, ако то вече е било настанено в компресиран файл като един символ (кодове 0-255). Това е важно условие, тъй като позволява на програмата да се възстанови разопаковане кодовата таблица директно от компресираната информация, без да е необходимо тяхното разделно предаване.

От множеството алгоритми за компресия със загуби се трансформира кодиране е най-популярни. Най-добрият пример за този метод - най-популярния стандарт JPEG (Съвместни Фотографи Experts Group - Съвместна експертна работна група по обработката на машината на фотографски изображения). Вземем примера на работата по алгоритъма на JPEG компресия е със загуби.

Ние вече обсъдени прост метод за компресиране със загуби CSQ, което намалява броя на битовете на проба, или напълно изхвърля някои проби. И двете рецепцията може да се постигне желания резултат - файл става по-малка, поради влошаването на качеството на сигнала. Ясно е, че тези прости методи не работят по най-добрия начин.

Компресиране на трансформация на базата на проста условие: в трансформираната сигнал (например, с помощта на преобразуване на Фурие) получи стойности на данни не носят една и съща трафика и натоварването. По-специално, компонентите на нискочестотни сигнали започват да играят по-важна роля, отколкото компоненти с висока честота. Премахване на 50% от битове на високочестотни компоненти могат, например, отстраняване на само 5% от кодирана информация.

От фигура 7 се вижда, че JPEG компресия започва чрез разделяне на образа на групи от по размер 8 х 8 пиксела. Пълен JPEG алгоритъм не са работили с голямо разнообразие от бита на пиксел, включително информация за цвят. В този пример, всеки пиксел е един байт, сива скала в диапазона 0-255. Тези групи от 8 х 8 пиксела се обработват, когато сгъстен независимо. Това означава, че всяка група от първите 64 байта представени. След трансформация и отстраняване на всяка група данни е представен, например, 2-20 байта. Когато декомпресиране на компресиран файл изисква същия брой байтове за сближаване на първоначалната група от 8 х 8. След това тези групи са приблизителни и са заедно, пресъздаване на некомпресиран изображение. Защо да използвате размер на групата 8 × 8 × 16, а не 16? Това групиране е създадена въз основа на максималния възможен размер, който е работил чипа по време на развитието на стандарта.

Фиг. 7. Пример за метод за компресия JPEG. Три групи от 8? 8 показани в увеличен изглед, представляват стойностите на отделните пиксели

много различни трансформации са били изследвани за прилагане на методи за компресиране. Например, Karhunen-Лоев трансформира осигурява най-високата степен на сгъстяване, но е трудно да се изпълни. Преобразуване на Фурие е приложен метод много по-лесно, но това не дава достатъчно добра компресия. В крайна сметка, изборът е направен в полза на разнообразието на метода на Фурие - DCT (дискретна косинусна трансформация - DCT).

В алгоритъма на JPEG пример показва как няколко схеми за компресиране се комбинират, като предоставя по-голяма ефективност. Всички процеса на компресия JPEG се състои от следните етапи:
- изображение се разделя на групи от 8 х 8;
- всяка група се трансформира от DCT трансформация;
- всяка спектрална елемент 8 х 8 се пресова чрез намаляване на броя на битовете и заличаване на някои от компонентите таблицата на квантоване;
- модифициран спектър се трансформира от масив от 8 х 8 в линейна последователност, всички високочестотни компоненти, които са поставени в своя край;
- поредица от нули се компресира, използвайки метод УПИ;
- последователност кодирана или Huffman или аритметични методи за получаване на компресиран файл.

1. Стивън W. Smith, данни компресия Упътване част 1, част 2 и част 3.