Декодируйте данные сканирования изображений JPEG с помощью таблиц Хаффмана

Я пишу декодер для чтения необработанного потока данных в формате jpeg и преобразования его в значения пикселей. Я нахожусь на этапе, когда я построил деревья Хаффмана, и мне нужно использовать их для декодирования сканирования изображения, которое следует за сегментом SOS. Я понимаю, что процесс декодирования отличается в зависимости от маркера APPn, но подробностей самого процесса декодирования найти не могу. Я получаю четыре отдельных дерева AC Huffman в базовом формате jpeg, и меня смущает то, какое дерево должно использоваться для декодирования. Кажется, что деревья имеют перекрывающиеся значения, поэтому я не могу просто применить все деревья к процессу декодирования. Итак, предполагая базовый кодированный jpeg, как мне выяснить, какие деревья Хаффмана использовать для декодирования сканирования изображения, а также где их использовать при сканировании?


person GriffithN    schedule 26.04.2019    source источник
comment
Именно это подробно описано в стандарте.   -  person DaBler    schedule 29.11.2020


Ответы (1)


Это единственный известный мне источник, который объясняет процесс без академической чепухи:

https://rads.stackoverflow.com/amzn/click/com/0201604434

Для каждого сканирования используется одна таблица Хаффмана. Вы используете только один для каждого. Одно сканирование может совместно использовать таблицы Хаффмана с другим. Маркер SOS указывает, какую таблицу Хаффмана использовать при сканировании.

person user3344003    schedule 03.05.2019