СПОСОБ И УСТРОЙСТВО ДЛЯ АЛГОРИТМОВ ПРОТИВОСТОЯНИЯ ОШИБКАМ ПРИ БЕСПРОВОДНОЙ ПЕРЕДАЧЕ ВИДЕО
METHOD AND DEVICE FOR ALGORITHMS TO RESIST ERRORS IN WIRELESS VIDEO TRANSFER

По данной заявке на патент испрашивается приоритет по предварительной заявке на патент № 60/760678 (номер в реестре патентного поверенного 060372P1) под названием "Method and Apparatus for Adaptive Intra Refresh Based on Prediction Hierarchy for Wireless Video Communications", поданной 20 января 2006 г., правопреемником которой является правообладатель настоящей заявки и которая полностью включена сюда посредством ссылки.
Данная патентная заявка притязает на приоритет предварительной патентной заявки № 60/760755 (номер в реестре патентного поверенного 060372P2) под названием "A Method of Error Resilience for Wireless Video Communication", поданной 20 января 2006 г., правопреемником которой является правообладатель настоящей заявки и которая полностью включена сюда посредством ссылки.
Область техники, к которой относится изобретение
Эта заявка относится к обработке мультимедийного сигнала, в частности к беспроводной передаче видео.
Уровень техники
Системы мультимедийной обработки, например видеокодеры, могут кодировать мультимедийные данные с использованием методов кодирования на основании международных стандартов, например стандартов Moving Picture Experts Group (MPEG)-1, -2 и -4, стандарта International Telecommunication Union (ITU)-T H.263 и стандарта ITU-T H.264 и его аналога, ISO/IEC MPEG-4, часть 10, т.е. Advanced Video Coding (AVC). Такие методы кодирования в целом относятся к сжатию мультимедийных данных для передачи и/или хранения. Сжатие в широком смысле - это процесс устранения избыточности из данных.
Видеосигнал можно описывать в виде последовательности изображений, которые включают в себя кадры (полные изображения), или поля (например, перемеженный видеопоток содержит поля перемежающихся четных и нечетных строк в изображении). Используемый здесь термин "кадр" относится к изображению, кадру или полю. Методы кодирования видео предусматривают сжатие видеосигналов с использованием беспотерьных или потерьных алгоритмов сжатия для сжатия каждого кадра. Внутрикадровое кодирование (именуемое здесь интракодированием) - это кодирование кадра с использованием только этого кадра. Межкадровое кодирование (именуемое здесь интеркодированием) - это кодирование кадра на основании других, "опорных", кадров. Например, видеосигналы часто демонстрируют временную избыточность, заключающуюся в том, что близкорасположенные кадры во временной последовательности кадров имеют, по меньшей мере, фрагменты, которые совпадают или, по меньшей мере, частично совпадают друг с другом.
Мультимедиа процессоры, например видеокодеры, могут кодировать кадр путем его разбиения на блоки или "макроблоки", например 16×16-пиксельные. Кодер может дополнительно разбивать каждый макроблок на подблоки. Каждый подблок может дополнительно содержать дополнительные подблоки. Например, подблоки макроблока могут включать в себя подблоки размером 16×8 и 8×16. Подблоки 8×16 подблоков могут включать в себя 8×8 подблоков и т.д. Используемый здесь термин "блок" относится к макроблоку или подблоку.
Кодеры используют эту временную избыточность с использованием алгоритмов на основе интеркодирования с компенсацией движения. Алгоритмы компенсации движения идентифицируют фрагменты опорного кадра, которые, по меньшей мере, частично совпадают с блоком. Блок может сдвигаться в кадре относительно совпадающего фрагмента опорного кадра. Этот сдвиг характеризуется вектором движения. Любые различия между блоком и частично совпадающим фрагментом опорного кадра можно охарактеризовать как остаток. Кодер может кодировать кадр как данные, которые содержат один или несколько векторов движения и остатков для конкретного разбиения кадра. Конкретное разбиение блоков для кодирования кадра можно выбирать, надлежащим образом минимизируя функцию стоимости, которая, например, балансирует размер кодирования с искажением контента, возникающим в результате кодирования.
Интеркодирование обеспечивает более эффективное сжатие, чем интракодирование. Однако интеркодирование может создавать проблемы, когда опорные данные (например, опорные кадры или опорные поля) утрачиваются вследствие канальных ошибок и т.д. В этих случаях декодирование интеркодированных данных может оказаться невозможным или может привести к увеличению ошибок и распространению ошибки. Декодеры могут использовать схемы маскирования, с помощью которых они пытаются замаскировать или скрыть ошибочные данные посредством данных, полученных из соседних блоков или из данных в других кадрах. Усовершенствование алгоритмов маскирования может обеспечивать некоторое улучшение качества маскированных фрагментов ошибочных видеоданных. Однако существует предел повышения качества маскированного изображения по причине сильной зависимости алгоритмов маскирования от пространственно-временной информации. Маскированные данные могут не иметь высокого качества, и зрительское восприятие может ухудшаться. Кроме того, декодирование сигнала может оказаться невозможным, и может потребоваться ресинхронизация. Распространение ошибки может быть ограниченным, и ресинхронизация (или начальный захват) может обеспечиваться методами кодирования, которые обновляют видео. Обновленный видеосигнал можно декодировать без обращения к другим кадрам или информации о них.
Независимо декодируемый интракодированный кадр - это наиболее общая форма кадра, которая допускает обновление видеосигнала. Стандарты MPEG-x и H.26x используют так называемую группу изображений (GOP), которая содержит интракодированный кадр (также именуемый I-кадром) и прогнозируемые по времени P-кадры или прогнозируемые в двух направлениях B-кадры, которые ссылаются на I-кадр и/или другие P- и/или B-кадры в GOP. Более длинные GOP желательны для повышенного сжатия, но более короткие GOP позволяют быстрее осуществлять захват и ресинхронизацию. Увеличение количества I-кадров приводит к более частому обновлению видеосигнала, что дополнительно ограничивает распространение ошибки и позволяет быстрее осуществлять захват и ресинхронизацию, но ценой снижения сжатия. Поэтому требуется способ кодирования видеоданных, который ограничивает распространение ошибки видеопотока на декодере, одновременно сохраняя эффективность сжатия.
Сущность изобретения
Система, способ и устройства, отвечающие заявке, имеют каждый несколько аспектов, ни один из которых не отвечает сам по себе за его желаемые атрибуты. Без ограничения объема, который выражается в нижеследующей формуле изобретения, опишем кратко наиболее заметные его признаки. Из этого рассмотрения и, в частности, из раздела "Подробное описание некоторых вариантов осуществления" явствует, как выборочные признаки этой заявки могут обеспечивать некоторые усовершенствования, которые включают в себя, помимо прочего, например, повышение качества декодированного видео, улучшение устранения ошибок, улучшение противостояния ошибкам и/или повышение эффективности беспроводной связи.
Описан способ обработки мультимедийных данных, которые включают в себя множественные видеокадры, причем способ включает в себя этапы, на которых инициализируют счетчик ссылок на пиксельном уровне для текущего кадра, осуществляют прогнозирование следующего кадра со ссылкой на текущий кадр и повторно регулируют карту выделения полосы макроблока текущего кадра.
Описан процессор для обработки мультимедийных данных, включающих в себя множественные видеокадры, причем процессор способен инициализировать счетчик ссылок на пиксельном уровне для текущего кадра, осуществлять прогнозирование следующего кадра со ссылкой на текущий кадр и повторно регулировать карту выделения полосы макроблока текущего кадра.
Представлено устройство для обработки мультимедийных данных, которые включают в себя множественные видеокадры, причем устройство включает в себя модуль инициализации для инициализации счетчика ссылок на пиксельном уровне для текущего кадра, модуль осуществления для осуществления прогнозирования следующего кадра со ссылкой на текущий кадр и модуль повторной регулировки для повторной регулировки карты выделения полосы макроблока текущего кадра.
Представлено устройство для обработки мультимедийных данных, которые включают в себя множественные видеокадры, причем устройство включает в себя средство инициализации счетчика ссылок на пиксельном уровне для текущего кадра, средство осуществления прогнозирования следующего кадра со ссылкой на текущий кадр и средство повторной регулировки карты выделения полосы макроблока текущего кадра.
Описан машинно-считываемый носитель для обработки мультимедийных данных, которые включают в себя совокупность видеокадров, причем машинно-считываемый носитель включает в себя инструкции, которые при выполнении предписывают машине инициализировать счетчик ссылок на пиксельном уровне для текущего кадра, осуществлять прогнозирование следующего кадра со ссылкой на текущий кадр и повторно регулировать карту выделения полосы макроблока текущего кадра.
Краткое описание чертежей
Фиг.1 - блок-схема, иллюстрирующая систему передачи мультимедиа согласно одному аспекту.
Фиг.2 - блок-схема, иллюстрирующая вариант осуществления кодера, который можно использовать в системе, например, показанной на фиг.1.
Фиг.3 - блок-схема, иллюстрирующая вариант осуществления декодера, который можно использовать в системе, например, показанной на фиг.1.
Фиг.4A - логическая блок-схема, иллюстрирующая пример метода кодирования части видеопотока в системе, например, показанной на фиг.1.
Фиг.4B - логическая блок-схема, более подробно иллюстрирующая пример метода кодирования части видеопотока в системе, например, показанной на фиг.1.
Фиг.5 - графическая иллюстрация карты искажений, которую можно генерировать методами, показанными на фиг.4A и 4B.
Фиг.6 - графическая иллюстрация областей прогнозирования, используемых для оценивания фрагмента видео, например, используемых в методах прогнозирования с компенсацией движения.
Фиг.7 - функциональная блок-схема, иллюстрирующая вариант осуществления кодера, который можно использовать в системе, например, показанной на фиг.1.
Фиг.8 - функциональная блок-схема, иллюстрирующая вариант осуществления кодера, который можно использовать в системе, например, показанной на фиг.1.
Фиг.9 - система беспроводной связи 900 согласно некоторым вариантам осуществления.
Фиг.10 - организация кодированных видеоданных или битового потока видео в виде квантов и AU.
Фиг.11 - организация битового(ых) потока(ов) видео в виде квантов и AU и их отображение в кадры FLO.
Фиг.12 - иерархия прогнозирования для кодирования кадра с прогнозированием согласно некоторым вариантам осуществления.
Фиг.13 - двухпроходный алгоритм для определения цепочки прогнозирования и придания большей важности макроблокам, на которые часто ссылаются, согласно некоторым вариантам осуществления.
Подробное описание некоторых вариантов осуществления
Нижеследующее подробное описание посвящено некоторым иллюстративным вариантам осуществления заявленного изобретения. Однако заявку можно осуществлять многими разными способами, заданными в прилагаемой формуле изобретения. В этом описании мы опираемся на чертежи, снабженные сквозной системой обозначения.
Видеосигналы можно охарактеризовать в виде ряда изображений, кадров, полей или квантов. Используемый здесь термин "кадр" в общем смысле может охватывать кадры прогрессивного видеосигнала, поля перемеженного видеосигнала или кванты того и другого видеосигнала.
Варианты осуществления включают в себя системы и способы улучшения обработки на кодере в системе передачи мультимедиа. Мультимедийные данные могут включать в себя видео, аудио, неподвижные изображения или любой другой подходящий тип аудиовизуальных данных. Варианты осуществления включают в себя устройство и способ передачи данных (например, видео).
На фиг.1 показана блок-схема, иллюстрирующая систему 100 передачи мультимедиа согласно одному аспекту. Система 100 включает в себя кодер 110, связанный с декодером 150 через сеть 140, которая может представлять собой, например, сеть, подверженную ошибкам, например беспроводную сеть. В одном примере кодер получает мультимедийный сигнал из внешнего источника 102 и кодирует этот сигнал для передачи по сети 140.
В этом примере кодер 110 содержит процессор 112, подключенный к памяти 114 и приемопередатчику 116. Процессор 112 может включать в себя один или несколько процессоров общего назначения и/или цифровых сигнальных процессоров. Память 114 может включать в себя одно или несколько полупроводниковых и/или дисковых запоминающих устройств. Процессор 112 кодирует данные из источника мультимедийных данных и выдает их на приемопередатчик 116 для передачи по сети 140.
В этом примере декодер 150 содержит процессор 152, подключенный к памяти 154 и приемопередатчику 156. Процессор 152 может включать в себя один или несколько процессоров общего назначения и/или цифровых сигнальных процессоров. Память 154 может включать в себя одно или несколько полупроводниковых и/или дисковых запоминающих устройств. Приемопередатчик 156 способен принимать мультимедийные данные по сети 140 и выдавать их на процессор 152 для декодирования. В одном примере приемопередатчик 156 включает в себя беспроводной приемопередатчик. Сеть 140 может содержать одну или несколько систем проводной или беспроводной связи, в том числе Ethernet, телефонную (например, POTS), кабельную, электрическую и оптоволоконную системы, и/или беспроводную систему, содержащую одну или несколько систем связи множественного доступа с кодовым разделением (CDMA или CDMA2000), систем множественного доступа с частотным разделением (FDMA), систем ортогонального множественного доступа с частотным разделением (OFDM), систем множественного доступа с временным разделением (TDMA), например систему мобильной телефонной связи GSM/GPRS (General Packet Radio Service)/EDGE (enhanced data GSM environment), TETRA (Terrestrial Trunked Radio), широкополосную систему множественного доступа с кодовым разделением (WCDMA), систему с высокой скоростью передачи данных (1xEV-DO или 1xEV-DO Gold Multicast), систему IEEE 802.11, систему MediaFLO, систему DMB или систему DVB-H.
На фиг.2 показана блок-схема, иллюстрирующая вариант осуществления кодера 110, который можно использовать в системе, например системе 100, показанной на фиг.1. В этом варианте осуществления кодер 110 содержит модуль 202 оценки значения искажения, определитель 204 метода кодирования и мультимедийный кодер 206. Модуль 202 оценки значения искажения оценивает значение искажения для кодируемых фрагментов мультимедийных данных. Значение искажения отчасти базируется на распространении ошибки из других фрагментов видео, на основании которых прогнозируется текущий фрагмент, и вероятности того, что другие фрагменты приняты с ошибками. Значение искажения также включает в себя компонент искажения вследствие ошибки, внесенной на декодере при маскировании фрагмента видеоданных, если он принят с ошибками. Модуль оценки значения искажения может использовать несколько методов кодирования и вычислять значения искажения для каждого метода кодирования.
Определитель 204 метода кодирования определяет метод кодирования, который будет использоваться для кодирования фрагмента видеоданных на основании оценочного значения искажения. Определитель 204 метода кодирования и модуль 202 оценки значения искажения могут работать совместно для вычисления множественных значений искажения для множественных методов кодирования (например, множественных методов интеркодирования) и выбора метода кодирования, который обеспечивает наименьшее искажение. Определитель метода кодирования может сравнивать значение искажения с порогом и на основании сравнения определять, что нужен другой метод кодирования. Другим методом кодирования может быть метод кодирования, связанный с обновлением видеопотока, например интракодирование. Другим методом кодирования также может быть другая форма интеркодирования, которая приводит к более низкому значению искажения, оцениваемому модулем 202 оценки значения искажения. Определитель метода кодирования также может учитывать сложность вычислений совместно со значением искажения при определении метода кодирования, который обеспечивает приемлемое искажение и не превышает уровень сложности вычислений.
Мультимедийный кодер 206 осуществляет метод кодирования, который определен на основании значения искажения. Методы кодирования, осуществляемые мультимедийным кодером 206, включают в себя интеркодирование, при котором фрагменты видео прогнозируются по времени (например, с использованием прогнозирования с компенсацией движения) со ссылкой на другие фрагменты видеоданных, находящиеся в других временных кадрах. Другие методы кодирования включают в себя интракодирование, при котором фрагменты видео кодируются таким образом, чтобы их можно было декодировать независимо, без ссылки на другие расположенные на временной шкале видеоданные. В некоторых вариантах осуществления интракодирование может использовать пространственное прогнозирование, позволяющее извлекать преимущество из избыточности в других видеоданных, находящихся в том же временном кадре.
В некоторых вариантах осуществления один или несколько элементов кодера 110, показанного на фиг.2, можно переупорядочивать и/или комбинировать. Элементы могут быть реализованы в виде оборудования, программного обеспечения, программно-аппаратного обеспечения, промежуточного программного обеспечения, микрокода или любой их комбинации. Подробности относительно действий, осуществляемых элементами кодера 110, будут рассмотрены со ссылкой на способы, проиллюстрированные ниже на фиг.4.
На фиг.3 показана блок-схема, иллюстрирующая вариант осуществления декодера 150, который можно использовать в системе, например системе 100, показанной на фиг.1. В этом варианте осуществления декодер 150 включает в себя мультимедийный декодер 302 и элемент 304 маскирования ошибок. Мультимедийный декодер 302 декодирует кодированный мультимедийный битовый поток, например, кодированный с использованием кодера 110, показанного на фиг.2. Мультимедийный декодер осуществляет обратную операцию, соответствующую операциям кодирования, используемым для кодирования данных. Кодированные данные могут быть интеркодированными (например, данными, прогнозируемыми по времени) и/или интракодированными данными.
Элемент 304 маскирования ошибок осуществляет различные формы маскирования ошибок, которые используются для маскирования или сокрытия фрагментов видео, которые приняты с ошибками или не могут быть декодированы по другим причинам (например, вследствие потери синхронизации). Методы маскирования могут включать в себя пространственное маскирование ошибок, временное маскирование ошибок и другие методы. Используемые методы маскирования могут быть идентичны или аналогичны методам маскирования ошибок, смоделированным при оценивании значений искажения в модуле 202 оценки значения искажения кодера 110, показанного на фиг.2. Хотя данный аспект не требует идентичных или аналогичных методов маскирования, использование таких идентичных или аналогичных методов маскирования в декодере 150, которые смоделированы в кодере, может обеспечивать повышение качества декодированного видео. Помимо осуществления маскирования ошибок элемент 304 маскирования ошибок может осуществлять функции устранения ошибок. Устранение ошибок можно осуществлять на фрагментах данных, которые определены как ошибочные в попытке разбиения используемых (например, безошибочных) фрагментов. Эти разлагаемые фрагменты также можно использовать при маскировании ошибок элементом 304 маскирования ошибок.
В некоторых вариантах осуществления один или несколько элементов декодера 150, показанного на фиг.3, можно переупорядочивать и/или комбинировать. Элементы могут быть реализованы в виде оборудования, программного обеспечения, программно-аппаратного обеспечения, промежуточного программного обеспечения, микрокода или любой их комбинации. Подробности относительно действий, осуществляемых элементами декодера 150, выходят за пределы данного рассмотрения.
На фиг.4A показана логическая блок-схема, иллюстрирующая пример метода кодирования части видеопотока в системе, например, показанной на фиг.1. В этом примере метод оценивает значение искажения для кодируемого фрагмента видео. Значение искажения основано на вероятности того, что кодированный фрагмент принимается с ошибками на декодере, и ошибке, обусловленной методом маскирования, который используется для маскирования ошибочного фрагмента. Благодаря тому что значение искажения базируется на методе маскирования декодера, кодированный битовый поток видео может быть более устойчив к эффектам распространения ошибки на декодере, что может повышать качество декодированного видео. Метод в этом примере также может определять метод кодирования на основании оценочного значения искажения. Метод кодирования можно определять для минимизации значения искажения из совокупности методов кодирования. Метод кодирования можно определять на основании повышения восстанавливаемости фрагмента видео на декодере. Метод кодирования можно определять для обновления фрагмента видео с целью ограничения распространения ошибки на декодере.
Согласно фиг.4A метод 400 начинается на блоке 402, где кодер оценивает значение искажения для фрагмента мультимедийных данных. Фрагментом мультимедийных данных может быть пиксель (например, яркость и цветность или красный, зеленый и синий и т.д.), блок пикселей или область любых формы и размера из одного или нескольких пикселей. Значение искажения базируется, по меньшей мере, частично на компоненте искажения, связанном с методом маскирования ошибок, который можно использовать для маскирования фрагмента видео, если он принят с ошибками. Значение искажения может включать в себя компоненты из множественных методов маскирования. Например, один компонент может представлять искажение, вносимое первым методом маскирования, используемым, только если кодируемый фрагмент принят с ошибками. Другими словами, предполагается, что все остальные видеоданные, которые декодер может использовать для прогнозирования маскированного фрагмента (именуемые данными прогнозирования), принимаются без ошибок. Другие компоненты значения искажения могут включать в себя искажение, вносимое вторым или третьим методом маскирования, где эти методы маскирования могут использоваться декодером, если один или несколько участков прогнозирования принимаются с ошибками. Методы маскирования могут включать в себя пространственное маскирование, временное маскирование и другие формы маскирования. Детали метода оценивания значения искажения, включая временное маскирование, будут описаны ниже. Модуль 202 оценки значения искажения кодера 110, показанного на фиг.2, может осуществлять действия на блоке 402.
В некоторых примерах значение искажения вычисляется на блоке 402 для каждого блока в кадре данных. Блоки могут представлять собой макроблоки (например, 16×16-пиксельные макроблоки) или субмакроблоки любого размера. Значения искажения для каждого блока в кадре могут храниться в карте искажений. На фиг.5 показана графическая иллюстрация карты искажений, которую можно генерировать на блоке 402. Карта 500 искажений содержит множественные переменные значения искажения 505 (обозначенные dv1-dv16), по одному для каждого блока в кадре. Карту 500 искажений предыдущего кадра можно использовать при вычислении значений искажения в новом кадре. Таким образом, можно легко вычислить накопленное искажение. Если определено, что любой блок подлежит обновлению, например интракодированию, значение искажения этого блока можно задать равным нулю или значению искажения, обусловленному квантованием или каким-либо другим фактором.
На блоке 404 кодер определяет метод кодирования, подлежащий использованию для фрагмента мультимедийных данных на основании оценочного значения искажения. В некоторых примерах значения искажения вычисляются на блоке 402 для множественных методов кодирования в порядке вычисления скорости-искажения, которое используется для выбора метода кодирования из множественных методов, которые можно использовать. Например, можно определить (на блоке 404) метод кодирования, который обеспечивает минимальное значение искажения, для использования с целью кодирования фрагмента мультимедийных данных. В других примерах значения искажения вычисляются на основании первого метода кодирования (интеркодирования или интракодирования), и значения искажения используются для определения блоков, подлежащих интракодированию, как это делается в Adaptive Intra-Refresh (AIR). Например, значение искажения, соответствующее фрагменту, можно вычислять после того, как решение на основании скорости-искажения укажет оптимальный(е) вектор(ы) движения и режим кодирования фрагмента. Если значение искажения, полученное таким образом, превышает порог, можно прийти к выводу, что фрагмент нужно интракодировать с использованием одного из режимов интракодирования, например 4×4-пиксельного интракодирования или 16×16-пиксельного интракодирования. Таким образом, фрагмент мультимедиа обновляется. Помимо режимов интракодирования определенные режимы интеркодирования (P8×8, P16×16, P16×8, P8×16 и т.д.) в ряде случаев также можно определить на основании значения искажения, хотя они могут не приводить к обновлению видео. Заметим, что некоторые из блоков метода 400 можно объединить, исключить, переупорядочить или комбинировать любым образом. Детали некоторых вариантов осуществления определения метода кодирования на блоке 404 рассмотрены ниже со ссылкой на фиг.4B.
Рассмотрим подробнее иллюстративный алгоритм для оценивания значения искажения на блоке 402. Значение искажения в этом примере относится к методу временного маскирования, который маскирует ошибочный фрагмент мультимедиа с использованием фрагментов из двух других кадров, например предыдущего кадра и следующего кадра. Однако другие методы маскирования можно представлять с использованием аналогичных методов.
Иллюстративный алгоритм вычисляет рекурсивное значение искажения предполагаемого значения искажения (т.е. математическое ожидание) однонаправленно спрогнозированных фрагментов (например, в P-кадрах) видео. Другие фрагменты, например интракодированные фрагменты и двунаправленно спрогнозированные фрагменты, также можно представлять посредством аналогичных алгоритмов. Алгоритм отчасти базируется на предполагаемой вероятности потери текущего МБ (обозначенной как вероятность "P") и вероятности потери предсказателей, используемых методом маскирования (обозначенной как вероятность "Q"). При увеличении, по меньшей мере, одной из предполагаемых вероятностей P и Q алгоритм обеспечивает повышенное противостояние ошибкам/маскированию, в то же время сохраняя эффективность сжатия. При уменьшении, по меньшей мере, одной из вероятностей P и Q происходит обратное.
1
Алгоритм вычисляет предполагаемое значение искажения для фрагмента мультимедийных данных. Фрагмент мультимедийных данных может иметь любое количество пикселей и любую форму. Рассмотрим, например, фрагмент, который представляет собой 16×16-пиксельный макроблок (МБ), но следует заметить, что можно представлять и другие фрагменты. В одном варианте осуществления алгоритм используется для оценивания предполагаемого значения искажения для каждого МБ кадра для формирования карты искажений, которая рассмотрена выше со ссылкой на фиг.5. Предполагаемое значение искажения в этом примере вычисляется в рекурсивном режиме и с поправкой на движение. Хотя эта предполагаемая карта искажений не является в точности мерой искажения на основе MSE или нормы L, предполагается, что она достаточно хорошо согласуется с этими мерами.
При рассмотрении алгоритма значения искажения будем использовать следующие обозначения:
= значение накопленного искажения (i,j)-го макроблока в 't'-м кадре,
P = вероятность потери текущего МБ,
Q = вероятность потери предсказателя, используемого в соответствующем методе маскирования.
1
2
3
4
1
4
1
4
С учетом этих предположений текущий МБ принимается без ошибок с вероятностью, равной (1-P). При однонаправленном прогнозировании текущий МБ кодируется со ссылкой на фрагмент другого кадра, имеющий размер МБ, в этом примере - предыдущего кадра. Вектор движения ВД дает относительные позиции, или положения, текущего МБ и опорного фрагмента, имеющего размер МБ. Опорный фрагмент обычно не выровнен с границами МБ, но перекрывается в максимум четырех областях с четырьмя МБ. На фиг.6 показана графическая иллюстрация областей прогнозирования, используемых для оценивания фрагмента видео с использованием методов прогнозирования с компенсацией движения. Вектор движения 605 указывает область прогнозирования 610, имеющую размер МБ, образованную четырьмя участками области, обозначенными a, a, a и a. Участки области a … a лежат в четырех МБ 615, 620, 625 и 630 соответственно. Значения искажения МБ 615-630 можно получить из сохраненной версии карты искажений предыдущего кадра. В этом примере значения накопленного искажения четырех участков области a-a в области прогнозирования 610 взвешиваются с усреднением (например, на основании числа пикселей в каждом участке области) для вычисления значения искажения текущего МБ. Таким образом, оцененное предполагаемое значение искажения текущего макроблока, обусловленное накопленным распространением ошибки, выражается следующим образом:
,
1
2
3
4
где a, а, а, a являются четырьмя участками области, показанными на фиг.6. Заметим, что значение искажения, заданное формулой (1), нормализуется путем деления взвешенного среднего 16×16-пиксельной области на 256.
Помимо накопленного искажения из областей прогнозирования предыдущего кадра алгоритм оценивает компоненты значения искажения вследствие маскирования текущего МБ, если текущий МБ принят с ошибками. Согласно рассмотренному выше предположим, что текущий МБ принимается с ошибками с вероятностью P. Искажение, вносимое текущим макроблоком вследствие метода маскирования, можно аппроксимировать суммой ошибки маскирования (ошибки, вносимой методом маскирования и указанной членом Conceal_Error) и эффектов распространения ошибки из областей прогнозирования, используемых в методе маскирования. Согласно рассмотренному выше предположим, что предсказатели (например, из текущего и/или предыдущего кадров) доступны с вероятностью 1-Q. В этом примере предположим, что метод(ы) маскирования зависит(ят) от наличия данных в текущем кадре и предыдущем кадре. Предполагается, что область прогнозирования находится в предыдущем кадре, что указано членами накопленного искажения . Однако это только пример, и области прогнозирования могут находиться в текущем кадре или любом другом доступном кадре. Таким образом, искажение, вносимое методом временного маскирования ошибок с использованием областей прогнозирования из предыдущего кадра, причем маскируемый фрагмент является ошибочным с вероятностью P, которая зависит от наличия данных прогнозирования в текущем кадре и предыдущем кадре (оба доступны с вероятностью 1-Q), можно выразить следующим образом:
.
Расчеты ошибки маскирования могут быть сопряжены со сложными вычислениями. Однако при некоторых разумных предположениях можно принять аппроксимацию разностью следующих значений SAD (суммы накопленных разностей пиксельных значений):
opt
SAD: SAD, полученная между исходным изображением и сжатым изображением, когда используются оптимальный ВД и оптимальный режим кодирования;
est
SAD: SAD, полученная между исходным изображением и маскированным изображением, когда используется оценочный ВД (оцененный посредством алгоритма временного маскирования).
Эту аппроксимацию можно записать следующим образом:
,
1
2
3
4
где a′, a′, a′, a′ - это четыре участка области в предыдущем кадре (как показано на фиг.6), которые использовались как прогнозирование фрагмента маскирования и используются для взвешивания среднего накопленного искажения. Заметим, что значение искажения, заданное формулой (3), также нормализуется путем деления взвешенного среднего 16×16-пиксельной области на 256.
est
opt
Заметим, что из формулы (3) следует, что в ряде случаев SAD меньше, чем SAD (например, из-за неточностей компенсации движения), но разность может быть пренебрежимо малой, и в этих случаях компонент Conceal_Error можно аппроксимировать нулем.
Формула (3) представляет компонент значения искажения, который соответствует методу маскирования, используемому, когда текущий кадр и предыдущий кадр оба доступны (с вероятностью 1-Q). Однако могут существовать другие ошибки маскирования, если текущий кадр и/или предыдущий кадр приняты с ошибкой, причем для каждого вероятность ошибки равна Q. Можно рассмотреть компоненты значения искажения, соответствующие четырем разным оценкам маскирования, причем четыре оценки маскирования соответствуют четырем сценариям: 1) доступен текущий кадр и доступен предыдущий кадр, 2) текущий кадр доступен, но предыдущий кадр принят с ошибкой, 3) текущий кадр принят с ошибкой, но доступен предыдущий кадр, 4) текущий кадр и предыдущий кадр приняты с ошибкой. Детали, касающиеся вычисления четырех оценок маскирования, не имеют решающего значения для понимания вычисления значения искажения, и мы не будем их рассматривать. Накопленное искажение, включающее в себя четыре компонента значения искажения, можно вычислить следующим образом:
,
где первая оценка маскирования дает искажение , и вторая оценка маскирования дает искажение  и т.д. Кроме того, накопленные искажения подвергаются усреднению с взвешиванием на основании областей (a′, a″, a′″ и a″″) прогнозирования, используемых в каждой из четырех оценок маскирования. Оценки маскирования могут опираться на разные типы методов маскирования, например пространственное маскирование, двунаправленное маскирование и т.д. Например, алгоритм маскирования может иногда производить временное маскирование, а иногда пространственное маскирование в зависимости от детерминистических/вероятностных критериев. Кодер, осуществляющий вычисление значения искажения и определяющий, какой метод кодирования использовать на основании значения искажения, может моделировать идентичные или аналогичные методы маскирования, которые используются в декодере, для улучшения показателей устранения ошибок и/или маскирования ошибок, когда декодер получает ошибочные данные.
Заметим, что другие оценки маскирования можно рассматривать и включать в уравнение (4) на основании вероятностей того, что другие области прогнозирования недоступны. Уравнение (4) можно использовать для каждого МБ в кадре для формирования карты искажений, как показано на фиг.5. Таким образом, значения искажения, вычисленные с использованием уравнения (4), содержат взвешенную сумму искажений, вносимых за счет выбора множественных вариантов маскирования, где весом является вероятность выбора каждого варианта маскирования.
На фиг.4B показана логическая блок-схема, более подробно иллюстрирующая пример метода кодирования части видеопотока в системе, например, показанной на фиг.1. Метод 420 включает в себя блоки 402 и 404, которые рассмотрены выше со ссылкой на фиг.4A, включающие в себя различные методы маскирования, которые можно учитывать при оценивании значения искажения на блоке 402, и различные методы определения метода кодирования на блоке 404.
На блоке 402 значение искажения можно оценивать с использованием алгоритмов, сходных с описанными выше со ссылкой на уравнение (4). Конкретные используемые уравнения для значений искажения зависят от типа метода маскирования, который подлежит представлению. Представляемые методы маскирования могут включать в себя методы пространственного маскирования, в которых участки прогнозирования, находящиеся в одном кадре, используются для маскирования фрагмента, принятого с ошибкой. В случае пространственного маскирования в кадре используются значения накопленного искажения МБ в текущем кадре, а не значения искажения из предыдущего кадра. Методы временного маскирования могут включать в себя однонаправленное прогнозирование, рассмотренное выше и представленное уравнением (4), а также могут включать в себя двунаправленное прогнозирование, в котором также можно учитывать доступность следующего кадра.
Одним примером метода временного маскирования является масштабирование вектора движения. Масштабирование вектора движения - это метод интерполяции и/или экстраполяции векторов движения из других кадров для вывода вектора движения для фрагмента ошибочных мультимедийных данных в текущем кадре. Другим примером метода временного маскирования является преобразование частоты кадров. Преобразование частоты кадров может быть аналогично масштабированию вектора движения, но предусматривает построение одного кадра на основании обычно двух окружающих кадров. Другие примеры методов временного маскирования ошибок могут базироваться на методах оптического потока. Другие формы маскирования, которые можно представлять значением искажения, оцененного на блоке 402, включают в себя интерполяцию в пространственном и частотном измерении, максимальное сглаживание, восстановление и проецирование в выпуклые множества. Специалисты могут предложить другие формы маскирования ошибок, которые можно представлять при оценивании значения искажения на блоке 402 метода 400.
Согласно рассмотренному выше кодер определяет на блоке 404 метод кодирования на основании значения искажения, оцененного на блоке 402. В некоторых вариантах осуществления оценочное значение искажения сравнивается с порогом, и метод кодирования определяется на основании сравнения. Порог может иметь одно значение для всех фрагментов мультимедийных данных. Однако порог может также изменяться согласно методам, например, перечисленным в блоке 404 метода 420. Эти методы мы рассмотрим в связи с определением метода кодирования на основании превышения порога, где метод кодирования, выбранный в случае превышения порога, обычно служит для обновления фрагмента (или, по меньшей мере, снижения оценочного значения искажения фрагмента). Однако следует заметить, что методы кодирования также можно определить на основании значения искажения, которое ниже порога.
В некоторых примерах порог изменяется как функция текстуры области, в которой находится кодируемый фрагмент мультимедиа. Области с сильно изменяющейся текстурой (например, большими изменениями от пикселя к пикселю) могут не иметь столько ошибок, как области с менее разнообразной текстурой, и поэтому им может быть назначен более высокий порог, при превышении которого можно определить метод кодирования для обновления фрагмента (например, с использованием интракодирования). Однако области с гладкой или слабо изменяющейся структурой могут демонстрировать больше ошибок, поэтому им может быть назначен более низкий порог.
В некоторых примерах порог может изменяться как функция позиции, или положения, фрагмента, кодируемого в кадре. Например, краевым фрагментам можно назначить более высокий порог, чем фрагментам в середине. Таким образом, области, куда наблюдатель чаще смотрит (например, центр кадра), можно обновлять чаще, чем краевые области, на которые наблюдатель не столь часто обращает внимание.
В некоторых примерах порог может быть функцией позиции текущего кадра, кодируемого в GOP (группе изображений) или суперкадре из множественных кадров. GOP обычно начинается с интракодированного кадра или набора кадров, по существу, все МБ в которых интракодированы, по меньшей мере, один раз (известный как адаптивное интраобновление или AIR), и где другие кадры в GOP (или суперкадре) не ссылаются на кадры вне GOP. Чтобы гарантировать, что МБ имеют более высокий шанс быть интракодированными в начале GOP, порог в кадрах вблизи начала GOP может иметь более низкий порог, чем МБ вблизи конца GOP.
В некоторых примерах порог может быть функцией распределения значений искажения в карте искажений, например, в кадре. Например, порог можно задавать адаптивно, чтобы гарантировать тот или иной процент интракодированных МБ в кадре на основании распределения значений искажения. Это можно использовать для ограничения количества интракодированных МБ для ограничения скорости передачи данных, необходимой для передачи. Хотя качество может ухудшаться для некоторых кадров (вследствие высокого распределения значений искажения), скорость передачи данных можно поддерживать на нужном уровне.
В некоторых примерах порог может быть функцией активности движения в области кадра, содержащей кодируемый фрагмент. Ошибки, происходящие в областях видео, которые характеризуются повышенной активностью движения, обычно менее заметны, чем ошибки, происходящие в областях, которые характеризуются меньшим движением. В областях, демонстрирующих более высокую активность движения, можно задать более высокий порог, чем в областях, демонстрирующих более низкую активность движения. Активность движения можно измерять по-разному. В качестве индикатора активности движения можно использовать, например, амплитуду вектора движения, причем векторы движения с более высокими амплитудами указывают повышенную активность движения. В качестве индикатора активности движения также можно использовать изменение направления вектора движения. Если большинство векторов движения в области имеют, по существу, одинаковое направление, это может свидетельствовать о низкой активности движения. Если векторы движения в соседних блоках области имеют разные направления, это может свидетельствовать о высокой активности движения. Аналогичные меры активности движения можно получить с использованием других методов компенсации движения, например оптического потока.
В некоторых примерах порог может быть функцией режима кодирования кодируемого фрагмента видео. Например, некоторые фрагменты видео обычно не используются в качестве ссылки для других прогнозируемых фрагментов видео. B-кадры, например, не используются для опорных кадров во многих системах. Таким образом, можно допустить более высокое значение искажения B-кадров в системе этого типа, поскольку никакое другое видео не будет ссылаться на них. Поскольку никакое другое видео не будет ссылаться на B-кадр, ошибки будут оставаться в течение только одного кадра (например, 1/30 секунды в видеопоследовательности 30 кадров в секунду). Таким образом, порог может быть более высоким для фрагментов видео, на которые не производятся ссылки, чем для фрагментов видео, на которые могут ссылаться другие прогнозируемые фрагменты.
После определения метода кодирования, на блоке 404, на основании значения искажения, оцененного на блоке 402, процесс 420 переходит к блоку 406, где кодируемый фрагмент мультимедийных данных кодируется определенным методом кодирования. Методы кодирования на блоке 406 могут включать в себя интракодирование с или без пространственного прогнозирования соседей. Интракодирование без пространственного прогнозирования соседних пикселей можно выбирать для снижения значения искажения, вычисленного на блоке 402. Методы кодирования на блоке 406 могут включать в себя однонаправленное или двунаправленное прогнозирование с использованием прогнозирования с компенсацией движения. Для снижения значения искажения, оцененного на блоке 402, можно выбирать разные другие формы прогнозирования с компенсацией движения. Прогнозирование с компенсацией движения может включать в себя согласование блоков, оптический поток и другие рассмотренные выше методы вычисления векторов движения. Заметим, что некоторые из блоков метода 420 можно объединить, исключить, переупорядочить или комбинировать любым образом.
На фиг.7 показана функциональная блок-схема, иллюстрирующая пример кодера 110, который можно использовать в системе, например, показанной на фиг.1. Этот аспект включает в себя средство оценивания значения искажения для первого фрагмента мультимедийных данных на основании, по меньшей мере, частично одного или нескольких методов маскирования, связанных с маскированием первого фрагмента, если первый фрагмент принят с ошибками, и средство определения метода кодирования для первого фрагмента на основании, по меньшей мере, частично оценочного значения искажения. Некоторые примеры этого аспекта включают в себя средство оценивания, содержащее модуль 702 оценки значения искажения, и средство определения, содержащее определитель 704 метода кодирования.
На фиг.8 показана функциональная блок-схема, иллюстрирующая пример кодера 110, который можно использовать в системе, например, показанной на фиг.1. Этот аспект включает в себя средство оценивания значения искажения для первого фрагмента мультимедийных данных на основании, по меньшей мере, частично одного или нескольких методов маскирования, связанных с маскированием первого фрагмента, если первый фрагмент принят с ошибками, и средство определения метода кодирования для первого фрагмента на основании, по меньшей мере, частично оценочного значения искажения. В некоторых примерах этого аспекта средство оценивания содержит модуль 802 для оценивания значения искажения, и средство определения содержит модуль 804 для определения метода кодирования.
Рассмотрим стратегии и алгоритмы противостояния ошибкам, которые применяются к видеопередачам в средах, подверженных ошибкам. Эти концепции применяются к любым существующим или будущим приложениям по отдельности или совместно, транспортному и физическому уровню или другим технологиям. Основной аспект связан с эффективными ошибкоустойчивыми алгоритмами путем объединения понимания свойств восприимчивости к ошибкам и возможностей защиты от ошибок на разных уровнях OSI совместно с желаемыми свойствами системы связи, например низкой задержкой и высокой пропускной способностью. Одним из основных преимуществ является восстанавливаемость после канальных ошибок, связанных с замиранием и многолучевым распространением. Хотя описан пример системы передачи видео, описанные аспекты противостояния ошибкам можно распространить на передачу данных в средах, подверженных ошибкам.
На фиг.9 показана система беспроводной связи 900 согласно некоторым вариантам осуществления. Такая иллюстративная система передачи видео обычно включает в себя систему сжатия видео (не показана), состоящую из видеокодера 910 и видеодекодера 920, связанных сетью связи 930. Сеть 930 может дополнительно включать в себя РЧ-модулятор 940, сетевой канал 950 и РЧ-демодулятор 960. Беспроводные сети являются одним классом сетей, подверженных ошибкам, где канал может демонстрировать логарифмически нормальное замирание или замирание вследствие экранирования и многолучевого распространения в мобильных сценариях помимо общих потерь на трассе. Для борьбы с канальными ошибками и обеспечения надежной передачи данных уровня приложений РЧ-модулятор 940 может включать в себя прямую коррекцию ошибок (FEC), которая может включать в себя перемежение и канальное кодирование, например сверточное кодирование или турбокодирование.
В целом сжатие видео может снижать избыточность в исходном видео и увеличивать объем информации, переносимой в каждом бите кодированных видеоданных. Это может усиливать влияние на качество при потере даже малого фрагмента кодированного видео. Пространственное и временное прогнозирование, применяемое в системах сжатия видео, может усугублять потерю и может приводить к распространению ошибок, что проявляется в видимых артефактах при воспроизведении видео. Алгоритмы противостояния ошибкам на видеокодере и алгоритмы устранения ошибок на видеодекодере могут усиливать ошибкоустойчивость системы сжатия видео.
В общем случае система сжатия видео инвариантна к нижележащей сети. Однако в сетях, подверженных ошибкам, интеграция или выравнивание алгоритмов защиты от ошибок на уровне приложений с FEC и канальным кодированием на канальном/физическом уровне весьма желательны и могут повышать эффективность при повышении характеристик ошибкоустойчивости системы в целом. MediaFLO™ является одним примером системы беспроводной передачи видео, где возможен этот тип интеграции или выравнивания.
Поэтому некоторые варианты осуществления этого раскрытия можно реализовать, например, с использованием кодирования видео MediaFLO™ для обеспечения видеоуслуг реального времени в системах TM3 с использованием Спецификации радиоинтерфейса FLO, "Forward Link Only [FLO] Air Interface Specification for Terrestrial Mobile Multimedia Multicast", опубликованной как технический стандарт TIA-1099, август 2006 г., который полностью включен сюда посредством ссылки во всех целях. Аспекты, варианты осуществления и/или примеры, описанные ниже, относятся к алгоритмам и взаимодействию между ними для обеспечения повышенных характеристик ошибкоустойчивости в сети FLO. Однако эти аспекты, варианты осуществления и/или примеры, в принципе, применимы ко всем сетям, подверженным ошибкам.
Кванты в том смысле, в котором они используются здесь, представляют собой фрагменты независимо декодируемых (например, с использованием энтропийного декодирования) кодированных видеоданных. Кванты в среде FLO можно выравнивать с границами кадра FLO. Единицы доступа (AU) в том смысле, в котором они используются здесь, представляют собой кодированные кадры FLO видео. Кадры FLO являются блоками, мультиплексированными с временным разделением (TDM), пакетов физического уровня (например, так называемыми капсулами TDM), которые обеспечивают сравнительно высокое разнесение по времени. Суперкадр FLO может соответствовать одной единице времени (например, 1 секунде) и, таким образом, содержит несколько кадров FLO (например, 4 кадра FLO в 1-секундном суперкадре FLO). Каждое из этих определений может и, вероятно, будет распространяться на другие типы сети, подверженной ошибкам, и даже на будущие конфигурации сети FLO (например, суперкадр FLO может включать в себя фиксированное количество кадров FLO независимо от длительности).
В современной среде FLO, например, выравнивание границ кванта и AU с границами кадра FLO во временном измерении может приводить к наиболее эффективному отделению и локализации поврежденных данных. Например, во время глубокого замирания большинство последовательных данных замирания в капсуле TDM обычно подвержено ошибкам. Но благодаря разнесению по времени остальные капсулы TDM с высокой вероятностью остаются нетронутыми. Таким образом, неповрежденные данные можно использовать для восстановления и маскирования потерянных данных из нарушенной капсулы TDM.
Аналогичная логика применяется к мультиплексированию в частотном измерении (FDM), где частотное разнесение достигается за счет разделения поднесущих, модулируемых символами данных. Аналогичная логика также может применяться к пространственному разнесению (например, путем разделения передающей и приемной антенн), а также к другим формам разнесения, часто применяемым в беспроводных сетях (и других сетях, подверженных ошибкам).
Для выравнивания квантов и AU с кадрами FLO также следует выравнивать создание кодовых блоков внешнего кода (FEC) и инкапсуляцию уровня MAC. На фиг.10 - организация кодированных видеоданных или битового потока видео в виде квантов и AU. Кодированное видео может состоять из одного или нескольких битовых потоков (например, битового потока базового уровня и/или битового потока уровня улучшения), где в этом примере применяется многоуровневое кодирование видео. На фиг.11 - организация битового(ых) потока(ов) видео в виде квантов и AU и их отображение в кадры FLO, где (a) показано выравнивание границ кванта с кадрам FLO, и (b) показано выравнивание границ AU (F1, F2...) с кадрами FLO и квантами (например, при выравнивании AU с пакетами физического уровня).
Согласно некоторым вариантам осуществления битовые потоки видео включают в себя AU, и AU включают в себя кванты данных. Каждое начало кванта идентифицируется начальным кодом и предусмотрено для адаптации к сети. В целом I-кадр или интракодированные AU велики, после них следуют P-кадры, или кадры, полученные прямым прогнозированием, после них следуют B-кадры, или кадры, полученные двунаправленным прогнозированием. Кодирование AU в множественные кванты может вносить дополнительные затраты применительно к кодированной скорости передачи битов, поскольку пространственное прогнозирование между квантами ограничено аналогично расположенными квантами других кадров, и заголовки множественных квантов также создают дополнительную служебную нагрузку. Поскольку границы кванта обычно являются точками ресинхронизации, ограничение последовательных пакетов физического уровня (PLP) квантами может помогать контролировать ошибки, поскольку когда PLP поврежден, ошибка ограничивается квантом в PLP, тогда как если PLP содержит множественные кванты или части множественных квантов, ошибка будет влиять на все кванты или фрагменты квантов в PLP.
Поскольку I-кадры обычно больше P- или B-кадров, обычно порядка десятков килобайт, избыточная нагрузка, обусловленная множественными квантами, не составляет заметной части полного размера I-кадра или полной скорости передачи битов. Кроме того, наличие большего количества квантов в I-AU позволяет лучше и чаще производить ресинхронизацию и более эффективно производить пространственное маскирование ошибок. Кроме того, I-кадры обычно несут наиболее важную информацию в битовом потоке видео, поскольку P- и B-кадры, в конце концов, прогнозируются из I-кадров. I-кадры также могут служить точками произвольного доступа для захвата канала.
Поэтому в некоторых вариантах осуществления тщательное выравнивание I-кадров с границами кадра FLO, а также квантов с I-AU с границами кадра FLO может обеспечить эффективные контроль ошибок, защиту от ошибок (поскольку при потере одного кванта, принадлежащего кадру FLO 1, кванты, принадлежащие кадру FLO 2, с высокой вероятностью остаются нетронутыми, поскольку кадр FLO 2 имеет значительное разнесение по времени с кадром FLO 1) и устранение ошибок посредством, например, ресинхронизации и маскирования ошибок.
В случае P-кадров, обычно размером в несколько килобайт, выравнивание квантов P-кадра и целого количества P-кадров с границами кадра FLO желательно по причинам, аналогичным рассмотренным выше для I-кадров. При этом обычно используется временное маскирование ошибок. Альтернативно, распределение последовательных P-кадров, чтобы они поступали в разных кадрах FLO, также может обеспечивать разнесение по времени среди P-кадров, поскольку временное маскирование основано на векторах движения и данных из ранее реконструированных I- и/или P-кадров.
В случае B-кадров, которые имеют размер от чрезвычайно малого (например, сотни или даже десятки байтов) до умеренно большого (например, до нескольких килобайтов), выравнивание целого количества B-кадров с границами кадра FLO желательно по причинам, аналогичным рассмотренным выше для I-кадров.
В некоторых вариантах осуществления противостояние ошибкам в кодированных битовых потоках видео может включать в себя иерархию прогнозирования и свойства устойчивости. Рассмотрим следующую смешанную систему сжатия на основе прогнозирования. Интракадры независимо кодируются без какого-либо временного прогнозирования. Однако пространственное прогнозирование возможно в кванте (т.е. пространственное прогнозирование обычно ограничивается границами кванта). Интеркадры прогнозируются по времени из прошлого и иногда будущего (в случае B-кадров).
В этой системе наилучший предсказатель можно идентифицировать с помощью процесса поиска в опорном кадре (или более чем одном опорном кадре) и меру искажения, например SAD (т.е. сумму модулей разностей между пикселями кодируемого блока и блока-предсказателя), можно использовать для идентификации наилучшего совпадения. Конечно, можно использовать другие меры искажения, которые могут быть включены в объем этой заявки.
Область кодирования с прогнозированием текущего кадра может представлять собой блок пикселей переменного размера и формы (например, 16×16, 32×32, 8×4, 2×2 и т.д.) или группу пикселей, идентифицированную как объект, например, посредством сегментирования. Временное прогнозирование обычно распространяется на многие кадры (например, от 10 до 100 кадров) и заканчивается, когда кадр кодируется как I-кадр. В этом примере частота I-кадров задает группу изображений (GOP). Для максимальной эффективности кодирования GOP является сценой (т.е. границы GOP выровнены с границами сцены, и кадры смены сцены кодируются как I-кадры).
В последовательности с низким движением, где фон сравнительно статичен и движение ограничивается объектом переднего плана (например, новостные программы, прогнозы погоды и т.д., где более чем около 30% наиболее просматриваемого контента имеет такую природу), большинство областей прогнозирования (т.е. интеркодирования) спрогнозированных кадров ссылается обратно на I-кадр через промежуточные спрогнозированные кадры (т.е. другие P-кадры). Эта иерархия прогнозирования 1200 показана на фиг.12.
Согласно фиг.12 I-кадр 1210 может включать в себя интракодированный блок 1215, на котором, в конце концов, могут базироваться множественные интеркодированные блоки 1225 спрогнозированных кадров 1220. Интракодированный блок 1215 в I-кадре 1210 является предсказателем для интеркодированных блоков 1225 в кадрах (или AU), кодированных с прогнозированием P1-Px 1220. В этом примере областью этих блоков является стационарная часть фона. Следовательно, благодаря последовательному временному прогнозированию чувствительность интракодированного блока 1215 к ошибкам увеличивается, поскольку он является хорошим предсказателем, что также подразумевает его более высокую "важность". Дополнительно интракодированный блок 1215 благодаря этой цепочке временных прогнозов, именуемой цепочкой прогнозирования, дольше удерживается на дисплее (т.е. потенциально на протяжении всей сцены).
В некоторых вариантах осуществления иерархия прогнозирования задается в виде дерева блоков, созданного на основании этого уровня "важности" или меры устойчивости, с родителем на вершине (например, блок 1215 на фиг.12) и детьми внизу. Заметим, что интеркодированный блок в кадре P1 находится на 2-м уровне иерархии и т.д. Листьями дерева являются те блоки, на которых цепочка прогнозирования заканчивается (например, кадр Px на фиг.12).
В некоторых вариантах осуществления иерархию прогнозирования можно создавать для видеопоследовательностей независимо от типа контента (например, музыки и спорта, а не только новостей) и можно применять к сжатию видео на основе прогнозирования (и аудио, и данных, и т.д.) в целом (т.е. можно применять ко всем аспектам, описанным в этой заявке).
После создания иерархии прогнозирования можно более эффективно применять алгоритмы противостояния ошибкам, например адаптивное интраобновление (AIR).
Согласно аспекту алгоритмы могут оценивать меру важности на основании того, сколько раз блок используется в качестве предсказателя, что можно рассматривать как метрику устойчивости. Эта метрика устойчивости также используется для повышения эффективности кодирования за счет ограничения распространения ошибки прогнозирования. Метрика также может увеличивать выделение битов для блоков с более высокой важностью.
Обычно целью видеокодека является достижение максимально высокого качества при данной ширине полосы. Качество часто оценивается пиковым отношением сигнал-шум (PSNR). Поскольку режим кодирования (например, всевозможные интра- и интерсхемы) и параметр квантования (QP) каждого макроблока каждого кадра влияют на качество, а также ширину полосы, схема глобальной оптимизации предусматривает совместное решение по режиму и QP всех этих макроблоков. Однако при современных возможностях обработки производить эту глобальную оптимизацию математически трудно. Вместо этого практическая схема кодирования пытается добиться хорошего решения скорость-искажение (R-D) для текущего кадра на основании реконструированных ранее закодированных кадров. Поэтому общая задача оптимизации сводится к каузальной задаче оптимизации согласно некоторым вариантам осуществления.
В опорном кадре некоторые макроблоки важнее, чем другие макроблоки в цепочке прогнозирования. Например, объект переднего плана может дублироваться в некоторые будущие кадры (т.е. все еще в диапазоне множественных опорных кадров). Если этот объект представлен точно, все его клоны можно просто кодировать как вектор движения, таким образом экономя биты. Напротив, будущие кадры уже не будут ссылаться на исчезнувший объект или покрытый фон, таким образом, его качество не будет влиять на будущие кадры.
В некоторых вариантах осуществления желательно иметь двухпроходный алгоритм для определения цепочки прогнозирования и придания большей важности макроблокам, на которые часто ссылаются. Значение карты выделения полосы для МБ можно задать как оценку сложности карты, которая затем используется для определения количества или доли битов, подлежащих выделению в ходе контроля скорости для оптимального качества в смысле R-D. Этот процесс можно проиллюстрировать следующим образом (см. фиг.13):
1. Первый проход. Инициализировать счетчик ссылок на пиксельном уровне 1310 R(i,j) = 0, где 0 ≤ i < W, 0 ≤ j < H, W - ширина кадра, и H - высота кадра.
2. Произвести оценку движения 16×16 следующего кадра 1320 со ссылкой на текущий кадр. Всякий раз при ссылке на пиксель в положении (i, j) в текущем кадре увеличить R(i,j) на единицу.
3. Второй проход. Перенастроить карту выделения полосы макроблока текущего кадра 1330. Для макроблока, находящегося в (x, y), увеличиваем его значение карты выделения полосы на , где C - константа, определяемая в эксперименте. Увеличение значения карты выделения полосы приводит к выделению большего числа битов макроблокам, которые являются хорошими предсказателями (т.е. гораздо больше будущих МБ в будущих кадрах прогнозируются из этих макроблоков).
4. Кодировать текущий кадр 1340 с обновленной картой выделения полосы макроблока.
Заметим, что алгоритм делает битовый поток более устойчивым к канальным ошибкам за счет выделения макроблоков, на которые часто ссылаются. Любой выигрыш в PSNR обусловлен тем, что раннее окончание цепочки прогнозирования ограничивает распространение ошибки прогнозирования (в силу избыточного кодирования). Кроме того, хорошие предсказатели обновляются путем интракодирования раньше, чем позже, что препятствует распространению ошибки, если хороший предсказатель подвергается ошибке.
Согласно некоторым вариантам осуществления кадр переключения каналов (CSF) определяется как кадр произвольного доступа, вставляемый в различных (например, необходимых) местах широковещательного потока для облегчения ускоренного захвата канала и, таким образом, быстрого переключения каналов между потоками в широковещательном мультиплексе. Иллюстративные подробности относительно одного CSF можно найти в заявке на патент США № 11/527306, поданной 25 сентября 2006 г., и заявке на патент США № 11/528303, поданной 26 сентября 2006 г., которые обе полностью включены сюда посредством ссылки и принадлежат правообладателю настоящей заявки. I-кадр или прогрессивный I-кадр, например прогрессивный кадр обновления декодера в H.264, обычно служит точкой произвольного доступа для переключения каналов. Однако частые I-кадры (например, короткие GOP, по меньшей мере, короче длительности сцены) могут приводить к значительному снижению эффективности сжатия.
Поскольку блоки интракодирования могут потребоваться для противостояния ошибкам, произвольный доступ и противостояние ошибкам можно эффективно объединять посредством иерархии прогнозирования для повышения эффективности кодирования с одновременным увеличением устойчивости к ошибкам. Этого объединения можно добиться, по меньшей мере частично, на основании следующих наблюдений:
A. Для последовательностей с низким движением цепочки прогнозирования являются длинными, и значительный фрагмент информации, необходимой для реконструкции суперкадра или сцены, содержится в I-кадре, который оказывается в начале сцены.
B. Канальные ошибки имеют тенденцию к кучности, и когда ударяет замирание и FEC и канальное кодирование не удаются, остается значительная ошибка, которую не удается замаскировать.
C. Это особенно плохо для последовательностей с низким движением (и следовательно, низкой скоростью передачи битов), поскольку объем кодированных данных не настолько велик, чтобы обеспечить хорошее разнесение по времени в битовом потоке видео, и поскольку это сильно сжимаемые последовательности, из-за чего каждый бит становится еще более важным для реконструкции.
D. Последовательности с высоким движением более устойчивы к ошибкам благодаря характеру контента - чем больше новой информации в каждом кадре, тем больше количество кодированных интраблоков, которые можно независимо декодировать, и тем больше их внутренняя устойчивость к ошибкам.
E. Адаптивное интраобновление (AIR) на основании иерархии прогнозирования достигает высоких показателей для последовательностей с высоким движением, а для последовательностей с низким движением улучшение показателей незначительно.
F. Поэтому кадр переключения каналов, содержащий по большей части I-кадр, является хорошим источником разнесения для последовательностей с низким движением. При возникновении ошибки в суперкадре декодирование в последующем кадре начинается с CSF, который восстанавливает потерянную информацию вследствие прогнозирования. Таким образом, достигается противостояние ошибкам.
G. В случае последовательностей с высоким движением CSF состоит из блоков, которые сохраняются в суперкадре, т.е. являются хорошими предсказателями. Все остальные области CSF не обязательно кодировать, поскольку это блоки, которые имеют короткие цепочки прогнозирования, что подразумевает, что они заканчиваются на интраблоках. Поэтому CSF по-прежнему служит для восстановления потерянной информации благодаря прогнозированию при возникновении ошибок.
H. На основании (F) и (G):
H.1. CSF для последовательностей с низким движением имеют примерно такой же размер, как I-кадры, - их можно кодировать на более низкой скорости передачи битов при более сильном квантовании.
H.2. CSF для последовательностей с высоким движением гораздо меньше соответствующих I-кадров.
I. Масштабируемость для поддержки иерархической модуляции в технологиях физического уровня требует разделения данных битового потока видео с конкретными отношениями полос. Это не всегда идеальные отношения для оптимальной масштабируемости (наименьшей избыточной нагрузки).
J. FLO, исключительно для примера, требует 2-уровневой масштабируемости с отношением полос 1:1. Поэтому разбиение битового потока видео на 2 уровня одинакового размера неэффективно для последовательностей с низким движением (скоростью передачи битов). Базовый уровень, содержащий всю информацию заголовков и метаданных, больше, чем уровень улучшения. Однако поскольку CSF для последовательностей с низким движением больше, они хорошо укладываются в оставшуюся полосу на уровне улучшения. Поэтому противостояние ошибкам на основании иерархии прогнозирования хорошо работает с масштабируемостью, и достигается высокоэффективное многоуровневое кодирование.
K. Для последовательностей с высоким движением существует достаточно остаточной информации, что позволяет добиться разделения данных в отношении 1:1 с наименьшей избыточной нагрузкой. Кроме того, CSF для таких последовательностей могут быть гораздо меньше. Таким образом, противостояние ошибкам на основании иерархии прогнозирования может хорошо работать с масштабируемостью также и в этом случае.
L. Распространение концепций, рассмотренных в (A)-(K), на клипы с умеренным движением возможно на основании описаний этих алгоритмов, откуда следует, что предложенные концепции применимы к кодированию видео в целом.
Вышеописанная система является лишь иллюстративным примером мультимедийной потоковой системы, в которую поступает непрерывный (хотя события в дискретном времени, но никогда не кончаются) поток данных и из которой выходит непрерывный поток данных.
Специалисту в данной области очевидно, что информацию и сигналы можно представлять с использованием различных технологий и техник. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементы данных, упомянутые в вышеприведенном описании, могут быть представлены напряжениями, токами, электромагнитными волнами, магнитными полями или частицами, оптическими полями или частицами или любой их комбинацией.
Специалисту в данной области очевидно, что различные иллюстративные логические блоки, модули, схемы и этапы способа, описанные в связи с раскрытыми здесь вариантами осуществления, могут быть реализованы в виде электронного оборудования, программно-аппаратного обеспечения, компьютерного программного обеспечения, промежуточного программного обеспечения, микрокода или их комбинации. Чтобы отчетливо проиллюстрировать эту взаимозаменяемость оборудования и программного обеспечения, различные иллюстративные компоненты, блоки, модули и этапы были описаны выше в целом применительно к их функциональным возможностям. Будут ли эти функциональные возможности реализованы аппаратными или программными средствами, зависит от конкретного применения и конструктивных ограничений, наложенных на систему в целом. Специалисты в данной области могут реализовать описанные функциональные возможности разными способами для каждой конкретной области применения, но такие решения по реализации не следует интерпретировать как отход от объема настоящего изобретения.
Различные иллюстративные логические блоки и модули, описанные в связи с раскрытыми здесь вариантами осуществления, можно реализовать или осуществлять посредством процессора общего назначения, цифрового сигнального процессора (ЦСП), специализированной интегральной схемы (СИС), программируемой пользователем вентильной матрицы (ППВМ) или другого программируемого логического устройства, дискретной вентильной или транзисторной логики, дискретных аппаратных компонентов или любой их комбинации, предназначенных для осуществления описанных здесь функций. Процессор общего назначения может представлять собой микропроцессор, но, альтернативно, процессор может представлять собой любой традиционный процессор, контроллер, микроконтроллер или конечный автомат. Процессор также может быть реализован как комбинация вычислительных устройств, например комбинация ЦСП и микропроцессора, совокупность микропроцессоров, один или несколько микропроцессоров в сочетании с ядром ЦСП или ядром ППВМ, или любая другая подобная конфигурация.
Этапы способа или алгоритма, описанные в связи с раскрытыми здесь вариантами осуществления, могут быть реализованы непосредственно в оборудовании, в программном модуле, выполняемом процессором, или в их комбинации. Программный модуль может размещаться в ОЗУ, флэш-памяти, ПЗУ, ЭППЗУ, ЭСППЗУ, в регистрах, на жестком диске, сменном диске, CD-ROM, оптическом носителе информации или носителе данных любого другого типа, известного в технике. Иллюстративный носитель данных подключен к процессору, в результате чего процессор может считывать с него информацию и записывать на него информацию. Альтернативно, носитель данных может образовывать с процессором единое целое. Процессор и носитель данных могут размещаться в специализированной интегральной схеме (СИС). СИС может размещаться в беспроводном модеме. Альтернативно, процессор и носитель данных могут размещаться в беспроводном модеме как дискретные компоненты.
Вышеприведенное описание раскрытых примеров предоставлено, чтобы специалист в данной области мог использовать настоящее изобретение. Специалист в данной области может предложить различные модификации этих примеров, раскрытые здесь общие принципы можно применять к другим примерам, и можно добавлять дополнительные элементы.
Таким образом, были описаны способы и устройство для осуществления высокоэффективного кодирования мультимедийных данных, обеспечивающего хорошие качество и маскирование ошибок при декодировании.