Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JPG

Таблица Хаффмана, сохраненная в файле JPG

Здесь - как JPEG содержит дерево Хаффмана: вместо дерева, он определяет таблицу в файле JPG после DHT (Определение Таблицы Хаффмана) маркера. ПРИМЕЧАНИЕ: длина кодов Хаффмана ограничивается 16 битами.

В основном есть 2 типа таблиц Хаффмана в файле JPG: одна для DC и одна для AC (действительно есть 4 таблицы Хаффмана: 2 для DC, AC для яркости и 2 для DC, AC цветоразности)

Они сохраняются в файле JPG в том же формате, который состоит из:

  1. 16 байтов:

    байт i содержитчисло кодов Хаффмана длины i (длинав битах - i изменяется от 1 до 16)

  2. Таблица с длиной (в байтах) =

    Которая содержит в позиции [k][j] (k в 1..16, j в 0..(число_кодов_с_длиной_k-1)) БАЙТОВУЮ величину, связанную с j-ым кодом Хаффмана длины k. (Для фиксированной длины k, величины сохранены, отсортированными по величине кода Хаффмана)

    В этой таблице Вы можете найти фактический код Хаффмана, связанный с конкретным байтом.

    Например: (Примечание: количество кодов для данной длины - здесь для этого конкретного примера, чтобы считать это, они могут иметь любые другие величины)

    ДОПУСТИМ что, для длины

    	Для длины 1 мы имеем число_кодов[1]=0, мы пропускаем эту длину
            Для длины 2 у нас есть 2 кода 00
    	                              01
    	Для длины 3 у нас есть 3 кода 100
    	                              101
    	                              110
    	Для длины 4 у нас есть 1 код  1110
    	Для длины 5 у нас есть 1 код  11110
    	Для длины 6 у нас есть 1 код  111110
    	Для длины 7 у нас есть 0 кодов - пропускаем 
                ( Если у нас был 1 код для длины 7, мы должны иметь 1111110)
    	Для длины 8 у нас есть 1 код  11111100 
                ( Вы видите, что код все еще перемещается на оставленное,
                  хотя мы пропустили кодовую величину для 7)
    	.....
    	Для длины 16,... (та же вещь)
    

    Я сообщил Вам, что в таблице Хаффмана в файле JPG загружены БАЙТОВЫЕ величины для данного кода.

    Для этого конкретного примера кодов Хаффмана:

    Допустим, что в таблице Хаффмана в файле JPG на диске мы имеем (после тех 16 байтов, которые содержат число кодов Хаффмана с данной длиной):

    45 57 29 17 23 25 34 28

    Эти величины соответствуют конкретным длинам, которые я Вам дал перед этим, в кодах Хаффмана это будет:

    	нет величины для кода длины 1
    	для кодов длины 2 : у нас есть 45 57
    	для кодов длины 3 : 3 величины (например : 29,17,23)
    	для кодов длины 4 : только 1 величина (например: 25)
    	для кодов длины 5 : 1 величина (например: 34)
    	...
    	для кода длины 7, снова никакая величина, переходим к коду с длиной 8
    	для кода длины 8 : 1 величина 28
    

    ВАЖНОЕ примечание:

    	Для кодов длины 2:
    	     величина 45 соответствует коду 00
    	              57               коду 01
    	Для кодов длины 3:
    	     величина 29 соответствует коду 100
    	              17      ---||---      101
    	              23      ---||---      110
    	И Т.П...
    

    (Я сообщил Вам, что для данной длины байтовые величины хранятся в порядке увеличения величины кода Хаффмана.)

    Четыре таблицы Хаффмана соответствуют DC и AC таблицам яркости, и DC и AC таблицам для цветоразности, даются в приложении JPEG стандарта как предложение для шифратора. Стандарт сообщает, что эти таблицы протестированы с хорошими результатами сжатия для многих изображений и рекомендует их, но шифратор может использовать любую другую таблицу Хаффмана. Много шифраторов JPG используют эти таблицы. Некоторые предлагаются на Ваш выбор: оптимизация энтропии - если возможно, используйте таблицы Хаффмана, оптимизированные для этого конкретного изображения.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
74K
31 августа 2011 года
Димончик
1 / / 31.08.2011
+1 / -0
Мне нравитсяМне не нравится
10 ноября 2011, 23:14:35
Для тех кто знает что-то - это хорошо, но для тек кто что-то знает - это ненужно!!!!!!!! Нужно писать для тех кто ничего незнает!!!!!!!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог