Россия, г. Смоленск ул. Николаева д. 19а кв. 56 |
Алгоритмы сжатия видео
Motion-JPEG
Motion-JPEG (или M-JPEG ) является наиболее простым алгоритмом сжатия видео. В нем каждый кадр сжимается независимо алгоритмом JPEG. Этот прием дает высокую скорость доступа к произвольным кадрам, как в прямом, так и в обратном порядке следования. Соответственно легко реализуются плавные "перемотки" в обоих направлениях, аудио-визуальная синхронизация и, что самое главное - редактирование. Типичные операции JPEG сейчас поддерживаются на аппаратном уровне большинством видеокарт и данный формат позволяет легко оперировать большими объемами данных при монтаже фильмов. Независимое сжатие отдельных кадров позволяет накладывать различные эффекты, не опасаясь, что взаимное влияние соседних кадров внесет дополнительные искажения в фильм.
Поток, разрешение (сжатие): Поток и разрешение произвольные, сжатие в 5-10 раз
Плюсы: Обеспечивает быстрый произвольный доступ. Легко редактировать поток. Низкая стоимость аппаратной реализации.
Минусы: Сравнительно низкая степень сжатия.
MPEG-1
Алгоритм MPEG-1 в целом соответствует описанной выше общей схеме построения алгоритмов сжатия.
Поток, разрешение: 1.5 Мбит/с, 352х240х30, 352х288х25
Плюсы: Сравнительно прост в аппаратной реализации, содержит преобразования, поддерживаемые на аппаратном уровне большим количеством видеокарт.
Минусы: Невысокая степень сжатия. Малая гибкость формата.
H.261
Стандарт H.261 специфицирует кодирование и декодирование видеопотока для передачи по каналу p*64 Кбит, где p=1..30. В качестве канала может выступать, например, несколько телефонных линий.
Входной формат изображения - разрешения CIF или QCIF в формате YUV (CCIR 601) частота кадров от 30 fps и ниже. Используется уменьшение разрешения в 2 раза для компонент цветности.
В выходной поток записываются два типа кадров: INTRA - сжатые независимо (соответствуют I-кадрам ) и INTER - сжатые со ссылкой на предыдущий кадр (соответствуют Р-кадрам ). В передаваемом кадре не обязательно присутствуют все макроблоки изображения, если блок изменился незначительно передавать его обычно нет смысла. Сжатие в INTRA кадрах осуществляется по схеме сжатия отдельного изображения. В INTER кадрах производится аналогичное сжатие разности каждого передаваемого макроблока с "наиболее похожим" макроблоком из предыдущего кадра (компенсация движения). Для сглаживания артефактов ДКП предусмотрена возможность применения размытия внутри каждого блока 8x8 пикселей. Стандарт требует, чтобы INTRA кадры встречались в потоке не реже чем через каждые 132 INTER кадра (чтобы не накапливалась погрешность кодирования и была возможность восстановиться в случае ошибки в потоке).
Степень сжатия зависит в основном от метода нахождения "похожих" макроблоков в предыдущем кадре, алгоритма решения передавать ли конкретный макроблок, выбора способа кодирования каждого макроблока ( INTER/INTRA ) и выбора коэффициентов квантования результатов ДКП. Ни один из перечисленных вопросы стандартом не регламентируются, оставляя свободу для построения собственных оптимальных алгоритмов.
Поток, разрешение: p*64 Кбит, p=1..30, CIF или QCIF
Плюсы: Прост в аппаратной реализации.
Минусы: Невысокая степень сжатия. Ограничения на формат.
H.263
Данный стандарт является расширением, дополнением и значительным усложнением H.261. Он содержит "базовый" стандарт кодирования, практически не отличающийся по алгоритмам сжатия от H.261, плюс множество опциональных его расширений. Кратко перечислим наиболее важные отличия:
- Использование арифметического кодирования вместо кодов Хаффмана. Дает возможность на 5-10% повысить степень сжатия.
- Возможность задания векторов смещения, указывающих за границы изображения. При этом граничные пиксели используются для предсказания пикселей вне изображения. Данный прием усложняет алгоритм декодирования, но позволяет значительно улучшить изображение при резкой смене плана сцены.
- Возможность задания вектора смещения для каждого блока 8x8 в макроблоке, что в ряде случаев существенно увеличивает сжатие и снижает блочность изображения.
- Появление B-кадров, которое позволяет увеличить степень сжатия, за счет усложнения и увеличения времени работы декодера.
- Поддержка большого числа форматов входных видеоданных: sub-QCIF, QCIF, CIF, 4CIF, 16CIF и отдельно настраиваемые. Основное отличие от более универсальных форматов заключается в адаптации для нескольких фиксированных разрешений, что позволяет делать менее универсальные, но более быстрые процедуры обработки кадров. Построенный таким образом декодер работает несколько быстрее.
- Компенсация движения с субпиксельной точностью. Возможность сдвинуть блок на полпиксела также увеличивает степень сжатия, но увеличивает время работы декодера.
- Особый режим сжатия INTRA макроблоков со ссылкой на соседние макроблоки в обрабатываемом кадре, особый режим квантования и специальная таблица Хаффмана для улучшения сжатия I-кадров в ряде случаев.
- Сглаживание границ блоков декодированного изображения для уменьшения эффекта "блочности". Зачастую при резком движении в кадре при сжатии алгоритм оказывается вынужден повысить степень квантования блоков после ДКП чтобы уложиться в отведенный на передачу битовый поток. При этом в кадре возникают хорошо вам знакомые по JPEG блоки размером 8х8. Как показала практика, "сращивание" границ, когда крайние пикселы блоков сдвигают по яркости так, чтобы уменьшить разницу, позволяет зачастую заметно повысить визуальное качество фильма.
- Изменение разрешения и деформирование базового кадра, использующегося в качестве базового при сжатии.
- Различные режимы квантования и кодирования по Хаффману.
Поток, разрешение: 0.04-20 Мбит/c, sub-QCIF, QCIF, CIF, 4CIF, 16CIF и отдельно настраиваемые разрешения.
Плюсы: Алгоритм H.263 также как H.261 допускает быструю аппаратную реализацию, однако при этом позволяет добиться большей степени сжатия при том же качестве. Поддерживает сжатие звука.
Минусы: По количеству заложенных идей находится между MPEG-2 и MPEG-4.