Сжатие видеоизображений с помощью адаптивных кодов с переменной длиной
Иллюстрации
Показать всеИзобретение относится к области обработки цифрового видео и, в частности, к сжатию цифрового видео с помощью кодов с переменной длиной (VLC). Техническим результатом является повышение эффективности адаптивного кодирования с переменной длиной. Указанный технический результат достигается тем, что параметры кодирования, такие как таблицы сдвига конца блока (ЕОВ) и выбора словаря VLC-кодирования, могут храниться как внутренние состояния вместо отправки их с кодированными данными серий последовательных макроблоков видео. Записи таблиц могут периодически обновляться на основе статистики, собираемой в ходе прохода кодирования. Таблица сдвига специального ЕОВ может приспосабливать позицию символа специального ЕОВ в наборе символов к вероятности значимых коэффициентов с абсолютной величиной, большей 1, для условия кодирования, такого как цикл кодирования. Блоки сигнала цветности могут кодироваться независимо от блоков сигнала яркости с помощью отдельных таблиц сдвига ЕОВ, сдвига специального ЕОВ и выбора словаря VLC-кодирования. 8 н. и 46 з.п. ф-лы, 11 ил.
Реферат
Настоящая заявка притязает на приоритет предварительной заявки на патент США № 60/830491, поданной 12 июля 2006 года, содержимое которой полностью включено в данный документ по ссылке.
Область техники, к которой относится изобретение
Данное раскрытие относится к цифровому видео, а более конкретно, к сжатию цифрового видео с помощью кодов с переменной длиной (VLC).
Уровень техники
Возможности цифрового видео могут быть встроены в широкий диапазон устройств, включая цифровые телевизоры, системы цифрового прямого вещания, устройства беспроводной связи, персональные цифровые ассистенты (PDA), портативные или настольные компьютеры, цифровые камеры, цифровые записывающие устройства, устройства видеоигр, сотовые или спутниковые радиотелефоны и т.п. Цифровые видеоустройства реализуют методики сжатия видеоизображения, такие как MPEG-2, MPEG-4 или H.264/MPEG-4 улучшенное видеокодирование (AVC) для более эффективной передачи и приема цифрового видео. Методики сжатия видеоизображения выполняют графическое и временное прогнозирование, чтобы уменьшать или удалять избыточность, присутствующую в видеосигналах.
При видеокодировании сжатие видеоизображений, в общем, включает в себя пространственное прогнозирование, оценку движения и компенсацию движения. В частности, внутреннее кодирование базируется на пространственном прогнозировании, чтобы уменьшить или исключить пространственную избыточность видео в пределах данного видеокадра. Взаимное кодирование основывается на временном прогнозировании, чтобы уменьшить или исключить временную избыточность видео в пределах соседних кадров. Для взаимного кодирования видеокодер выполняет оценку движения, чтобы отслеживать перемещение совпадающих блоков видео между двумя или более соседними кадрами. Оценка движения формирует векторы движения, которые указывают смещение блоков видео относительно соответствующих блоков видео в двух или более опорных кадров. Компенсация движения использует вектор движения для того, чтобы сформировать блок с предсказанием видео из опорного кадра. После компенсации движения остаточный блок видео формируется посредством вычитания блока с предсказанием видео из исходного блока видео.
Видеокодер применяет процессы преобразования, квантования и энтропийного кодирования, чтобы дополнительно уменьшить расход битов на отсчет остаточного блока. Энтропийное кодирование, в общем, влечет за собой применение арифметических кодов или кодов с переменной длиной (VLC), чтобы дополнительно сжимать остаточные коэффициенты, сформированные посредством операций преобразования и квантования. Примеры включают в себя контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и контекстно-адаптивное кодирование с переменной длиной (CAVLC), которое может быть использовано в качестве альтернативных режимов энтропийного кодирования в некоторых кодерах. Видеодекодер выполняет обратные операции, чтобы восстанавливать кодированное видео, используя информацию движения и остаточную информацию каждого из блоков.
Раскрытие изобретения
В общем, раскрытие направлено на методики адаптивного кодирования с переменной длиной (VLC) цифрового видео. В частности, методики адаптивного VLC могут быть использованы для энтропийного кодирования остаточных коэффициентов, сформированных посредством процесса кодирования с предсказанием. Методики могут быть применены к схемам видеокодирования, которые кодируют позиции ненулевых коэффициентов преобразования с помощью серий нулей. В качестве одного примера, методики могут быть применены для того, чтобы кодировать коэффициенты преобразования в слое масштабирования с высокой степенью детализации (FGS), используемом для масштабируемого видеокодирования (SVC). Методики адаптивного VLC могут адаптивно регулировать процесс VLC, чтобы способствовать уменьшению сложности и повышению эффективности в цифровом видеокодере.
Методики адаптивного VLC могут хранить таблицу сдвига конца блока (EOB) и таблицу выбора словаря VLC-кодирования как внутренние состояния вместо отправки их с кодированными данными серий последовательных макроблоков видео. Записи таблиц могут периодически обновляться на основе статистики кодирования, собираемой в ходе прохода кодирования. В другом аспекте методики адаптивного VLC могут хранить таблицу сдвига специального EOB (sEOB), которая приспосабливает позицию символа sEOB в наборе символов к вероятности наличия ненулевых коэффициентов с абсолютной величиной, большей 1, в блоке и может кодировать информацию абсолютной величины ненулевых коэффициентов в отдельных параметрах кодирования. В дополнительном аспекте методики адаптивного VLC могут кодировать DC- и AC-блоки сигнала цветности независимо друг от друга и независимо от сигнала яркости, используя отдельные таблицы сдвига EOB, сдвига специального EOB и выбора словаря VLC-кодирования, которые подстроены под DC-блоки сигнала цветности, AC-блоки сигнала цветности и блоки сигнала яркости соответственно.
Данное раскрытие предоставляет, в одном аспекте, устройство видеокодирования, содержащее модуль кода с переменной длиной (VLC), выполненный с возможностью выполнять VLC-кодирование блочных коэффициентов цифрового видео с помощью VLC-параметров, собирать статистику кодирования в ходе VLC-кодирования блочных коэффициентов цифрового видео и корректировать один или более из VLC-параметров в ходе VLC-кодирования на основе собранной статистики кодирования.
В другом аспекте раскрытие предоставляет способ, содержащий выполнение VLC-кодирования блочных коэффициентов цифрового видео с помощью VLC-параметров, сбор статистики кодирования в ходе VLC-кодирования блочных коэффициентов цифрового видео и корректировки одного или более VLC-параметров в ходе VLC-кодирования на основе собранной статистики кодирования.
В дополнительном аспекте раскрытие предоставляет устройство видеокодирования, содержащее модуль кода с переменной длиной (VLC), выполненный с возможностью выполнять VLC-кодирование блочных коэффициентов цифрового видео с помощью VLC-параметров, при этом VLC-параметры содержат таблицу сдвига специального EOB (sEOB), указывающую, для каждого из множества различных условий кодирования, индекс символа sEOB в наборе символов, содержащем символы серий нулей, символ конца блока (EOB) и символ sEOB, на основе вероятности конца блока, когда блок включает в себя один или более ненулевых коэффициентов, имеющих абсолютную величину, большую 1.
В другом дополнительном аспекте раскрытие предоставляет способ, содержащий формирование параметров кода с переменной длиной (VLC) и выполнение VLC-кодирования блочных коэффициентов цифрового видео с помощью VLC-параметров, при этом VLC-параметры содержат таблицу сдвига специального EOB (sEOB), указывающую, для каждого из множества различных условий кодирования, индекс символа sEOB в наборе символов, содержащем символы серий нулей, символ конца блока (EOB) и символ sEOB, на основе вероятности конца блока, когда блок включает в себя один или более ненулевых коэффициентов, имеющих абсолютную величину, большую 1.
Методики, описанные в данном раскрытии, могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой их комбинации. Если они реализованы в программном обеспечении, программное обеспечение может приводиться в исполнение в одном или более процессоров, таких как микропроцессор, специализированная интегральная схема (ASIC), программируемая пользователем матричная БИС (FPGA) или процессор цифровых сигналов (DSP). Программное обеспечение, которое приводит в исполнение методики, может быть первоначально сохранено в машиночитаемом носителе и загружено и приведено в исполнение в процессоре. Соответственно, данное раскрытие также предполагает вычислительный программный продукт, содержащий машиночитаемый носитель, который содержит инструкции, побуждающие процессор выполнять любую из множества методик, описанных в данном раскрытии.
Подробности одного или более вариантов осуществления данного раскрытия изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества методик, описанных в данном раскрытии, должны стать очевидными из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг.1 - это блок-схема, иллюстрирующая систему кодирования и декодирования видео.
Фиг.2 - это блок-схема, иллюстрирующая пример видеокодера.
Фиг.3 - это блок-схема, иллюстрирующая пример видеодекодера.
Фиг.4 - это схема, иллюстрирующая остаточные коэффициенты в блоке, ассоциативно связанном с базовым слоем серии последовательных макроблоков масштабируемого видеокодирования (SVC).
Фиг.5 - это схема, иллюстрирующая классификацию остаточных коэффициентов в блоке, ассоциативно связанном с улучшающим слоем масштабирования с высокой степенью детализации (FGS) серии последовательных макроблоков SVC.
Фиг.6 - это схема, иллюстрирующая кодирование ненулевых коэффициентов как серий нулей в блоке остаточных коэффициентов.
Фиг.7 - это схема, иллюстрирующая основанное на циклах кодирование значимых и уточняющих коэффициентов в блоке, ассоциативно связанном с улучшающим FGS-слоем серии последовательных макроблоков SVC.
Фиг.8 - это блок-схема модуля энтропийного кодирования, выполненного с возможностью применять процесс адаптивного VLC в соответствии с аспектом данного раскрытия.
Фиг.9 - это блок-схема модуля энтропийного декодирования, выполненного с возможностью применять процесс адаптивного VLC в соответствии с аспектом данного раскрытия.
Фиг.10 - это блок-схема последовательности операций способа, иллюстрирующая процесс адаптивного VLC в соответствии с аспектом данного раскрытия.
Фиг.11 - это блок-схема последовательности операций способа, подробнее иллюстрирующая процесс адаптивного VLC.
Осуществление изобретения
Фиг.1 - это блок-схема, иллюстрирующая систему 10 кодирования и декодирования видео. Как показано на фиг. 1, система 10 включает в себя исходное устройство 12, которое передает кодированное видео в принимающее устройство 14 через канал 16 связи. Исходное устройство 12 может включать в себя видеоисточник 18, видеокодер 20 и передающее устройство 22. Принимающее устройство 14 может включать в себя приемное устройство 24, видеодекодер 26 и устройство 28 видеоотображения. Система 10 может быть выполнена с возможностью применять методики адаптивного кодирования с переменной длиной (VLC) цифрового видео. В частности, методики адаптивного VLC могут быть использованы для энтропийного кодирования остаточных блочных коэффициентов, сформированных посредством процесса видеокодирования с предсказанием. Методики могут быть применены к схемам видеокодирования, которые кодируют позиции ненулевых коэффициентов преобразования с помощью серий нулей. Например, методики могут быть применены для того, чтобы кодировать коэффициенты преобразования для значимого кодирования в слое масштабирования с высокой степенью детализации (FGS), используемом для масштабируемого видеокодирования (SVC). Методики адаптивного VLC, применяемые посредством системы 10, могут адаптивно регулировать процесс VLC, чтобы способствовать уменьшению сложности и повышению эффективности в цифровом видеокодере.
В одном аспекте система 10 может быть выполнена с возможностью применять методики адаптивного VLC, которые хранят таблицу сдвига конца блока (EOB) и таблицу выбора словаря VLC-кодирования как внутренние состояния вместо отправки их с данными серий последовательных кодированных макроблоков видео. Например, видеокодер 20 может периодически обновлять записи таблиц на основе статистики, собираемой в ходе прохода кодирования. В другом аспекте видеокодер 20 может хранить таблицу сдвига специального EOB, которая приспосабливает позицию символа специального EOB в наборе символов к вероятности значимых коэффициентов с абсолютной величиной, большей 1, при текущем условии кодирования. Параметр специального EOB может быть представлен посредством двух символов, к примеру sEOB и termSym, как подробнее описано ниже. В дополнительном аспекте видеокодер 20 может кодировать DC- и AC-блоки сигнала цветности независимо от сигнала яркости, используя сдвиг отдельного EOB, сдвиг специального EOB и таблицы выбора словаря VLC-кодирования, к примеру совместно со скоростью адаптивного VLC.
В примере по фиг. 1 канал 16 связи может содержать любую беспроводную и проводную среду связи, такую как радиочастотный (RF) спектр или одна или более физических линий передачи, либо любую комбинацию беспроводной и проводной среды. Канал 16 может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Канал 16 связи, в общем, представляет любую надлежащую среду связи или набор различных сред связи для передачи видеоданных из исходного устройства 12 в принимающее устройство 14.
Исходное устройство 12 формирует видео для передачи в целевое устройство 14. В некоторых случаях, тем не менее, устройства 12, 14 могут работать практически симметричным способом. Например, каждое из устройств 12, 14 может включать в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одностороннюю и двухстороннюю передачу между видеоустройствами 12, 14, к примеру, для потоковой передачи видео, широковещательной передачи видео или видеотелефонии.
Видеоисточник 18 может включать в себя устройство видеозахвата, такое как одна или более видеокамер, видеоархив, содержащий ранее захваченное видео, или передачу видео вживую от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 18 может формировать основанные на компьютерной графике данные в качестве исходного видео или комбинацию живого видео и сформированного компьютером видео. В некоторых случаях, если видеоисточником 18 является камера, исходное устройство 12 и принимающее устройство 14 могут сформировать так называемые камерофоны или видеофоны. В любом случае, захваченное, предварительно захваченное или сформированное компьютером видео может быть кодировано посредством видеокодера 20 для передачи из устройства 12 видеоисточника в видеокодер 26 устройства 14 приема видео через передающее устройство 22, канал 16 и приемное устройство 24. Дисплейное устройство 28 может включать в себя любое из множества дисплейных устройств, к примеру жидкокристаллический дисплей (LCD), плазменный дисплей или дисплей на органических светодиодах (OLED).
Видеокодер 20 и видеодекодер 26 могут быть выполнены с возможностью поддерживать масштабируемое видеокодирование для пространственного, временного масштабирования и масштабирования отношения "сигнал-шум" (SNR). В некоторых аспектах видеокодер 20 и видеодекодер 26 могут быть выполнены с возможностью поддерживать кодирование с масштабированием SNR с высокой степенью детализации (FGS) для SVC. Кодер 20 и декодер 26 могут поддерживать различные степени масштабирования для поддержки кодирования, передачи и декодирования базового слоя и одного или более масштабируемых улучшающих слоев. Для масштабируемого видеокодирования базовый слой переносит видеоданные с минимальным уровнем качества. Один или более улучшающих слоев переносят дополнительный поток битов, чтобы поддерживать более высокие пространственные, временные уровни и/или уровни SNR.
Видеокодер 20 и видеодекодер 26 могут работать согласно стандарту видеосжатия, такому как MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4 улучшенное видеокодирование (AVC). Хотя не показано на фиг. 1, в некоторых аспектах видеокодер 20 и видеодекодер 26 могут быть интегрированы с аудиокодером и декодером соответственно и включать в себя соответствующие модули MUX-DEMUX либо другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование аудио и видео в общем потоке данных или отдельных потоках данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).
Стандарт H.264/MPEG-4 (AVC) сформулирован посредством Экспертной группы в области кодирования видео (VCEG) ITU-T совместно с Экспертной группой по киноизображению (MPEG) ISO/IEC как продукт совместного партнерского проекта, известного как Объединенная группа по видеостандартам (JVT). Стандарт H.264 описан в ITU-T Recommendation H.264 "Advanced video coding for generic audiovisual services" посредством Исследовательской группы ITU-T и датирован 03/2005, который может упоминаться в данном документе как стандарт H.264 или спецификация H.264 либо стандарт или спецификация H.264/AVC.
Объединенная группа по видеостандартам (JVT) продолжает работать над дополнением по масштабируемому видеокодированию (SVC) в H.264/MPEG-4 AVC. Спецификация развивающегося дополнения SVC приводится в форме совместного проекта (JD). Объединенная модель масштабируемого видео (JSVM), созданная посредством JVT, реализует средства для использования в масштабируемом видео, которые могут быть использованы в рамках системы 10 для различных задач кодирования, описанных в данном раскрытии. Подробную информацию, касающуюся кодирования с масштабированием SNR с высокой степенью детализации, можно найти в документах Совместного проекта, к примеру в Совместном проекте 6 (SVC JD6), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz и Mathias Wien, "Joint Draft 6: Scalable Video Coding", JVT-S 201, апрель 2006 года, Женева, и в Совместном проекте 9 (SVC JD9), Thomas Wiegand, Gary Sullivan, Julien Reichel, Heiko Schwarz и Mathias Wien, "Joint Draft 9 of SVC Amendment", JVT-V 201, январь 2007 года, Marrakech, Марокко.
В некоторых аспектах для широковещательной передачи видеометодики, описанные в данном раскрытии, могут быть применены к улучшенному видеокодированию H.264 для доставки видеоуслуг реального времени в системах наземной многоадресной передачи мобильного мультимедиа (TM3), использующих спецификацию радиоинтерфейса только прямой линии связи (FLO), "Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast", которая должна быть опубликована как Технический стандарт TIA-1099 ("FLO Specification"). Спецификация FLO включает в себя примеры, задающие синтаксис и семантику потока битов и процессы декодирования, подходящие для радиоинтерфейса FLO. Альтернативно, видео может передаваться в широковещательном режиме согласно другим стандартам, таким как DVB-H (цифровая широковещательная передача видео для карманных устройств), ISDB-T (комплексные службы цифровой наземной широковещательной передачи) или DMB (цифровая широковещательная передача мультимедиа). Следовательно, исходным устройством 12 может быть мобильный беспроводной терминал, сервер потоковой передачи видео и сервер широковещательной передачи видео. Тем не менее, методики, описанные в данном документе, не ограничены каким-либо конкретным типом системы широковещательной, многоадресной передачи или передачи "точка-точка". В случае широковещательной передачи исходное устройство 12 может передавать в широковещательном режиме несколько каналов видеоданных в несколько принимающих устройств, каждое из которых может быть аналогичным принимающему устройству 14 по фиг. 1.
Видеокодер 20 и видеодекодер 26 могут быть реализованы как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем матричных БИС (FPGA), дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение или любые комбинации вышеозначенного. Каждый из видеокодера 20 и видеодекодера 26 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем мобильном устройстве, абонентском устройстве, широковещательном устройстве, сервере и т.п. Помимо этого, исходное устройство 12 и принимающее устройство 14 могут включать в себя соответствующие компоненты модуляции, демодуляции, частотного преобразования, фильтрации и усилителя для передачи и приема кодированного видео, в зависимости от необходимости, включая радиочастотные (RF) беспроводные компоненты и антенны, достаточные для того, чтобы поддерживать беспроводную связь. Тем не менее, для упрощения иллюстрации эти компоненты не показаны на фиг. 1.
Видеопоследовательность включает в себя серии видеокадров. Видеокодер 20 оперирует с блоками пикселов в рамках отдельных видеокадров, чтобы кодировать видеоданные. Блоки видео могут иметь фиксированный или изменяющийся размер и могут отличаться в размере согласно заданному стандарту кодирования. Каждый видеокадр включает в себя серии последовательных макроблоков. Каждая серия последовательных макроблоков может включать в себя серию макроблоков, которые могут быть скомпонованы в субблоки. В качестве примера, стандарт ITU-T H.264 поддерживает внутреннее прогнозирование для различных размеров блоков, таких как 16 × 16, 8 × 8, 4 × 4 для компонентов сигнала яркости и 8×8 для компонентов сигнала цветности, а также внутреннее прогнозирование для различных размеров блоков, таких как 16 × 16, 16 × 8, 8 × 16, 8 × 8, 8 × 4, 4 × 8 и 4 × 4 для компонентов сигнала яркости и соответствующие масштабированные размеры для компонентов сигнала цветности.
Меньшие блоки видео могут предоставлять лучшее разрешение и могут быть использованы для позиций видеокадра, которые включают в себя более высокий уровень детализации. В общем, макроблоки (MB) и различные субблоки могут рассматриваться как блоки видео. Помимо этого, серия последовательных макроблоков может считаться серией блоков видео, таких как MB и/или субблоки. Каждая серия последовательных макроблоков может быть независимо декодируемой единицей. После прогнозирования преобразование может быть выполнено для остаточного блока 8×8 или остаточного блока 4×4 и дополнительное преобразование может быть применено к DC-коэффициентам блоков 4×4 для компонентов сигнала цветности или компонентов сигнала яркости, если используется режим прогнозирования intra_16×16.
Фиг.2 - это блок-схема, иллюстрирующая пример видеокодера 20, показанного на фиг. 1. Видеокодер 20 может выполнять внутреннее и взаимное кодирование блоков в видеокадрах. Внутреннее кодирование базируется на пространственном прогнозировании, чтобы уменьшить или исключить пространственную избыточность видео в пределах данного видеокадра. Взаимное кодирование основывается на временном прогнозировании, чтобы уменьшить или исключить временную избыточность видео в пределах соседних кадров видеопоследовательности. Для взаимного кодирования видеокодер 20 выполняет оценку движения, чтобы отслеживать перемещение совпадающих блоков видео между соседними кадрами.
Как показано на фиг.2, видеокодер 20 принимает текущий блок 30 видео в видеокадре, который должен быть кодирован. В примере по фиг. 2 видеокодер 20 может включать в себя модуль 32 оценки движения, модуль 34 хранения опорных кадров, модуль 36 компенсации движения, модуль 38 блочного преобразования, модуль 40 квантования, модуль 42 обратного квантования, модуль 44 обратного преобразования и модуль 46 энтропийного кодирования. Внутриконтурный деблокирующий фильтр (не показан) может быть применен, чтобы фильтровать блоки, чтобы удалить артефакты блокирования. Видеокодер 20 также включает в себя сумматор 48 и сумматор 50. Фиг. 2 иллюстрирует компоненты временного прогнозирования видеокодера 20 для взаимного кодирования блоков видео. Хотя не показано на фиг. 2 для упрощения иллюстрации, видеокодер 20 также может включать в себя компоненты пространственного прогнозирования для внутреннего кодирования некоторых блоков видео.
Модуль 32 оценки движения сравнивает блок 30 видео с блоками в одном или более соседних кадров, чтобы сформировать один или более векторов движения. Соседний кадр или кадры могут извлекаться из узла 34 хранения опорных кадров, который может содержать любой тип запоминающего устройства или устройства хранения данных, чтобы сохранять блоки видео, восстановленные из ранее кодированных блоков. Оценка движения может выполняться для блоков переменного размера, к примеру, 16×16, 16×8, 8×16, 8×8 или меньших размеров блоков. Модуль 32 оценки движения идентифицирует один или более блоков соседних кадров, в наибольшей степени совпадающих с текущим блоком 30 видео, к примеру, на основе модели случайного искажения, и определяет смещение между блоками в соседних кадрах и текущим блоком видео. На этой основе модуль 32 оценки движения формирует один или более векторов движения (MV), которые указывают абсолютную величину и траекторию смещения между текущим блоком 30 видео и одним или более совпадающих блоков от опорных кадров, используемых для того, чтобы кодировать текущий блок 30 видео.
Векторы движения могут иметь точность в половину или четверть пиксела или даже большую точность, позволяя видеокодеру 20 отслеживать движение с более высокой точностью, чем целочисленные позиции пикселов, и получать более оптимальный блок с предсказанием. Когда используются векторы движения с дробными пиксельными значениями, операции интерполяции выполняются в узле 36 компенсации движения. Модуль 32 компенсации движения идентифицирует оптимальные блочные сегменты и вектор движения или векторы движения для блока видео с помощью определенного критерия, такого как модель случайного искажения. Например, может быть несколько векторов движения в случае двунаправленного прогнозирования. Используя результирующие блочные сегменты и векторы движения, модуль 36 компенсации движения формирует видеоблок с предсказанием.
Видеокодер 20 формирует остаточный блок видео посредством вычитания блока с предсказанием видео, сформированного посредством узла 36 компенсации движения, из оригинального текущего блока 30 видео в сумматоре 48. Модуль 38 блочного преобразования применяет преобразование, такое как целочисленное преобразование 4×4 или 8×8, используемое в H.264/AVC, к остаточному блоку, формируя остаточные преобразованные блочные коэффициенты. Модуль 40 квантования квантует остаточные преобразованные блочные коэффициенты, чтобы дополнительно уменьшить расход битов на отсчет. Модуль 46 энтропийного кодирования энтропийно кодирует квантованные коэффициенты, чтобы еще более уменьшить расход битов на отсчет.
Модуль 46 энтропийного кодирования выступает в качестве модуля кодирования с переменной длиной (VLC), чтобы применять VLC-кодирование к квантованным блочным коэффициентам. В частности, модуль 46 энтропийного кодирования может быть выполнен с возможностью выполнять VLC-кодирование блочных коэффициентов цифрового видео с помощью набора VLC-параметров, которые могут быть сохранены как внутренние состояния, собирать статистику кодирования в ходе VLC-кодирования блочных коэффициентов цифрового видео и корректировать один или более VLC-параметров в ходе VLC-кодирования на основе собранной статистики кодирования. В общем, видеодекодер 26 выполняет обратные операции, включающие в себя VLC-декодирование, чтобы декодировать и восстанавливать кодированное видео, как описано, к примеру, со ссылкой на фиг. 3.
Модуль 42 обратного квантования и модуль 44 обратного преобразования применяют обратное квантование и обратное преобразование соответственно, для того чтобы восстановить остаточный блок. Сумматор 50 прибавляет восстановленный остаточный блок к блоку с предсказанием с компенсацией движения, сформированному посредством узла 36 компенсации движения, чтобы сформировать восстановленный блок видео для хранения в узле 34 хранения опорных кадров. Восстановленный блок видео используется посредством узла 32 оценки движения и узла 36 компенсации движения для того, чтобы кодировать блок в последующем видеокадре.
Фиг.3 - это блок-схема, иллюстрирующая пример видеодекодера 26. Видеодекодер 26 может выполнять внутреннее и взаимное декодирование блоков в видеокадрах. Как показано на фиг. 3, видеодекодер 26 принимает кодированный поток битов, который кодирован посредством видеокодера 20. В примере на фиг. 3 видеодекодер 26 включает в себя модуль 52 энтропийного декодирования, модуль 54 компенсации движения, модуль 56 обратного квантования, модуль 58 обратного преобразования и модуль 62 хранения опорных кадров. Видеодекодер 26 также может включать в себя внутриконтурный деблокирующий фильтр (не показан), который фильтрует выходной сигнал сумматора 64. Видеодекодер 26 также включает в себя сумматор 64. Фиг. 3 иллюстрирует компоненты временного прогнозирования видеодекодера 26 для взаимного кодирования блоков видео. Хотя не показано на фиг. 3 для упрощения иллюстрации, видеодекодер 26 также может включать в себя компоненты пространственного прогнозирования для внутреннего кодирования некоторых блоков видео.
Модуль 52 энтропийного декодирования принимает кодированный поток видеобитов и декодирует из потока битов остаточные коэффициенты, режим кодирования макроблоков и информацию движения, которая может включать в себя векторы движения и блочные сегменты. Следовательно, модуль 52 энтропийного декодирования выступает в качестве модуля VLC-декодирования. Например, чтобы декодировать квантованные остаточные коэффициенты из кодированного потока битов, аналогично узлу 46 энтропийного кодирования по фиг. 2, модуль 52 энтропийного декодирования по фиг. 3 может выполнять адаптивное VLC-декодирование блочных коэффициентов цифрового видео, как описано в данном раскрытии, используя набор VLC-параметров, которые могут быть сохранены как внутренние состояния, собирает статистику кодирования в ходе VLC-декодирования блочных коэффициентов цифрового видео и корректирует один или более VLC-параметров в ходе VLC-декодирования на основе собранной статистики кодирования. Тем не менее, модуль 52 энтропийного декодирования выполняет VLC-декодирование обратным способом относительно узла 46 энтропийного кодирования по фиг. 2, чтобы извлечь квантованные блочные коэффициенты из кодированного потока битов.
Модуль 54 компенсации движения принимает векторы движения и блочные сегменты и один или более восстановленных опорных кадров из узла 62 хранения опорных кадров, чтобы сформировать блок с предсказанием видео. Модуль 56 обратного квантования обратно квантует, т.е. деквантует квантованные блочные коэффициенты. Модуль 58 обратного преобразования применяет обратное преобразование, к примеру обратное DCT или обратное целочисленное преобразование 4×4 или 8×8, к коэффициентам, чтобы сформировать остаточные блоки. Блоки с предсказанием видео затем суммируются посредством сумматора 64 с остаточными блоками, чтобы сформировать декодированные блоки. Деблокирующий фильтр (не показан) может быть применен, чтобы фильтровать декодированные блоки, чтобы удалить артефакты блокирования. Фильтрованные блоки затем помещаются в модуль 62 хранения опорных кадров, который предоставляет опорный кадр для декодирования последующих видеокадров и также формирует декодированное видео, чтобы активировать дисплейное устройство 28 (фиг. 1).
В настоящее время Объединенная группа по видеостандартам (JVT), которая состоит из экспертов по кодированию видео из ISO/IEC MPEG и ITU-T VCEG, работает над стандартом SVC, который является дополнением масштабируемого кодирования видео к H.264/AVC. Совместное программное обеспечение, называемое JSVM (Joint Scalable Video Model), используется участниками. JSVM поддерживает комбинированное масштабирование. Поток битов SVC может иметь масштабирование с высокой степенью детализации, пространственное масштабирование, временное масштабирование или любую комбинацию вышеозначенного.
Масштабирование с высокой степенью детализации является важным и очень желательным свойством для видеокодирования. Это свойство дает возможность сжатому потоку видеобитов быть практически произвольно отсекаемым, в то же время предоставляя конечному пользователю постепенное ухудшение качества декодированного видео. При масштабировании с высокой степенью детализации поток битов улучшающего слоя может произвольно отсекаться. По мере того как видеодекодер 26 принимает и декодирует больше битов в слое FGS, он формирует более оптимальное качество видео. Более того, FGS в JSVM спроектировано таким образом, что улучшение качества видео равномерно распределено по всему видеокадру, в отличие от концентрации только в рамках определенной пространственной области кадра, поскольку последнее должно быть визуально нежелательно для конечного зрителя.
FGS позволяет добиваться постепенного улучшения качества видео с помощью кодирования в битовой плоскости. Если видеокадр базового или предыдущего слоя квантован с помощью параметра QP квантования, к примеру с использованием узла 40 квантования (фиг. 2), то видео текущего улучшающего слоя квантуется с помощью параметра квантования примерно QP-6, который эффективно уменьшает размер шага квантования наполовину. Как результат уменьшения размера шага квантования, больше остаточных коэффициентов преобразования становятся ненулевыми на улучшающем слое.
Коэффициенты в улучшающем слое, в общем, могут быть классифицированы на три типа: незначимые коэффициенты, значимые коэффициенты и уточняющие коэффициенты. Незначимый коэффициент - это коэффициент, имеющий значение нуль в улучшающем слое, для которого соответствующий коэффициент в базовом или предыдущем слое также равен нулю. Значимый коэффициент - это коэффициент, который является ненулевым в улучшающем слое, но для которого соответствующий коэффициент в базовом или предыдущем слое равен нулю. Уточняющий коэффициент - это коэффициент, для которого соответствующий коэффициент в базовом или предыдущем слое уже является ненулевым (т.е. значимым). Значения этих ненулевых коэффициентов в базовом или предыдущем слое уточняются посредством значений соответствующих коэффициентов в текущем улучшающем слое.
Фиг.4 - это схема, иллюстрирующая остаточные блочные коэффициенты в блоке, ассоциативно связанном с базовым слоем серии последовательных макроблоков масштабируемого видеокодирования (SVC). Фиг. 5 - это схема, иллюстрирующая классификацию остаточных блочных коэффициентов в блоке, ассоциативно связанном с улучшающим слоем масштабирования с высокой степенью детализации (FGS) серии последовательных макроблоков SVC. В примере по фиг. 4 блок базового или предыдущего слоя включает в себя два ненулевых остаточных коэффициента 66, 68 преобразования и большинство остаточных коэффициентов 70 преобразования в сером. В примере по фиг. 5 блок FGS-слоя включает в себя незначимые коэффициенты 72 в сером, значимые коэффициенты 74, 76 в перекрестной штриховке и уточняющие коэффициенты 78, 80 в пунктирном шаблоне. Уточняющие коэффициенты 78, 80 в FGS-блоке по фиг. 5 соответствуют ненулевым коэффициентам 66, 68 в блоке базового или предыдущего слоя по фиг. 4. Как показано на фиг. 5, значимые коэффициенты могут иметь абсолютную величину больше 1. Например, значимый коэффициент 76 имеет абсолютную величину 2 в примере по фиг. 5. Отметим, что, хотя уточняющий коэффициент, такой как уточняющий коэффициент 78 на фиг. 5, может иметь значение 0, он может считаться ненулевым коэффициентом, поскольку соответствующий коэффициент базового или предыдущего слоя является ненулевым. Поэтому в данном раскрытии значимые и уточняющие коэффициенты иногда упоминаются вместе как ненулевые коэффициенты.
Аналогично H.264/AVC, SVC JD9 также поддерживает два режима энтропийного кодирования: режим контекстно-адаптивного двоичного арифметического кодирования (CABAC) и режим контекстно-адаптивного кодирования с переменной длиной (CAVLC). Данное раскрытие описывает методики адаптивного VLC, которые могут быть использованы для адаптивного кодирования коэффициентов в улучшающем FGS-слое в режиме CAVLC. В сравнении с соответствующей схемой, заданной в SVC JD9, методики кодирования коэффициентов FGS-слоя, описанные в данном раскрытии, позволяют существенно снизить вычислительную сложность в видеокодере 20 и/или видеодекодере 26, при этом в то же время предоставляя более оптимальную эффективность кодирования.
Методики адаптивного VLC, описываемые в данном раскрытии, могут не ограничиваться кодированием коэффициентов в FGS-слое. Наоборот, эти коэффициенты могут быть применены в общем к любой системе кодирования, которая кодирует позицию ненулевых коэффициентов с использованием серий нулей. Примерами таких систем кодирования явл