Получение избыточных данных JPEG - PullRequest
0 голосов
/ 23 октября 2011

Я делаю какой-то проект, связанный со сжатием изображений, и мне нужен способ сохранить данные, потерянные при сжатии JPEG (например, биты на пиксель ..). Я думаю, мне нужно было бы создать собственный libjpeg для этого. Примите во внимание любые предложения / помощь по этому вопросу (возможно, даже руководство к тому, какую часть изменить в исходном коде).

Заранее спасибо!

Редактировать: Чтобы прояснить ситуацию, я не собираюсь встраивать скрытую информацию. Я ищу способ потерять данные во время сжатия JPEG. Я также согласен с получением данных, потерянных при повторном сжатии изображения JPEG (от 90 до 80).

Ответы [ 2 ]

0 голосов
/ 23 октября 2011

Есть по крайней мере четыре шага, где вы можете потерять информацию при сжатии JPEG. Я действительно не знаю, к чему ты клонишь. Если вы хотите измерить потерянную информацию, вы можете просто сжать / распаковать и сравнить с оригиналом.

Полагаю, вы хотите закодировать RGB в стандартную JFIF, затем вы теряете информацию при преобразовании цветов, субдискретизации, после этого вам нужно выполнить FDCT, и я не думаю, что это точно обратимо, поэтому вы теряете информацию на этом шаге и тогда у вас есть шаг квантования. Если у вас нет таблиц квантования, содержащих все таблицы, вы также потеряете там информацию.

Подводя итог:

  1. Преобразование цветов
  2. Subsamling
  3. FDCT / IDCT
  4. Квантование
0 голосов
/ 23 октября 2011

Если вам необходимо встроить личные данные в поток битов JPEG, возможно, вы захотите воспользоваться маркерами APPn.В них есть несколько замечательных вещей:

  • изображение все еще будет читаемым и совместимым с программным обеспечением
  • формат достаточно прост, чтобы вы могли оставить libjpeg или ваш другой любимыйJPEG библиотека без изменений и добавление / чтение данных, изменяющих битовый поток напрямую

Формат обмена файлами JPEG использует APP0 и APP1, вы можете прочитать подробностии есть еще доступные маркеры, такие как APP2, которые вы можете использовать для своих целей.

...