Зигзагообразная перестановка 64 DCT коэффициентов
Так, после того, как мы выполнили DCT-преобразование над блоком величин 8x8, у нас есть новый блок 8x8. Затем, этот блок 8x8 просматривается по зигзагу подобно этому:
(Числа в блоке 8x8 указывают порядок, в котором мы просматриваем 2-мерную матрицу 8x8)
| 00, 1, 5, 6, 14, 15, 27, 28, 02, 4, 7, 13, 6, 26, 29, 42, 03, 8, 12, 17, 25, 30, 41, 43, 09, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63 |
Как Вы видите, сначала - верхний левый угол (0,0), затем величина в (0,1), затем (1,0), затем (2,0), (1,1), (0,2), (0,3), (1,2), (2,1), (3,0) и т.п.
После того, как мы прошли по зигзагу матрицу 8x8, мы имеем теперь вектор с 64 коэффициентами (0..63) Смысл этого зигзагообразного вектора – в том, что мы просматриваем коэффициенты 8x8 DCT в порядке повышения пространственных частот. Так, мы получаем вектор отсортированный критериями пространственной частоты: первая величина на векторе (индекс 0) соответствует самой низкой частоте в изображении – она обозначается термином DC. С увеличением индекса на векторе, мы получаем величины соответствующие высшим частотам (величина с индексом 63 соответствует амплитуде самой высокой частоте в блоке 8x8). Остальная часть коэффициентов DCT обозначается AC.
На этом этапе, у нас есть отсортированный вектор с 64 величинами, соответствующими амплитудам 64 пространственных частот в блоке 8x8.
Эти 64 величины квантованы: Каждая величина делится на число, определенное для вектора с 64 величинами - таблицу квантования, затем округляется до ближайшего целого.
для (i = 0; i<=63; i++)
вектор[i] = (округлить) (вектор[i] / таблица_квантования[i] + 0.5)
Вот пример таблицы квантования для яркости(Y) данной в приложении JPEG стандарта. (Дается в форме блока 8x8; полученного из 64 векторных величин, зигзагообразным преобразованием)
| 16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99 |
Эта таблица опирается на "психовизуальный порог", это "используется с хорошими результатами для изображений с 8-битовой яркостью и оттенками". Большинство существующих шифраторов просто копируют этот пример, но величины не оптимизируются (шифратор может использовать ЛЮБУЮ ДРУГУЮ таблицу квантования) таблица определяется в JPEG файле с DQT (Определение Таблицы Квантования) маркером. Обычно присутствует одна таблица для Y, и другие для оттенка (Cb и Cr).
Процесс квантования играет ключевую роль в JPEG сжатии. Это - процесс, который удаляет высокие частоты, представленные в исходном изображении - впоследствии высокую детализацию. Мы делаем это из-за того, что глаз более чувствителен к низким частотам, чем к высоким, так что мы можем удалить, с очень небольшим визуальным убытком, высокие частоты. Это сделано посредством деления величин в высоких индексах на векторе (амплитуды высоких частот) на большие величины, чем величины, на которыми разделены амплитуды более низких частот. Больше величины в таблице квантования - больше потери (впоследствии визуальные потери) введенные этим процессом, и меньше – лучше визуальное качество.
Другой важный факт - в большинстве изображений цвет изменяется медленно от одного пикселя к другому, так что большинство образов будут иметь небольшое количество высокой детализации -> небольшая сумма (небольшие амплитуды) высоких пространственных частот - но у них есть много информации об изображении, содержащейся на низких пространственных частотах.
Впоследствии на новом квантованном векторе, на высоких пространственных частотах, мы будем иметь много последовательных нулей.






