Упаковка данных (сжатие данных)

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 8
Зарегистрирован: Пт авг 31, 2007 17:12:34
Откуда: оттуда

Сообщение satnettv »

делаю для себя, контроллер atmega128, пишу на Code Vision.

Задача в следующем:

требуется простой пример упаковки (сжатия) данных (например, строку из 80 символов сжимать до 30) на каком-нибудь примере, написанном на Си. Пишу на code vision, с ассемблером не в ладах.

:shock:
просто VIP
Контактная информация:
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

Самый распространенный алгоритм - Хаффмана
http://www.codenet.ru/progr/alg/huffcode.php
Лучше быть первым в деревне, чем вторым в Риме
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

а с математикой в ладах? сжатие - математическая процедура...

80 символов до 30 тебе и rar не сожмет - если строка из действительно случайных символов (а не одинаковых, например).
алгоритм LZW довольно сложен, но эффективен, более простые алгоритмы дают меньшее сжатие... зачем это для МК? это не праздный вопрос, просто от ответа могут зависить советы :) например, для "упаковки" знакогенератора для ЖКИ алгоритм LZW вовсе необязательно применять - и без этого можно добиться уменьшения до 50%...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Родился
Сообщения: 8
Зарегистрирован: Пт авг 31, 2007 17:12:34
Откуда: оттуда

Сообщение satnettv »

ARV писал(а):а с математикой в ладах? сжатие - математическая процедура...

80 символов до 30 тебе и rar не сожмет - если строка из действительно случайных символов (а не одинаковых, например).
алгоритм LZW довольно сложен, но эффективен, более простые алгоритмы дают меньшее сжатие... зачем это для МК? это не праздный вопрос, просто от ответа могут зависить советы :) например, для "упаковки" знакогенератора для ЖКИ алгоритм LZW вовсе необязательно применять - и без этого можно добиться уменьшения до 50%...

Не обязательно сжимать с 80 до 30. требуется просто организовать определенное сжатие данных, пускай по минимому. Это делается для того, чтобы не забивать всю память, а также, чтобы передавать пакеты меньшие по объему.
просто VIP
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

умение задать вопрос - тоже своего рода умение, порой, очень важное...
ищи описание алгоритма LZW (Лемпеля-Зива-Велча), как уже говорили - Хаффмана, есть и другие... как правило, их легко найти в статьях по обработке изображений - GIF, TIFF, PCX, BMP - самые простые... больше ничего сказать не могу.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

Ну уж про BMP ты загнул! :) Хотя некоторые действительно считают что бмп - это формат со сжатием. Потому что упрямо продолжают слать нам схемы и фотки в этом формате...

Короче, три основных типа сжатия:
- хаффмана - с бинарными деревьями
- лзв - основан на замене повторяющихся участков данных на ссылки
- не помню как называется, короче алгоритм, который юзают в ГИФах: замена строки повторяющихся символов на символ и длину строки

можно применить их все последовательно. Для обычного текста наиболее эффективны первые два
Лучше быть первым в деревне, чем вторым в Риме
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Serega, в тебе сразу видно программиста php (по меньшей мере не прикладника Windows) :)!

BMP имет предусмотренную возможность хранения сжатой информации как минимум в одном из 2-х (известных мне) форматах - так называемых 4-х и 8-и пиксельных последовательностей битов (RLE)... по-моему, число поддерживаемых форматов на сегодня больше, но ручаться не стану...

в GIF-ах юзают как раз LZW в одной из его реализаций. А тот, который неизвестен - я думаю, что это как раз RLE (см. выше про BMP), а его применение началось в стандарте PCX.

Добавим, что пока речь идет о "неразрушающем" сжатии :).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»