Сжатие без потерь
Сжатие без потерь - это когда данные не теряются. Все, что введено, может быть получено идеально. Это хорошо работает для текстовых или двоичных файлов, где будет замечена самая маленькая ошибка.
Сжатие файлов работает, принимая файл и сканируя шаблоны, и переводя эти шаблоны во что-то еще, что занимает меньше места.
Например, «AAAAAAAA» можно превратить в «8A».
Конечно, это не так, потому что тогда у вас возникает проблема, что если «8А» было в открытом тексте. Вы распакуете файл, и это будет неправильно. Хорошее место для начала - это Wikipedia или алгоритм сжатия данных LZW .
Ниже приведен простой псевдокод:
STRING = get input character
WHILE there are still input characters DO
CHARACTER = get input character
IF STRING+CHARACTER is in the string table then
STRING = STRING+character
ELSE
output the code for STRING
add STRING+CHARACTER to the string table
STRING = CHARACTER
END of IF
END of WHILE
output the code for STRING
Все сжатие использует словарь поиска, который используется для сжатия и распаковки файла. Чем больше словарь, тем больше вы можете сжать его, хотя вы сталкиваетесь с Законом убывающей отдачи .
Также стоит отметить, что сжатие не всегда приводит к уменьшению размера файла. Существуют ситуации (с небольшими файлами или при сжатии случайных данных ), когда вы не получите файл меньшего размера после сжатия. Были некоторые забавные проблемы, связанные с возможностью сжатия случайных данных.
Сжатие с потерями
Вышесказанное в основном относится к сжатию без потерь . Другие типы сжатия, используемые в видео / аудио приложениях, такие как MP3, JPG и h.264, являются примерами сжатия с потерями .
Сжатие с потерями работает путем отбрасывания данных, которые с наименьшей вероятностью будут замечены. В аудио это примерно 30 000 Гц и ниже 100 Гц, наряду с другими вещами. В картинке (статической) он удаляет различные вещи и объединяет пиксели вместе, а также отбрасывает данные.
Сжатие с потерями - это форма кодирования с преобразованием . Это усредняет данные, чтобы уменьшить общий размер. Например, блок из 10 пикселей на изображении, все немного разные цвета могут быть объединены в один цвет и, таким образом, сжаты.
При сжатии видео часто инструкции помещаются только в те перерисованные пиксели, которые изменились со времени последнего кадра или ключевого кадра .