Как работает сжатие MPEG4?
Может кто-нибудь объяснить простым и понятным образом, как MPEG4 работает для сжатия данных. Я в основном интересуюсь видео. Я знаю, что есть разные стандарты или части к нему. Я просто ищу преобладающий общий метод сжатия, если он есть с MPEG4.
4 ответа
MPEG-4 является огромным стандартом и использует много методов для достижения высоких степеней сжатия, на которые он способен.
В общем, сжатие видео связано с тем, чтобы выбрасывать как можно больше информации при минимальном влиянии на восприятие конечного пользователя. Например, при использовании субдискретизации YUV вместо RGB размер видео сразу уменьшается вдвое. Это возможно, поскольку человеческий глаз менее чувствителен к цвету, чем к яркости. В YUV значение Y является яркостью, а значения U и V представляют цвет. Таким образом, вы можете выбросить некоторую информацию о цвете, которая уменьшает размер файла, и зритель не заметит никакой разницы.
После этого большинство методов сжатия используют, в частности, 2 избыточности. Первый - это временная избыточность, а второй - пространственная избыточность.
Временная избыточность отмечает, что последовательные кадры в видеопоследовательности очень похожи. Обычно видео будет порядка 20-30 кадров в секунду, и ничего не изменится за 1/30 секунды. Возьмите любой DVD и сделайте паузу, затем переместите его на один кадр и обратите внимание, насколько похожи эти 2 изображения. Таким образом, вместо кодирования каждого кадра независимо, MPEG-4 (и другие стандарты сжатия) кодируют только разницу между последовательными кадрами (используя оценку движения, чтобы найти разницу между кадрами)
Пространственная избыточность использует тот факт, что в общем случае цветовой разброс по изображениям имеет тенденцию быть довольно низкой частотой. Под этим я подразумеваю, что соседние пиксели, как правило, имеют похожие цвета. Например, на изображении вас, одетого в красную перемычку, все пиксели, представляющие вашу перемычку, будут иметь очень похожий цвет. Можно использовать DCT для преобразования значений пикселей в частотное пространство, где может быть выброшена некоторая высокочастотная информация. Затем, когда выполняется обратное DCT (во время декодирования), изображение теперь без выброшенной высокочастотной информации.
Чтобы просмотреть эффекты отбрасывания высокочастотной информации, откройте MS paint и нарисуйте серию чередующихся горизонтальных и вертикальных черных линий. Сохраните изображение в формате JPEG (который также использует DCT для сжатия). Теперь увеличьте изображение, обратите внимание, что края линий уже не такие острые и выглядят немного размытыми. Это связано с тем, что некоторая высокочастотная информация (переход от черного к белому) была выброшена во время сжатия. Прочитайте это для объяснения с красивыми картинками
Для дальнейшего чтения эта книга довольно хороша, хотя и немного тяжела по математике.
Как и любой другой популярный видеокодек, MPEG4 использует разновидность дискретного косинусного преобразования и множество методов компенсации движения (которые можно рассматривать как предсказание движения, если это помогает), которые уменьшают объем данных, необходимых для последующих кадров. На этой странице представлен обзор того, что делает обычный MPEG4.
Это не совсем отличается от методов, используемых JPEG.
Острые края, безусловно, содержат высокие частоты. Уменьшение или устранение высоких частот снижает резкость краев. Мелкие детали, включая острые края, удаляются с помощью высокочастотного удаления - возможность разрешения 2 небольших объектов удаляется с высокими частотами - тогда вы видите только один.
MPEG4 использует различные методы для сжатия видео.
Если вы еще не смотрели википедию, это будет хорошей отправной точкой.
Также есть статья от IEEE, которая объясняет эти методы более подробно.