У меня есть изображение 512x512, и я попытался его повторно сжать. Вот шаги для повторного сжатия изображения в файл jpeg
1) convert rgb to YCrCb
2) perform down sampling on Cr and Cb
2) convert YCrCb to DCT and Quantized according to chosen Quality
3) perform Huffman Encoding on Quantized DCT
Но перед кодированием Хаффмана я подсчитал количество DCT-коэффициентов, и оно составило 393216. Деление на 64 дает мне номер DCT-блока (8x8), который будет 6144.
Теперь я попытался посчитать количество блоков 8x8 для пиксельной области. 512/8 = 64, что дает мне 64 блока по горизонтали и 64 блока по вертикали. 64 x 64 = 4096, что не равно количеству блоков DCT, в то время как количество пикселей составляет 512x512 = 262144
Мой вопрос заключается в том, как кодирование Хаффмана волшебным образом преобразует коэффициенты 393216 в 262144 пикселей, получает значения каждого пикселя и вычисляет размер (512x512) сжатого изображения (jpeg).
Заранее спасибо. : D