Декодировать данные сканирования изображения JPEG с помощью таблиц Хаффмана - PullRequest
0 голосов
/ 26 апреля 2019

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

1 Ответ

0 голосов
/ 03 мая 2019

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

https://www.amazon.com/Compressed-Image-File-Formats-JPEG/dp/0201604434

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

...