При кодировании необработанного изображения в изображение в формате 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 с обеих сторон, которая должна привести к равным потерям.Но это не тот случай.