Способ и устройство для алгоритмов противостояния ошибкам при беспроводной передаче видео
Иллюстрации
Показать всеИзобретение относится к обработке мультимедийных данных, в частности к беспроводной передаче видео. Техническим результатом является повышение качества декодированного видео, повышение возможностей устранения ошибок и/или повышение эффективности декодирования. Технический результат достигается тем, что инициализируют счетчик ссылок на пиксельном уровне для текущего кадра, осуществляют прогнозирование следующего кадра со ссылкой на текущий кадр, увеличивают счетчик ссылок на пиксельном уровне для каждого пикселя текущего кадра, на который ссылаются в ходе прогнозирования следующего кадра, повторно регулируют карту выделения полосы макроблока текущего кадра, повторяют этапы инициализации, осуществления и повторной регулировки для каждого следующего кадра в совокупности следующих кадров со ссылкой на текущий кадр и кодируют текущий кадр на основании, по меньшей мере, частично повторно отрегулированной карты выделения полосы макроблока текущего кадра. 5 н. и 30 з.п. ф-лы, 14 ил.
Реферат
По данной заявке на патент испрашивается приоритет по предварительной заявке на патент № 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 происходит обратное.
Алгоритм вычисляет предполагаемое значение искажения для фрагмента мультимедийных данных. Фрагмент мультимедийных данных может иметь любое количество пикселей и любую форму. Рассмотрим, например, фрагмент, который представляет собой 16×16-пиксельный макроблок (МБ), но следует заметить, что можно представлять и другие фрагменты. В одном варианте осуществления алгоритм используется для оценивания предполагаемого значения искажения для каждого МБ кадра для формирования карты искажений, которая рассмотрена выше со ссылкой на фиг.5. Предполагаемое значение искажения в этом примере вычисляется в рекурсивном режиме и с поправкой на движение. Хотя эта предполагаемая карта искажений не является в точности мерой искажения на основе MSE или нормы L1, предполагается, что она достаточно хорошо согласуется с этими мерами.
При рассмотрении алгоритма значения искажения будем использовать следующие обозначения:
= значение накопленного искажения (i,j)-го макроблока в 't'-м кадре,
P = вероятность потери текущего МБ,
Q = вероятность потери предсказателя, используемого в соответствующем методе маскирования.
С учетом этих предположений текущий МБ принимается без ошибок с вероятностью, равной (1-P). При однонаправленном прогнозировании текущий МБ кодируется со ссылкой на фрагмент другого кадра, имеющий размер МБ, в этом примере - предыдущего кадра. Вектор движения ВД дает относительные позиции, или положения, текущего МБ и опорного фрагмента, имеющего размер МБ. Опорный фрагмент обычно не выровнен с границами МБ, но перекрывается в максимум четырех областях с четырьмя МБ. На фиг.6 показана графическая иллюстрация областей прогнозирования, используемых для оценивания фрагмента видео с использованием методов прогнозирования с компенсацией движения. Вектор движения 605 указывает область прогнозирования 610, имеющую размер МБ, образованную четырьмя участками области, обозначенными a1, a2, a3 и a4. Участки области a1 … a4 лежат в четырех МБ 615, 620, 625 и 630 соответственно. Значения искажения МБ 615-630 можно получить из сохраненной версии карты искажений предыдущего кадра. В этом примере значения накопленного искажения четырех участков области a1-a4 в области прогнозирования 610 взвешиваются с усреднением (например, на основании числа пикселей в каждом участке области) для вычисления значения искажения текущего МБ. Таким образом, оцененное предполагаемое значение искажения текущего макроблока, обусловленное накопленным распространением ошибки, выражается следующим образом:
,
где a1, а2, а3, a4 являются четырьмя участками области, показанными на фиг.6. Заметим, что значение искажения, заданное формулой (1), нормализуется путем деления взвешенного среднего 16×16-пиксельной области на 256.
Помимо накопленного искажения из областей прогнозирования предыдущего кадра алгоритм оценивает компоненты значения искажения вследствие маскирования текущего МБ, если текущий МБ принят с ошибками. Согласно рассмотренному выше предположим, что текущий МБ принимается с ошибками с вероятностью P. Искажение, вносимое текущим макроблоком вследствие метода маскирования, можно аппроксимировать суммой ошибки маскирования (ошибки, вносимой методом маскирования и указанной членом Conceal_Error) и эффектов распространения ошибки из областей прогнозирования, используемых в методе маскирования. Согласно рассмотренному выше предположим, что предсказатели (например, из текущего и/или предыдущего кадров) доступны с вероятностью 1-Q. В этом примере предположим, что метод(ы) маскирования зависит(ят) от наличия данных в текущем кадре и предыдущем кадре. Предполагается, что область прогнозирования находится в предыдущем кадре, что указано членами накопленного искажения . Однако это только пример, и области прогнозирования могут находиться в текущем кадре или любом другом доступном кадре. Таким образом, искажение, вносимое методом временного маскирования ошибок с использованием областей прогнозирования из предыдущего кадра, причем маскируемый фрагмент является ошибочным с вероятностью P, которая зависит от наличия данных прогнозирования в текущем кадре и предыдущем кадре (оба доступны с вероятностью 1-Q), можно выразить следующим образом:
.
Расчеты ошибки маскирования могут быть сопряжены со сложными вычислениями. Однако при некоторых разумных предположениях можно принять аппроксимацию разностью следующих значений SAD (суммы накопленных разностей пиксельных значений):
SADopt: SAD, полученная между исходным изображением и сжатым изображением, когда используются оптимальный ВД и оптимальный режим кодирования;
SADest: SAD, полученная между исходным изображением и маскированным изображением, когда используется оценочный ВД (оцененный посредством алгоритма временного маскирования).
Эту аппроксимацию можно записать следующим образом:
,
где a1′, a2′, a3′, a4′ - это четыре участка области в предыдущем кадре (как показано на фиг.6), которые использовались как прогнозирование фрагмента маскирования и используются для взвешивания среднего накопленного искажения. Заметим, что значение искажения, заданное формулой (3), также нормализуется путем деления взвешенного среднего 16×16-пиксельной области на 256.
Заметим, что из формулы (3) следует, что в ряде случаев SADest меньше, чем SADopt (например, из-за неточностей компенсации движения), но разность может быть пренебрежимо малой, и в этих случаях компонент 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). Конкретные используемые уравнения для значений искажения зависят от типа метода маскирования, к