Кодирование при сжатии изображений
Прежде всего обсудим пункт 3 из конца предыдущего параграфа. Каждая матрица 8x 8 квантованных коэффициентов DCT содержит коэффициент DC в позиции (0,0) в левом верхнем углу, а также 63 коэффициента АС. Коэффициент DC равен среднему значению всех 64 пикселов исходной единицы. Наблюдения показывают, что при сжатии непрерывно-тоновых изображений, коэффициенты DC соседних единиц обычно являются коррелированными. Известно, что этот коэффициент равен сумме всех пикселов блока с некоторым общим множителем. Все это указывает на то, что коэффициенты DC близких блоков не должны сильно различаться. Поэтому JPEG записывает первый (закодированный) коэффициент DC, а затем кодирует разности коэффициентов DC последовательных блоков.
Кодирование разностей коэффициентов DC. Так называемые унарные коды, которые определяются следующим образом. Унарный код неотрицательного целого числа состоит из строки единиц, за которыми следует один 0 или, наоборот,
нулей и одна 1. Каждая строка начинается с ее номера (слева); в конце стоит унарный код строки, а между ними располагаются некоторые числа. В каждой следующей строке записано больше чисел, чем в предыдущей, но они отличаются от чисел всех предыдущих строк. Длина строк растет очень быстро, поэтому такие данные не удобно представлять в виде простого двумерного массива. На самом деле^ для их хранения не нужна никакая структура данных, поскольку подходящая программа легко определит позицию числа х в таблице, анализируя биты этого числа.
Разберемся теперь с пунктом 2 предыдущего параграфа, когда надо кодировать 63 коэффициента АС. Это сжатие использует кодирование RLE в сочетании с методом Хаффмана или с арифметическим кодированием. Идея заключается в том, что в последовательности коэффициентов АС, как правило, имеется всего несколько ненулевых элементов, между которыми стоят серии нулей.
- RSS
Наши услуги: