КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
RLE - байтовый рівень
RLE - бітовий рівень Алгоритми кодування довжини повторення (RLE) Цей тип алгоритмів (алгоритми кодування довжини повторення 2) (RLE 3) ))базується на найпростішому принципі: будемо заміняти повторювані групи елементів вихідної послідовності на парі (кількість, елемент), або тільки на кількість. Будемо розглядати вихідні дані на рівні послідовності битов; наприклад, що представляють чорно-біле зображення. Підряд звичайно йде трохи 0 або 1, і можна пам'ятати лише кількість однакових цифр, що йдуть підряд. Т.е. послідовності 0000 11111 000 11111111111 відповідає набір чисел кількостей повторень 4 5 3 11. Виникає наступний нюанс: числа, що позначають кількість повторень, також треба кодувати бітами. Можна вважати, що кожне число повторень змінюється від 0 до 7 (тобто можна закодувати рівно трьома бітами), тоді послідовності 11111111111 можна зіставити числа 7 0 4, тобто 7 одиниць, 0 нулів, 4 одиниці. Для приклада, послідовність, що складається з 21 одиниці, 21 нуля, 3 одиниць і 7 нулів закодується так: 111 000 111 000 111 111 000 111 000 111 011 111, тобто з вихідної послідовності, що має довжину 51 біт, одержали послідовність довжиною 36 біт. Ідея цього методу використовується при передачі факсів. Припустимо, що на вхід подається напівтонове зображення, де на значення інтенсивності пикселя приділяється 1 байт. Ясно, що в порівнянні із чорно-білим растром очікування довгого ланцюжка однакових битов істотно знижується. Будемо розбивати вхідний потік на байти (букви) і кодувати повторювані букви парою (кількість, буква). Т.е. AABBBCDAA кодуємо (2A) (3B) (1C) (1D) (2A). Однак можуть зустрічатися довгі відрізки даних, де нічого не повторюється, а ми кодуємо кожну букву парою (цифра, буква). Нехай у нас є фіксоване число (буква) M (від 0 до 255). Тоді одиночну букву можна закодувати нею самою, - вихід = S, а якщо букв трохи або , те вихід = CS, де C > M, а C - M - кількість букв, що підряд ідуть, S. Для приклада приведемо тільки алгоритм декодування. // M - фіксована границя// зчитуємо символи послідовно із вхідного потоку// in - вхід - стисла послідовність// out - вихід - розціплена послідовністьwhile(in.Read(c)){ if(c > M) { // випадок лічильника n = c - M; in.Read(c); for (i = 0; i < n; i++) out.Write(c); } else // випадок просто символу out.Write(c);}Лістинг 13.1. Алгоритм декодування RLE - байтовый рівень Число M звичайно дорівнює 127. Частіше використовується модифікація цього алгоритму, де ознакою лічильника служить наявність одиниць в 2 старших бітах зчитувального символу. Інші 6 битов суть значення лічильника. Така модифікація даного алгоритму використовується у форматі PCX. Однак модифікації даного алгоритму рідко використовуються самі по собі, тому що підклас послідовностей, на яких даний алгоритм ефективний, відносно вузький. Модифікації алгоритму використовуються як одна зі стадій конвеєра стиску (наприклад у форматі JPEG, див. розділ 13.4). 13.4. Словникові алгоритми Головна ідея, що лежить в основі алгоритмів даного типу, полягає в тім, що замість кодування тільки по одному елементі вхідної послідовності виробляється кодування ланцюжка елементів. При цьому використовується словник ланцюжків (створений по вхідній послідовності) для кодування нових.
Дата добавления: 2014-01-07; Просмотров: 463; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |