Изображения взяты из этой статьи в Википедии .
TL, DR: см. полужирный часть ниже.
Начните с двумерного массива значений пикселей. Есть 64 байта информации.
После применения смещения и вычисления DCT на выходе получается двумерный массив частотных коэффициентов. Итак, теперь есть 64 значения с плавающей запятой.
Вот ключ к тому, как работает сжатие JPEG. Частотные коэффициенты в верхнем левом углу массива (низкие частоты) намного важнее для качества изображения, чем частотные коэффициенты в нижнем правом углу массива (высокие частоты).
Итак, следующий шаг - применить квантование к массиву. Квантование выделяет переменное количество битов каждому значению в массиве. Значения в верхнем левом углу получают больше битов, а значения в нижнем правом углу получают меньше битов. После квантования массив выглядит следующим образом.
Обратите внимание, что многие значения в правом нижнем углу теперь равны нулю. Итак, наконец мы добрались до зигзага, который выглядит так:
Цель зигзага состоит в том, чтобы преобразовать двумерный массив квантованных коэффициентов DCT в одномерный массив, где первые элементы поступают из верхнего левого угла, а более поздние элементы происходят из нижнего правого угла двумерного массива. После зигзага массив выглядит так
-26 -3 0 -3 -2 -6 2 -4 1 -3 1 1 5 1 2 -1 1 -1 2 0 0 0 0 0 -1 -1 0 0 ...
где ...
- все 0. В зависимости от степени сжатия, массив может быть обрезан в любой точке. В этом примере разделение массива после 19 элементов является хорошим компромиссом между качеством и сжатием. Таким образом, в файле JPEG сохраняются только первые 19 элементов, а не исходные 64 необработанных значения пикселей.
Обратите внимание, что после прерывания зигзагообразного выхода есть дополнительные шаги сжатия. Они описаны в связанной статье.