3.7.2. DCTДискретное косинус-преобразование (DCT) уже обсуждалось нами в § 3.5.3. Комитет JPEG остановил свой выбор именно на этом преобразовании из-за его хороших свойств, а также в силу того, что в нем не делается никаких ограничений на структуру сжимаемых данных. Кроме того, имеются возможности для ускорения DCT. Стандарт JPEG применяет DCT не ко всему изображению, а к единицам данных (блоков) размера 8x8 пикселов. Дело в том, что (1) применение DCT ко всему изображению использует большое число арифметических операций и поэтому делается медленно. Применение DCT к единицам данных вычисляется значительно быстрее. (2) Из опытов известно, что в непрерывно-тоновых изображениях корреляция пикселов сохраняется в малых областях. Пикселы такого изображения имеют величины (компоненты цвета или градацию серого), близкие значениям окрестных пикселов, но дальние соседи уже не имеют корреляции. Следовательно, применение DCT ко всему изображению не произведет лучшее сжатие. Однако следует отметить, что использование малых единиц данных имеет и обратную сторону. Применение DCT ко всему изображению (с последующим сокращением информации и декомпрессией) создает картину, более приятную для глаза. Совершение DCT над единицам данных делается существенно быстрее, но после компрессии и декомпрессии возможно появление блоковых артефактов (искусственных искажений), особенно на стыках блоков, поскольку разные блоки по разному взаимодействуют с этапом квантования, который следует за DCT. Формулы DCT для JPEG совпадают с (3.9). Мы их повторяем для удобства изложения: , где и . (3.9) Преобразование DCT является основой сжатия с потерей информации в стандарте JPEG. Метод JPEG «выбрасывает» незначимую часть информации из изображения с помощью деления каждого из 64 коэффициентов DCT (особенно те, которые расположены в правой нижней части блока) на коэффициент квантования QC. В общем случае, каждый коэффициент DCT делится на особый коэффициент QC, но все 64 параметра QC могут изменяться по усмотрению пользователя (§ 3.7.4). Декодер JPEG вычисляет обратное преобразование DCT (IDCT) с помощью уравнений (3.10), которые мы здесь повторяем , (310) где Здесь используются квантованные коэффициенты DCT, а в результате получаются значения пикселов . Говоря языком математики, преобразование DCT является взаимно однозначным линейным отображением 64-мерного векторного пространства изображения в пространство частот той же размерности. IDCT является обратным отображением. Если были бы возможны вычисления с абсолютной точностью, то после применения DCT и IDCT (без квантования) результат совпал бы с исходным блоком. На практике, конечно, используется квантование, но если его делать аккуратно, то результатом этих преобразований будет блок, который очень близок исходному блоку изображения.
|