Описанный выше алгоритм в целом крайне близок к большинству применяемых сейчас на практике алгоритмам сжатия видео. Однако новые (или хорошо забытые старые) идеи появляются ежегодно. Если для алгоритмов сжатия без потерь можно говорить о росте степени сжатия на 1 % в год (относительно предыдущего года) для достаточно большого тестового массива данных, то для алгоритмов сжатия видео речь обычно идет о 3-5 % прибавки степени сжатия для достаточно большого видеофрагмента при том же визуальном качестве.
Если, с одной стороны, повышается степень сжатия, то, с другой стороны, растет сложность программы и падает скорость работы как при компрессии так и при декомпрессии.
Перечислим основные пути повышения степени сжатия.
Изменение алгоритма сжатия I-кадров. Выше приведен алгоритм, основанный на ДКП. Сегодня все чаще используются алгоритмы, основанные на вэйвлетах (см. описание JPEG 2000).
Изменение алгоритма сжатия без потерь. Выше приведен алгоритм, использующий сжатие по алгоритму Хаффмана. Однако недавно закончился основной патент на арифметическое сжатие (дающее преимущество 2-15 %), и соответственно, все чаще используется именно оно.
Изменение алгоритма работы с векторами смещения блоков. Подбор векторов смещений блоков по наименьшему среднеквадратичному смещению не является оптимальным. Существуют алгоритмы, дающие лучший результат при некоторых дополнительных затратах времени при сжатии.
Применение обработки коэффициентов. Можно пытаться получить больше информации об изображении из сохраненных коэффициентов. Например, возможно быстрое сравнение коэффициентов после ДКП в соседних блоках и их усреднение по достаточно сложным алгоритмам. Этот прием заметно снижает количество артефактов, вносимых в изображение ДКП, при этом допуская реализацию, работающую в реальном времени.
Применение обработки получающихся кадров. Известная беда алгоритмов сжатия изображений - неизбежная "блочность" (хорошо заметные границы макроблоков). В принципе существуют алгоритмы, работающие с кадром совсем без применения блоков (даже без векторов смещения блоков), но такой подход пока не оправдывает себя ни по степени сжатия, ни по скорости работы декодера. Однако можно построить достаточно быстрые алгоритмы постобработки, которые достаточно аккуратно уберут видимые границы между блоками, не внося существенных помех в само изображение. Существуют также алгоритмы, устраняющие на лету эффект Гиббса (см. описание JPEG), и т. п. Таким образом, существенно улучшается визуальное качество изображения. Это также означает, что можно повысить степень сжатия при том же визуальном качестве.
Улучшение алгоритмов масштабирования изображений. Как правило, видео на компьютере просматривают во весь экран. При этом даже применение очень простого и быстрого кусочно-линейного масштабирования способно кардинально снизить скорость проигрывания ролика. То есть примитивная операция масштабирования изображения будет работать заметно дольше, чем сложный алгоритм декодера. Однако скорости современных компьютеров быстро растут, и те алгоритмы, что вызывали падение скорости до 7 кадров в секунду на Celerpn-300, дают живое видео - больше 30 кадров - на Р4-1200 (начинает использоваться расширенный набор команд и т. п.). Появляется возможность использовать более сложные и качественные алгоритмы масштабирования на весь экран, получая более высокое качество, чем для использовавшейся ранее билинейной интерполяции (в большинстве видеокарт реализованной аппаратно).
Применение предварительной обработки видео. Если мы хотим получить достаточно высокую степень сжатия, то можно заранее предсказать,
: что в нашем изображении пострадают высокие частоты. Оно станет сглаженным, пропадут многие мелкие детали. При этом, как правило, появляются дополнительные артефакты в виде полосок, ореолов у резких границ, волн. Значительно повысить качество изображения после кодирования позволяет предобработка с удалением высоких частот. При этом существуют алгоритмы, обрабатывающие поток таким образом, что визуально качество
. изображения не изменяется, однако после декодера мы получаем сущест-
1 венно более качественное изображение.
Выше перечислены лишь отдельные направления работы. Фактически за г 90-е гг. изменения и улучшения коснулись всех модулей алгоритма, постро-■ енного по классической схеме. Свою лепту в этот процесс вносят также • производители микропроцессоров, и в особенности Intel. Процессоры, на-; чиная с Р4, специально предназначены для обработки потоковых данных. Особенности архитектуры процессора (в частности, небольшой по сравнению с процессорами AMD кеш первого уровня) дают значительное преимущество одним алгоритмам и делают неэффективными другие. Однако общее совершенствование алгоритмов сжатия видео идет очень быстро, и в ближайшее время можно ожидать только увеличения скорости появления новых разработок.