Сжатие изображения JPEG: проблема квантования - PullRequest
2 голосов
/ 22 февраля 2012

При кодировании необработанного изображения в изображение в формате JPEG, блок данных 8x8 смещается по уровню, преобразуется с использованием 2-D DCT, квантуется и кодируется по Хаффману.

Сначала я выполнил DCT строки, а затем столбец DCT, и я округлил результат до ближайшего целого числа.Я отправил этот блок в модуль квантования.При квантовании я использовал следующие таблицы Q.Эти таблицы рекомендованы IJG для коэффициента качества 99.

Luma Tables

1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 2 2 1
1 1 1 1 1 2 2 2
1 1 1 1 2 2 2 2
1 1 2 2 2 2 2 2
1 2 22 2 2 2 2

Таблицы цветности

1 1 1 1 2 2 2 2
1 1 1 1 2 2 2 2
1 1 1 2 2 2 2 2
1 1 2 22 2 2 2
2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2

Во время квантования при делении на '2' я округлил результат до нуля.Пример: 11/2 = 6. Следовательно, ошибка +1 будет добавлена ​​к каждому нечетному числу во время деквантования при декодировании.

В другой настройке я изменил свою методику округления.Здесь я округляю результат до нуля.Пример: 11/2 = 5. Следовательно, ошибка -1 будет добавлена ​​к каждому нечетному числу во время деквантования при декодировании.

Во втором случае я получаю очень меньший размер файла (меньше почти на 100КБ для изображения 768x512) и более PSNR.Я смог объяснить меньший размер файла, сказав, что все коэффициенты переменного тока, которые равны '1' при квантовании на 2, теперь станут 0 вместо 1. Следовательно, RLE делает размер файла меньшим.Но я не могу объяснить, почему качество изображения кодирования увеличивается.Он увеличивается с коэффициентом 2-3 дБ и происходит со всеми изображениями, которые я тестировал.

Мой аргумент таков, что DCT - это, в основном, равная ошибка DCTmatrix с обеих сторон, которая должна привести к равным потерям.Но это не тот случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...