Лекция: Алгоритм JPEG
Один из самых новых и мощных алгоритмов. Он является стандартом де-факто для полноцветных изображений. Алгоритм оперирует областями 8*8, на которых яркость и цвет меняются достаточно плавно. Вследствие этого, при разложении такой матрицы в двойной ряд по косинусам значимыми являются только первые коэффициенты. Т.о. сжатие осуществляется за счет плавности изменения цветов в изображении. В целом алгоритм основан на применении дискретно-косинусоидального преобразования (ДКП) к матрице изображения для получения новой матрицы коэффициентов. Для получения исходного изображения применяется обратное приобразование.
Алгоритм:
1. переводим изображения из RGB в модель YCrCb (яркость, хроматический красный, хроматический синий). За счет того, что человеческий глаз менее чувствителен к цвету, чем к яркости, появляется возможность архивировать массивы Cr, Cb с большими потерями.
2. разбиваем исходное изображение на матрицы 8*8
3. применяем ДКП к матрицам
При этом получаем матрицу, в которой коэффициенты в левом верхнем углу соответствуют низкочастотной составляющей изображения, а в правом нижнем – высокочастотной. Плавное изменение цвета соответствует низкочастотной составляющей, а резкие скачки – высокочастотной.
4. квантование – деление рабочей матрицы на матрицу квантования
На этом шаге осуществляется управление степенью сжатия и происходят самые большие потери.
5.
переводим матрицу 8*8 в 64-элементный вектор при помощи зигзаг-сканирования. Т.о. получаем в начале вектора коэффициенты, соответствующие низким частотам, а в конце – высоким.
6. свертываем вектор с помощью алгоритма группового кодирования
7. свертываем получившиеся пары кодированием по Хаффману.