КОДИРОВАНИЕ ВИДЕОСИГНАЛОВ ПОСРЕДСТВОМ ВЫБОРА ФИЛЬТРА
VIDEO ENCODING BY FILTER SELECTION

Ссылка на родственные заявки
Данная заявка испрашивает приоритет согласно предварительной патентной заявки США № 61/078642, поданной 7 июля 2008 г., содержание которой тем самым полностью включено в документ посредством ссылки.
Область техники, к которой относится изобретение
Это заявка относится к кодированию видеосигналов, более определенно, к техническим приемам интерполирования опорных кадров в системах сжатия видеоизображений.
Описание предшествующего уровня техники
Возможности цифровой видеотехники могут быть встроены в широкий диапазон устройств, которые включают в себя цифровое телевидение, цифровые системы непосредственного вещания, устройства беспроводной связи, персональных цифровых ассистентов (PDA, ПЦА), портативные компьютеры, настольные компьютеры, цифровые камеры, цифровые записывающие устройства, сотовые или спутниковые радиотелефоны и т.п. Эти и другие цифровые видеоустройства могут обеспечивать существенные улучшения по сравнению с общепринятыми аналоговыми видеосистемами в создании, модифицировании, передаче, сохранении, записи и воспроизведении видеопоследовательностей с полноценным движением.
Для передачи цифровых видеопоследовательностей был установлен ряд различных стандартов кодирования видеосигналов. Например, Экспертная группа по вопросам движущегося изображения (MPEG) разработала некоторое количество стандартов, включающих в себя MPEG-1 (стандарт сжатия изображения и звука), MPEG-2 (расширение MPEG-1 для кабельного телевидения и видеодисков DVD (цифровых видеодисков)) и MPEG-4 (стандарт сжатия движущегося изображения и звука, предназначенный для передачи данных с низкой скоростью). Другие стандарты включают в себя ITU (Международный союз по телекоммуникациям) H.263, технологию QuickTime™, разработанную корпорацией Apple Computer Cupertino Calif.; Video for Windows™, разработанную корпорацией Microsoft Corporation of Redmond, Вашингтон; Indeo™, разработанную Корпорацией Intel; RealVideo™ от RealNetworks, Inc., Сиэтл, Вашингтон; и Cinepak, разработанную фирмой SuperMac, Inc. Эти и другие стандарты, включая стандарты, которые еще будут разработаны, продолжают развиваться.
Стандарты кодирования видеосигналов достигают увеличенных скоростей передачи благодаря кодированию данных в сжатой форме. Сжатие может снижать общее количество данных, которое необходимо передавать для эффективной передачи кадров изображения. Стандарты MPEG, например, используют технические приемы сжатия графических изображений и видеоизображений, предназначенные для того, чтобы облегчать передачу видеосигналов и изображений по более узкой полосе пропускания, чем может быть достигнуто без сжатия. В частности, стандарты MPEG включают в себя технические приемы кодирования видеосигналов, которые используют подобия между последовательными кадрами изображений, упоминаемые как временная или межкадровая корреляция, чтобы обеспечивать межкадровое сжатие. Технические приемы межкадрового сжатия используют избыточность данных по кадрам, с использованием компенсированного предсказания движения, то есть выполняются посредством предсказания кадра на основании другого после оценки движения сцены. Кроме того, технические приемы кодирования видеосигналов могут использовать подобия внутри кадров изображения, упоминаемые как пространственная или внутрикадровая корреляция. Сжатие кадров обычно основано на общепринятых процессах сжатия статических изображений, таких как кодирование дискретного косинусного преобразования (DCT, ДКП). Кодирование дискретного косинусного преобразования (DCT) также используется для того, чтобы сжимать компенсированное предсказание движения.
Один метод DCT известен как метод адаптивного дискретного косинусного преобразования размеров блоков (ABSDCT). Этот метод раскрыт в патенте США № 5021891, озаглавленном "Способ и система адаптивного сжатия изображений размеров блоков", переуступленном правопреемнику настоящего изобретения и включенном в этот документ посредством ссылки. Технические приемы DCT также раскрыты в патенте США № 5107345, озаглавленном "Способ и система адаптивного сжатия изображений размеров блоков", переуступленном правопреемнику настоящего изобретения и включенном в этот документ посредством ссылки. Кроме того, использование метода ABSDCT в сочетании с методом дифференциального преобразования дерева квадрантов обсуждается в патенте США № 5452104, озаглавленном "Способ и система адаптивного сжатия изображений размеров блоков", также переуступленном правопреемнику настоящего изобретения и включенном в этот документ посредством ссылки. Раскрытые в этих патентах системы используют то, что упоминается как "внутрикадровое" кодирование, в котором каждый кадр данных изображения кодируется без учета содержимого какого-либо другого кадра. При использовании метода ABSDCT достигаемая скорость передачи данных может быть снижена от, приблизительно, 1,5 миллиарда битов в секунду до, приблизительно, 50 миллионов битов в секунду без заметного ухудшения качества изображения.
Метод ABSDCT может использоваться для того, чтобы сжимать либо черно-белое, либо цветное изображение или сигнал, представляющий изображение. Цветной входной сигнал может быть в формате YIQ, с Y, являющимся выборкой сигнала яркости, или освещенности, и I и Q, являющимися выборками сигнала цветности, или цвета, для каждого из блоков 4 на 4 пикселей (минимальных элементов изображения). Также могут использоваться другие известные форматы, такие как форматы YUV ("яркость - цветность синего - цветность красного"), YC.sub.bC.sub.y или RGB ("зеленый, красный, синий"). Из-за низкой пространственной чувствительности глаза к цвету, большая часть исследований показала, что подвыборка цветовых компонентов с множителем четыре в горизонтальном и вертикальном направлениях является разумной. Соответственно, видеосигнал может быть представлен четырьмя компонентами сигнала яркости и двумя компонентами сигнала цветности.
Чтобы поддерживать технические приемы сжатия, многие цифровые видеоустройства включают в себя кодер для сжатия цифровых видеопоследовательностей и декодер для восстановления сжатых цифровых видеопоследовательностей. Во многих случаях кодер и декодер содержат объединенный кодер/декодер (кодек), оперирующий блоками пикселей в пределах кадров, которые определяют последовательность видеоизображений. В стандарте MPEG-4, например, кодер передающего устройства обычно делит кадр видеоизображения, подлежащий передаче, на макроблоки, содержащие меньшие блоки изображения. Для каждого макроблока в кадре изображения, кодер выполняет поиск макроблоков, непосредственно предшествующих видеокадру, чтобы идентифицировать наиболее подобный макроблок, и кодирует разность между макроблоками для передачи, наряду с вектором движения, указывающим, который макроблок из предыдущего кадра использовался для кодирования. Декодер приемного устройства принимает вектор движения и закодированные разности, и выполняет компенсацию движения, чтобы генерировать видеопоследовательности. Векторы движения могут иметь точности в целый, половину или четверть пикселя, в зависимости от уровня точности, выбранной кодером. Когда используются векторы движения с дробными значениями пикселя, получают блок с наилучшим предсказанием. Интерполяция выполняется так, чтобы определять значения дробных пикселей (подпикселей). В одном примере, значения пикселей включают в себя биты, представляющие интенсивность компонента яркости, цветности или цветового компонента.
Процесс кодирования видеосигналов является интенсивным в вычислительном отношении. В частности процесс сравнивания блоков видеосигналов с предварительно переданными блоками видеосигналов требует больших количеств вычислений. Весьма желательны улучшенные технические приемы кодирования, особенно для использования в беспроводных устройствах или других портативных видеоустройствах, в которых вычислительные ресурсы являются более ограниченными и имеет важность потребляемая мощность.
Раскрытие изобретения
Один вариант осуществления представляет собой способ кодирования цифровых видеосигналов, причем способ включает в себя идентификацию опорного кадра и текущего кадра, интерполирование опорного кадра с использованием устанавливаемого по умолчанию фильтра, чтобы создавать интерполированный по умолчанию кадр, интерполирование опорного кадра с использованием альтернативного фильтра, чтобы создавать альтернативно интерполированный кадр, определение для каждой позиции подпикселя, использовать ли устанавливаемый по умолчанию фильтр или альтернативный фильтр, основываясь на более низкой суммарной погрешности, чтобы генерировать заключительный опорный кадр.
Другой вариант осуществления представляет собой устройство кодирования видеосигналов, включающее в себя модуль компенсации движения, выполненный с возможностью интерполировать первый опорный кадр с использованием устанавливаемого по умолчанию фильтра, чтобы создавать интерполированный по умолчанию кадр, и выполненный с возможностью интерполировать второй опорный кадр с использованием альтернативного фильтра, чтобы создавать альтернативно интерполированный кадр, запоминающее устройство для опорных кадров, выполненное с возможностью сохранять интерполированный по умолчанию кадр и сохранять альтернативно интерполированный кадр, модуль принятия решения относительно фильтров, выполненный с возможностью принимать текущий кадр, принимать интерполированный по умолчанию кадр, принимать альтернативно интерполированный кадр и определять, для каждой позиции целого пикселя и подпикселя, использовать ли в заключительном кадре устанавливаемый по умолчанию фильтр или альтернативный фильтр; и генерировать заключительный кадр.
Еще один вариант осуществления представляет собой устройство кодирования видеосигналов, включающее в себя средство для приема текущего кадра, средство для сохранения множества интерполированных опорных кадров в запоминающем устройстве для опорных кадров, средство для приема множества интерполированных опорных кадров из запоминающего устройства для опорных кадров, средство для создания заключительного кадра и средство для определения для каждой позиции целого пикселя и подпикселя в заключительном кадре, использовать ли устанавливаемый по умолчанию фильтр или альтернативный фильтр.
Другой вариант осуществления представляет собой устройство кодирования видеосигналов, включающее в себя модуль компенсации движения, выполненный с возможностью интерполировать первый опорный кадр с использованием устанавливаемого по умолчанию фильтра, чтобы создавать интерполированный по умолчанию кадр, и выполненный с возможностью интерполировать второй опорный кадр с использованием альтернативного фильтра, чтобы создавать альтернативно интерполированный кадр, модуль принятия решения относительно фильтров, выполненный с возможностью принимать текущий кадр, принимать интерполированный по умолчанию кадр, принимать альтернативно интерполированный кадр, определять, для каждой позиции целого пикселя и подпикселя, использовать ли в заключительном кадре устанавливаемый по умолчанию фильтр или альтернативный фильтр, и генерировать заключительный кадр.
Другой вариант осуществления представляет собой устройство кодирования видеосигналов, включающее в себя средство для приема текущего кадра, средство для приема множества интерполированных опорных кадров, средство для создания заключительного кадра и средство для определения для каждой позиции целого пикселя и подпикселя в заключительном кадре, использовать ли устанавливаемый по умолчанию фильтр или альтернативный фильтр.
Краткое описание чертежей
Вышеизложенные аспекты и многие из сопутствующих преимуществ этой заявки иллюстрируются посредством примера, но не ограничиваясь этим, на прилагаемых чертежах, на которых
Фиг.1 - блок-схема, иллюстрирующая систему кодирования и декодирования видеосигналов.
Фиг.2 - блок-схема, иллюстрирующая видеокодер.
Фиг.3 - блок-схема, иллюстрирующая запоминающее устройство для опорных кадров и модуль принятия решения относительно фильтров.
Фиг.4 - блок-схема последовательности операций способа, описывающая процесс определения наилучшей комбинации фильтров.
Фиг.5 - блок-схема видеокадра, показывающая дробные позиции пикселя для интерполяции.
Фиг.6 - блок-схема, иллюстрирующая оценку движения видеоизображения.
Фиг.7 - блок-схема, иллюстрирующая видеокадр, включающий в себя интра-кадр (внутренний кадр), предсказанный кадр и двунаправленный кадр.
Фиг.8 - блок-схема, иллюстрирующая видеокадр, содержащий слой В, который содержит два вектора движения.
Фиг.9 - блок-схема последовательности операций способа, описывающая процесс создания заключительного опорного кадра.
Осуществление изобретения
Далее со ссылкой на чертежи будут описаны конкретные варианты осуществления заявки. Терминология, используемая в представленном здесь описании, не предназначена для интерпретирования каким-либо ограниченным или ограничительным способом просто из-за того, что она используется вместе с подробным описанием некоторых конкретных вариантов осуществления заявки.
В одном варианте осуществления система интерполирует заданный блок или кадр видеоинформации с использованием множества фильтров, чтобы создавать многочисленные опорные кадры. Для каждого фильтра система после этого вычисляет векторы движения из заданного опорного кадра. Затем выполняется вычисление, чтобы определить, для каждого пикселя, который фильтр обеспечивает самую низкую частоту появления ошибок и показатель искажения. В некоторых вариантах осуществления исследуется ожидаемая рабочая характеристика одного или комбинации фильтров для каждого подпикселя и целого пикселя в пределах видеокадра. Затем выбирается наилучший фильтр для кодирования значений подпикселей и целых пикселей для каждой позиции в видеокадре.
В одном варианте осуществления система накапливает измерения погрешностей суммарных абсолютных разностей (SAD) для всех доступных позиций в единственном кадре с использованием множества фильтров. Измеряя SAD, система может определять, выгодно ли использовать адаптивный фильтр (например, адаптивный интерполирующий фильтр (AIF)), соответствующий этой позиции, или может быть более удобным (в отношении SAD и взвешенной стоимости в расчете на бит) использовать устанавливаемый по умолчанию интерполирующий фильтр, или не использовать фильтр вообще, чтобы кодировать значения пикселей.
В другом варианте осуществления используется процесс использования оптимальных критериев выбора для комбинации доступных фильтров, приводящий к минимальной вычислительной стоимости (или SAD плюс биты взвешенного кодирования, используемые не устанавливаемыми по умолчанию интерполирующими фильтрами). При заданных матрице и векторе, может оказаться возможным вычислять на компьютере погрешность, соответствующую каждому из векторов решений, и выбирать фильтр для каждой позиции подпикселя, указывающей минимальную вычислительную стоимость.
В еще одном варианте осуществления используется итерационный процесс. Этот процесс включает в себя начало работы с возможного решения (любого допустимого вектора решений) и обнаружение позиции, для которой альтернативный фильтр обеспечивает самое большое уменьшение погрешности. Затем эта новая позиция обновляется с помощью значения выбора нового фильтра, и процесс повторяется до тех пор, пока не будет больше возможных улучшений, улучшения будут незначительными (ниже предварительно определенного порогового значения), или будет достигнуто максимальное число итераций.
В еще одном варианте осуществления используется упрощенная эвристика для нахождения аппроксимации минимальной стоимости с использованием классов симметрии. Этот способ рассматривает только вклады от погрешности, в которых позиции двух опорных блоков используют один и тот же фильтр. Это случается, когда позиции идентичны, или когда они принадлежат классу симметрии.
В другом варианте осуществления используется таблица квантования, что улучшает кодирование коэффициентов фильтров, используемых на позициях целых пикселей, при этом точность квантования зависит от местоположения коэффициентов, при использовании процесса неравномерного квантования.
Соответствие блоков представляет собой самый распространенный способ оценки движения. Обычно каждый макроблок (то есть, 16×16 пикселей) в видеокадре сравнивается со сдвинутыми областями такого же размера из предыдущего кадра, и сдвиг, который приводит к минимальной погрешности, выбирается как наилучший вектор движения для этого макроблока.
Интра-кадры (или I-кадры) представляют собой кадры, закодированные независимо от любого другого кадра; они могут генерироваться кодером, чтобы создавать точку произвольного доступа. Интра-кадры обычно требуют большего количества битов для кодирования, чем другие типы изображений. Часто I-кадры используются для произвольного доступа и используются в качестве ссылок для декодирования других кадров.
Предсказанные кадры (или P-кадры) требуют предварительного декодирования некоторых других кадров (кадров) для их декодирования и могут содержать и данные изображения, и смещения векторов движения. В H.264, во время декодирования предсказанные кадры могут использовать множество предварительно декодированных кадров в качестве опорных, и могут иметь любое произвольное соотношение порядка - отображения относительно кадров (кадров), используемых для их предсказания. Также обычно предсказанные кадры требуют меньшего количества битов для кодирования, чем интра-кадры.
Двунаправленные предсказанные кадры (или В-кадры) требуют предварительного декодирования некоторого другого кадра (кадров) для их декодирования, могут содержать и данные изображения, и смещения векторов движения, и включают в себя некоторые виды предсказания, которые формируют предсказание посредством усреднения предсказаний, полученных с использованием двух различных предварительно декодированных опорных областей. В H.264, двунаправленные предсказанные кадры могут использоваться или не использоваться в качестве опорных для декодирования других изображений. В-кадры обычно требуют меньшего количества битов для кодирования, чем либо интра-кадры, либо предсказанные кадры.
Фиг.1 представляет блок-схему, иллюстрирующую систему 10 кодирования и декодирования видеосигналов. Как показано на фиг.1, система 10 включает в себя устройство 12 источника данных, которое передает закодированный видеосигнал на приемное устройство 14 через канал 16 связи. Устройство 12 источника данных может включать в себя источник 18 видеоинформации, видеокодер 20 и передатчик 22. Передатчик 22 может быть проводным/беспроводным передатчиком. Приемное устройство 14 может включать в себя приемник 24, видеодекодер 26 и устройство 28 отображения видеоинформации. В некоторых аспектах, приемник 24 может быть беспроводным приемником, таким как беспроводный приемник в телефонной трубке устройства беспроводной связи. Система 10 может быть выполнена с возможностью поддерживать альтернативную фильтрацию (или адаптивную фильтрацию) блоков компенсированного предсказания движения, чтобы улучшать и визуальное качество, и эффективность обработки.
В примере на фиг.1 канал 16 связи может содержать любое беспроводное или проводное средство связи, такое как радиочастотный спектр (РЧ) или одну или более физические линии передачи, или любую комбинацию беспроводных и проводных средств. Канал 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.
Видеокодер 20 и видеодекодер 26 могут работать в соответствии со стандартом сжатия видеоизображения, таким как MPEG-2, MPEG-4, ITU-T (Международный союз электросвязи - сектор телекоммуникаций) H.263 или ITU-T H.264/MPEG-4, Часть 10 (AVC (средства обработки аудиовизуальной информации)). Хотя на фиг.1 не показано, в некоторых аспектах, видеокодер 20 и видеодекодер 22 могут быть объединены с кодером и декодером звукового сопровождения, соответственно, и включать в себя соответствующие модули MUX-DEMUX (мультиплексора-демультиплексора) или другое аппаратное обеспечение и программное обеспечение, чтобы манипулировать кодированием и аудио, и видеосигналов в общем потоке данных или в отдельных потоках данных. Если это является подходящим, модули MUX-DEMUX могут согласовываться с протоколом мультиплексора ITU H.223 или с другими протоколами, такими как протокол пользовательских дейтаграмм (UDP).
Стандарт H.264 был разработан Экспертной группой по вопросам кодирования видеосигнала ITU-T и Экспертной группой по вопросам движущегося изображения (MPEG) ISO/IEC (Международной организации по стандартизации/Международной электротехнической комиссии), как продукт партнерства, известный как Объединенная группа по видеоизображениям (JVT). Стандарт H.264 описан в Рекомендации H.264 ITU-T, Перспективное кодирование видеосигналов для универсальных аудиовизуальных услуг, датированной мартом 2005 г., которая может упоминаться в данном описании, как стандарт H.264 или спецификация H.264, или стандарт H.264/AVC, или спецификация. В некоторых аспектах, технические приемы, описанные в этой заявке, могут применяться к устройствам, которые в общем соответствуют стандарту H.264, или к другим устройствам, которые в общем не соответствуют стандарту H.264.
Объединенная группа по видеоизображениям (JVT) продолжает работать над расширением масштабируемого кодирования видеосигналов (SVC) для AVC H.264/MPEG-4. Спецификация и H.264/MPEG-4AVC, и развиваемого расширения SVC представлены в форме Объединенного проекта (JD). Объединенная масштабируемая модель видеоизображений (JSVM), созданная посредством JVT, реализует инструментальные средства для использования в масштабируемом видеоизображении, которые могут использоваться в системе 10 для различных задач кодирования, описанных в этой заявке.
В некоторых аспектах, для телевизионного вещания, варианты осуществления относятся к применению усовершенствованного кодирования видеосигналов H.264 для предоставления видеоуслуг в реальном масштабе времени в системах многоадресной передачи мультимедиа сухопутной подвижной службы связи (TM3), использующих спецификацию радиоинтерфейса только прямой линии связи (FLO), "Спецификация радиоинтерфейса только прямой линии связи для многоадресной передачи мультимедиа сухопутной подвижной службы связи", опубликованной как Технический стандарт TIA-1099 (Ассоциация промышленности средств связи) ("Спецификация FLO"). Спецификация FLO включает в себя примеры, определяющие синтаксис и семантику битового потока и процессы декодирования, подходящие для радиоинтерфейса FLO. В качестве альтернативы видеоинформация может быть передана широковещательной рассылкой в соответствии с другими стандартами, такими как DVB-H (портативное цифровое видео- и телевещание), ISDB-T (цифровое наземное телевизионное вещание с объединенными услугами) или DMB (широковещательная рассылка цифрового мультимедиа). Следовательно, в некоторых случаях, устройство 12 источника данных может быть мобильным радиотерминалом, таким как телефонная трубка устройства беспроводной связи, сервер потокового видео или сервер телевизионного вещания. Однако технические приемы, описанные в этой заявке, не ограничены каким-либо конкретным типом системы широковещательной рассылки, группового вещания или системы с двухточечным соединением.
Каждый из видеокодера 20 и видеодекодера 26 может быть реализован в виде одного или более микропроцессоров, процессор цифровых сигналов (DSP, ПЦС), интегральных схем прикладной ориентации (ASIC, ИСПО), программируемых пользователем вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, встроенного программного обеспечения или любых их комбинаций. Следовательно, описанные в данном описании технические приемы могут быть реализованы в пределах одного или более устройств на интегральных схемах, которые могут быть упомянуты все вместе как устройство на интегральных схемах. Такое устройство на интегральных схемах может быть обеспечено в устройстве связи, таком как телефонная трубка устройства беспроводной связи. Каждый из видеокодера 20 и видеодекодера 26 может быть включен в один или более кодеров или декодеров, либо каждый из может быть включен в виде части объединенного кодера/декодера (кодека) в соответствующее мобильное устройство, абонентское устройство, устройство широковещательной рассылки, сервер или подобное устройство. Кроме того, каждое из устройства 12 источника видеоинформации и устройства 14 приема видеоинформации может включать в себя соответствующие компоненты модуляции, демодуляции, преобразования частоты, фильтрации и усилителя для передачи и приема закодированного видеосигнала, как это является подходящим, которые включают в себя компоненты радиочастотной (РЧ) беспроводной связи и антенны, достаточные для поддерживания беспроводной связи. Однако для обеспечения простоты иллюстрации, такие компоненты на фиг.1 не показаны.
Как упомянуто выше, видеосигналы включают в себя серии видеокадров. Видеокодер 20 работает на блоках пикселей в пределах индивидуальных видеокадров, чтобы кодировать видеоинформацию. Видеоблоки могут иметь фиксированные или изменяющиеся размеры, и могут отличаться по размеру в соответствии с указанным стандартом кодирования. В качестве примера стандарт ITU-T H.264 поддерживает интра-предсказание (внутреннее предсказание) при различных размерах блоков, таких как 16×16, 8×8, 4×4 для компонентов сигнала яркости и 8×8 для компонентов сигнала цветности. Стандарт ITU-T H.264 также поддерживает интер-предсказание (предсказание между блоками) при различных размерах блоков, таких как 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 и 4×4 для компонентов сигнала яркости и соответствующие масштабированные размеры для компонентов сигнала цветности. Видеоблоки меньших размеров могут обеспечивать лучшую разрешающую способность и могут использоваться для определений местоположения видеокадра, которые включают в себя верхние уровни детализации. В общем макроблоки и различные блоки меньших размеров могут рассматриваться, как видеоблоки. В некоторых случаях блоки меньших размеров могут упоминаться как субблоки. После предсказания может быть выполнено преобразование а блоке 8×8 остатка, или блоке 4×4 остатка. Также, дополнительное преобразование можно применять к коэффициентам DC блоков 4×4 для компонентов сигнала цветности или компонента сигнала яркости, если используется режим интра-предсказания субблоков 16×16.
Фиг.2 представляет блок-схему, иллюстрирующую видеокодер 20 более подробно. Видеокодер 20 может выполнять интра- и интер-кодирование блоков в пределах видеокадров. Интра-кодирование полагается на пространственное предсказание для снижения или удаления пространственной избыточности в данном видеокадре. Интер-кодирование полагается на временное предсказание, чтобы снижать, или удалять, временную избыточность в видеосигнале в пределах соседних кадров. Для интер-кодирования, видеокодер 20 выполняет оценку, чтобы отслеживать перемещение соответствующих видеблоков между двумя или более соседними кадрами.
Как показано на фиг.2, видеокодер 20 принимает текущий видеоблок 21 в пределах видеокадра, подлежащего кодированию. В примере на фиг.2 видеокодер 20 включает в себя модуль 23 оценки движения, запоминающее устройство 25 для опорных кадров, модуль 27 компенсации движения, модуль 29 преобразования блоков, модуль 31 квантования, модуль 33 инверсного квантования, модуль 35 обратного преобразования и модуль 37 энтропийного кодирования. Видеокодер 20 также включает в себя сумматор 39 и сумматор 41. Фиг.2 иллюстрирует компоненты временного предсказания видеокодера 20 для интер-кодирования видеоблоков. Хотя на фиг.2 для простоты иллюстрации не показано, видеокодер 20 также может включать в себя компоненты пространственного предсказания для интра-кодирования некоторых видеоблоков.
Модуль 23 оценки движения сравнивает видеоблок 21 с блоками в одном или более соседних видеокадрах, чтобы генерировать один или более векторов движения. Соседний кадр или кадры могут быть извлечены из запоминающего устройства 25 для опорных кадров. Оценка движения может быть выполнена для блоков переменных размеров, например, для 16×16, 16×8, 8×16, 8×8, или для меньших размеров блоков. Модуль 23 оценки движения идентифицирует блок в соседнем кадре, который наиболее близко соответствует текущему видеоблоку 21, например, на основании модели случайного искажения, и определяет смещение между блоками. Исходя из этого, модуль 23 оценки движения производит вектор движения, который указывает величину и траекторию смещения.
Векторы движения могут иметь точность в половину пикселя или четверть пикселя, или даже более высокую точность, позволяя видеокодеру 20 отслеживать движение с более высокой точностью, чем определение местоположений целых пикселей, и получать блок с более хорошим предсказанием. Когда используются векторы движения с дробными значениями пикселей, операции интерполяции могут выполняться в модуле 27 компенсации движения. Например, в стандарте H.264/AVC, чтобы получать сигнал яркости в позициях половин пикселей, может использоваться фильтр Винера с 6 отводами с коэффициентами (1, -5, 20, 20, -5, 1)/32. Чтобы получать сигналы яркости в местоположениях четвертей пикселей, может использоваться билинейная фильтрация на значениях в местоположениях целых пикселей и на интерполированных значениях в местоположениях половин пикселей. Билинейный фильтр также может использоваться в интерполяции дробных пикселей для компонентов сигнала цветности, которые могут иметь точность до 1/8 пикселя.
Модуль 23 оценки движения идентифицирует наилучший вектор движения для видеоблока с использованием модели определения искажения в зависимости от скорости передачи. Благодаря использованию результирующего вектора движения, модуль 27 компенсации движения формирует видеоблок предсказания с помощью компенсации движения. Видеокодер 20 формирует видеоблок остатка посредством вычитания видеоблока предсказания, произведенного модулем 27 компенсации движения, из первоначального, текущего видеоблока 21 в сумматоре 39. Модуль 29 преобразования блоков применяет преобразование к блоку остатка. Модуль 31 квантования квантует коэффициенты преобразования, чтобы дополнительно снизить скорость передачи данных. Модуль 37 энтропийного кодирования выполняет энтропийное кодирование квантованных коэффициентов для еще большего дополнительного снижения скорости передачи данных. Видеодекодер 26 выполняет обратные операции для восстановления закодированной видеоинформации.
Модуль 33 инверсного квантования и модуль 35 обратного преобразования применяют инверсное квантование и обратное преобразование, соответственно, чтобы восстанавливать блок остатка. Сумматор 41 добавляет восстановленный блок остатка к блоку компенсированного предсказания движения, произведенному модулем 27 компенсации движения, чтобы произвести восстановленный видеоблок (или принятие решения относительно фильтров для текущего кадра) для сохранения в запоминающем устройстве 25 для опорных кадров. Модуль компенсации движения, содержащий модуль 44 принятия решения относительно фильтров, выполненный с возможностью принимать опорные кадры из запоминающего устройства 25 для опорных кадров, принимает текущий кадр и производит восстановленный видеоблок, подлежащий сохранению в запоминающем устройстве 25 для опорных кадров фильтра. Восстановленный видеоблок может использоваться модулем 23 оценки движения и модулем 27 компенсации движения для кодирования блока в последующем видеокадре.
При выполнении компенсации движения для данного блока в текущем видеокадре 21 модуль 27 компенсации движения может использовать фиксированный набор фильтров, чтобы интерполировать опорный блок из опорного кадра. Если текущий блок однонаправлено предсказан, необходим один опорный блок, или если текущий блок двунаправлено предсказан, необходимы два опорных блока. В H.264, в некоторых случаях могут использоваться многочисленные опорные кадры в прямом и обратном направлениях. Фильтры, фактически используемые модулем 27 компенсации движения, зависят от дробной части вектора движения. Например, если вектор движения указывает на местоположение половины пикселя в опорном кадре в данном измерении, чтобы получить значение местоположения половины пикселя, устанавливаемый по умолчанию интерполирующий фильтр может использоваться в этом измерении с вектором движения половины пикселя. Если оба компонента вектора движения указывают на целочисленные местоположения, значения пикселей из опорного кадра в запоминающем устройстве 25 для опорных кадров могут использоваться непосредственно, без выполнения какой-либо операции интерполирующей фильтрации.
Фиг.3 представляет блок-схему, иллюстрирующую запоминающее устройство 25 для опорных кадров и модуль 44 принятия решения относительно фильтров, как показано на фиг.2. Иллюстративная блок-схема запоминающего устройства 25 для опорных кадров и модуля 44 принятия решения относительно фильтров на фиг.3 включает в себя текущий кадр 30, запоминающее устройство 25 для опорных кадров и модуль 44 принятия решения относительно фильтров. Текущий кадр 30 может быть передан в модуль 44 принятия решения относительно фильтров, чтобы использоваться для создания заключительного (или восстановленного) опорного кадра, подлежащего сохранению в запоминающем устройстве 25 для опорных кадров. Запоминающее устройство 25 для опорных кадров может поддерживать набор опорных кадров и передавать поддерживаемые опорные кадры в модуль 27 компенсации движения. В одном варианте осуществления набор опорных кадров, интерполированных с помощью устанавливаемых по умолчанию фильтров 32, 34 и 36, сохраняется в запоминающем устройстве 25 для опорных кадров и посылается в модуль 44 принятия решения относительно фильтров. В другом варианте осуществления набор опорных кадров, интерполированных с помощью альтернативных фильтров (или не устанавливаемых по умолчанию фильтров) 38, 40, 42, сохраняется в запоминающем устройстве 25 для опорных кадров и посылается в модуль 44 принятия решения относительно фильтров. В другом варианте осуществления, если емкость запоминающего устройства ограничена, при необходимости интерполированные кадры могут генерироваться в сумматоре. В одном варианте осуществления интерполированные кадры генерируются в реальном масштабе времени до тех пор, пока имеются в наличии первоначальные (не интерполированные) кадры, интерполирующие фильтры и варианты выбора фильтра. Альтернативный фильтр (не показан), постоянно находящийся в видеокодере 20, может быть адаптивным интерполирующим фильтром, отделимым адаптивным интерполирующим фильтром, фиксированным фильтром. В другом варианте осуществления альтернативный фильтр может быть адаптивным интерполирующим фильтром (AIF), который предлагает большую эффективность кодирования, особенно на видеопоследовательностях с высоким разрешением (например 720 p (пикселей)). Видеокодер 20 имеет фиксированный набор альтернативных фильтров для интерполирования блока в опорном кадре. В еще одном варианте осуществления видеокодер 20 может поддерживать двумерный неотделимый адаптивный интерполяционный фильтр, отделимый адаптивный интерполяционный фильтр, направленный адаптивный интерполяционный фильтр и усовершенствованный адаптивный интерполяционный фильтр. Двумерный неотделимый адаптивный интерполирующий фильтр использует двумерную матрицу для интерполирования кадров. Отделимый адаптивный интерполирующий фильтр использует скорее вертикальное сканирование (кадровую развертку), чем горизонтальное сканирование (строчную развертку), для интерполирования кадров. Направленный адаптивный интерполирующий фильтр использует диагональное сканирование для интерполирования кадров.
В другом варианте осуществления может использоваться усовершенствованный адаптивный интерполирующий фильтр (E-AIF) посредством добавления фильтра позиций целых пикселей и смещения фильтра к каждой позиции целого пикселя и подпикселя. Для каждой позиции целого пикселя и подпикселя E-AIF также оценивает ожидаемое увеличение показателя искажения альтернативного фильтра по сравнению с устанавливаемой по умолчанию интерполяцией и решает, использовать ли альтернативный фильтр и сообщать ли об этом в декодер или нет.
Модуль 44 принятия решения относительно фильтров может сравнивать суммарные непроизводительные потери битов (или стоимость) кодирования принимаемого текущего кадра 30, используя опорные кадры, интерполированные с помощью устанавливаемого по умолчанию фильтра 32, 34, 36, и опорные кадры, интерполированные с помощью альтернативных фильтров 38, 40, 42. В одном варианте осуществления модуль 44 принятия решения относительно фильтров может использовать масштабный коэффициент (не показано), чтобы восстанавливать позиции пикселей для определения абсолютной погрешности, соответствующей использованию либо устанавливаемых по умолчанию фильтров, либо альтернативных фильтров. В другом варианте осуществления модуль 44 принятия решения относительно фильтров может сравнивать значение абсолютной погрешности для каждого пикселя, выбирать между доступным фильтром и производить вектор решений, который снижает до минимума частоту появления ошибочных битов и искажение.
Модуль 44 принятия решения относительно фильтров также может принимать векторы движения (или данные вектора движения) 48. В одном варианте осуществления модуль принятия решения относительно фильтров может принимать текущий кадр 30, векторы 48 движения, интерполированные опорные кадры, такие как опорные кадры, интерполированные с помощью устанавливаемого по умолчанию фильтра 32, 34, 36, и опорные кадры, интерполированные с помощью альтернативного фильтра 38, 40, 42, чтобы создавать заключительные (или восстановленные) опорные кадры 45, 46, 47, подлежащие сохранению в запоминающем устройстве 25 для опорных кадров. В результате модуль 44 принятия решения относительно фильтров обеспечивает интерполированные опорные кадры 45, 46 и 47, в которых каждый целый пиксель или подпиксель интерполируется с использованием либо устанавливаемого по умолчанию, либо альтернативного фильтра. В другом варианте осуществления модуль 44 принятия решения относительно фильтров может выводить в запоминающее устройство 25 для опорных кадров массив решений (не показано). Массив решений (не показан) может обеспечивать значения решений, описывающие восстановленные опорные кадры 45, 46, 47. В одном варианте осуществления значения решений, обеспечиваемые массивом решений (не показано), могут быть, например, такими как [а (1), b (0), c (1), d (0)...]; при этом позиция подпикселя идентифицируется буквой, а решение выбора фильтра идентифицируется в двоичном формате (0 или 1) либо как использование устанавливаемого по умолчанию фильтра, либо альтернативного фильтра, имеющегося в распоряжении в видеокодере 20. В другом варианте осуществления значения решений, обеспечиваемые массивом решений, могут быть, например, такими как [а (1), b (2), c (3), d (4)...], при этом позиция подпикселя идентифицирована буквой, а решение выбора фильтра идентифицировано с использованием числового формата, используемого для идентифицирования фактического типа фильтра, который нужно использовать в позиции подпикселя. В одном варианте осуществления множество устанавливаемых по умолчанию фильтров и множество адаптивных интерполирующих фильтров могут сравниваться друг с другом для того, чтобы определять наиболее эффективный фильтр для кодирования каждой позиции подпикселя. В другом варианте осуществления множество адаптивных интерполирующих фильтров сравниваются друг с другом для того, чтобы определять наиболее эффективный адаптивный фильтр, который нужно применять во время кодирования для каждой позиции подпикселя.
Фиг.4 изображает иллюстративный процесс 50 определения наилучшей комбинации фильтров с использованием системы, показанной на фиг.3. Процесс начинается в блоке 51 с видеокодера 20, вычисляющего векторы движения кадров системы отсчета для текущего кадра. Опорные кадры могут быть интра-кадрами или предсказанными кадрами. Текущий кадр 30 может быть двунаправленным предсказанным кадром. В одном варианте осуществления текущий кадр ссылается на предыдущий интра-кадр, и применяется ограниченный поиск, использующий соответствие блоков, чтобы вычислять вектор движения, описывающий предыдущее смещение. В другом варианте осуществления текущий кадр ссылается на будущий предсказанный кадр, и применяется ограниченный поиск, использующий соответствие блоков, чтобы вычислять вектор движения, описывающий предсказанное смещение. После того, как данные вектора движения вычислены, они передаются в модуль 44 принятия решения относительно фильтров, как описано на фиг.3.
Затем процесс 50 переходит к блоку 52 и вычисляет коэффициенты альтернативных фильтров. В одном варианте осуществления выбирается адаптивный интерполирующий фильтр, и посылаются коэффициенты, обычно два вектора, содержащие вектор коэффициентов и вектор смещения. Например, вектор коэффициентов, содержащий шесть коэффициентов, может быть таким как [1, 0, 1, 0, 1, 1], а соответствующий вектор смещения может быть таким как [-1, 0, 2, 1, 3, 0]. Для каждой позиции подпикселя посылается одно значение смещения, плюс одно смещение для позиции целого пикселя. Таким образом, могут быть два вектора, один для выбора фильтра, а другой, имеющий такой же размер, для смещений. В другом варианте осуществления используется набор фиксированных, предварительно вычисленных фильтров вместо адаптивного определения коэффициентов для каждого кадра.
Затем процесс 50 переходит к блоку 53, и генерируются опорные кадры с использованием альтернативных фильтров. В одном варианте осуществления опорный кадр генерируется с использованием усовершенствованного адаптивного интерполирующего фильтра и сохраняется в запоминающем устройстве 25 для опорных кадров. Опорный кадр может интерполироваться с использованием адаптивного интерполирующего фильтра, усовершенствованного адаптивного интерполирующего фильтра или комбинации не устанавливаемых по умолчанию фильтров.
Затем процесс 50 переходит к блоку 54 и вычисляет погрешность для каждого блока с помощью каждой комбинации доступных фильтров. В одном варианте осуществления текущий кадр 30 сравнивается с интерполированным опорным кадром с использованием альтернативного интерполирующего фильтра, и определяется частота появления ошибок и показатель искажения. В другом варианте осуществления текущий кадр 30 сравнивается с интерполированным опорным кадром с использованием устанавливаемого по умолчанию фильтра H.264, и определяется частота появления ошибок и показатель искажения.
Затем процесс 50 переходит к блоку 55 и определению стоимости коэффициентов кодирующих фильтров. В одном варианте осуществления модуль 44 принятия решения относительно фильтров на фиг.3 определяет стоимость для каждой позиции подпикселя коэффициентов кодирующих фильтров, использует устанавливаемый по умолчанию фильтр в сравнении с использованием альтернативного интерполирующего фильтра, при этом стоимость определяется в непроизводительных потерях битов.
Если некоторые позиции рассматриваются как симметричные, может быть определен и выбран единственный фильтр из более чем одной позиции подпикселя. Например, позиции подпикселя 'а' и 'c' могут использовать фильтры, которые являются зеркальными изображениями других позиций.
Затем процесс 50 переходит к блоку 56 и определяет наилучшую комбинацию фильтров. В одном варианте осуществления для каждой позиции целого пикселя и подпикселя в заключительном кадре делается определение относительно того, использовать ли устанавливаемый по умолчанию фильтр или альтернативный фильтр, основываясь на фильтре, имеющем при сравнении более низкие частоту появления ошибок и показатель искажения.
Ниже описаны математические вычисления, используемые для определения показателя искажения на пиксель:
Std
SAD, вычисляется сумма абсолютных разностей погрешности компенсированного предсказания движения на основании устанавливаемого по умолчанию интерполирующего фильтра;
AIF
SAD, вычисляется погрешность компенсированного предсказания движения на основании альтернативных интерполирующих фильтров;
AIF
λ·nBits, вычисляется стоимость (в битах) дополнительной информации, необходимой для кодирования коэффициентов фильтров, умножается на лямбду масштабного коэффициента и добавляется к SAD;
Std
AIF
Наконец, сравниваются SAD и SAD +λ·nBits, и самое низкое значение используется для определения, должны ли использоваться альтернативные или устанавливаемые по умолчанию интерполирующие фильтры.
В одном варианте осуществления, если выбор фильтра использует предварительно определенные и предварительно вычисленные фильтры, кодер принимает только информацию, связанную с выбором фильтров. Например, при использовании итерационного способа, который находит стоимость, которая является локальной минимальной аппроксимацией для оптимальной стоимости, никакая дополнительная информация, такая как стоимость (в битах), передаваться не должна.
Фиг.5 представляет блок-схему видеокадра, показывающую позиции дробных пикселей для интерполяции. Также фиг.5 иллюстрирует набор позиций дробных пикселей (или подпикселей) в видеокадрах. На фиг.5, всего имеется 15 позиций подпикселей, обозначенных на фиг.5 символами "a"-"o". Кроме того, эта блок-схема может использоваться для обеспечения симметричных данных и может снижать непроизводительные затраты на вычисления. Например, позиции 'а' 61 и 'c' 63 1/2 пикселей могут быть симметричными, снижая непроизводительные затраты на вычисления, вовлеченные в обработку интерполяции. В еще одном примере позиция 'C3' 65 подпикселя может быть симметричной с позицией подпикселя 'C4' 69, приводя к снижению вычислительных непроизводительных затрат во время обработки интерполяции.
Упрощенный эвристический способ рассматривает только вклады от погрешностей, в которых позиции двух опорных блоков используют один и тот же фильтр. Это случается, когда позиции идентичны или когда они принадлежат одному и тому же классу симметрии (например e, g, m и o на фиг.5).
dii
С помощью этого подхода можно накапливать погрешность в векторе C, и задача может быть выражена как:
i
Благодаря независимости выбора, может быть найдено решение посредством независимого снижения до минимума каждого d.
Фиг.6 представляет блок-схему, иллюстрирующую оценку движения. В общем оценка движения используется для того, чтобы определять векторы движения для каждого макроблока в текущем кадре по сравнению с опорным кадром. Процесс вычисления вектора движения содержит выполнение алгоритма поиска, который определяет наилучшее соответствие между макроблоком в текущем кадре и блоком пикселей из опорного кадра. Алгоритм поиска в общем выполняется с использованием вычисления суммарной абсолютной разности (SAD), которая является известной в уровне техники. В частности, оценка движения сравнивает каждый макроблок в текущем кадре с его окружающей областью в предыдущем кадре и пытается находить соответствие, обозначенное минимальной SAD.
Помимо этого фиг.6 иллюстрирует соотношение между последовательным набором видеокадров. Фиг.6 изображает интра-кадр (или I-кадр) 60 как опорный кадр и предсказанный кадр (или P кадр) 62 как текущий кадр. Предсказанный кадр (P кадр) 62 определяет первый макроблок 66 и выполняет оценку движения посредством определения второго макроблока 64 в интра-кадре 60 (или опорном кадре). Пиксели в пределах первого макроблока 66 и второго макроблока 64 сравниваются и вычисляется суммарная абсолютная разность (SAD), и в результате определяются векторы 68 движения.
Фиг.7 представляет блок-схему, иллюстрирующую видеокадр, включающий в себя интра-кадр, предсказанные кадры и двунаправленные предсказанные кадры. Как иллюстрируется, интра-кадр 70 не делает ссылку ни на какой другой кадр, кроме себя. В одном варианте осуществления интра-кадр представляет собой первый кадр, принятый в последовательности кадров. В общем интра-кадры не делают ссылки на какие-либо предшествующие кадры и не имеют возможности делать ссылку на кадры в будущем. С другой стороны, предсказанные кадры могут ссылаться на предыдущие интра-кадры или будущие предсказанные кадры. Как показано на блок-схеме, первый предсказанный кадр 76 делает ссылку на интра-кадр 70 и не делает ссылку на первый В кадр 72 или второй В кадр 74. В кадры обычно делают ссылку либо на интра-кадры, либо на предсказанные кадры, и в прошлом и в будущем. Как показано на фиг.7, первый В кадр 72 делает ссылку и на первый интра-кадр 70, и на первый предсказанный кадр 76, чтобы определить наилучший вектор движения. Как показано на фиг.7, второй В кадр 74 делает ссылку и на первый интра-кадр 70, и на первый предсказанный кадр 76.
Фиг.8 представляет блок-схему, иллюстрирующую видеокадр, содержащий двунаправленный предсказанный слой, который содержит два вектора движения. В одном варианте осуществления первый двунаправленный предсказанный кадр 72 определяет первый двунаправленный предсказанный макроблок 814, имеющий размер 16×16, делает ссылку на интра-кадр 70 (предшествующий кадр), определяет второй макроблок 806 интра-кадра, имеющий размер 16×16, и первый предсказанный кадр 76 (будущий кадр) определяет третий предсказанный макроблок 810, имеющий размер 16×16. В другом варианте осуществления опорные кадры также могут быть двумя двунаправленными предсказанными кадрами, двумя предсказанными кадрами или комбинацией предсказанного кадра и двунаправленного предсказанного кадра. Первый двунаправленный предсказанный кадр 72 вычисляет и идентифицирует два вектора движения, первый интра-вектор 820 движения и второй предсказанный вектор 822 движения, как иллюстрируется на фиг.8. Интра-кадр 70 идентифицирует первый интра-пиксель 808, имеющий самую маленькую сумму значений абсолютных разностей, со ссылкой на первый двунаправленный предсказанный кадр 72. Как показано на фиг.8, первый предсказанный кадр 76 идентифицирует первый предсказанный пиксель 812, имеющий самую маленькую сумму значений абсолютных разностей, со ссылкой на первой предсказанный кадр 72.
При идентификации первого интра-пикселя 808 и первого предсказанного пикселя 812, создается матрица, как описано ниже; при этом 'а' представляет первый интра-пиксель 808, а 'b' представляет первый предсказанный пиксель 812.
Матрица C содержит погрешности, накопленные в течение предсказания, при этом 'а' и 'b' представляют позиции подпикселей. Так, на фиг.8, первый вектор 820 интра-движения указывает на позицию 'а' подпикселя, а второй вектор 822 предсказанного движения указывает на позицию 'b' подпикселя. К матрице C=[0, 0, a, b] кодер будет добавлять погрешность предсказания, вычисленную посредством применения устанавливаемых по умолчанию фильтров (выбор 0), и к первому интра-пикселю 808, и к первому предсказанному пикселю 812. Для матрицы C=[1, 0, a, b] кодер будет обновляться, добавляя погрешность предсказания, полученную при интерполировании первого интра-пикселя 808 с помощью адаптивного фильтра и первого предсказанного пикселя 812 с помощью устанавливаемого по умолчанию фильтра (выбор 1 0). К матрице C=[0, 1, a, b] кодер будет добавлять погрешность предсказания, полученную при интерполировании первого интра-пикселя 808 с помощью устанавливаемого по умолчанию фильтра и первого предсказанного пикселя 812 с помощью адаптивного фильтра (выбор 0 1). Наконец, для матрицы C=[1, 1, a, b] кодер будет обновляться с помощью погрешности предсказания, полученной от интерполяции обоих пикселей с помощью адаптивного фильтра (выбор 1 1).
1
2
n
Для каждой позиции целого пикселя и подпикселя может быть вычислен вектор решений D=(d, d,...,d), с di ∈ {0, 1} и i=1,...,n.
Флаг фильтра '1' или '0' для каждой позиции подпикселя, представляющей уникальный набор коэффициентов фильтра, посылается для того, чтобы указать, используется ли устанавливаемый по умолчанию или альтернативный фильтр для этой позиции подпикселя. Если флаг фильтра установлен на '1', то для этой позиции подпикселя коэффициенты альтернативного фильтра предсказываются, квантуются, кодируются и применяются к соответствующим позициям подпикселей. Если флаг фильтра установлен на '0', то используются устанавливаемые по умолчанию интерполирующие фильтры, чтобы интерполировать эту позицию подпикселя и симметричные с ней позиции подпикселей.
В эвристическом решении при использовании классов симметрии накапливается погрешность, если и интра-пиксель 808, и предсказанный пиксель 812 указывают на одну и ту же позицию подпикселя. Например, матрица может быть упрощена следующим образом:
di,dj,i,j
i
j
В bi-предсказанном (двунаправленном) блоке позиции целых пикселей и подпикселей для двух опорных блоков, используемых в предсказании, могут быть разными, так что погрешность SAD должна собираться для каждой комбинации позиций. Можно выполнять итерацию по всем блокам и, в однократном прохождении, накапливать абсолютные разности между первоначальными и интерполированными пикселями в четырехмерной матрице, в которой C представляет сумму абсолютных разностей, накопленных для позиций i, j=1,..., n, когда принятие решения относительно фильтров представляет собой d, d ∈{0, 1}.
Для каждого блока, подлежащего кодированию, позиции i и j относятся ко второму макроблоку 806 (A) интра-кадра и третьему предсказанному макроблоку 810 (B). Затем для каждого пикселя в блоке 814, вычисляются четыре предсказания с использованием pixStdX и pixAifX, пиксели интерполируются с помощью устанавливаемых по умолчанию и с помощью альтернативных фильтров:
наконец, восстановленные пиксели вычисляются как:
и используются для определения абсолютной погрешности, соответствующей использованию устанавливаемого по умолчанию или альтернативного интерполирующего фильтра. Погрешность будет накапливаться в матрице как:
b-масштабирование масштабного коэффициента может быть либо 0,5, либо может вычисляться в соответствии с последовательностью текущих и опорных кадров. Этот второй способ может использоваться для того, чтобы взвешивать большие вклады от предсказаний, происходящих от временно ближайшего опорного кадра.
Если один из двух опорных блоков пропущен, то вклады от погрешностей накапливаются только для одной из двух позиций. Кроме того, вклады от погрешностей для C[0][1] и C[1][0] не накапливаются, когда i=j и позиция является одной и той же для обоих опорных блоков.
i
Для каждого используемого альтернативного фильтра коэффициенты фильтра могут явно передаваться сигналами, таким образом, каждая позиция i=1,..., n (либо целого пикселя, либо подпикселя) имеет связанную взвешенную стоимость λ·nBits, с весовым множителем, отражающим вклад от битов в рабочую характеристику искажения в зависимости от скорости передачи. Если фильтры предварительно определены или предварительно вычислены и доступны для кодера, то может не требоваться передавать информацию, такую как стоимость (в расчете на биты).
1
2
n
С такой формальной системой, прикладная программа состоит из обнаружения вектора двоичного выбора D=(d, d,..., d), который снижен до минимума:
di,dj,i,j
i
n
При заданных матрице C и векторе λ·nBits можно исчерпывающе вычислять погрешность, соответствующую каждому из 2 векторов решений, и выбирать наименьшую.
Итерационный способ, который близко аппроксимирует оптимальную стратегию, включает в себя начало работы с возможного решения (любого допустимого вектора решений) и обнаружения позиции, для которой альтернативный фильтр имеет самое большое снижение погрешности. Эта позиция затем обновляется с помощью значения выбора нового фильтра, и процесс повторяется до тех пор, пока не останется больше возможных улучшений, улучшение будет незначительным (ниже предварительно определенного порогового значения) или будет достигнуто максимальное число итераций. Три критерия останова могут быть объединены вместе.
Описание псевдокода способа является следующим:
D[0,.., n-1]={0, 0, 0,..., 0}; //Начальное решение
SAD=ComputeSAD(D, C); //C - матрица стоимости
while (критерии останова не удовлетворены)
{(P, F)=FindPosition(D, C, SAD); //Найдены позиция и фильтр
//Уменьшение SAD наибольшее
D[P]=F; //Обновление D
SAD=ComputeSAD(D, C); //Обновление SAD}
Этот способ во многих случаях способен сходиться к локальному минимуму в 8-10 итерациях. Если n - количество позиций, а k - количество выборов (фильтров), доступных для каждой позиции, каждая итерация имеет n·(k-1) возможностей (поддержание k-1 фильтров на каждой из n позиций). Если мы ограничиваем максимальное число итераций самое большее значением c, этот способ будет иметь вычислительную сложность, которая является линейной по количеству позиций и фильтров.
Способ использования неравномерного квантования, то есть точность квантования, зависит от местоположения коэффициентов. Было найдено, что для коэффициентов с меньшей величиной (которые представляют собой коэффициенты, находящиеся дальше от центра фильтра), необходима лучшая точность по сравнению с коэффициентами с большей величиной (которые представляют собой коэффициенты, находящиеся ближе к центру фильтра).
FP
Матрица Q используется для определения точности квантования коэффициентов фильтра целых пикселей. Количества битов в матрице включают в себя 1 бит для знака, таким образом, например, центральный коэффициент будет квантоваться с 9 битами, из которых 1 используется для знака, а 8 битов - для величины погрешности.
FP
^FP
Было найдено экспериментально, что Q обеспечивает наилучшее квантование для P-кадров, в то время как В-кадры лучше кодируются с использованием более точного квантования, описываемого с помощью Q
Фиг.9 представляет блок-схему последовательности операций способа, описывающую процесс 92 создания заключительного опорного кадра на основании решений выбора фильтров с использованием системы, показанной на фиг.3. Процесс начинается в блоке 93 посредством идентификации набора опорных кадров и текущего кадра. Например, набора опорных кадров, сохраненных в запоминающем устройстве 25 для опорных кадров, и текущего кадра, переданного в модуль 27 компенсации движения, находящийся в видеокодере 26. В одном варианте осуществления набор опорных кадров содержит интра-кадр и предсказанные кадры.
Затем процесс 92 переходит к блоку 94 и интерполирует набор опорных кадров с использованием устанавливаемого по умолчанию фильтра для создания интерполированного по умолчанию кадра. Предварительно идентифицированный набор опорных кадров в запоминающем устройстве 25 для опорных кадров может интерполироваться с использованием устанавливаемого по умолчанию фильтра и передаваться в запоминающее устройство 25 для опорных кадров для сохранения и извлечения позже. Устанавливаемый по умолчанию фильтр может быть любым устанавливаемым по умолчанию фильтром (то есть, фильтром H.264), постоянно находящимся в видеокодере 20, который является нормативным, как объявлено организацией по стандартам. В одном варианте осуществления набор опорных кадров интерполируется с использованием устанавливаемого по умолчанию фильтра H.264 и сохраняется в запоминающем устройстве 25 для опорных кадров, находящемся в видеокодере 26.
Затем процесс 92 переходит к блоку 95 и интерполирует набор опорных кадров с использованием альтернативного фильтра для создания альтернативно интерполированного кадра. Предварительно идентифицированный набор опорных кадров в запоминающем устройстве 25 для опорных кадров может интерполироваться с использованием альтернативного фильтра и передаваться в запоминающее устройство 25 для опорных кадров для сохранения и извлечения позже. Альтернативный фильтр может постоянно находиться в модуле 27 компенсации движения или может постоянно находиться в другом компоненте, находящемся в кодере. Альтернативный фильтр может быть любым адаптивным фильтром (то есть, двумерным адаптивным интерполирующим фильтром, E-AIF и т.д.), постоянно находящимся в видеокодере 26. Другими словами, альтернативный фильтр представляет собой любой фильтр, который является доступным в видеокодере 20, который не помечен, как устанавливаемый по умолчанию фильтр. В одном варианте осуществления набор опорных кадров интерполируется с использованием усовершенствованного адаптивного интерполирующего фильтра и сохраняется в запоминающем устройстве 25 для опорных кадров, находящемся в видеокодере 26.
Затем процесс 92 переходит к блоку 96 и сравнивает, для каждой позиции подпикселя, имеют ли интерполированные опорные кадры, использующие устанавливаемый по умолчанию фильтр, более низкую суммарную погрешность, чем интерполированные опорные кадры, использующие альтернативный фильтр; при этом более низкая суммарная погрешность основана на самой низкой комбинации частоты появления ошибок и искажения. Позиция подпикселя может быть половиной пикселя, одной четвертью пикселя, одной восьмой пикселя или любым дробным значением, которое меньше единицы. В одном варианте осуществления позиция подпикселя определяется так, чтобы иметь более низкую суммарную погрешность с использованием устанавливаемого по умолчанию фильтра, а не альтернативного фильтра, после сравнения обоих интерполированных опорных кадров.
Затем процесс 92 переходит к блоку 97, в котором выбирается альтернативный фильтр, если он имеет более низкое значение суммарной погрешности. В одном варианте осуществления для каждой позиции подпикселя, подлежащей генерированию в заключительном кадре, выбирается альтернативный фильтр, если определено, что альтернативный фильтр (например, адаптивный интерполирующий фильтр) имеет более низкие частоту появления ошибок и показатель искажения.
В противном случае процесс 92 переходит к блоку 98, в котором выбирается устанавливаемый по умолчанию фильтр, если альтернативный фильтр не имеет более низкое значение суммарной погрешности. В одном варианте осуществления для каждой позиции подпикселя, подлежащей генерированию в заключительном кадре, выбирается устанавливаемый по умолчанию фильтр, если определено, что устанавливаемый по умолчанию фильтр имеет более низкие частоту появления ошибок и показатель искажения.
Затем процесс 92 переходит к блоку 99, в котором для каждой позиции подпикселя выбирается наилучшая комбинация либо устанавливаемого по умолчанию, либо альтернативного фильтра, чтобы генерировать заключительный опорный кадр. В одном варианте осуществления заключительный опорный кадр генерируется с использованием только устанавливаемого по умолчанию фильтра для каждой позиции подпикселя. В другом варианте осуществления заключительный опорный кадр генерируется с использованием альтернативных фильтров, определяемых, как имеющие более низкую суммарную частоту появления ошибок. В другом варианте осуществления заключительный опорный кадр генерируется с использованием комбинации альтернативных и устанавливаемых по умолчанию фильтров, определяемых, как имеющие более низкую суммарную частоту появления ошибок на позицию подпикселя.
Общепринятый язык, такой как, среди прочего, "может", "мог", "мог бы" или "способен", если определенно не заявлено иначе, или иначе не понятно по контексту, как это используется, в общем предназначен для того, чтобы передавать, что некоторые варианты осуществления включают в себя некоторые признаки, элементы и/или этапы, в то время как другие варианты осуществления их не включают в себя. Таким образом, такой общепринятый язык в общем не предназначен для того, чтобы подразумевать, что эти признаки, элементы и/или этапы всегда требуются для одного или более вариантов осуществления, или что один или более вариантов осуществления обязательно включают в себя логику для решения, с вводом или подсказкой пользователя или без них, независимо от того, включены ли эти признаки, элементы и/или этапы или должны выполняться в каком-либо конкретном варианте осуществления.
Любые описания процессов, элементы или блоки в блок-схемах последовательностей операций способа, описанных в данном описании и/или изображенных на прилагаемых чертежах, следует понимать как потенциально представляющие модули, сегменты или части кода, которые включают в себя одну или более выполнимых команд для реализации конкретных логических функций или этапов в процессе. Альтернативные реализации включены в объем вариантов осуществления, описанных в данном описании, в которых элементы или функции могут быть удалены, выполнены в порядке, отличающемся от показанного или обсуждавшегося, включая по существу одновременное выполнение или выполнение в обратном порядке, в зависимости от включенных функциональных возможностей, как должно быть понятно специалистам в данной области техники.
Технические приемы, описанные в данном описании, могут быть реализованы в аппаратном обеспечении, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Если технические приемы реализованы в программном обеспечении, они могут быть реализованы, по меньшей мере частично, посредством одной или более сохраненных или передаваемых команд или кода на компьютерно-читаемом носителе. Компьютерно-читаемый носитель может включать в себя носитель данных компьютера, средство связи или и то, и другое, и может включать в себя любое средство, которое облегчает перенос компьютерной программы с одного места на другое. Носитель данных может быть любым доступным носителем, к которому компьютер может получать доступ.
Посредством примера, а не ограничения, такой компьютерно-читаемый носитель может содержать RAM (оперативное запоминающее устройство, ОЗУ), такое как синхронное динамическое ОЗУ (SDRAM), постоянное запоминающее устройство (ROM, ПЗУ), энергонезависимое ОЗУ (NVRAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM, ЭСППЗУ), ЭСППЗУ, флэш-память, CD-ROM (неперезаписываемый компакт-диск) или другое оптическое запоминающее устройство на дисках, магнитное запоминающее устройство на дисках или другие магнитные устройства хранения данных, или любой другой носитель, который может использоваться для переноса или сохранения требуемого кода программы в форме команд или структур данных, и к которому компьютер может получать доступ.
Также любое соединение должным образом называется компьютерно-читаемым носителем. Например, если программное обеспечение передается с Web-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, скрученной пары, цифровой абонентской линии (DSL, ЦАЛ) или беспроводных технологий, таких как связь в инфракрасном, радиочастотном и сверхвысокочастотном диапазоне, то коаксиальный кабель, волоконно-оптический кабель, скрученная пара, DSL или беспроводные технологии, такие как связь в инфракрасном, радиочастотном и сверхвысокочастотном диапазоне, включены в определение носителя данных. Термины "disk" (диск) и "disc" (диск), как используются в данном описании, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск технологии blu-ray, где disks (диски) обычно воспроизводят данные магнитным способом, в то время как discs (диски) воспроизводят данные оптическим способом, например, с помощью лазеров. Комбинации вышеупомянутых устройств также должны быть включены в область определения компьютерно-читаемого носителя.
Код, связанный с компьютерно-читаемым носителем компьютерного программного продукта, может выполняться компьютером, например, одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSP, ПЦС), микропроцессоров общего назначения, интегральных схем прикладной ориентации (ASIC, ИСПО), программируемых пользователем вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. В некоторых аспектах функциональные возможности, описанные в данном описании, могут обеспечиваться в пределах специализированных модулей программного обеспечения или модулей аппаратного обеспечения, выполненных с возможностью кодирования и декодирования, или встроенных в объединенный кодер-декодер (кодек) видеосигналов.
Выше были описаны различные аспекты. Эти и другие аспекты находятся в пределах объема последующей формулы изобретения.