Использование избыточности среди изображений JPG
Я хочу использовать избыточность среди множества аналогичных colored JPG
изображений. Set redundancy compression
был успешно использован для аналогичных 8-bit grayscale
изображений. Они в основном находят MAX
а также MIN
из набора изображений и кодировать исходные изображения как differences
относительно изображения MAX или MIN, в зависимости от того, какая разница меньше. Около 20-50% дополнительного сжатия было получено для изображений в градациях серого с использованием этого подхода, помимо обычных инструментов сжатия, таких как gzip или bzip. Я делаю следующее:
- Распакуйте изображения JPG в буферы RGB-символов
- Вычислить буферы MIN и MAX
- Кодировать разностные буферы в виде изображений JPG
Проблема заключается в том, что для извлечения исходного изображения из разностного изображения в идеале мне нужно было бы кодировать разницу без потерь. Но нет lossless
преобразование из RGB->JPG в libjpeg и даже при качестве =1,0, поскольку разностные коэффициенты малы (1~10), я теряю почти всю информацию (почти все декодированные данные составляют 1~3).
Чтобы решить эту проблему, я попытался с помощью huffman encoding
разницы в буферах символов
- Кодирование разностных буферов с использованием кодирования Хаффмана
Исходные изображения JPG имеют размер ~256 КБ, соответствующий буфер RGB составляет ~7,8 МБ, а разностные изображения, закодированные Хаффманом, имеют размер ~ 2,2 МБ. Таким образом, кодирование Хаффмана действительно экономит много места по сравнению с RGB-буферами, но оригинальные эквиваленты JPG намного меньше.
- Любые предложения по хранению этих разностных буферов, эффективно сопоставимых по размеру с оригиналом 256 КБ
JPG
файлы? - Есть ли способ сохранить эти разностные буферы с
low valued data coefficients
как JPG изображения без потери существенной информации?