Тригонометрия
Дискретное косинусное преобразование: JPEG и MP3
Цели урока
- Вычислять DCT-II и объяснять её связь с DFT
- Понимать механизм энергетической концентрации и связь с KLT
- Описывать пайплайн JPEG: DCT → квантование → зигзаг → Хаффман
- Объяснять роль MDCT в MP3 и принцип overlap-add
Предварительные знания
- Ряды Фурье
- DFT и FFT
- Вейвлет-анализ
Почему JPEG сжимает 12 МБ в 1 МБ без видимых потерь - и что именно выбрасывается?
- JPEG: 12:1 сжатие фотографий, стандарт с 1992 года
- MP3/AAC: 10:1 сжатие аудио через MDCT и психоакустику
- HEVC/H.265: 4K видеостриминг Netflix на 15-20 Мбит/с
- WebP: следующее поколение после JPEG с меньшими артефактами
История: от теоремы KLT до стандарта ISO
Преобразование Карунена-Лоэве (1946/1960) - оптимальная декорреляция данных, но вычислительно дорого. Ахмед, Натараджан и Рао в 1974 году показали, что DCT асимптотически совпадает с KLT для марковских данных - и это вычислимо за O(N log N). Комитет JPEG принял DCT-II как основу стандарта в 1992 году. MP3 стандартизирован в 1993-м через MPEG-1 Audio Layer III с MDCT. Сегодня DCT лежит в основе JPEG, MP3, AAC, H.264, H.265 - практически всего мультимедийного контента в интернете.
DCT-II и энергетическая концентрация
Стандарт JPEG сжимает фотографию iPhone в 12 раз: 12 МБ становятся 1 МБ. Секрет - дискретное косинусное преобразование концентрирует 99% энергии изображения в 10% коэффициентов, остальные квантуются в ноль. Netflix при стриминге 4K применяет HEVC, где блочное DCT-кодирование аналогично JPEG, только блоки до 64x64.
DCT-II можно вычислить через FFT: добавить нули, сделать FFT и взять вещественную часть. Это даёт O(N log N) вместо O(N²) прямого вычисления.
Почему DCT-II эффективнее DFT для сжатия изображений?
Натуральные изображения статистически аппроксимируются марковским процессом первого порядка. DCT асимптотически совпадает с оптимальным преобразованием Карунена-Лоэве (KLT), декоррелируя данные максимально эффективно.
JPEG: квантование и кодирование
JPEG работает так: разбить изображение на блоки 8x8, применить DCT к каждому, разделить коэффициенты на матрицу квантования Q (большие значения для высоких частот), округлить до целых. Высокочастотные коэффициенты, незаметные глазу, обнуляются. Зигзаг-сканирование преобразует матрицу в вектор - длинные серии нулей в конце сжимаются RLE + Хаффман.
Блочные артефакты JPEG (видимые квадраты при высоком сжатии) - следствие независимого квантования блоков 8x8. JPEG 2000 и WebP используют DWT и лишены этого дефекта.
Почему JPEG использует блоки 8x8 пикселей, а не весь кадр целиком?
Маленький блок - быстрое кодирование, сохраняет локальную пространственную корреляцию, но вызывает блочные артефакты при высокой компрессии. Большой блок - лучше использует глобальную статистику, но медленнее и теряет актуальность на краях объектов.
MDCT в MP3 и AAC
MP3 сжимает аудио в 10 раз без заметных потерь. Ключевой инструмент - MDCT с 50% перекрытием окон. Это устраняет блочные артефакты между фреймами, которые были бы слышны как щелчки. Spotify стримит около 320 кбит/с AAC, что требует обработки 44100 семплов/с через перекрывающиеся окна MDCT в реальном времени.
Битрейт и качество в MP3
Зависимость воспринимаемого качества от битрейта
128 кбит/с: слышны артефакты при внимательном прослушивании. 192 кбит/с: большинство не отличит от CD. 320 кбит/с: практически неотличимо. FLAC (без потерь): 700-1100 кбит/с. AAC при 256 кбит/с воспринимается лучше MP3 при 320 кбит/с.
Зачем MDCT в MP3 использует 50% перекрытие окон?
Независимое кодирование непересекающихся блоков создаёт заметные на слух стыки. MDCT берёт 2N семплов для N коэффициентов - каждый семпл участвует в двух фреймах. Overlap-add суммирует перекрытия и устраняет стыки.
Связи с другими темами
DCT связывает тригонометрический анализ с инженерными стандартами сжатия
- JPEG и HEVC — Связанная тема
- MP3 и AAC — Связанная тема
- KLT и статистика — Связанная тема
- Банки фильтров — Связанная тема
Итоги
- DCT-II концентрирует энергию в немногих коэффициентах, асимптотически оптимальна (KLT) для марковских данных
- JPEG: DCT блока 8x8 → квантование матрицей Q → зигзаг → RLE + Хаффман; качество управляется масштабом Q
- MDCT с 50% перекрытием устраняет блочные артефакты в MP3/AAC через overlap-add реконструкцию
- Весь мультимедийный поток интернета - JPEG, MP3, H.264, H.265 - основан на одной идее: DCT и квантование высоких частот
Вопросы для размышления
- Почему квантование высокочастотных коэффициентов даёт меньше заметных артефактов, чем низкочастотных?
- Как психоакустическая маскировка позволяет использовать неравномерное квантование в MP3?
- В чём принципиальное улучшение JPEG 2000 над JPEG и почему JPEG всё ещё доминирует?
Связанные уроки
- trig-21 — Ряды Фурье - теоретическая основа DCT
- trig-24-wavelets — DCT и DWT - два подхода к сжатию; JPEG 2000 использует DWT
- trig-26-trig-poly — Базисные косинусы DCT - тригонометрические полиномы