×
20.02.2016
216.014.cef3

ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ

Вид РИД

Изобретение

Юридическая информация Свернуть Развернуть
№ охранного документа
0002575418
Дата охранного документа
20.02.2016
Краткое описание РИД Свернуть Развернуть
Аннотация: Изобретение относится к видеокодированию и, в частности, к фильтрации с адаптивным смещением отсчетов в процессе видеокодирования. Техническим результатом является повышение эффективности кодирования за счет адаптивного определения группировок полос на основе значения центра. Видеокодер, сконфигурированный для выполнения фильтрации с адаптивным смещением отсчетов, может определить значение центра для набора пикселей на основе значений пикселей в этом наборе, разделить полосы значений пикселей на группы на основе указанного значения центра и определить значения смещения для упомянутых полос на основе упомянутых групп. 4 н. и 33 з.п. ф-лы, 7 ил.
Реферат Свернуть Развернуть

Данная заявка испрашивает приоритет по предварительной заявке США №61/556,085, поданной 04 ноября 2011 года, содержание которой целиком включено в данный документ по ссылке.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение относится в общем к видеокодированию и в, частности, относится к фильтрации с адаптивным смещением отсчетов (SAO) в процессе видеокодирования.

УРОВЕНЬ ТЕХНИКИ

Возможности цифрового видео могут быть включены в устройства самого широкого применения, в том числе цифровые телевизионные приемники, системы прямого цифрового вещания, системы беспроводного вещания, персональные цифровые помощники (PDA), ноутбуки или настольные компьютеры, планшетные компьютеры, устройства для чтения электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые «смартфоны», устройства для проведения телеконференций, устройства потокового видео и т.п. Устройства цифрового видео реализуют различные методики сжатия видео, которые, например, описаны в стандартах, определенных как MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Часть 10, стандарт усовершенствованного видеокодирования (AVC), стандарт высокоэффективного видеокодирования (HEVC), находящийся в процессе разработки, а также расширения указанных стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или запоминать цифровую видеоинформацию более эффективно посредством реализации указанных методик сжатия видео.

Согласно методикам сжатия видео выполняется пространственное (внутрикадровое, интра-) предсказание и/или временное (межкадровое, интер-) предсказание с целью уменьшения или исключения избыточности, свойственной видеопоследовательностям. Для видеокодирования на блочной основе видеослайс (то есть, видеокадр или часть видеокадра) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками кодирования (CU), и/или узлами кодирования. Видеоблоки в слайсе изображения с интра-кодированием (I) кодируют с использованием пространственного предсказания применительно к опорным отсчетам в соседних блоках одного и того же изображения. В видеоблоках в слайсе изображения с интер-кодированием (P или B) может использоваться пространственное предсказание в отношении опорных отсчетов в соседних блоках одного и того же изображения или временное предсказание в отношении опорных отсчетов других опорных изображений. Изображения могут называться кадрами, а опорные изображения могут называться опорными кадрами.

В результате пространственного или временного предсказания получают предсказанный блок для блока, подлежащего кодированию. Остаточные данные представляют пиксельную разность между исходным блоком, подлежащим кодированию, и предсказанным блоком. Блок с интер-кодированием кодируют в соответствии с вектором движения, который указывает блок опорных отсчетов, образующих предсказанный блок, и остаточные данные, указывающие различие между кодированным блоком и предсказанным блоком. Блок с интра-кодированием кодируют в соответствии с режимом интра-кодирования и остаточными данными. Для дальнейшего сжатия остаточные данные можно преобразовать из пиксельной области в область преобразования, в результате чего получают остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, изначально скомпонованные в двумерной матрице, можно сканировать для формирования одномерного вектора коэффициентов преобразования. Затем можно применить энтропийное кодирование для достижения еще большего сжатия.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Здесь в общем случае описываются методики, относящиеся к фильтрации с адаптивным смещением отсчетов (SAO), и, в частности, описываются методики для сигнализации в закодированном битовом потоке о коэффициентах, используемых для SAO фильтрации на основе полос. В данном изобретении описываются методики для адаптивного определения группировок полос на основе значения центра, и использование определенных групп для сигнализации о значениях смещения для упомянутых полос.

В одном примере способ кодирования видеоданных включает в себя определение значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; разделение полос значений пикселей на группы на основе значения центра; и определение значений смещения для указанных полос на основе указанных групп.

В другом примере устройство видеокодирования включает в себя видеокодер, сконфигурированный для определения значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; разделения полос пиксельных значений на группы на основе значения центра; и определения значений смещения для указанных полос на основе указанных групп.

В еще одном примере в компьютерно-читаемом запоминающем носителе хранятся команды, которые инициируют определение одним или более центральными процессорами значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; разделение одним или более процессорами полос значений пикселей на группы на основе значения центра; и определение одним или более процессорами значений смещения для указанных полос на основе указанных групп.

В следующем примере устройство для кодирования видеоданных включает в себя средство для определения значения центра для набора пикселей, причем значение центра основано на значениях указанных пикселей; средство для разделения полос значений пикселей на группы на основе значения центра; и средство для определения значений смещения для указанных полос на основе указанных групп.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Фиг. 1 - блок-схема, иллюстрирующая приведенную в качестве примера систему видеокодирования и декодирования, в которой могут использоваться методики фильтрации для адаптивного смещения отсчетов, описанные в настоящем изобретении;

фиг. 2 - примеры, раскрывающие классификацию краевых смещений для фильтрации с адаптивным смещением отсчетов на основе краев;

фигуры 3А и 3В - примеры группирования полос для классификации смещений полос для фильтрации с адаптивным смещением отсчетов на основе полос;

фиг. 4 - блок-схема, иллюстрирующая примерный видеокодер, который может реализовать описанные в данном изобретении методики фильтрации с адаптивным смещением отсчетов;

фиг. 5 - блок-схема, иллюстрирующая примерный видеодекодер, который может реализовать описанные в данном изобретении методики фильтрации с адаптивным смещением отсчетов;

фиг. 6 - блок-схема, иллюстрирующая описанные в данном изобретении методики фильтрации с адаптивным смещением отсчетов.

ПОДРОБНОЕ ОПИСАНИЕ

Фильтрация с адаптивным смещением отсчетов (SAO) относится к типу контурной фильтрации, используемой в видеокодировании. В общем случае добавление значений смещения к пикселям в видеокадре (например, в восстановленном изображении) в некоторых случаях может улучшить кодирование без значительного увеличения непроизводительной нагрузки в битах, необходимой для хранения или передачи закодированных видеоданных. Повышение эффективности кодирования, потенциально являющееся результатом использования SAO фильтрации, может заключаться, например, в том, что декодированное изображение будет иметь более близкое сходство с исходным изображением. Как более подробно объясняется ниже, методики SAO позволяют применять разные значения смещения для разных пикселей (или блоков пикселей) в зависимости от классификационной метрики пикселя (или блока), такой как метрика краев, метрика полос или метрики других типов.

Как более подробно объясняется ниже, в некоторых конфигурациях блок SAO фильтра может быть сконфигурирован для выполнения фильтрации со смещением двух типов, обычно называемых в данном описании как фильтрация со смещением полос и фильтрация со смещением краев. Блок SAO фильтра иногда может также не применять смещение, что само по себе можно рассматривать в качестве фильтрации со смещением третьего типа. О типе фильтрации со смещением, применяемой SAO фильтром, может быть сообщено видеодекодеру в явном или в неявном виде. При применении фильтрации со смещением краев пиксели можно классифицировать на основе информации о крае блока кодирования, а смещение для пикселей может быть определено на основе классификации краев. Как более подробно объясняется со ссылками на фиг. 2, как правило, имеется четыре варианта SAO на основе краев, где значение пикселя сравнивают с двумя из его восьми соседних пикселей. Какие два пикселя использовать для сравнения, зависит от используемого варианта смещения на основе края. Смещение добавляют к значению пикселя, исходя из разницы в величине.

При использовании фильтрации со смещением полос пиксели можно отнести к разным полосам в зависимости от значения пикселя, например, значения интенсивности, причем каждая полоса имеет соответствующее смещение. Полоса включает в себя диапазон пиксельных значений. Например, пиксельные значения в диапазоне от 0 до 255 можно разбить на 32 равные полосы (обозначенные от 0 до 31), так что пиксельные значения 0-7 будут представлять первую полосу, пиксельные значения 8-15 буду представлять вторую полосу, пиксельные значения 16-23 будут представлять третью полосу и так далее для всех тридцати двух полос. Эти полосы можно использовать для определения того, какое конкретное значение смещения применить к пикселю или к группе пикселей. Например, если пиксель имеет значение 10 (которое находится в пределах второй полосы, то есть, в диапазоне значений 8-15, в приведенном выше примере), то тогда к пиксельному значению можно добавить смещение, связанное со второй полосой.

В целях сигнализации и формирования смещений для различных полос, эти полосы можно сгруппировать в две или более группы. Для фильтрации со смещением полос пиксели, например, могут быть отнесены к тридцати двум полосам (полосы 0-31), как было описано выше, а эти полосы можно сгруппировать в две группы (например, две группы из шестнадцати полос, одну группу из четырех полос и одну группу из двадцати восьми полос, одну группу из восьми полос и одну группу из двадцати четырех полос, либо использовать другие варианты группировки). Эти варианты группировки полос можно использовать для определения порядка, в котором будет выполняться сигнализация о значениях смещения для указанных полос в закодированном битовом видеопотоке, и/или их можно использовать для определения того, имеет ли конкретная полоса значение смещения, отличное от нуля. Сигнализация о смещении для указанных полос может осуществляться с использованием различных методик кодирования, согласно которым сигнализация о текущем значении передается в виде разности между текущим значением и предыдущим значением. Экономия бит, достигаемая в результате использования указанных методик кодирования, в некоторых случаях может зависеть от порядка выполнения сигнализации об упомянутых значениях. Например, более существенная экономия бит может быть достигнута в случаях, когда близкие значения смещения передаются в качестве сигнализации последовательно. В некоторых случаях можно положить, что все значения смещения для конкретной группы, например, упомянутой второй группы, равны нулю.

Согласно некоторым методикам указанные варианты группировки полос являются статическими. Например, согласно одной методике шестнадцать средних полос (полосы 8-23) всегда образуют одну группу из шестнадцати полос, в то время как восемь полос слева (полосы 0-7) и восемь полос справа (полосы 24-31) образуют вторую группу из шестнадцати полос. В данном изобретении описываются методики для динамического определения вариантов группировки полос. Как более подробно объясняется ниже, видеокодер или видеодекодер могут динамически определить вариант группировки полос путем динамического определения значения центра на основе значений пикселей. В некоторых конфигурациях сигнализация, указывающая значение центра, может быть обеспечена в закодированном битовом видеопотоке, так что видеодекодеру не придется определять значение центра на основе значений пикселей, а вместо этого он может определить это значение пикселя на основе сигнализации в явном виде, представленной в битовом потоке. Указанное значение центра можно использовать для определения первой группы полос, а остальные полосы могут образовать вторую группу полос. Как будет ясно из приведенных ниже примеров, термин «значение центра», используемый в данном изобретении, обычно относится к любому значению, которое можно использовать для выравнивания или для приблизительного выравнивания центра группы полос по конкретному значению пикселя. Таким образом, используемый здесь термин «значение центра», может относиться к конкретному значению пикселя, по которому выравнивается центр группы полос, или может представлять собой какое-либо другое значение, например, начальное значение пикселя или конечное значение пикселя для полосы или группы полос. В некоторых случаях, в отличие от идентификации значения пикселя, значение центра может идентифицировать конкретную полосу в качестве первой полосы группы, последней полосы группы, либо представлять иную идентификацию, на основе которой центр группы полос можно выровнять по конкретному пиксельному значению.

Динамическое определение вариантов группировки полос в некоторых случаях улучшает сигнализацию о коэффициентах смещения для SAO фильтрации и таким образом может повысить качество видеокодирования в целом. Такое динамическое определение вариантов группировки полос можно также использовать для определения того, для каких групп полос SAO фильтрация будет наиболее выгодной с точки зрения качества видеокодирования, в предположении, что другие полосы имеют нулевое значение смещения.

На фиг. 1 представлена блок-схема, где показан пример системы видеокодирования и декодирования, в которой могут быть использованы методики адаптивного SAO, описанные в настоящем изобретении. Как показано на фиг. 1, система 10 включает в себя устройство-источник 12, которое формирует закодированные видеоданные, подлежащие в дальнейшем декодированию устройством-адресатом 14. Устройство-источник 12 и устройство-адресат 14 могут содержать любое из самых разных устройств, в том числе, настольный компьютер, ноутбук (то есть «лэптоп»), планшетный компьютер, телевизионную приставку, телефонную трубку, такую как так называемый «смартфон», так называемый «смартпад», телевизионный приемник, камеру, устройство отображения, цифровой медиаплеер, видеоигровую консоль, устройство потокового видео или т.п. В некоторых случаях устройство-источник 12 и устройство-адресат 14 могут быть оборудованы средствами беспроводной связи.

Устройство-адресат 14 может принимать закодированные видеоданные, подлежащие декодированию, через линию 16 связи. Линия 16 связи может содержать среду или устройство любого типа, способное перемещать закодированные видеоданные от устройства-источника 12 на устройство-адресат 14. В одном примере линия 16 связи может содержать среду связи, позволяющую устройству-источнику 12 передавать закодированные видеоданные непосредственно на устройство-адресат 14 в режиме реального времени. Кодированные видеоданные могут быть модулированы в соответствии со стандартом связи, таким как протокол беспроводной связи, и могут передаваться на устройство-адресат 14. Среда связи может содержать любую среду проводной или беспроводной связи, например, радиочастотный (RF) спектр или одна или более физических линий передачи. Среда связи может составлять часть сети пакетной передачи, такой как локальная сеть, региональная сеть или глобальная сеть, например Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для осуществления связи между устройством-источником 12 и устройством-адресатом 14.

В качестве альтернативы закодированные данные могут выводиться из выходного интерфейса 22 в запоминающее устройство 32. Аналогичным образом, к закодированным данным возможен доступ со стороны запоминающего устройства 32 через входной интерфейс. Запоминающее устройство 32 может включать в себя любой запоминающий носитель из числа самых разных распределенных или локально доступных носителей данных, таких как накопитель на жестком диске, диски типа Blu-ray, диски DVD, диски CD, флэш-память, энергозависимая или энергонезависимая память, либо любой другой подходящий цифровой запоминающий носитель для хранения закодированных видеоданных. В еще одном примере запоминающее устройство 32 может соответствовать файловому серверу или другому промежуточному запоминающему устройству, которое может хранить закодированное видео, сформированное устройством-источником 12. Устройство-адресат 14 может обращаться к запомненным в запоминающем устройстве 32 видеоданным, используя потоковую передачу или загрузку видеоданных. Файловый сервер может представлять собой сервер любого типа, способный запоминать и хранить закодированные видеоданные и передавать их на устройство-адресат 14. Примеры файловых серверов включают в себя Веб-сервер (например, для Веб-сайта), FTP сервер, подключенные к сети запоминающие устройства (NAS) или локальный накопитель на диске. Устройство-адресат 14 может иметь доступ к закодированным видеоданным через любое стандартное соединение для передачи данных, в том числе Интернет соединение. Такое соединение может включать в себя беспроводной канал (например, Wi-Fi соединение), проводное соединение (например, DSL, кабельный модем и т.д.), либо комбинацию обоих видов соединений, которая подходит для доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача закодированных видеоданных из запоминающего устройства 32 может быть реализована в виде потоковой передачи, передачи с выгрузкой или их комбинации.

Раскрытые здесь методики не обязательно ограничиваются беспроводными приложениями или установками. Эти методики можно применить к видеокодированию для поддержки любого из разнообразных мультимедийных приложений, таких как эфирное телевизионное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео, например, через Интернет, кодирование цифрового видео для запоминания на носителе данных, декодирование цифрового видео, хранящегося на носителе данных, или другие приложения. В некоторых примерах система 10 может быть сконфигурирована для поддержки однонаправленной или двунаправленной передачи видео для поддержки приложений, таких как потоковое видео, видео воспроизведение, видеовещание и/или видеотелефония.

В примере по фиг. 1 устройство-источник 12 включает в себя источник 18 видео, видеокодер 20 и выходной интерфейс 22. В некоторых случаях выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве-источнике 12 источник 18 видео может включать в себя такой источник, как устройство захвата видео, например, видеокамеру, видеоархив, содержащий ранее захваченное видео, интерфейс подачи видео для приема видео от провайдера видеоконтента и/или системы компьютерной графики для формирования компьютерных графических данных в качестве исходного видео или комбинации указанных источников. Например, если источник 18 видео представляет собой видеокамеру, то устройство-источник 12 и устройство-адресат 14 могут образовать так называемые видеофоны или камерофоны. Однако описанные в данном изобретении методики можно применять к видеокодированию в целом и использовать для беспроводных и/или проводных приложений.

Захваченное в данный момент, предварительно захваченное или сформированное компьютером видео может быть закодировано видеокодером 20. Закодированные видеоданные могут передаваться непосредственно на устройство-адресат 14 через выходной интерфейс 22 устройства-источника 12. Закодированные видеоданные также (или в качестве альтернативы) могут запоминаться в запоминающем устройстве 32 для обращения к ним в будущем со стороны устройства-адресата 14 или других устройств для декодирования и/или воспроизведения.

Устройство-адресат 14 включает в себя входной интерфейс 28, видеодекодер 30 и устройство 32 отображения. В некоторых случаях входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства-адресата 14 принимает закодированные видеоданные через линию 16 связи. Закодированные видеоданные, переданные через линию 16 связи, или предусмотренные в запоминающем устройстве 32, могут включать в себя разнообразные синтаксические элементы, сформированные видеокодером 20 для использования видеодекодером, таким как видеодекодер 30, при декодировании видеоданных. Указанные синтаксические элементы могут быть включены в кодированные видеоданные, передаваемые через среду связи, запоминаемые на носителе данных или запоминаемые на файловом сервере.

Устройство 32 отображения может являться составной частью (или быть внешним) устройства-адресата 14. В некоторых примерах устройство-адресат 14 может включать в себя интегрированное в него устройство отображения, а также быть сконфигурировано для взаимодействия с внешним устройством отображения. В других примерах устройством-адресатом 14 может быть устройство отображения. В общем случае устройство 32 отображения отображает пользователю декодированные видеоданные и может содержать любое из разнообразных устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или устройство отображения другого типа.

Видеокодер 20 и видеодекодер 30 могут функционировать согласно стандарту сжатия видео, такому как стандарт высокоэффективного видеокодирования (HEVC), разрабатываемый в настоящее время, и может соответствовать тестовой модели HEVC (HM). Последний проект стандарта HEVC, называемый «HEVC Working Draft 8» или «WD8» описан в документе JCTVC-H1003_d7, Bross и др., «High efficiency video coding (HEVC) text specification draft 8» Объединенной команды разработчиков систем видеокодирования (JCT-VC) стандартов ITU-T SG16 WP3 и ISO/IEC JTC1/SC29/WG11, 10th Meeting: Stockholm, SE, July 11-20, 2012 года, который по состоянию на 2 октября 2012 года можно скачать по следующей ссылке: http://phenix.int-evry.fr/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC-J1003-v8.zip.

В качестве альтернативы видеокодер 20 и видеодекодер 30 могут работать согласно другим коммерческим или промышленным стандартам, таким как стандарт ITU-T H.264, также называемый MPEG-4, часть 10, AVC (усовершенствованное видеокодирование) или расширениям указанных стандартов. Однако методики, раскрытые в данном изобретении, не ограничиваются каким-либо конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя MPEG-2 и ITU-T H.263.

Хотя это на фиг. 1 не показано, согласно некоторым аспектам видеокодер 20 и видеодекодер 30 могут быть интегрированы каждый с аудиокодером и аудиодекодером и могут включать в себя соответствующие блоки MUX-DEMUX (мультиплексор-демультиплексор) или другие аппаратные и программные средства для кодирования как аудио, так и видео в общем потоке данных или в отдельных потоках данных. В некоторых примерах, если это имеет место, блоки MUX-DEMUX могут соответствовать Протоколу мультиплексора ITU H.223 или другим протоколам, таким как Протокол дэйтаграмм пользователя (UDP).

Видеокодер 20 и видеодекодер 30 могут быть реализованы каждый в виде любых подходящих схем кодера или декодера, таких как один или более микропроцессоров, процессоры DSP, интегральные схемы ASIC, вентильные матрицы FPGA, дискретные логические схемы, программные средства, аппаратные средства, программно-аппаратные средства или любая их комбинация. При частичной реализации указанных методик программными средствами устройство может хранить команды программного обеспечения на подходящем долговременном компьютерно-читаемом носителе для выполнения этих команд аппаратными средствами с использованием одного или более процессоров, реализующих раскрытые в изобретении методики. Как видеокодер 20, так и видеодекодер 30 могут быть включены в состав одного или более кодеров или декодеров, либо каждый из них может быть интегрирован в объединенном кодере/декодере («CODEC») в соответствующем устройстве.

JCT-VC работает над созданием стандарта HEVC. Работы по стандартизации HEVC основаны на совершенствуемой модели устройства видеокодирования, называемой тестовой моделью (HM) стандарта HEVC. В модели HM заложено несколько дополнительных возможностей для устройств видеокодирования по сравнению с существующими устройствами, соответствующими, например, стандарту ITU-T H.264/AVC. Например, в то время как стандарт H.264 обеспечивает девять режимов кодирования с интра-предсказанием, модель HM может обеспечить до тридцати трех режимов кодирования с интра-предсказанием.

В общем случае рабочая модель HM предполагает, что видеокадр или видеоизображение можно разделить на последовательность древовидных блоков или самых крупных блоков кодирования (LCU), которые включают в себя отсчеты яркости и отсчеты цветности. Назначение древовидного блока такое же, как у макроблока в стандарте H.264. Слайс включает в себя ряд последовательных древовидных блоков в порядке кодирования. Видеокадр или видеоизображение может быть разбито на один или более слайсов. Каждый древовидный блок можно разделить на блоки кодирования (CU) согласно квадродереву. Например, корневой узел квадродерева можно разделить на четыре дочерних узла, а каждый дочерний узел, в свою очередь, может представлять собой родительский узел и быть разделен на четыре других дочерних узла. Конечный не разделенный дочерний узел как концевой узел квадродерева содержит узел кодирования, то есть, кодированный видеоблок. Синтаксические данные, связанные с кодированным битовым потоком могут определять максимальное количество возможных разделений древовидного блока, а также могут определять минимальный размер узлов кодирования.

Блок CU включает в себя узел кодирования и блоки предсказания (PU) и блоки преобразования (TU), связанные с узлом кодирования. Размер блока CU соответствует размеру узла кодирования, причем он должен иметь квадратную форму. Размер блока CU может находиться в диапазоне от 8×8 пикселей до размера древовидного блока с максимальным размером 64×64 пикселя или более. Каждый блок CU может содержать один или более блоков PU и один или более блоков TU. Синтаксические данные, связанные с блоком CU, могут описывать, например, разбиение блока CU на один или более блоков PU. Режимы разбиения могут различаться в зависимости от того, пропущен ли блок CU, а также от того, в каком из режимов выполняется кодирование: в режиме прямого кодирования, кодирования с интра-предсказанием или с интер-предсказанием. Блоки PU могу быть разделены на части не квадратной формы. Синтаксические данные, связанные с блоком CU, могут также описывать, например, разбиение блока CU на один или более блоков TU согласно квадродереву. Блок TU может иметь квадратную или не квадратную форму.

Стандарт HEVC позволяет выполнять преобразование в соответствии с блоками TU, которые могут отличаться у разных блоков CU. Размер блоков TU, как правило, основан на размере блоков PU в данном блоке CU, определенном для разделенного блока LCU, хотя это не всегда так. Как правило, блоки TU имеют одинаковый или меньший размер с блоками PU. В некоторых примерах остаточные отсчеты, соответствующие одному блоку CU, можно дополнительно разделить на меньшие блоки, используя структуру квадродерева, известную под названием «остаточное квадродерево» (RQT). Концевые узлы дерева RQT могут называться блоками TU. Значения пиксельной разности, связанные с блоками TU, можно преобразовать для создания коэффициентов преобразования с последующим их квантованием.

В общем случае блок PU включает в себя данные, относящиеся к процессу предсказания. Например, когда блок PU закодирован в режиме интра-предсказания, он может включать в себя данные, описывающие режим интра-предсказания для данного блока PU. В другом примере, когда блок PU закодирован в режиме интер-предсказания, он может включать в себя данные, определяющие вектор движения для данного блока PU. Данные, определяющие вектор движения для блока PU, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешающую способность для вектора движения (например, с точностью до четверти пикселя или с точностью до одной восьмой пикселя), опорное изображение, на которое указывает вектор движения, и/или список опорных изображений (например, список 0, список 1 или список С) для вектора движения.

В общем случае блок TU используется в процессах преобразования и квантования. Данный блок CU, имеющий один или более блоков PU, может также включать в себя один или более блоков преобразования (TU). Вслед за предсказанием видеокодер 20 может вычислить остаточные значения, соответствующие данному блоку PU. Остаточные значения содержат значения пиксельной разности, которые можно преобразовать в коэффициенты преобразования, выполнить их квантование и сканирование с использованием блоков TU, чтобы создать сериализированные коэффициенты преобразования для энтропийного кодирования. В данном описании, как правило, используется термин «видеоблок» для ссылки на узел кодирования блока CU. В некоторых конкретных случаях в настоящем описании также может использоваться термин «видеоблок» для ссылки на древовидный блок, то есть, блок LCU или блок CU, который включает в себя узел кодирования и блоки PU и TU.

Видеопоследовательность, как правило, включает в себя ряд видеокадров или видеоизображений. Группа изображений (GOP) в общем случае содержит ряд, состоящий из одного или более видеоизображений. Группа GOP может включать в себя синтаксические данные в заголовке группы GOP, заголовок одного или более изображений или где-либо в другом месте, которые описывают количество изображений, включенных в группу GOP. Каждый слайс изображения может включать в себя синтаксические данные о слайсе, которые описывают режим кодирования для соответствующего слайса. Видеокодер 20 обычно работает с видеоблоками внутри отдельных видеослайсов для кодирования видеоданных. Видеоблок может соответствовать узлу кодирования в блоке CU. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размерам в соответствии с заданным стандартом кодирования.

Например, модель HM поддерживает предсказание для разных размеров PU. Положим, что размер конкретного блока CU составляет 2Nx2N, модель HM поддерживает интра-предсказание для размеров PU, составляющих 2Nx2N или NxN, и интер-предсказание для симметричных размеров PU, составляющих 2Nx2N, 2NxN, Nx2N или NxN. Модель HM также поддерживает асимметричное разбиение для интра-предсказания для размеров PU, составляющих 2NxnU, 2NxnD, nLx2N и nRx2N. При асимметричном разбиении в одном направлении блока CU разбиение отсутствует, в то время как в другом направлении выполняется разбиение на части в отношении 25% и 75%. Часть блока CU, соответствующая 25% части, обозначена как «n», после которой следует обозначение «Вверх», «Вниз», «Влево» или «Вправо». Таким образом, например, «2NxnU» относится к блоку CU размером 2Nx2N, который разбит по горизонтали на блок PU размером 2Nx0,5N сверху и блок PU размером 2Nx1,5N снизу.

В данном описании формы «NxN» и «N на N» могут использоваться как взаимозаменяемые для ссылки на пиксельные размеры видеоблока с точки зрения размеров по вертикали и горизонтали. Например, 16×16 пикселей или 16 на 16 пикселей. В общем случае блок размером 16×16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогичным образом блок NxN обычно имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет не отрицательное целое значение. Пиксели в блоке могут быть скомпонованы по строкам и столбцам. Кроме того, блоки не обязательно должны иметь одинаковое количество пикселей в горизонтальном направлении и в вертикальном направлении. Например, блоки могут содержать NxM пикселей, где M не обязательно равно N.

Вслед за кодированием с интра- или интер-предсказанием с использованием блоков PU блока CU видеокодер 20 может вычислить остаточные данные для блоков TU блока CU. Блоки PU могут содержать пиксельные данные в пространственной области (называемой также пиксельной областью), а блоки TU могут содержать коэффициенты в области преобразования после применения преобразования, например, дискретного косинусного преобразования (DCT), целочисленного преобразования, вейвлетного преобразования или концептуально подобного преобразования, примененного к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселями не кодированного изображения и предсказанными значениями, соответствующими блокам PU. Видеокодер 20 может образовать блоки TU, включающие в себя остаточные данные для блока CU, а затем преобразовать блоки TU для создания коэффициентов преобразования для данного блока CU.

После любого преобразования для создания коэффициентов преобразования видеокодер 20 может выполнить квантование коэффициентов преобразования. Квантование в общем случае относится к процессу, в ходе которого выполняется квантование коэффициентов преобразования с целью возможного сокращения объема данных, используемых для представления указанных коэффициентов, что обеспечивает дополнительное сжатие. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми упомянутыми коэффициентами. Например, n-битовое значение можно округлить в меньшую сторону, получив m-битовое значение во время квантования, где n больше, чем m.

В некоторых примерах видеокодер 20 может использовать заранее определенное сканирование или порядок «сканирования» для сканирования квантованных коэффициентов преобразования, чтобы получить сериализированный вектор, который можно закодировать с использованием энтропийного кодирования. В других примерах видеокодер 20 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора видеокодер 20 может выполнить кодирование этого одномерного вектора, используя энтропийное кодирование, например, в соответствии с контекстно-зависимым адаптивным кодированием с переменной длиной слова (CAVLC), контекстно-адаптивным бинарным арифметическим кодированием (CABAC), синтаксически ориентированным адаптивным бинарным арифметическим кодированием (SBAC), вероятностным энтропийным кодированием с интервальным разбиением (PIPE), или другим методом энтропийного кодирования. Видеокодер 20 может также, выполнить энтропийное кодирование синтаксических элементов, связанных с закодированными видеоданными, для использования видеодекодером 30 при декодировании видеоданных.

Для выполнения кодирования CABAC видеокодер 20 может присвоить контекст в контекстной модели для символа, подлежащего передаче. Этот контекст может относиться, например, к тому, являются ли соседние значения символа ненулевыми. Для выполнения кодирования CAVLC видеокодер 20 может выбрать код переменной длины для символа, подлежащего передаче. Кодовые слова в VLC могут быть построены так, чтобы относительно более короткие коды соответствовали более вероятным символам, в то время как относительно более длинные коды соответствовали менее вероятным символам. Таким образом, использование кодирования VLC может обеспечить экономное использование бит, например, путем использования кодовых слов одинаковой длины для каждого символа, подлежащего передаче. Определение вероятности может быть основано на контексте, присвоенном данному символу.

В общем случае добавление значений смещения к пикселям в видеокадре в некоторых случаях может повысить качество кодирования. Например, значения смещения могут быть использованы для пикселей восстановленного видеоблока, чтобы компенсировать изменения яркости, ошибки квантования или, в более общем контексте, сделать декодированные данные более похожими на исходные видеоданные. Способы SAO позволяют применять разные значения смещения к разным пикселям (или блокам пикселей) в зависимости от значений пикселя (или блока пикселей). Значение смещения, используемого для пикселя, можно определить на основе значения пикселя. Например, если пиксель имеет значение, находящееся в первой полосе, то тогда к этому пикселю можно применить смещение, связанное с первой полосой. Например, если пиксель имеет значение, находящееся во второй полосе, то тогда к этому пикселю можно применить смещение, связанное со второй полосой, и так далее для всех полос.

В реализации SAO одного типа каждый участок (который состоит из набора блоков LCU) может иметь смещение одного из трех типов (лежащих в основе так называемой «классификации пикселей»). Эти три типа смещений таковы: «смещение отсутствует», «тип смещения 0/1 на основе классификации полос», и «тип смещения 0/1/2/3 на основе классификации краев». Каждый тип смещения для классификации полос имеет 16 возможных значений смещения, в то время как каждый тип на основе классификации краев имеет 4 возможных значения смещения. Если для использования для упомянутого участка выбран один из указанных типов смещения, то в закодированном битовом видеопотоке может быть выполнена сигнализация, содержащая информацию, которая указывает соответствующий тип смещения и значения смещения.

На фиг. 2 представлена концептуальная схема, где показаны четыре возможных классификации краев, используемые в одой реализации SAO фильтрации. В примере по фиг. 2 тип смещения края классифицирует каждый пиксель на основе информации о краях. Для каждой классификации краев, показанной на фиг. 2, тип края для текущего пикселя (то есть, конкретного кодируемого в данный момент пикселя) вычисляют путем сравнения значения текущего пикселя (C) со значениями соседних пикселей (1 и 2). При смещении края согласно SAO по классификации «0» (SAO_EO_0) текущий пиксель сравнивают с левым и правым соседними пикселями. При смещении края согласно SAO по классификации «1» (SAO_EO_1) текущий пиксель сравнивают с верхним и нижним соседними пикселями. При смещении края согласно SAO по классификации «2» (SAO_EO_2) текущий пиксель сравнивают с верхним левым и нижним правым соседними пикселями. При смещении края согласно SAO по классификации «3» (SAO_EO_3) текущий пиксель сравнивают с нижним левым и верхним правым соседними пикселями.

Первоначально полагают, что край текущего пикселя относится к типу «нуль». Если значение текущего пикселя C равно значениям обоих, левого и правого, соседних пикселей (1 и 2), то тип края (EdgeType) остается «нулевым». Если значение текущего пикселя больше значения соседнего пикселя 1, то тип края увеличивается на единицу. Если значение текущего пикселя C меньше значения соседнего пикселя 1, то тип края уменьшают на единицу. Аналогичным образом, если текущее значение пикселя С меньшей значения соседнего пикселя С2, то тип края увеличивают на единицу, а, если значение текущего пикселя меньше значения соседнего пикселя 2, то тип края уменьшают на 1.

Текущий пиксель C по существу может иметь следующие типы краев: -1, -1, 0, 1, или 2. Тип края равен -2, если значение текущего пикселя С меньше обоих значений соседних пикселей 1 и 2. Тип края равен -1, если значение текущего пикселя C меньше значения одного соседнего пикселя, но равно значению другого соседнего пикселя. Тип края равен 0, если значение текущего пикселя C совпадает со значениями обоих соседних пикселей, или, если значение текущего пикселя C больше, чем значение одного соседнего пикселя, но меньше, чем другого соседнего пикселя. Тип края равен 1, если значение текущего пикселя C больше, чем значение одного соседнего пикселя, но равно значению другого соседнего пикселя. Тип края равен 2, если значение текущего пикселя C больше обоих значений соседних пикселей 1 и 2. Для каждого ненулевого значения типа края определяют четыре значения смещения и сообщают о них в закодированном битовом видеопотоке для их использования декодером (то есть, coffset-2, coffset-1, coffset1 и coffset2).

В свете приведенного выше описания для каждой классификации смещения краев значения типа края можно вычислить с помощью следующего псевдокода:

EdgeType=0;

если (C>пикселя 1), то EdgeType=EdgeType+1;

если (C<пикселя 1), то EdgeType=EdgeType-1;

если (C>пикселя 2), то EdgeType=EdgeType+1;

если (C<пикселя 2), то EdgeType=EdgeType-1

На фиг. 3А представлена концептуальная схема, где показаны приведенные в качестве примера полосы, основанные на значениях интенсивности. Положим, например, что диапазон значений пикселей составляет 0-255, хотя можно также использовать и другие диапазоны. В указанном примере максимальное значение, показанное на фиг. 3А, равно 255, а каждая из тридцати двух полос, показанных на фиг. 3А, имеет диапазон равный 8. Крайняя левая полоса будет иметь значения пикселей 0-7, следующая полоса будет иметь значения пикселей 8-15, следующая полоса будет иметь значения пикселей 16-23 и так далее, пока не будет достигнута крайняя правая полоса, которая будет иметь значения пикселей 248-255. Что касается смещения полосы, то пиксели классифицируют по разным полосам на основе интенсивности (то есть, для классификации смещения полосы пиксели относят к одной из тридцати двух полос). К пикселю добавляется смещение в зависимости от того, в какой полосе оказалось значение этого пикселя. Например, если пиксель имеет значение 19, то тогда его значение попадают в третью полосу с диапазоном пиксельных значений от 16 о 23. Таким образом, к пиксельному значению 19 будет добавлено смещение, связанное с третьей полосой.

Для обеспечения сигнализации о значениях смещения, связанных с каждой полосой, полосы можно разбить на две или более групп. В некоторых реализациях шестнадцать полос в центре (полосы 8-23) относят к одной группе, а остальные полосы (полосы 0-7 и 24-31) относят ко второй группе. Для каждой группы полос определяют 16 значений смещения (то есть, boffset0, …, boffset15), которые сообщаются в закодированном битовом видеопотоке для их использования видеодекодером. В некоторых реализациях можно положить, что все значения смещения для группы, например, второй группы, равны 0, и в этом случае нет необходимости выполнения сигнализации о значениях смещения для такой группы путем включения соответствующей сигнальной информации в указанный закодированный битовый видеопоток.

Как показано на фиг. 3А шестнадцать средних полос (полосы 8-23) образуют первую группу полос, в то время как восемь находящихся слева полос (полосы 0-7) образуют первый участок второй группы полос, а восемь, находящихся правее полос (полосы 24-31) образуют второй участок второй группы полос. Согласно текущим методикам такая группировка полос является фиксированной. В настоящем изобретении описаны методики для адаптивного определения группировок полос. Например, здесь описаны методики для определения значения центра для набора пикселей на основе значений пикселей. Значение центра можно определить, например, на основе определенного центра для группы полос, а центр для данного группы полос можно определить на основе среднего значения для набора пикселей, значения медианы для набора пикселей либо путем определения пикселя, на который попал пик гистограммы.

Полосы значений пикселей можно разбить на группы на основе упомянутого значения центра. Например, значение центра можно использовать для определения центра для одной группы полос. Если снова предположить, что имеется тридцать две полосы (полосы 0-31) и две группы, то в первую группу полос могут войти восемь полос справа от центра и восемь полос слева от центра. Оставшиеся шестнадцать полос могут принадлежать второй группе. Таким образом, в отличие от известных методик, согласно которым одна группа всегда состояла из шестнадцати средних полос, в настоящем изобретении раскрыты методики, согласно которым группировки полос могут быть адаптивными на основе значения центра, которое определяют исходя из действительных значений пикселей.

На фиг. 3В показана одна из множества возможных группировок, которую можно использовать согласно раскрытым здесь методикам. В примере на фиг. 3В центр определен рядом с полосой 18. Соответственно, первая группа полос включает в себя восемь полос слева от центра (полосы 11-18) и восемь полос справа от центра (полосы 19-26). Вторая группа полос включает в себя остальные полосы, к которым в этом примере относятся полосы 0-4 и полосы 27-31. На фиг. 3В представлен один из множества возможных сценариев. Основной целью фиг. 3В является демонстрация того, что согласно раскрытым в настоящем изобретении методикам центр для определения первой группы полос можно определить адаптивно, причем не обязательно, чтобы его местоположение, показанное на фиг. 3А, было фиксированным, либо было зафиксировано в любом другом месте. Методики для определения значения центра и адаптивного определения группировок полос более подробно объясняются ниже.

На фиг. 4 представлена блок-схема, иллюстрирующая пример видеокодера, способного выполнять методики SAO фильтрации раскрытые в настоящем изобретении. Видеокодер 20 может выполнять кодирование видеоблоков с интра- и интер-предсказанием в видеослайсах. Кодирование с интра-предсказанием основано на пространственном предсказании с целью уменьшения или устранения пространственной избыточности в данном видеокадре или видеоизображении. Кодирование с интер-предсказанием основано на временном предсказании с целью уменьшения или устранения временной избыточности в смежных кадрах или изображениях видеопоследовательности. Режим интра-предсказания (I режим) может относиться к любому из нескольких режимов сжатия на пространственной основе. Режимы интер-предсказания, такие как режим однонаправленного предсказания (P режим) или двунаправленного предсказания (B режим) могут относиться к любому из нескольких режимов сжатия на временной основе.

В примере по фиг. 4 видеокодер 20 включает в себя модуль 35 разбиения, модуль 41 предсказания, память 64 опорных изображений, сумматор 50, модуль 52 преобразования, модуль 54 квантования и модуль 56 энтропийного кодирования. Модуль 41 предсказания включает в себя модуль 42 оценки движения, модуль 44 компенсации движения и модуль 46 интра-предсказания. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и сумматор 62. Также имеется деблокирующий фильтр 72 для фильтрации границ блоков с целью удаления артефактов «блочности» из восстановленного видео. Как показано на фиг. 4, видеокодер 20 также включает в себя дополнительные контурные фильтры в том числе фильтр 74 адаптивного смещения отсчетов (SAO) и адаптивный контурный фильтр (ALF) 76. Хотя деблокирующий фильтр 72, SAO фильтр 74 и ALF 76 показаны на фиг. 4 в виде контурных фильтров на входе, в некоторых конфигурациях деблокирующий фильтр 72, SAO фильтр 74 и ALF 76 могут быть реализованы в виде постконтурных фильтров.

Как показано на фиг. 4, видеокодер 20 принимает видеоданные, а модуль 35 разбиения разбивает эти данные на видеоблоки. Это разбиение может также включать в себя разбиение не слайсы, тайлы (мозаичные фрагменты) или другие более крупные блоки, а также разбиение видеоблоков, например, в соответствии со структурой квадродерева, куда входят блоки LCU и CU. Видеокодер 20 в общем случае содержит компоненты, которые выполняют кодирование видеоблоков в видеослайсе, подлежащем кодированию. Слайс может быть разделен на множество видеоблоков (и возможно на наборы видеоблоков, называемые здесь «тайлами»). Модуль 41 предсказания может выбрать один из множества возможных режимов кодирования, например, один из множества режимов кодирования с интра-предсказанием, или один из множества режимов кодирования с интер-предсказанием, для текущего видеоблока на основе результатов ошибок (например, скорости кодирования и уровня искажения). Модуль 41 предсказания может подать результирующий блок, закодированный с интра- или интер-предсказанием, на сумматор 50 для формирования остаточных блочных банных и на сумматор 62 для восстановления закодированного блока с целью его использования в качестве опорного изображения.

Модуль 46 интра-предсказания в модуле 41 предсказания может выполнять кодирование текущего видеоблока с интра-предсказанием по отношению к одному или более соседним блокам в том же кадре или слайсе в качестве текущего блока, подлежащего кодированию, для обеспечения пространственного сжатия. Модуль 42 оценки движения и модуль 44 компенсации движения в модуле 41 предсказания выполняют кодирование с интер-предсказанием текущего видеоблока относительно одного или более предсказанных блоков в одном или более опорных изображениях, чтобы обеспечить временное сжатие.

Модуль 42 оценки движения может быть сконфигурирован для определения режима интер-предсказания для видеослайса согласно заранее определенному шаблону для видеопоследовательности. Заранее определенный шаблон может обозначить видеослайсы в упомянутой последовательности как предсказанные слайсы (P слайсы), слайсы, с двунаправленным предсказанием (B слайсы) или обобщенные P/В слайсы (GPB слайсы). Модуль 42 оценки движения и модуль 44 компенсации движения могут быть объединены с высокой степенью интеграции, но они показаны здесь отдельно в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, представляет собой процесс формирования векторов движения, в ходе которого оценивается движение видеоблоков. Вектор движения, например, может указывать смещение PU видеоблока в текущем видеокадре или изображении относительно предсказанного блока в опорном изображении.

Предсказанный блок - это блок, который определяют на основе близкого соответствия блоку PU в видеоблоке, подлежащем кодированию, в виде пиксельной разности, которое можно определить с использованием таких разностных показателей, как сумма абсолютных значений разностей (SAD), сумма квадратичных разностей (SSD) или другая сумма. В некоторых примерах видеокодер 20 может вычислить значения для дробных пиксельных позиций опорных изображений, хранящихся в памяти 64 опорных изображений. Например, видеокодер 20 может интерполировать значения пиксельных позиций с точностью в одну четверть, пиксельных позиций с точностью одна восьмая или пиксельных позиций опорного изображения с другой дробной точностью. Таким образом, модуль 42 оценки движения может выполнить поиск движения относительно целочисленных пиксельных позиций и дробных пиксельных позиций и вывести вектор движения с точностью до долей пикселя.

Модуль 42 оценки движения вычисляет вектор движения для PU видеоблока в слайсе, закодированном с интер-предсказанием, путем сравнения позиции данного PU с позицией предсказанного блока опорного изображения. Опорное изображение может быть выбрано из первого списка опорных изображений (список 0) или второго списка опорных изображений (список 1), каждый из которых идентифицирует одно или более опорных изображений, хранящихся в памяти 64 опорных изображений. Модуль 42 оценки движения посылает вычисленный вектор движения в модуль 56 энтропийного кодирования и модуль 44 компенсации движения.

Компенсация движения, выполняемая модулем 44 компенсации движения, может содержать извлечение или формирование предсказанного блока на основе вектора движения, определенного в результате оценки движения, возможно с выполнением интерполяций с точностью до долей пикселя. После получения вектора движения для PU текущего видеоблока модуль 44 компенсации движения может определить местоположение предсказанного блока, на которое указывает вектор движения, в одном из списков опорных изображений. Видеокодер 20 формирует остаточный видеоблок путем вычитания пиксельных значений предсказанного блока из пиксельных значений текущего кодируемого видеоблока, формируя значения пиксельных разностей. Значения пиксельных разностей образуют остаточные данные для рассматриваемого блока, причем они могут включать в себя разностные компоненты яркости и цветности. Сумматор 50 представляет ту компоненту или компоненты, которые выполняют указанную операцию вычитания. Модуль 44 компенсации движения может также сформировать синтаксические элементы, связанные с видеоблоками и видеослайсом, для их использования видеодекодером 30 при декодировании видеоблоков видеослайса.

Модуль 46 интра-предсказания может выполнить интра-предсказание на текущем блоке в качестве альтернативы интер-предсказании, выполняемому модулем 42 оценки движения и модулем 44 компенсации движения, как было описано выше. В частности, модуль 46 интра-предсказания может определить режим интра-предсказания для его использования при кодировании текущего блока. В некоторых примерах модуль 46 интра-предсказания может выполнить кодирование текущего блока, используя различные режимы интра-предсказания, например, во время отдельных проходов кодирования, а модуль 46 интра-предсказания (или модуль 40 выбора режима в некоторых примерах) может выбрать необходимый режим интра-предсказания из тестируемых режимов. Например, модуль 46 интра-предсказания может вычислить значения для пары «скорость-искажение», используя анализ зависимости искажения от скорости на один отсчет для различных тестируемых режимов интра-предсказания и выбрать режим интра-предсказания, имеющий наилучшие характеристики «скорость-искажение» среди тестируемых режимов. Анализ зависимости искажения от скорости в общем случае определяет величину искажения (или ошибки) между закодированным блоком и исходным не закодированным блоком, который был закодирован для создания данного закодированного блока, а также битовую скорость (то есть, количество бит), используемую для создания данного закодированного блока. Модуль 46 интра-предсказания может вычислить соответствующие отношения, исходя из значений упомянутых искажений и скоростей, для различных закодированных блоков, чтобы определить, какой режим интра-предсказания дает наилучшее соотношение «скорость-искажение» для данного блока.

В любом случае после выбора режима интра-предсказания для блока модуль 46 интра-предсказания может предоставить модулю 56 энтропийного кодирования информацию, указывающую выбранный режим интра-предсказания для данного блока. Модуль 56 энтропийного кодирования может выполнить кодирование информации, указывающей выбранный режим интра-предсказания, в соответствии с раскрытыми здесь методиками. Видеокодер 20 может включить данные о конфигурации в передаваемый битовый поток, которые могут содержать множество таблиц с индексами режимов интра-предсказания и множество таблиц с модифицированными индексами режимов интра-предсказания (также называемых таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков и указания о наиболее вероятном режиме интра-предсказания, таблицу индексов режимов интра-предсказания и таблицу модифицированных индексов режимов интра-предсказания для их использования для каждого из упомянутых контекстов.

После формирования модулем 41 предсказания предсказанного блока для текущего видеоблока посредством интер- либо интра-предсказания видеокодер 20 формирует остаточный видеоблок путем вычитания предсказанного блока из текущего видеоблока. Остаточные видеоданные в остаточном блоке могут быть включены в один или более блоков TU и использованы в модуле 52 преобразования. Модуль 52 преобразования выполняет преобразование остаточных видеоданных в остаточные коэффициенты преобразования, используя такое преобразование, как дискретное косинусное преобразование (DCT) или концептуально подобное преобразование. Модуль 52 преобразования может преобразовать остаточные видеоданные из пиксельной области в область преобразования, например, частотную область.

Модуль 52 преобразования может послать результирующие коэффициенты преобразования в модуль 54 квантования. Модуль 54 квантования выполняет квантование коэффициентов преобразования для дополнительного уменьшения битовой скорости. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми упомянутыми коэффициентами. Степень квантования можно модифицировать, регулируя параметр квантования. В некоторых примерах модуль 54 квантования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В качестве альтернативы, сканирование может быть выполнено модулем 56 энтропийного кодирования.

Вслед за квантованием модуль 56 энтропийного кодирования выполняет энтропийное кодирование квантованных коэффициентов преобразования. Например, модуль 56 энтропийного кодирования может выполнить контекстно-зависимое адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное бинарное арифметическое кодирование (CABAC), синтаксически ориентированное адаптивное бинарное арифметическое кодирование (SBAC), вероятностное энтропийное кодирование с интервальным разбиением (PIPE) или использовать другую методологию или методику кодирования. После выполнения модулем 56 энтропийного кодирования закодированный битовый поток может быть передан на видеодекодер 10 или заархивирован для будущей передачи или извлечения видеодекодером 30. Модуль 56 энтропийного кодирования также может выполнить энтропийное кодирование векторов движения и других синтаксических элементов для кодируемого текущего видеослайса.

Модуль 58 обратного квантования и модуль 60 обратного преобразования выполняют соответственно обратное квантование и обратное преобразование для восстановления остаточного блока в пиксельной области для использования в дальнейшем в качестве опорного блока опорного изображения. Модуль 44 компенсации движения может вычислить опорный блок путем добавления остаточного блока к предсказанному блоку одного из опорных изображений в одном из списков опорных изображений. Модуль 44 компенсации движения также может применить один или более интерполяционных фильтров для восстановленного остаточного блока, чтобы вычислить пиксельные значения в долях пикселя для использования при оценке движения. Сумматор 62 складывает восстановленный остаточный блок с предсказанным блоком, созданным модулем 44 компенсации движения, для создания опорного блока для его запоминания в памяти 64 опорных изображений.

Перед запоминанием в памяти 64 может быть выполнена фильтрация восстановленного остаточного блока одним или более фильтрами. Если это необходимо, то для фильтрации восстановленных остаточных блоков также можно использовать деблокирующий фильтр 72 для устранения артефактов «блочности». Для сглаживания переходов между пикселями или иного улучшения качества видео можно также использовать другие контурные фильтры (либо на входе контура кодирования, либо после контура кодирования). Одним из примеров другого фильтра является SAO фильтр 74. Модуль 42 оценки движения и модуль 44 компенсации движения могут использовать указанный опорный блок в качестве опорного блока для интра-предсказания блока в следующем видеокадре или видеоизображении.

SAO фильтр 4 может определить значения смещения для SAO фильтрации таким образом, чтобы повысить качество видеокодирования. Повышение качества видеокодирования может содержать, например, определение значений смещения, которые обеспечивают более близкое сходство восстановленного изображения с исходным изображением. Видеокодер 20 может, например, кодировать видеоданные, используя множество проходов с разными значениями смещения, и выбрать для включения в закодированный битовый поток тех значений смещения, которые дают наилучшее качество кодирования, определяемое на основе вычислений упомянутого соотношения «скорость-искажение».

В некоторых конфигурациях SAO фильтр 74 может быть сконфигурирован для применения двух типов смещения (например, смещение полосы и смещение края) как было описано выше. SAO фильтр 74 также иногда может вообще не применять смещение, что само по себе можно рассматривать как третий тип смещения. О типе смещения, примененном SAO фильтром 74, может быть сообщено видеодекодеру либо в явном, либо в неявном виде. При применении смещения края пиксели могут классифицироваться на основе информации о краях в соответствии с фиг. 2, и фильтр можно будет определить на основе классификации краев. При применении смещения полос SAO фильтр 74 может классифицировать пиксели по разным полосам на основе значения пикселя, такого как значение интенсивности, причем каждая полоса будет иметь соответствующее ей смещение.

В целях сигнализации и формирования смещений для различных полос SAO фильтр 74 может сгруппировать указанные тридцать две полосы в две или более групп, как показано в качестве примеров на фигурах 3А и 3В. SAO фильтр 74 может, например, отнести каждую из тридцати двух полос к одной из двух групп (то есть, две группы из шестнадцати полос). Хотя здесь, как правило, описывается группировка полос по двум группам одинакового размера, также можно использовать большее двух количество групп, а также группы с неодинаковыми размерами. В данном изобретении описаны методики определения таких групп.

Каждая полоса может охватывать некоторый диапазон значений пикселей. Значением пикселя может быть, например, значение интенсивности пикселя, при этом значение пикселя может описывать любое из следующих значений: значение RGB, значение яркости, значение цветности или значения пикселя любого другого типа. Методики, раскрытые в данном изобретении, можно применить, например, либо к отсчетам цветности видеоданных, либо отсчетам яркости видеоданных, либо как к отсчетам цветности, так и отсчетам яркости видеоданных.

В некоторых реализациях первая группа полос может быть сцентрирована по центру диапазона возможных значений пикселей (то есть, максимальное значение/2). Таким образом, например, если диапазон значений пикселей составляет 0-255, то центр первой группы полос может находиться между значением 127 пикселя и значением 128 пикселя, причем первая группа охватывает значения с 64 по 191. Первый участок второй группы может охватывать значения пикселей от 0 до 63, а второй участок второй группы может охватывать значение пикселей от 192 до 255. Первая группа включает в себя шестнадцать полос, и вторая группа включает в себя шестнадцать полос (восемь полос в первой части и восемь полос во второй части). Данный пример группировки показан на фиг. 3А. Хотя в раскрытых здесь примерах обычно предполагается, что все тридцать две полосы имеют одинаковый размер, в некоторых реализациях могут использоваться полосы неодинакового размера.

Согласно раскрытым здесь методикам SAO фильтр 74 может адаптивно определить центр первой группы вместо того, чтобы использовать статическую группировку полос. SAO фильтр 74 может, например, определить центр первой группы на основе среднего значения или медианы значений пикселей в некоторой области кадра. SAO фильтр 74 может также определить центр первой группы на основе того пикселя, на который попадает пик гистограммы. После определения SAO фильтром 74 центра первой группы SAO фильтр 74 может затем определить вторую группу. Если снова предположить, что используются тридцать две полосы, то первая группа может включать в себя примерно восемь полос слева от центра и примерно восемь полос справа от центра. Остальные полосы могут образовать вторую группу.

В одном примере, если предположить, что максимальным значением пикселя является 256, то SAO фильтр 74 определяет центр для первой группы полос на основе любой из вышеописанных методик в пикселе со значением 90. В указанном случае по сравнению со статической группировкой, показанной на фиг. 3А, первая группа полос может быть сдвинута влево, что приводит к уменьшению первого участка второй группы, в то время как второй участок второй группы увеличивается. Однако, если SAO фильтр 74 определяет центр для первой группы полос у значения 170, то тогда первая группа сдвигается вправо по сравнению со статической группировкой по фиг. 3А, что приводит к увеличению первого участка второй группы и уменьшению второго участка второй группы. SAO фильтр 74 может определить центр согласно любой из описанных здесь методик для определения среднего значения, медианы или пика гистограммы, либо это может быть определено каким-либо иным способом.

После определения центра SAO фильтр 74 может определить первую группу полос. SAO фильтр 74 может определить первую группу полос путем идентификации восьми полос слева от центра и восьми полос справа от центра. В некоторых случаях определенный таким образом центр может оказаться внутри полосы. Если опять предположить наличие тридцати двух равных полос (полосы 0-31) и предположить, что диапазон значений пикселей составляет 0-255, то полоса 12 имеет диапазон значений от 96 до 103. Если, например, SAO фильтр 74 определяет центр у значения 99, то тогда этот центр попадает в диапазон значений пикселей, покрываемых полосой 12. В указанном случае SAO фильтр 74 может быть сконфигурирован таким образом, что он всегда будет включать полосу 12 в качестве одной из восьми полос слева от центра или всегда включать полосу 12 в качестве одной из восьми полос справа от центра. Если SAO фильтр 74 идентифицирует полосу 12 как одну из восьми полос слева от центра, то тогда первая группа полос включает в себя полосы 5-20, в то время как вторая группа включает в себя полосы 0-4 и 21-31. Если SAO фильтр 74 идентифицирует полосу 12 как одну из восьми полос справа от центра, то тогда первая группа полос включает в себя полосы 6-21, в то время как вторая группа включает в себя полосы 0-5 и полосы 22-31. SAO фильтр 74 также может быть сконфигурирован для определения того, включать ли полосу 12 с полосами слева от центра или полосами справа от центра в зависимости от того, в оказался ли центр в этой полосе. Так как 99 ближе к 96, чем к 103, SAO фильтр 74 может быть сконфигурирован для идентификации полосы 12 как одной из полос слева от центра в соответствии с тем, что центр определен у значения 99. Однако при определении центра у значения 101, которое ближе к 103, чем к 96, SAO фильтр 74 может быть сконфигурирован для идентификации полосы 12 как одной из полос справа от указанного центра.

Хотя раскрытые здесь методики описаны на примерах, в которых используются тридцать две полосы и две группы по шестнадцать полос, эти методики в общем случае применимы к схемам SAO, в которых используется большее или меньшее количество полос и большее или меньшее количество групп. В качестве одного из многих возможных примеров, раскрытые здесь методики можно использовать для определения первой группы из четырех полос и второй группы из двадцати восьми полос, причем здесь предполагается, что все смещения для второй группы имеют нулевое значение. В другом примере может быть использовано шестнадцать полос, шестьдесят четыре полосы или какое-либо иное количество полос.

SAO фильтр 74 может создать смещения для полос на основе указанных группировок и сообщить об этих смещениях. Для каждой группы полос (в предположении, что имеются, как и раньше, группы из шестнадцати полос) может быть определено шестнадцать значений смещения, о которых сообщается в закодированном битовом видеопотоке для их использования видеодекодером. В одном примере количество бит, необходимое для посылки группы из шестнадцати значений смещения полос, можно уменьшить, если эффективно использовать корреляции между значениями смещения полос в данной группе. В другом примере значения смещения полос соседнего участка можно использовать для предсказания значений смещения полос для группы текущего участка. Соседний участок может представлять собой участок, причинно обусловленный текущим участком (то есть, этот соседний участок уже был закодирован) Примеры соседних участков включают в себя пространственно соседние участки, такие как участки, расположенные над или слева от текущего участка, либо соседние по времени участки, такие как участки в предыдущих закодированных кадрах (например, совместно расположенные участки).

Методики для нахождения центра можно применить к каждому блоку LCU или к группам блоков LCU. Эти методики можно, например, применить к областям кадра, определенным таким же образом, как вышеописанное разделение квадродерева. Кадр можно разделить на четыре области, причем каждую область можно разделить на четыре области меньшего размера и т.д. SAO фильтр 74 может определить значения центра, как было описано выше, на основе всех значений пикселей в группе блоков LCU или другой области кадра, либо может определить значения центра путем субдискретизации пикселей, используя не все доступные значения пикселей в блоке LCU или группе блоков LCU.

Видеокодер 20 по фиг. 4 представляет пример видеокодера, сконфигурированного для определения значения центра для набора пикселей на основе значений этих пикселей; разделения полос значений пикселей на группы на основе значения центра; и определения значений смещения для полос на основе указанных групп. Видеокодер 20 может определить центр для первого набора пикселей посредством определения среднего значения для набора пикселей, определения значения медианы для набора пикселей и/или определения пикселя, на который попал пик гистограммы. Видеокодер 20 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения полосы для полосы первой группы на основе смещения второй полосы первой группы. Видеокодер 20 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения полосы для полосы из первой группы на основе смещения полосы, определенного для соседнего участка. Видеокодер 20 может также сообщить о значениях смещения полосы для соседнего участка. Видеокодер 20 также может сообщить видеодекодеру значения смещения полосы на основе указанных групп. В некоторых реализациях видеокодер 20 может сформировать синтаксический элемент для его включения в закодированный битовый поток, который указывает определенное значение центра. В некоторых случаях этот синтаксический элемент может представлять собой указание в явном виде о центре, определенном для группы полос, но этот синтаксический элемент не обязательно должен представлять собой указание в явном виде об определенном центре. Например, значение центра может идентифицировать первую или последнюю полосу в конкретной группе, чтобы разрешить видеодекодеру восстановить аналогичные группировки полос, определенные видеокодером 20. В указанном случае эти группировки полос, восстановленные видеодекодером, можно выровнять по тому же центру, что и группировки, определенные видеокодером, даже если указанный центр не передан в явном виде в закодированном битовом потоке.

На фиг. 5 представлена блок-схема, где показан пример видеодекодера 30, который может реализовать описанные методики. В примере по фиг. 5 видеодекодер 30 включает в себя модуль 80 энтропийного декодирования, модуль 81 предсказания, модуль 86 обратного квантования, модуль 88 обратного преобразования, сумматор 90, и память 92 опорных изображений. Модуль 81 предсказания включает в себя модуль 82 компенсации движения и модуль 84 интра-предсказания. В некоторых примерах видеодекодер 30 может выполнять прогон декодирования, который в общем случае является обратным по отношению к проходу кодирования, описанному применительно к видеокодеру 20 по фиг. 4.

В ходе процесса декодирования видеодекодер 30 принимает закодированный битовый видеопоток, представляющий видеоблоки закодированного видеослайса и соответствующие синтаксические элементы от видеокодера 20. Модуль 80 энтропийного декодирования видеодекодера 30 выполняет энтропийное декодирование битового потока, чтобы сформировать квантованные коэффициенты, векторы движения и другие синтаксические элементы. Модуль 80 энтропийного декодирования направляет эти векторы движения и другие синтаксические элементы в модуль 81 предсказания. Видеодекодер 30 может принять синтаксические элементы на уровне видеослайса и/или на уровне видеоблока.

Когда видеослайс закодирован с использованием интра-предсказания (I), модуль 84 интра-предсказания модуля 81 предсказания может сформировать данные предсказания для видеоблока текущего видеослайса на основе сигнализации в режиме интра-предсказания, а также на основе данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр закодирован в виде слайса с интер-предсказанием (то есть, B, P или GPB) модуль 82 компенсации движения модуля 81 предсказания создает блоки предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, полученных от модуля 80 энтропийного декодирования. Блоки предсказания можно создать из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может построить списки опорных кадров, список 0 и список 1, используя стандартные методики построения на основе опорных изображений, хранящихся в памяти 92 опорных изображений.

Модуль 82 компенсации движения определяет информацию предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, модуль 82 компенсации движения использует некоторые из полученных синтаксических элементов для определения режима предсказания (например, интра- или интер-предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса с интер-предсказанием (например, B слайс, P слайс или GPB слайс), информации о структуре для одного или более списков опорных изображений для данного слайса, векторов движения для каждого видеоблока слайса с интер-кодированием, статуса интер-предсказания для каждого видеоблока слайса, закодированного с интер-предсказанием, и другой информации для декодирования видеоблоков в текущем видеослайсе.

Модуль 82 компенсации движения также может выполнить интерполяцию на основе интерполяционных фильтров. Модуль 82 компенсации движения может использовать интерполяционные фильтры, как это делается видеокодером 20 в процессе кодирования видеоблоков для вычисления интерполированных значений для дробных пикселей опорных блоков. В этом случае модуль 82 компенсации движения может определить интерполяционные фильтры, используемые видеокодером 20, исходя из полученных синтаксических элементов, и использовать эти интерполяционные фильтры для создания блоков предсказания.

Модуль 86 обратного квантования выполняет обратное квантование, то есть, деквантование квантованных коэффициентов преобразования, предусмотренных в битовом потоке и декодируемых модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видеокодером 20 для каждого видеоблока в видеослайсе, для определения степени квантования по аналогии со степенью обратного квантования, которую и следует применить. Модуль 88 обратного преобразования применяет обратное преобразование, например, обратное DCT преобразование, обратное целочисленное преобразование или концептуально подобный процесс обратного преобразования к коэффициентам преобразования, чтобы обеспечить остаточные блоки в пиксельной области.

После того, как модуль 82 компенсации движения сформировал блок предсказания для текущего видеоблока на основе векторов движения и других синтаксических элементов, видеодекодер 30 формирует декодированный видеоблок посредством суммирования остаточных блоков, полученных от модуля 88 обратного преобразования, с соответствующими блоками предсказания, сформированными модулем 82 компенсации движения. Сумматор 90 представляет компоненту или компоненты, которые выполняют операцию суммирования. Декодированные видеоблоки, сформированные сумматором 90 могут затем быть подвергнуты фильтрации с использованием деблокирующего фильтра 93, SAO фильтра 94 и адаптивного контурного фильтра 95. Декодированные видеоблоки в данном кадре или изображении запоминаются затем в памяти 92 опорных изображений, где хранятся опорные изображения, используемые для последующей компенсации движения. В памяти 92 опорных изображений также запоминается декодированное видео для его представления в дальнейшем на устройстве отображения, таком как дисплейное устройство 32 по фиг. 1.

SAO фильтр 94 может быть сконфигурирован для применения той же фильтрации (например, со смещением края и смещением полосы), какую выполняет SAO фильтр 74, обсужденный выше. Таким образом, в качестве составной части выполнения смещения полос SAO фильтр 74 может определить значение центра для первой группы полос, как было описано выше со ссылками на фиг. 4. Значение центра можно, например, определить на основе такой метрики, как среднее значение пикселя, значение медианы пикселя или определить пиксель, на который попал пик гистограммы для блока LCU или группы блоков LCU.

В некоторых реализациях SAO фильтр 94 может принять в битовом видеопотоке указание о центре, определенном видеокодером. Это указание может быть представлено в виде действительного значения центра, вычисленного видеокодером, или может быть представлено в виде идентификации первой полосы для первой группы, указания о последней полосе первого участка второй группы, среднего значения для первой группы или какого-либо другой информации, которая позволяет SAO фильтру 94 определить группировку полос, использованную видеокодером. На основе первой группы и второй группы, определенных на основе значения центра, SAO фильтр 94 может сформировать значения смещения на основе информации, принятой в закодированном битовом видеопотоке. Для одной из групп, например, для второй группы можно предположить, что все ее значения смещения равны нулю.

Для группы блоков LCU SAO фильтр 94 может определить значение центра путем определения среднего значения пикселя для группы блоков LCU. SAO фильтр 94 может определить среднее значение пикселя, просуммировав значения всех или некоторой части пикселей в группе блоков LCU и разделив полученную сумму на количество пикселей, чьи значения вошли в указанную сумму, где результирующее значение будет представлять среднее значение пикселя для группы блоков LCU. Блок 94 SAO фильтра может затем использовать полученное среднее значение пикселя вышеописанным образом для определения группировки полос.

В качестве альтернативы для группы блоков LCU, SAO фильтр 94 может определить значение центра путем определения значения медианы для группы блоков LCU. SAO фильтр 94 может определить значение медианы путем идентификации значения, при котором половина значений пикселей группы блоков LCU превышает это значение, и половины значений пикселей для группы блоков LCU, меньших указанного значения. Блок 94 SAO фильтра может затем использовать найденное значение медианы пикселей вышеописанным образом для определения группировки полос.

В качестве альтернативы для блоков LCU, SAO фильтр 94 может определить значение центра путем определения местонахождения пика гистограммы для блока LCU или группы блоков LCU. В общем случае гистограмму можно считать статистическим представлением распределения значений пикселей для группы блоков LCU. Таким образом, SAO фильтр 94 может определить пик гистограммы путем идентификации значения пикселя или значений пикселей, которые появляются наиболее часто в группе блоков LCU. Затем блок 94 SAO фильтра может использовать найденное значение пика в гистограмме вышеописанным образом, чтобы определить группировки полос.

Можно реализовать три примера того, каким образом можно определить значение центра (например, по среднему, медиане или пику гистограммы) любым из фильтров (SAO фильтром 74, либо SAO фильтром 94) или обоими фильтрами, причем эти три возможные методики определения значения центра не являются единственными. Предполагается, что раскрытые в изобретении методики, которые в общем случае касаются динамического определения группировок полос для сигнализации о значениях смещения полос, могут быть совместимы с другими указанными методиками для определения значения центра.

Видеодекодер 30 по фиг. 5 представляет пример видеодекодера, сконфигурированного для определения значения центра для набора пикселей на основе значений указанных пикселей, разделения полос значений пикселей на группы на основе указанного значения центра и определения значений смещения для указанных полос на основе имеющихся групп. В некоторых реализациях видеодекодер 30 может определить значение центра путем получения синтаксического элемента, указывающего значение центра. Как было описано выше, этот синтаксический элемент может представлять собой, но не обязательно, указание в явном виде на значения центра. В некоторых реализациях видеодекодер 30 может определить значение центра путем определения среднего значения для набора пикселей, определения значения медианы для набора пикселей и/или определения местонахождения пика гистограммы. Видеодекодер 30 может определить значения смещения для полос на основе групп путем формирования значения смещения для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения групп для полосы из первой группы на основе смещения полосы, определенного для соседнего участка. Видеодекодер 30 также может восстановить значения смещений полос, переданных от видеокодера, на основе групп.

Таким образом, видеодекодер 30 по фиг. 5 представляет пример видеодекодера, сконфигурированного для определения значения центра для набора пикселей на основе значений пикселей для данной группы; разделения полос значений пикселей на группы на основе указанного значения центра; и определения значений смещения для указанных полос на основе имеющихся групп. Видеодекодер 30 может определить значение центра путем получения синтаксического элемента, указывающего значение центра, определить значение центра путем определения среднего значения для набора пикселей, определить значение центра путем определения значения медианы для набора пикселей или путем определения значения центра на основе местонахождения пика гистограммы. Указанный набор пикселей может, например, включать в себя группу самых крупных блоков кодирования (LCU). Видеодекодер 30 может определить значения смещения для полос на основе групп путем формирования значения смещения для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может определить значения смещения для полос на основе указанных групп путем формирования значения смещения групп для полосы из первой группы на основе смещения полосы, определенного для соседнего участка.

На фиг. 6 показана блок-схема, иллюстрирующая методики SAO фильтрации, раскрытые в настоящем изобретении. Методики по фиг. 6 могут выполняться видеокодером, имеющим модуль SAO фильтрации, таким как видеокодер 20 или видеодекодер 30. Методики по фиг. 6 описываются далее со ссылками на видеодекодер 30, хотя следует понимать, что методики по фиг. 6 применимы для самых разных устройств видеокодирования и не сводится только к видеодекодерам.

Видеодекодер 30 определяет значение центра для набора пикселей на основе значений пикселей (610). Видеодекодер 30 может, например, определить значение центра путем нахождения среднего значения для набора пикселей, определения значения медианы для набора пикселей и определения пикселя, на который попадает пик гистограммы. Видеодекодер 30 разделяет полосы значений пикселей на группы на основе значения центра (620). Видеодекодер 30 определяет значения смещений для полос на основе указанных групп (630). Видеодекодер 30 может определить значения смещений для полос на основе указанных групп путем формирования значения смещения полосы для полосы первой группы на основе смещения второй полосы первой группы. Видеодекодер 30 может также определить значения смещений для полос на основе указанных групп путем формирования значения смещения для полосы первой группы на основе смещения полосы, определенного для соседнего участка.

В одном или более примерах описанные функции могут быть реализованы аппаратными средствами, программными средствами, программно-аппаратными средствами или любой их комбинацией. При реализации программными средствами эти функции могут храниться или передаваться в виде одной или более команд или кода на компьютерно-читаемом носителе и выполняться обрабатывающим аппаратным блоком. Компьютерно-читаемый носитель может включать в себя компьютерно-читаемый запоминающий носитель, который соответствует материальному носителю, такому как носитель хранения данных или носитель передачи, включая любой носитель, который позволяет обеспечить пересылку компьютерной программы из одного места в другое, например, согласно какому-либо протоколу связи. В этом аспекте компьютерно-читаемый носитель в общем случае может соответствовать (1) материальному компьютерно-читаемому запоминающему носителю, который является долговременным, или (2) среде связи, такой как сигнал или несущая волна. Носителями для запоминания данных могут быть любые доступные носители, доступ к которым может осуществляться одним или более компьютерами или одним или более процессорами для извлечения команд, кода и/или структур данных для реализации раскрытых в данном изобретении методик. Компьютерный программный продукт может включать в себя компьютерно-читаемый носитель.

В качестве примера, но не как ограничение, указанный компьютерно-читаемый запоминающий носитель может содержать ОЗУ (RAM), ПЗУ (ROM), электрически стираемое программируемое ПЗУ (EEPROM), ПЗУ на компакт-диске (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающее устройства, флэш-память, или любой другой носитель, который можно использовать для запоминания требуемого программного кода в виде команд или структур данных, и к которым может иметь доступ компьютер. Также компьютерно-читаемым запоминающим носителем будет правильно назвать любое соединение. Например, если команды передаются с Веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радиосвязь и микроволновая связь, то тогда коаксиальный кабель, оптоволоконный кабель, витая пара, линии DSL или такие беспроводные технологии, как инфракрасная связь, радиосвязь и микроволновая связь, входят в определение носителя. Однако следует понимать, что термины: «компьютерно-читаемый запоминающий носитель» и «носитель для хранения данных» не включают в себя соединения, несущие волны, сигналы или другие временные носители, а относятся к материальному долговременному запоминающему носителю. Используемый здесь термин «диск» относится к компакт-диску (CD), лазерному диску, оптическому диску, цифровому универсальному диску (DVD), флоппи-диску и диску Blu-ray, причем оптические диски воспроизводят данные оптически с использованием лазеров, в то время как магнитные диски воспроизводят данные магнитным путем. В понятие компьютерно-читаемого запоминающего носителя также следует отнести комбинации из вышеперечисленного.

Команды могут выполняться одним или более процессорами, такими как один или более цифровых процессоров сигналов (DSP), микропроцессоров общего назначения, прикладных специализированных интегральных схем (ASIC), вентильных матриц, программируемых пользователем (FPGA), или других эквивалентных интегральных или дискретных логических схем. Соответственно, используемый здесь термин «процессор» может относиться к любой из вышеописанных структур или любой иной структуре, подходящей для реализации вышеописанных методик. Вдобавок, в некоторых аспектах описанные здесь функциональные возможности могут быть обеспечены в рамках специализированных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования, или включенных в состав комбинированного кодека. Также раскрытые здесь методики можно полностью реализовать в одной или более схемах или логических элементах.

Раскрытые здесь методики могут быть реализованы в самых разных устройствах или установках, включая беспроводную телефонную трубку, интегральную схему (IC) или набор интегральных схем (например, микропроцессорный набор). Различные компоненты, модули или блоки описаны здесь таким образом, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых здесь методик, причем для этого не требуется их реализация с помощью различных аппаратных блоков. Скорее наоборот, как обсуждалось выше, различные блоки могут быть скомбинированы в аппаратном блоке-кодеке или обеспечены в виде набора взаимодействующих аппаратных блоков, включая один или более процессоров, как было описано выше, в сочетании с подходящим программным и/или программно-аппаратным обеспечением.

Здесь были описаны различные примеры. Эти и другие примеры входят в объем нижеследующей формулы изобретения.


ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ
ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ
ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ
ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ
ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ
ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ
ФИЛЬТР АДАПТИВНОГО СМЕЩЕНИЯ ЦЕНТРАЛЬНОЙ ПОЛОСЫ ДЛЯ ВИДЕОКОДИРОВАНИЯ
Источник поступления информации: Роспатент

Показаны записи 1-10 из 1 149.
10.01.2013
№216.012.1a18

Обнаружение многолучевого распространения для принимаемого sps-сигнала

Изобретение относится к спутниковой системе определения местоположения (SPS), предназначено для обнаружения и/или оценки многолучевых сигналов и позволяет повысить точность измерения псевдодальности и координат местоположения приемного устройства. Изобретение раскрывает, в частности, способ...
Тип: Изобретение
Номер охранного документа: 0002472172
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a3c

Способ для указания местоположения и направления элемента графического пользовательского интерфейса

Изобретение относится к указанию направления и местоположения элементов графического пользовательского интерфейса. Техническим результатом является повышение удобства и простоты использования многопанельных электронных устройств. Способ включает в себя прием пользовательского ввода на первой...
Тип: Изобретение
Номер охранного документа: 0002472208
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a8c

Виртуальное планирование в неоднородных сетях

Заявленное изобретение относится к обеспечению виртуального управления беспроводными ресурсами в среде мобильной связи. Техническим результатом является значительное снижение помех для макрозоны охвата или близлежащих зон охвата. В качестве примера, терминалы доступа в среде связи могут...
Тип: Изобретение
Номер охранного документа: 0002472288
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a8f

Кодирование и мультиплексирование управляющей информации в системе беспроводной связи

Изобретение относится к связи, в частности к технологиям отправки управляющей информации в системе беспроводной связи. Техническим результатом является повышение эффективности передачи управляющей информации, в частности ACK- и CQI-информации. Указанный результат достигается тем, что в способе...
Тип: Изобретение
Номер охранного документа: 0002472291
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a94

Система беспроводной связи с конфигурируемой длиной циклического префикса

Изобретение относится к системам связи. Технический результат заключается в том, чтобы снизить отрицательное воздействие разброса задержек. Для этого сначала определяются ожидаемые зоны покрытия для множества передач, которые должны передаваться в нескольких временных интервалах. Длина...
Тип: Изобретение
Номер охранного документа: 0002472296
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a96

Способ и устройство для осуществления информационного запроса сеанса для определения местоположения плоскости пользователя

Изобретение относится к системам определения местоположения. Технический результат заключается в улучшении качества услуги определения местоположения. Описаны методики для запроса информации о сеансах определения местоположения в архитектуре определения местоположения плоскости пользователя. В...
Тип: Изобретение
Номер охранного документа: 0002472298
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a9c

Универсальная корректировка блочности изображения

Изобретение относится к области обработки изображения и, более конкретно, к способам универсальной корректировки блочности изображения при низком быстродействии (малом количестве миллионов команд в секунду) (MIP). Техническим результатом является создание способа универсальной корректировки...
Тип: Изобретение
Номер охранного документа: 0002472304
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a9f

Основанная на местоположении и времени фильтрация информации широковещания

187 Изобретение относится к связи, в частности к способам посылки и приема информации широковещания. Техническим результатом является обеспечение автоматической идентификации информации широковещания, представляющей потенциальный интерес для пользователя. Указанный технический результат...
Тип: Изобретение
Номер охранного документа: 0002472307
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1aa1

Способ и устройство для поддержки экстренных вызовов (ecall)

Изобретение относится к области услуг или возможностей, предназначенных для беспроводных сетей связи, а именно к технологиям для поддержки неотложных вызовов (еСаll). Техническим результатом является эффективный обмен сигнализацией между терминалом и беспроводной сетью неотложного вызова при...
Тип: Изобретение
Номер охранного документа: 0002472309
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1aa2

Виртуальная sim-карта для мобильных телефонов

Изобретение относится к области управления сетевыми данными, такими как данные пользователя или абонента, а именно к предоставлению возможности резервировать информацию о подготовке к работе сотового телефона и личные данные с мобильного телефона на сервер. Технический результат заключается в...
Тип: Изобретение
Номер охранного документа: 0002472310
Дата охранного документа: 10.01.2013
Показаны записи 1-10 из 677.
10.01.2013
№216.012.1a18

Обнаружение многолучевого распространения для принимаемого sps-сигнала

Изобретение относится к спутниковой системе определения местоположения (SPS), предназначено для обнаружения и/или оценки многолучевых сигналов и позволяет повысить точность измерения псевдодальности и координат местоположения приемного устройства. Изобретение раскрывает, в частности, способ...
Тип: Изобретение
Номер охранного документа: 0002472172
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a3c

Способ для указания местоположения и направления элемента графического пользовательского интерфейса

Изобретение относится к указанию направления и местоположения элементов графического пользовательского интерфейса. Техническим результатом является повышение удобства и простоты использования многопанельных электронных устройств. Способ включает в себя прием пользовательского ввода на первой...
Тип: Изобретение
Номер охранного документа: 0002472208
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a8c

Виртуальное планирование в неоднородных сетях

Заявленное изобретение относится к обеспечению виртуального управления беспроводными ресурсами в среде мобильной связи. Техническим результатом является значительное снижение помех для макрозоны охвата или близлежащих зон охвата. В качестве примера, терминалы доступа в среде связи могут...
Тип: Изобретение
Номер охранного документа: 0002472288
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a8f

Кодирование и мультиплексирование управляющей информации в системе беспроводной связи

Изобретение относится к связи, в частности к технологиям отправки управляющей информации в системе беспроводной связи. Техническим результатом является повышение эффективности передачи управляющей информации, в частности ACK- и CQI-информации. Указанный результат достигается тем, что в способе...
Тип: Изобретение
Номер охранного документа: 0002472291
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a94

Система беспроводной связи с конфигурируемой длиной циклического префикса

Изобретение относится к системам связи. Технический результат заключается в том, чтобы снизить отрицательное воздействие разброса задержек. Для этого сначала определяются ожидаемые зоны покрытия для множества передач, которые должны передаваться в нескольких временных интервалах. Длина...
Тип: Изобретение
Номер охранного документа: 0002472296
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a96

Способ и устройство для осуществления информационного запроса сеанса для определения местоположения плоскости пользователя

Изобретение относится к системам определения местоположения. Технический результат заключается в улучшении качества услуги определения местоположения. Описаны методики для запроса информации о сеансах определения местоположения в архитектуре определения местоположения плоскости пользователя. В...
Тип: Изобретение
Номер охранного документа: 0002472298
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a9c

Универсальная корректировка блочности изображения

Изобретение относится к области обработки изображения и, более конкретно, к способам универсальной корректировки блочности изображения при низком быстродействии (малом количестве миллионов команд в секунду) (MIP). Техническим результатом является создание способа универсальной корректировки...
Тип: Изобретение
Номер охранного документа: 0002472304
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1a9f

Основанная на местоположении и времени фильтрация информации широковещания

187 Изобретение относится к связи, в частности к способам посылки и приема информации широковещания. Техническим результатом является обеспечение автоматической идентификации информации широковещания, представляющей потенциальный интерес для пользователя. Указанный технический результат...
Тип: Изобретение
Номер охранного документа: 0002472307
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1aa1

Способ и устройство для поддержки экстренных вызовов (ecall)

Изобретение относится к области услуг или возможностей, предназначенных для беспроводных сетей связи, а именно к технологиям для поддержки неотложных вызовов (еСаll). Техническим результатом является эффективный обмен сигнализацией между терминалом и беспроводной сетью неотложного вызова при...
Тип: Изобретение
Номер охранного документа: 0002472309
Дата охранного документа: 10.01.2013
10.01.2013
№216.012.1aa2

Виртуальная sim-карта для мобильных телефонов

Изобретение относится к области управления сетевыми данными, такими как данные пользователя или абонента, а именно к предоставлению возможности резервировать информацию о подготовке к работе сотового телефона и личные данные с мобильного телефона на сервер. Технический результат заключается в...
Тип: Изобретение
Номер охранного документа: 0002472310
Дата охранного документа: 10.01.2013
+ добавить свой РИД