Способы сжатия больших пользовательских файлов данных

Я ищу совет о том, как лучше помочь инструментам сжатия получить лучшее сжатие без потерь.

У меня есть много больших файлов (>100 мг), содержащих показания датчиков от различных датчиков. Выборки от разных датчиков имеют разный размер бит (16 бит, 24 бит, 32 бит) и разные частоты (от 70 Гц до 250 Гц). С обычными компрессорами, о которых я знаю (zip, gzip, bzip2), я могу получить сжатый файл размером около 70% от исходного размера файла. Мне кажется, если бы я мог сказать инструменту сжатия, что эти байты являются образцом этого типа, а эти байты - другим типом семпла, возможно, будет иметь место усиление сжатия, но я не знаю ничего, что позволило бы мне сделать это.

1 ответ

Шаг 0 будет кодировать данные в двоичном формате. (16 бит в два байта, 24 бит в три байта и т. Д.) Я надеюсь, что вы уже делаете это.

Шаг 1 будет использовать различия. Из вашего описания, я уверен, что последовательные значения не сильно меняются. Поэтому различия будут небольшими и будут иметь много начальных нулевых битов. Попробуйте, а затем универсальный компрессор.

Шаг 2 будет использовать целочисленное кодирование переменной длины. Старший бит каждого байта определяет диапазон каждого целого числа. Первый байт целого числа всегда имеет старший бит ноль. Все последующие байты одного и того же целого имеют старший бит, равный единице. Создайте целое число из младших семи бит каждого байта. (Я беру первый байт с младшими значащими битами, но вы также можете сделать это с самым старшим порядком битов.) Это будет кодировать ваши небольшие различия в одном байте. Также это кодирование будет обрабатывать любое количество бит в сэмплах, что удобно в вашем приложении. Попробуйте это, а затем универсальный компрессор.

Шаг 3 может быть более подробным анализом сигналов для лучшего предиктора. Шаг 1 просто использует последнее значение в качестве предиктора. Вы можете использовать более сложную функцию предыдущих n значений в качестве предиктора для следующего значения. Поможет ли это, зависит от ваших данных.

Другие вопросы по тегам