kompresireane na danni

12
Въведение в компресирането на данни

Upload: concorddawn

Post on 21-Apr-2015

32 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Kompresireane na danni

Въведение в компресирането на данни

Page 2: Kompresireane na danni

Степен на компресия

Това е отношението на големината на изходния спрямо компресирания файл. Ако изходният файл има големина 200 КВ, а компресирания – 100 КВ, степента на компресия е 2:1.

Формула: Обикновено степента на компресия

е от 2:1 до 8:1.

1

2

100

200

файлнкомпресиранаголемина

файлизходеннаголемина

Page 3: Kompresireane na danni

Тип компресия “lossless”

При нея няма загуба на данни, използва се при текстови файлове. Недостатъкът е, че степента на компресия се намалява за сметка на липсата на загуба на данни.

Page 4: Kompresireane na danni

Тип компресия „lossy”

При този вид компресия се губят част от данните, но се постига голяма степен на компресия. Използва се за видео, аудио файлове и изображения.

Page 5: Kompresireane na danni

Методи на компресиранеRun Length Encoding (RLE) Това е прост метод, базиран на повтарящи се символи. Когато има много последователно повтарящи се символи е подходящ (монохромни изображения). Ако файлът е създаден от много различни символи и типове данни този метод не е ефикасен.

Пример: XXXXXXXXXXXXXXX……..that`s all!<Esc>X<78> that`s all!

За означаване, че следва последователност от едни и същи данни се използва някой нечесто използван символ (например Esc), след това се записва символът и се оказва броят повторения. Ако някъде във файла е използвам <Esc>, може да се сложи като знак два последователни <Esc>.

Page 6: Kompresireane na danni

Методи на компресиранеHuffman Coding Принципът е като при морзовата азбука – по-често срещаните

символи се заместват с по-кратки кодове и обратното. Всичко зависи от честотата на срещане на символите в даден файл. За тази цел се изгражда дърво на Huffman по следния начин: първо се изчислява честотата на срещане на всички символи във файла. След това се подреждат в низходящ ред, спрямо нея. Взимат се 2 по 2 символи отдясно-наляво, като се взима предвид дали сборът на текущата двойка е по-голям от сбора на предходната двойка и следващото число. Ако това е така първо се събират сборът на шредходната двойка и следващото число и тогава пак се прави такава проверка. Тези действия се извършват докато не остане само едно число. След това се изчисляват кодовете на символите по следния начин: Избира се лявата или дясната връзка с предходните числа да е 1 или 0, съответно за другата остава другото число. Кодът са всички „клони”, през които минава пътят от най-последното число до символа.

Page 7: Kompresireane na danni

Методи на компресиране Huffman Coding

А 27

B 64

C 9

D 66

E 12

F 29

G 32

Таблица на компресията

D 00

B 01

G 100

F 101

A 110

E 1110

C 1111

Честота на символите

Дърво на Huffman

Page 8: Kompresireane na danni

Методи на компресиранеМетод за изграждане на дърво Shanon - Fano Coding

При него дървото се изгражда така, че сборът от честотите на двете групи да е приблизително равен.

Page 9: Kompresireane na danni

Huffman компресирането е съставено от неравномерни кодове. Равномерните кодове са с еднакъв брой символи (например ASCII таблицата). Лошото при този метод е, че при промяна на 1 бит се разваля целият кодиран файл.

Методи на компресиране Huffman Coding

Page 10: Kompresireane na danni

Методи на компресиранеComma Code При този метод се поставят разделители, така че при повреден

бит да се губи губи възможно най-малка информация. Тогава се повреждат само 2 символа. Недостатъкът на този метод е, че при работа с много символи се получават много дълги кодове в битове. При него има цена, която се изчислява спрямо вероятностите на срещане на символите по следната формула:

, където l е вероятността за срещане на i-тия символ, а r-дължината на символа

в битове.

i

iiirl

1Вероятн

остСимвол Код

0,5 A 1

0,3 B 01

0,2 C 001

0,1 D 0001

Page 11: Kompresireane na danni

Методи на компресиранеАритметично кодиране

Работи се с вероятности за срещане. Изгражда се таблица на вероятностите, която се предава при пренасяне на данни. Целта на това кодиране е целият файл да се превърне в една дроб, чиято дължина също се предава. Първоначано се изгражда таблица на вероятностите:

Вероятност

Приблизителна стойност

C=0,3 0-0,3

B=0,2 0,3-0,5

A=0,5 0,5-1

C=0 B=0,011=3/8=0,375

A=0,1=1/2=0,5

Следващата стъпка е да се изгради таблица от двоични пермутации:За да ги получим, умножаваме вероятностите на двата символа и ги събираме с предишната дроб. За последната стойност се взима най-малката дроб в интервала.

Page 12: Kompresireane na danni

Методи на компресиранеАритметично кодиранеCC 0,09 0-0,09 0,0001=1/16=0,0

625

CB 0,06 0,09-0,15 0,001=1/8=0,125

CA 0,15 0,15-0,30 0,01=1/4=0,25

BC 0,06 0,30-0,36 0,0101=5/16=0,3125

BB 0,04 0,36-0,4 0,011=3/8=0,375

BA 0,10 0,4-0,5 0,0111=7/16=0,4375

AC 0,15 0,5-0,65 0,1=1/2=0,5

AB 0,10 0,65-0,75 0,1011=11/16=0,6875

AA 0,25 0,75-1 0,11=3/4=0,75Ако имаме дробта 0,00111=7/32, гледаме таблицата и виждаме, че дробта съответства на буквата „C”, вадим най-малката стойност на „C” и после делим полученото на самия интервал. Получаваме 0,3 и после 0,72917. Откриваме че символът е „А”, отново вадим най-ниската стойност за „А”- 0,5 и делим на 0,5 и получаваме 0,4583, което е „В”. Делим, докато не открием всички символи.