ФИЛЬТР С ВНУТРЕННИМ СГЛАЖИВАНИЕМ ДЛЯ КОДИРОВАНИЯ ВИДЕО
INTERNAL SMOOTHING FILTER FOR ENCODING VIDEO

ОБЛАСТЬ ТЕХНИКИ
[0001] Настоящее раскрытие относится к кодированию видео и, более конкретно, к кодированию видео c внутренним предсказанием.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0002] Возможности цифрового видео могут быть включены в широкий диапазон устройств, включающих в себя цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (ассистенты PDA), ноутбук или настольные компьютеры, цифровые фотокамеры, цифровые записывающие устройства, цифровые медиаплееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, видеоустройства организации телеконференций и т.п. Цифровые видеоустройства реализуют способы сжатия видео, такие как способы, описанные в стандартах, определенных посредством MPEG-2, MPEG-4, ITU-T H.263 или ITU-T H.264/MPEG-4, Часть 10, усовершенствованное кодирование видео (AVC) и расширения таких стандартов, чтобы более эффективно передавать и принимать цифровую видеоинформацию. Новые стандарты видео, такие как стандарт кодирования видео с высокой эффективностью (HEVC), развитый посредством "Joint Collaboration Team - Video Coding" (JCTVC), которая является сотрудничеством между MPEG и ITU-T, продолжают появляться и развиваться. Этот новый стандарт HEVC также иногда называется H.265.
[0003] Способы сжатия видео выполняют пространственное предсказание и/или временное предсказание, чтобы уменьшить или удалить избыточность, характерную для видеопоследовательностей. Для основанного на блоке кодирования видеокадр или вырезка видео могут быть разделены на блоки, называемые блоком кодирования (блоками CU). В целом, CU имеет аналогичное назначение для макроблока стандарта H.264, за исключением того, что CU не имеет различия в размерах. Блоки CU в кадре или вырезке с внутренним кодированием (I) кодируются, используя пространственное предсказание относительно соседних блоков CU в одном и том же кадре или вырезке. Блоки CU в кадре или вырезке с внешним кодированием (P или B) могут использовать пространственное предсказание относительно соседних блоков CU в одном и том же кадре или вырезке или временное предсказание относительно других опорных кадров.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] В целом, настоящее раскрытие описывает способы для применения фильтра сглаживания к пикселям, окружающим выборки предсказания, в кодировании с внутренним предсказанием видеоданных. В частности, способы обеспечивают способ определения и применения фильтра сглаживания к выборкам предсказания, используемым в кодировании с внутренним предсказанием. В некоторых примерах способы могут включать в себя выбор фильтра сглаживания, чтобы применить к пикселям, окружающим выборки предсказания, на основании комбинации размера блока и режима с внутренним предсказанием, ассоциированного с текущим блоком.
[0005] В фиксированном, зависимом от режима внутреннем сглаживании видеокодер может определить тип фильтра сглаживания, относящегося к выборкам предсказания, на основании комбинации размера блока и режима с внутренним предсказанием, ассоциированного с текущим блоком. Комбинация размера блока и режима с внутренним предсказанием может быть использована для поиска фильтра в таблице фильтров. В этом случае не может быть служебных расходов, посланных на декодер, чтобы сигнализировать тип фильтра, используемый для сглаживания, так как Таблица фильтров будет доступна на стороне декодера, и комбинация размера блока и режима с внутренним предсказанием может быть использована аналогичным способом на стороне декодера.
[0006] В адаптивном, зависимом от режима внутреннем сглаживании видеокодер может выбрать фильтр сглаживания из двух опций фильтра, один из первой таблицы фильтров, и другой из второй таблицы фильтров, применить оба фильтра и определить, какой приводит к лучшим результатам. В этом случае синтаксис, указывающий выбранный фильтр, может быть закодирован с видео и послан на декодер, чтобы сигнализировать выбранный тип фильтра. В одном примере, если фильтр из второй таблицы фильтров приводит к лучшим результатам, видеокодер кодирует индикацию фильтрования. Когда используется фильтр из первой таблицы фильтров, не кодируется никакая индикация фильтрования.
[0007] Эти способы могут уменьшить количество дополнительных данных, закодированных с блоком, закодированным, используя кодирование с внутренним предсказанием, и поэтому количество данных, переданных на декодер. Видеодекодер, принимающий закодированные блоки с внутренним предсказанием, может применить фильтр сглаживания во время декодирования, используя первую таблицу фильтров, если индикация фильтрования не закодирована с блоком. Если индикация фильтрования закодирована с блоком, то видеодекодер может применить фильтр сглаживания во время декодирования, используя фильтр, который указан индикацией фильтрования.
[0008] В одном примере настоящее раскрытие направлено на способ, содержащий определение размера блока, ассоциированного с текущим блоком видеоданных, определение режима кодирования с внутренним предсказанием, ассоциированного с текущим блоком, выбор фильтра из таблицы фильтров, чтобы применить к текущему блоку, на основании размера блока и режима кодирования, и кодирование с внутренним предсказанием текущего блока, используя выбранный фильтр.
[0009] В другом примере настоящее раскрытие направлено на устройство для кодирования видеоданных, причем устройство содержит процессор, сконфигурированный для определения размера блока, ассоциированного с текущим блоком видеоданных, определения режима кодирования с внутренним предсказанием, ассоциированного с текущим блоком, выбора фильтра из таблицы фильтров, чтобы применить к текущему блоку, на основании размера блока и режима кодирования, и кодирования с внутренним предсказанием текущего блока, используя выбранный фильтр.
[0010] В другом примере настоящее раскрытие направлено на устройство для кодирования видеоданных, причем устройство содержит средство для определения размера блока, ассоциированного с текущим блоком видеоданных, средство для определения режима кодирования с внутренним предсказанием, ассоциированного с текущим блоком, средство для выбора фильтра из таблицы фильтров, чтобы применить к текущему блоку, на основании размера блока и режима кодирования, и средство для кодирования с внутренним предсказанием текущего блока, используя выбранный фильтр.
[0011] В дополнительном примере настоящее раскрытие направлено на считываемый компьютером запоминающий носитель, содержащий команды для кодирования видеоданных, которые после выполнения в процессоре вынуждают процессор определить размер блока, ассоциированный с текущим блоком видеоданных, определить режим кодирования с внутренним предсказанием, ассоциированный с текущим блоком, выбрать фильтр из таблицы фильтров, чтобы применить к текущему блоку, на основании размера блока и режима кодирования, и кодировать с внутренним предсказанием текущий блок, используя выбранный фильтр.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0012] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему кодирования и декодирования видео, которая может использовать способы настоящего раскрытия, чтобы поддерживать внутреннее сглаживание.
[0013] Фиг. 2A является концептуальной диаграммой, иллюстрирующей график, который изображает примерный набор направлений предсказания, ассоциированных с различными режимами с внутренним предсказанием.
[0014] Фиг. 2B является концептуальной диаграммой, иллюстрирующей другой график, который изображает примерный набор направлений предсказания, ассоциированных с различными режимами с внутренним предсказанием.
[0015] Фиг. 3 является концептуальной диаграммой, иллюстрирующей примерный набор направлений предсказания, ассоциированных с различными режимами с внутренним предсказанием.
[0016] Фиг. 4 является блок-схемой, иллюстрирующей пример видеокодера, который может реализовать способы, чтобы поддерживать внутреннее сглаживание.
[0017] Фиг. 5 является блок-схемой, иллюстрирующей пример видеодекодера, который декодирует закодированную видеопоследовательность.
[0018] Фиг. 6 является последовательностью операций, иллюстрирующей примерный способ для кодирования видеоданных в соответствии со способами настоящего раскрытия.
[0019] Фиг. 7 является последовательностью операций, иллюстрирующей примерный способ для декодирования видеоданных в соответствии со способами настоящего раскрытия.
[0020] Фиг. 8 является последовательностью операций, иллюстрирующей другой примерный способ для кодирования видеоданных в соответствии со способами настоящего раскрытия.
[0021] Фиг. 9 является последовательностью операций, иллюстрирующей другой примерный способ для декодирования видеоданных в соответствии со способами настоящего раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[0022] В целом, настоящее раскрытие описывает способы для определения и применения фильтра сглаживания к пикселям, окружающим выборки предсказания, используемые в кодировании с внутренним предсказанием видеоданных. Способы могут включать в себя определение, применить ли фильтр сглаживания к текущему блоку видеоданных, который кодируется. Например, определение, применить ли фильтр сглаживания, может быть основано на размере текущего закодированного блока и режиме кодирования, ассоциированного с текущим блоком. Режим кодирования текущего блока может быть основан на направлении, ассоциированном с кодированием с внутренним предсказанием текущего блока, или направлении текущего блока относительно блока, от которого предсказан текущий блок. Таблицы решений фильтрования могут быть сгенерированы и использованы для принятия решений относительно того, применить ли фильтрование с внутренним сглаживанием к текущему блоку, и/или тип фильтра с внутренним сглаживанием, чтобы применить к текущему блоку. Поэтому решение фильтрования может быть функцией размера блока и режима с внутренним предсказанием, ассоциированного с текущим блоком.
[0023] В видеокодировании предсказание может быть использовано для повышения эффективности и уменьшения количества закодированных видеоданных, и, следовательно, количества видеоданных, переданных или сохраненных для последующего извлечения и отображения. В современных системах кодирования видео часто используются два типа предсказания: внешнее предсказание и внутреннее предсказание. При внешнем предсказании текущий видеоблок предсказывается из видеоблока в другом кадре в видеопоследовательности. При внутреннем предсказании текущий видеоблок предсказывается из видеоблока в одном и том же кадре.
[0024] Как отмечено выше, кодирование с внутренним предсказанием включает кодирование пикселей текущего блока кадра относительно пикселей ранее закодированных блоков одного и того же кадра посредством выполнения направленной экстраполяции пикселей, окружающих текущий блок. В этом способе окружающие пиксели используются как выборки предсказания, чтобы сформировать пиксели для текущего блока. В целом, пиксели используются для формирования текущего блока вдоль указанного направления. Когда размер текущего блока увеличивается, может быть ухудшена точность предсказания пикселей текущего блока, которые находятся дальше от выборок предсказания. Чтобы преодолеть ухудшение кодирования с внутренним предсказанием, применяется сглаживание к окружающим выборкам предсказания.
[0025] Процесс кодирования видео может применить фильтр сглаживания к пикселям предсказания, выполнить и сравнить предсказание, используя как фильтрованные, так и нефильтрованные пиксели, и определить и сигнализировать, использовать ли фильтрованные или нефильтрованные пиксели на основании результата сравнения. Использование этого способа, который может называться адаптивным внутренним сглаживанием (AIS), приводит к повышению сложности кодера, так как это требует применения фильтра сглаживания к каждому блоку и сравнения результата с нефильтрованным блоком. Кроме того, использование этого способа, который явно сигнализирует, должен ли быть применен конкретный фильтр сглаживания, добавляется к информации служебных расходов, ассоциированной с каждым блоком кодирования. Дополнительно, статистическое кодирование и декодирование данных AIS (например, сигнал, фильтр сглаживания и т.п.) добавляют сложность к процессу кодирования и декодирования.
[0026] Другой способ выполнения AIS заключается в том, чтобы использовать таблицу индикатора фильтров в кодере и декодере, где значение индикатора зависит от размера блока и режима с внутренним предсказанием, которое указывает направление предсказания. Таблица может быть сгенерирована во время стадии конструирования, таким образом, избегая повышения вычислительной сложности кодера, так как решение относительно того, фильтрованы ли пиксели, не выполняется во время процесса кодирования. Однако некоторые изменения в видеокодере/декодере могут потребовать генерирования новой таблицы, чтобы заменить текущую таблицу.
[0027] Способы настоящего раскрытия предлагают упрощенную схему AIS или зависимое от режима внутреннее сглаживание (MDIS), которое основано на правиле, где правила относительно того, применить ли фильтр сглаживания, основаны на размере текущего блока и режиме предсказания, или направлении. MDIS может упорядочить режимы предсказания в иерархии, которая может быть отображена в различные размеры блока, где для увеличения размеров блока фильтруются больше режимов, согласно этой иерархии. В некоторых примерах определение, применить ли фильтр сглаживания, может дополнительно отличаться между большими блоками и меньшими блоками, где способ определения, применить ли фильтр сглаживания, может изменяться на основании размера блока. Дополнительно, для некоторых видеопоследовательностей, например, таковых с направленной структурой, применение фильтра сглаживания может не обеспечить практически никакой выгоды. Способы настоящего раскрытия могут также вынуждать определения фильтра сглаживания решить эти вопросы. Информация внутреннего предсказания и фильтра сглаживания может быть закодирована в заголовках соответствующих блоков и декодирована видеодекодером, чтобы применить соответствующий фильтр сглаживания во время декодирования.
[0028] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 10 кодирования и декодирования видео, которая может использовать способы настоящего раскрытия, чтобы применить фильтр сглаживания во время кодирования с внутренним предсказанием. Как показано на Фиг. 1, система 10 включает в себя исходное устройство 12, которое передает закодированное видео на приемное устройство 14 через канал 16 связи. Исходное устройство 12 и приемное устройство 14 могут содержать любое из широкого диапазона устройств. В некоторых примерах исходное устройство 12 и приемное устройство 14 могут содержать устройства беспроводной связи, такие как беспроводные телефонные трубки, так называемые сотовые или спутниковые радиотелефоны, или любые беспроводные устройства, которые могут передавать видеоинформацию по каналу 16 связи, когда канал 16 связи является беспроводным.
[0029] Однако способы настоящего раскрытия, которые в целом относятся к способам для кодирования с внутренним предсказанием, необязательно ограничены беспроводными приложениями или параметрами настройки. Например, эти способы также могут быть использованы в широком диапазоне других параметров настройки и устройств, включающих в себя устройства, которые связываются с помощью физических проводов, оптических волокон или других физических или беспроводных носителей, могут относиться к телевизионным вещаниям по воздуху, кабельным телевизионным передачам, спутниковым телевизионным передачам, передачам видео по Интернету, закодированному цифровому видео, которое закодировано на носитель данных, или другим сценариям. Например, закодированное видео может быть сохранено на устройстве хранения для последующего извлечения, декодирования и отображения посредством приемного устройства 14. В дополнение, способы кодирования или декодирования также могут применяться в автономном устройстве, которое необязательно связывается с любым другим устройством. Соответственно, канал 16 связи может содержать любую комбинацию беспроводных или проводных носителей, подходящих для передачи закодированных видеоданных, или других запоминающих носителей, и устройства 12, 14 могут содержать любое из множества проводных или беспроводных устройств хранения данных, таких как мобильные телефоны, смартфоны, цифровые медиа- плееры, телевизионные приставки, телевизоры, дисплеи, настольные компьютеры, портативные компьютеры, компьютерные планшеты, игровые консоли, портативные игровые устройства или подобное.
[0030] В примере на Фиг. 1 исходное устройство 12 включает в себя источник 18 видео, видеокодер 20, модулятор/демодулятор (модем) 22 и передатчик 24. Приемное устройство 14 включает в себя приемник 26, модем 28, видеодекодер 30 и устройство 32 отображения. В других примерах исходное устройство и приемное устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 12 может принимать видеоданные от внешнего источника 18 видео, такого как внешняя камера, архив хранения видео, источник компьютерной графики или подобное. Аналогично, приемное устройство 14 может связываться с внешним устройством отображения вместо включения интегрированного устройства отображения.
[0031] Иллюстрированная система 10 на Фиг. 1 является просто одним примером. Способы для применения фильтра сглаживания в кодировании с внутренним предсказанием могут быть выполнены любым цифровым устройством кодирования и/или декодирования видео. Хотя в целом способы настоящего раскрытия выполняются устройством кодирования видео, способы также могут быть выполнены видеокодером/декодером, обычно называемым "кодеком". Кроме того, способы настоящего раскрытия также могут быть выполнены процессором предварительной обработки видео. Исходное устройство 12 и приемное устройство 14 являются просто примерами таких устройств кодирования, в которых исходное устройство 12 генерирует закодированные видеоданные для передачи на приемное устройство 14. В некоторых примерах устройства 12, 14 могут работать по существу симметрическим способом таким образом, чтобы каждое из устройств 12, 14 включало в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать одно- или двухстороннюю передачу видео между видеоустройствами 12, 14, например, для потоковой передачи видео, воспроизведения видео, вещания видео или видеотелефонии.
[0032] Источник 18 видеоисходного устройства 12 может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или внешний видеосигнал от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 18 видео может генерировать основанные на компьютерных графических устройствах данные, такие как исходное видео или комбинация “живого” видео, архивированного видео и сгенерированного машиной видео. В некоторых случаях, если источник 18 видео является видеокамерой, исходное устройство 12 и приемное устройство 14 могут формировать так называемые камерофоны или видеофоны. Однако, как упомянуто выше, способы, описанные в настоящем раскрытии, могут применяться к кодированию видео в целом и могут применяться к беспроводным и/или проводным приложениям. В каждом случае захваченное, предварительно захваченное или сгенерированное машиной видео может быть закодировано видеокодером 20. Закодированная видеоинформация затем может модулироваться модемом 22 согласно стандарту связи и передаваться на приемное устройство 14 с помощью передатчика 24. Модем 22 может включать в себя различные смесители, фильтры, усилители или другие компоненты, сконструированные для модуляции сигнала. Передатчик 24 может включать в себя схемы, сконструированные для передачи данных, включающие в себя усилители, фильтры и одну или более антенн.
[0033] Приемник 26 приемного устройства 14 принимает информацию по каналу 16, и модем 28 демодулирует эту информацию. Снова, процесс кодирования видео может реализовать один или более способов, описанных в настоящем описании, чтобы применить фильтр сглаживания во время кодирования с внутренним предсказанием текущего блока. Информация, переданная по каналу 16, может включать в себя информацию синтаксиса, определенную видеокодером 20, которая также используется видеодекодером 30, который включает в себя элементы синтаксиса, которые описывают характеристики и/или обработку блоков предсказания (блоков PU), блоков кодирования (блоков CU) или других блоков закодированного видео, например, видеовырезок, видеокадров и видеопоследовательностей или групп картинок (картинок GOP). Устройство 32 отображения отображает декодированные видеоданные пользователю и может содержать любое множество устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.
[0034] В примере на Фиг. 1 канал 16 связи может содержать любой проводной или беспроводной коммуникационный носитель, такой как радиочастотный (RF, РЧ) спектр или одна или более физических линий передачи, или любая комбинация беспроводных или проводных носителей. Канал 16 связи может быть частью сети пакетной передачи, такой как локальная сеть, широкомасштабная сеть или глобальная сеть, такая как Интернет. Канал 16 связи в целом представляет любой подходящий коммуникационный носитель или коллекцию разных коммуникационных носителей для передачи видеоданных от исходного устройства 12 на приемное устройство 14, включая любую подходящую комбинацию проводных или беспроводных носителей. Канал 16 связи может включать в себя маршрутизаторы, переключатели, базовые станции или любое другое оборудование, которое может быть использовано для облегчения связи от исходного устройства 12 к приемному устройству 14.
[0035] Видеокодер 20 и видеодекодер 30 могут работать согласно стандарту сжатия видео, такому как появляющийся стандарт кодирования видео с высокой эффективностью (HEVC) или стандарт 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).
[0036] Стандарт ITU-T H.264/MPEG-4 (AVC) был сформулирован группой экспертов по кодированию видео ITU-T (VCEG) вместе с группой экспертов по движущимся изображениям ISO/IEC (MPEG) как продукт коллективного товарищества, известного как объединенная команда видео (JVT). В некоторых аспектах способы, описанные в настоящем раскрытии, могут применяться к устройствам, которые в целом соответствуют стандарту H.264. Стандарт H.264 описан в рекомендации H.264 ITU-T, Усовершенствованное Кодирование Видео для обычных аудиовизуальных услуг, посредством группы по изучению ITU-T от марта 2005, которая в настоящем описании может называться стандартом H.264 или спецификацией H.264, или стандартом H.264/AVC или спецификацией.
[0037] Объединенная команда видео (JVT) продолжает работать над расширениями к H.264/AVC и развивать новые стандарты, например, для HEVC. Усилия по стандартизации HEVC основаны на модели устройства кодирования видео, названной испытательной моделью HEVC (HM). HM предполагает несколько дополнительных возможностей устройства кодирования видео относительно существующих устройств согласно, например, ITU-T H.264/AVC. Например, тогда как H.264 обеспечивает девять режимов кодирования с внутренним предсказанием, HM обеспечивает целых тридцать пять режимов кодирования с внутренним предсказанием.
[0038] HM относится к блоку видеоданных в качестве блока кодирования (CU). Данные синтаксиса в пределах битового потока могут определить наибольший блок кодирования (LCU), который является наибольшим блоком кодирования в отношении количества пикселей. В целом, CU имеет аналогичное назначение для макроблока стандарта H.264, за исключением того, что CU не имеет различия в размерах. Таким образом, CU может быть разбит на подблоки CU. В целом, ссылки в настоящем раскрытии на CU могут относиться к наибольшему блоку кодирования картинки или под-CU в LCU. LCU может быть разбит на подблоки CU, и каждый под-CU может быть дополнительно разбит на подблоки CU. Данные синтаксиса для битового потока могут определить максимальное количество раз, сколько LCU может быть разбит, что называется, глубиной CU. Соответственно, битовый поток может также определить наименьший блок кодирования (SCU). Настоящее раскрытие также использует термин "блок" для ссылки на любое из: CU, PU или TU. Кроме того, когда настоящее раскрытие относится к примерам, включающим блок кодирования или CU, должно быть понятно, что другие примеры могут быть обеспечены относительно макроблоков, замененных блоками кодирования.
[0039] LCU может быть ассоциирован со структурой данных квадродерева. В целом, структура данных квадродерева включает в себя один узел для каждого CU, где корневой узел соответствует LCU. Если CU разбит на четыре подблока CU, узел, соответствующий CU, включает в себя четыре концевых узла, каждый из которых соответствует одному из подблоков CU. Каждый узел структуры данных квадродерева может выдать данные синтаксиса для соответствующего CU. Например, узел в квадродереве может включать в себя флаг разбиения, указывающий, разбит ли CU, соответствующий узлу, на подблоки CU. Элементы синтаксиса для CU могут быть определены рекурсивно и могут зависеть от того, разбит ли CU на подблоки CU.
[0040] CU, который не разбит (например, соответствующий концевому узлу в структуре данных квадродерева), может включать в себя один или более блоков предсказания (блоков PU). В целом, PU представляет все или часть из соответствующего CU и включает в себя данные для извлечения опорной выборки для PU. Например, когда PU закодирован с внутренним режимом, PU может включать в себя данные, описывающие режим с внутренним предсказанием для PU. Данные, описывающие режим с внутренним предсказанием, могут определить, например, направление, ассоциированное с режимом с внутренним предсказанием для PU (компоненты яркости и насыщенности цвета), и размер блока, ассоциированный с PU. В качестве другого примера, когда PU закодирован с внешним режимом, PU может включать в себя данные, определяющие вектор движения для PU. Данные, определяющие вектор движения, могут описать, например, горизонтальный компонент вектора движения, вертикальный компонент вектора движения, разрешение для вектора движения (например, точность в одну четверть пикселя или точность в одну восьмую пикселя), опорный кадр, к которому направлен вектор движения, и/или список опорных кадров (например, список 0 или список 1) для вектора движения и индекс предсказателя вектора направления. Данные для CU, определяющего PU (блоки PU), могут также описать, например, разделение CU на один или более блоков PU. Режимы разделения могут отличаться между: является ли CU незакодированным, закодированным в режиме с внутренним предсказанием или закодированным в режиме с внешним предсказанием.
[0041] CU, имеющий один или более блоков PU, может также включать в себя один или более блоков преобразования (блоки TU). После предсказания, используя PU, видеокодер может вычислить остаточное значение для части CU, соответствующего PU. Остаточное значение соответствует значениям разности пикселей, которые могут быть преобразованы в коэффициенты преобразования, квантованы и сканированы, чтобы сформировать упорядоченные коэффициенты преобразования для статистического кодирования. Размер TU необязательно ограничен размером PU. В частности, блоки TU могут быть того же размера или меньше, чем соответствующие блоки PU для CU. В некоторых примерах максимальным размером TU может быть размер соответствующего CU. В целом, блоки TU могут содержать структуры данных, которые включают в себя остаточные коэффициенты преобразования, ассоциированных с заданным CU.
[0042] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества подходящих схем кодера, например, одного или более микропроцессоров, цифровых сигнальных процессоров (процессоров DSP), специализированных интегральных схем (схем ASIC), программируемых пользователем вентильных матриц (матриц FPGA), дискретной логики, программного обеспечения, аппаратного обеспечения, программно-аппаратного обеспечения или любой их комбинации. Каждый видеокодер 20 и видеодекодер 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного кодера/декодера (кодека) в соответствующей камере, компьютере, мобильном устройстве, устройстве абонента, устройстве вещания, телевизионной приставке, сервере или подобном.
[0043] Видеопоследовательность обычно включает в себя последовательность видеокадров. Группа картинок (GOP), в целом, содержит последовательность из одного или более видеокадров. GOP может включать данные синтаксиса в заголовок GOP, заголовок одного или более кадров GOP или в другое место, которое описывает ряд кадров, включенных в GOP. Каждый кадр может включать в себя данные синтаксиса кадра, которые описывают режим кодирования для соответствующего кадра. Видеокодер 20 обычно оперирует над видеоблоками в пределах индивидуальных видеокадров, чтобы закодировать видеоданные. Видеоблок может соответствовать блоку кодирования (CU) или блоку разделения (PU) CU. Видеоблоки могут иметь фиксированные или переменные размеры и могут отличаться по размеру согласно указанному стандарту кодирования. Каждый кадр видео может включать в себя множество вырезок. Каждая вырезка может включать в себя множество блоков CU, которые могут включать в себя один или более блоков PU.
[0044] В качестве примера испытательная модель HEVC (HM) поддерживает предсказание в CU различных размеров. Размер LCU может быть определен информацией синтаксиса. Предположим, что размер конкретного CU составляет 2N×2N, HM поддерживает внутреннее предсказание в размерах 2N×2N или N×N и внешнее предсказание в симметричных размерах 2N×2N, 2N×N, N×2N или N×N. HM также поддерживает асимметричное разбиение для внешнего предсказания 2N×nU, 2N×nD, nL×2N и nR×2N. При асимметричном разбиении одно направление CU не разделено, в то время как другое направление разделено на 25% и 75%. Фрагмент CU, соответствующий 25%-ому разбиению, указан посредством "n", сопровождаемым индикацией "Верхний", "Нижний", "Левый" или "Правый". Таким образом, например, "2N×nU" относится к CU 2N×2N, который разделен горизонтально с PU 2N×0.5N сверху и PU 2N×1.5N снизу.
[0045] В настоящем раскрытии "N×N" и "N на N" могут быть использованы взаимозаменяемо, чтобы относиться к пиксельным размерностям видеоблока (например, CU, PU или TU) в отношении вертикальных и горизонтальных размерностей, например, 16×16 пикселей или 16 на 16 пикселей. В целом, блок 16×16 будет иметь 16 пикселей в вертикальном направлении (y=16) и 16 пикселей в горизонтальном направлении (x=16). Аналогично, блок N×N, в целом, имеет N пикселей в вертикальном направлении и N пикселей в горизонтальном направлении, где N представляет неотрицательное целое значение. Пиксели в блоке могут быть скомпонованы в рядах и колонках. Кроме того, блоки необязательно должны иметь то же количество пикселей в горизонтальном направлении, как в вертикальном направлении. Например, блоки могут содержать N×M пикселей, где М необязательно равно N.
[0046] Как отмечено выше, CU может быть закодирован, используя кодирование с внешним предсказанием или кодирование с внутренним предсказанием. При внутреннем предсказании текущий блок может быть предсказан относительно блока в том же кадре, который был уже закодирован. Обычно блоки кадра кодируются слева направо и сверху вниз или в некоторых примерах в порядке сканирования в виде буквы "z". Поэтому текущий блок может быть предсказан относительно блоков где-то выше его или налево от текущего блока. Размеры блока при кодировании с внутренним предсказанием могут изменяться от относительно небольшого размера, например, 2×2, до относительно большого размера, например, 128×128. Направление предсказания или направление от уже закодированного блока до текущего блока может определить режим с внутренним предсказанием. HМ предусматривает до 34 режимов, которые включают в себя 33 различных режимов направления с внутренним предсказанием, соответствующих направлению экстраполяции и одному режиму DC. Каждый из 33 режимов направления с внутренним предсказанием соответствует углу между 0 и 180 (или между 45 и -135 градусами от горизонтальной линии, двигаясь по часовой стрелке, в примере на Фиг. 2A), с угловым разрешением около 5,625°, указывающим направление экстраполяции пикселей от блока, используемого для предсказания пикселей текущего блока. Ненаправленный режим (обозначенный режимом 2) соответствует DC, где формирование выборок соседних пикселей используется для предсказания пикселей текущего блока. В некоторых примерах HМ может обеспечить 35-ый режим (режим 34), соответствующий плоскому режиму, где значения пикселей могут быть приспособлены, используя функцию градиента, рассмотренную более подробно ниже.
[0047] Во время кодирования с внутренним предсказанием на качество точности предсказания может быть оказано влияние и ухудшено. Например, когда размер PU увеличивается, может быть ухудшена точность предсказания пикселей дальше от пикселей предсказателя. Ухудшение точности предсказания может привести к большему количеству остаточных данных, что может привести к большему количеству данных, которые должны быть закодированы, переданы или сохранены. Фильтр сглаживания может быть применен к пикселям предсказателя, используемым для предсказания блока, чтобы повысить точность предсказания. В некоторых случаях, однако, лучшие результаты достигаются без использования фильтра сглаживания. Как отмечено выше, современные стандарты используют способы адаптивного внутреннего сглаживания (AIS).
[0048] Способы настоящего раскрытия предлагают упрощенную схему AIS, которая основана на правиле, где правила относительно того, применить ли фильтр сглаживания, главным образом основаны на размере текущего блока и режиме предсказания или направлении. В HМ размеры блока изменяются от небольшого размера, например, 2×2, к такому большому размеру, как 128×128, например. Режимы с внутренним предсказанием, доступные для каждого блока, могут изменяться на основании размера, который объяснен более подробно ниже. Для каждого размера блока может быть необходим фильтр сглаживания, когда предсказание применяется в некоторых направлениях, но не других направлениях, где направления соответствуют различным режимам с внутренним предсказанием. В одном примере комбинации размеров и режимов с внутренним предсказанием, для которых применен фильтр сглаживания, могут быть предварительно определены в таблице поиска (LUT). Поэтому определение, применить ли фильтр сглаживания, может быть общим и остается одним и тем же независимо от изменений в кодере и/или декодере, и сигнализация определения фильтрования может не быть необходима. Дополнительно, выполнение определения, применить ли фильтр сглаживания, не предполагает существенную сложность кодера.
[0049] В некоторых примерах определение, применить ли фильтр сглаживания, может дополнительно отличаться для больших блоков и меньших блоков, где способ определения, применить ли фильтр сглаживания, может изменяться на основании размера блока. Например, для некоторых размеров блока кодер может выполнить предсказание, используя как фильтрованные, так и нефильтрованные пиксели, и сравнить результаты для определения, использовать ли фильтр сглаживания. Кодер может затем сигнализировать режим фильтрования, то есть, используется ли фильтр сглаживания при кодировании блока. В одном примере может быть сигнализирован режим фильтрования, если он отличен от решения, которое будет получено на основании LUT, то есть решения фильтрования по умолчанию.
[0050] В одном примере могут быть определены один или более фильтров сглаживания (например, фильтры-кандидаты). Для каждой комбинации размеров блока и режимов с внутренним предсказанием Таблица может определить соответствующий фильтр для использования. Для комбинаций, для которых не используется никакой фильтр сглаживания, определенный фильтр может быть всепропускающим фильтром. Первичная Таблица может включать в себя наиболее вероятный фильтр сглаживания для каждой соответствующей комбинации режима с внутренним предсказанием и размера блока. В некоторых примерах вторичная Таблица (или несколько дополнительных таблиц) могут быть определены, чтобы включать в себя второй наиболее вероятный фильтр сглаживания (или несколько возможных фильтров сглаживания в случае нескольких дополнительных таблиц) для каждой соответствующей комбинации режима с внутренним предсказанием и размера блока. В одном примере может быть использована информация о наиболее вероятном фильтре сглаживания, если не указано иное. Информация, ассоциированная с кодированием с внутренним предсказанием (например, размер блока и режим с внутренним предсказанием), и информация фильтра сглаживания (например, режим фильтрования и Таблица(ы) вероятного фильтра сглаживания) могут быть закодированы в заголовках (или других структурах данных, таких как примечания) соответствующих блоков и декодирована видеодекодером, чтобы применить соответствующий фильтр сглаживания во время декодирования.
[0051] После кодирования с внутренним предсказанием или внешним предсказанием, чтобы сформировать предсказывающие данные (например, PU для CU), видеокодер 20 может вычислить остаточные данные, чтобы сформировать один или более блоков преобразования (блоков TU) для CU. Блоки PU в CU могут содержать данные пикселя в пространственной области (также называемой пиксельной областью), в то время как блоки TU в CU могут содержать коэффициенты в преобразованной области, например, после применения преобразования, такого как дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование, к остаточным видеоданным. Остаточные данные могут соответствовать пиксельным разностям между пикселями незакодированной картинки и значениями предсказания PU в CU. Видеокодер 20 может сформировать один или более блоков TU, включающих в себя остаточные данные для CU. Видеокодер 20 может затем преобразовать блоки TU.
[0052] После любых преобразований, чтобы сформировать коэффициенты преобразования, может быть выполнено квантование коэффициентов преобразования. Квантование в целом относится к процессу, в котором квантуются коэффициенты преобразования, чтобы, возможно, уменьшить количество данных, используемых для представления коэффициентов. Процесс квантования может уменьшить глубину в битах, ассоциированную с некоторыми или всеми коэффициентами. Например, значение n-bit может быть округлено в меньшую сторону к значению m-bit во время квантования, где n больше, чем m.
[0053] В некоторых примерах видеокодер 20 может использовать заранее заданный порядок сканирования для сканирования квантованных коэффициентов преобразования, чтобы сформировать упорядоченный вектор, который может быть статистически закодирован. В других примерах видеокодер 20 может выполнить адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы сформировать одномерный вектор, видеокодер 20 может статистически кодировать одномерный вектор, например, согласно контекстно-адаптивному кодированию с переменной длиной кода(CAVLC), контекстно-адаптивному двоичному арифметическому кодированию (CABAC), основанному на синтаксисе контекстно-адаптивному двоичному арифметическому кодированию (SBAC) или другому способу статистического кодирования.
[0054] Блок обработки, сконфигурированный для статистического кодирования, или другой блок обработки может выполнить другие функции обработки, такие как кодирование с нулевой длиной серий квантованных коэффициентов и/или генерирование информации синтаксиса, такой как значения кодированного шаблона блока (CBP), тип макроблока, режим кодирования, размер LCU или подобное.
[0055] Видеодекодер 30 приемного устройства 14 может быть сконфигурирован для выполнения способов, аналогичных и, в целом, симметричных любым из способов видеокодера 20 настоящего раскрытия. Например, видеодекодер 30 может принять статистически кодированные блоки CU видеокадра. Эти принятые данные могут включать в себя элементы синтаксиса, указывающие, использовалось ли кодирование с внутренним предсказанием, чтобы закодировать CU в видеокодере 20. В соответствии со способами настоящего раскрытия, элементы синтаксиса, ассоциированные с кодированием с внутренним предсказанием, могут включать в себя такую информацию как, например, режим с внутренним предсказанием или направление предсказания, размер блока и другую информацию, ассоциированную с фильтром сглаживания, когда применимо. Например, видеодекодер 30 может определить, что CU закодирован, используя кодирование с внутренним предсказанием, и декодировать элементы синтаксиса, включенные в закодированный CU, чтобы определить режим с внутренним предсказанием CU. Видеокодер 30 может также определить размер блока, используемого при кодировании с внутренним предсказанием, и, используя информацию о размере блока и режиме с внутренним предсказанием, видеодекодер 30 может определить, применить ли фильтр сглаживания к пикселям предсказателя при предсказании блока.
[0056] В одном примере видеодекодер 30 может определить, применить ли фильтр сглаживания на основании комбинации размера блока и режима с внутренним предсказанием, используемым для кодирования блока. Если не указано иное, видеодекодер 30 может использовать наиболее вероятный фильтр сглаживания, ассоциированный с комбинацией размера блока и режима с внутренним предсказанием. Если фильтр сглаживания, используемый для комбинации размера блока и режима с внутренним предсказанием, отличается от наиболее вероятного фильтра сглаживания для этой комбинации, индикация может быть декодирована видеодекодером 30 из элементов синтаксиса, ассоциированных с блоком, и фильтр сглаживания из второго (или более) наиболее вероятного фильтра сглаживания для этой комбинации выбирается и используется посредством видеодекодера 30.
[0057] В этом способе объем информации, закодированной для указания, применен ли фильтр сглаживания при кодировании с внутренним предсказанием, минимизируется и в некоторых случаях устраняется. Например, когда решение о применении фильтра сглаживания является наиболее вероятным для комбинации размера блока и режима с внутренним предсказанием, сигнализация относительно фильтра сглаживания не кодируется, и видеодекодер 30 в состоянии сделать определение, не запрашивая дополнительной информации, кроме размера блока и режима с внутренним предсказанием.
[0058] Видеокодер 20 и видеодекодер 30 могут быть реализованы как любая из множества подходящих схем кодера или декодера, в зависимости от конкретного случая, например, одного или более микропроцессоров, цифровых сигнальных процессоров (процессоров DSP), специализированных интегральных схем (схем ASIC), программируемых пользователем вентильных матриц (матриц FPGA), дискретных логических схем, программного обеспечения, аппаратного обеспечения, программно-аппаратного обеспечения или любой их комбинации. Каждый видеокодер 20 и видеодекодер 30 может быть включен в один или более кодеров или декодеров, любой из которых может интегрироваться как часть объединенного видеокодера/декодера (кодека). Устройство, включающее в себя видеокодер 20 и/или видеодекодер 30, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.
[0059] Фиг. 2A является концептуальной диаграммой, иллюстрирующей график, который изображает примерный набор направлений предсказания, ассоциированных с различными режимами с внутренним предсказанием. Как отмечено выше, HМ обеспечивает не менее тридцати трех направленных режимов кодирования с внутренним предсказанием. Кодер HM (например, видеокодер 20) может быть сконфигурирован таким образом, чтобы доступный набор режимов с внутренним предсказанием для блока мог зависеть от размера блока или PU. Таким образом, размер блока может определить количество режимов с внутренним предсказанием, доступных для блока, из которых кодер может выбрать режим с внутренним предсказанием, чтобы предсказать блок. ТАБЛИЦА 1, представленная ниже, иллюстрирует один пример соответствия между размерами блока и режимами с внутренним предсказанием, доступными для блоков этого размера. Направления, ассоциированные с режимами с внутренним предсказанием, иллюстрированы на Фиг. 3. Режим 2, не показанный на Фиг. 3, соответствует режиму DC, где формирование выборок соседних пикселей используется для предсказания пикселей текущего блока.
<b>ТАБЛИЦА 1 </b>
PU или размер блока
Режим с внутренним предсказанием
2×2
0~3
4×4
0~16
8×8
0~33
16×16
0~33
32×32
0~33
64×64
0~5
128×128
0~5
[0060] В примере на Фиг. 2A блок 106 (обозначенный пунктирной линией) может быть предсказан из соседних пикселей 100A-100AG (соседних пикселей 100) в зависимости от выбранного режима с внутренним предсказанием. Стрелки 102A-102AG (стрелки 102) представляют направления или углы, ассоциированные с различными режимами с внутренним предсказанием. Пример на Фиг. 2A представляет режимы с внутренним предсказанием, обеспеченные посредством HМ. Однако в других примерах может быть обеспечено больше или меньше режимов с внутренним предсказанием. Хотя примером блока 106 является блок пикселей 8×8, в целом, блок может иметь любое количество пикселей, например, 4×4, 8×8, 16×16, 32×32, 64×64, 128×128 и т.д. Хотя примером блока 106 является квадрат, способы настоящего раскрытия могут также применяться к другим размерам блока, например, блокам N×M, где N необязательно равно М.
[0061] Режим с внутренним предсказанием может быть определен согласно углу направления предсказания относительно, например, горизонтальной оси, которая перпендикулярна вертикальным сторонам блока 106. Таким образом, каждая из стрелок 102 может представлять конкретный угол направления предсказания соответствующего режима с внутренним предсказанием. В некоторых примерах режим направления с внутренним предсказанием может быть определен парой целых чисел (dx, dy), которая может представлять направление, которое использует соответствующий режим с внутренним предсказанием для экстраполяции пикселя контекста. Таким образом, угол режима с внутренним предсказанием может быть вычислен как dy/dx. Другими словами, угол может быть представлен согласно горизонтальному смещению dx и вертикальному смещению dy. Пиксельное значение в местоположении (x, y) в блоке 106 может быть определено из одного или более соседних пикселей 100, через которые проходит линия, которая также проходит через местоположение (x, y) с углом dy/dx.
[0062] Фиг. 2B является концептуальной диаграммой, иллюстрирующей график, который изображает другой примерный набор направлений предсказания, ассоциированных с различными режимами с внутренним предсказанием. В примере на Фиг. 2B показаны тридцать три направленных режима кодирования с внутренним предсказанием, аналогичные режимам на Фиг. 2A. В этом примере, в дополнение к 33 направленным режимам, есть два дополнительных режима: режим 2, соответствующий режиму DC, и режим 34, соответствующий плоскому режиму.
[0063] В примере на Фиг. 2B кодер и/или декодер могут быть сконфигурированы таким образом, чтобы доступный набор режимов с внутренним предсказанием для блока мог зависеть от размера блока, например, PU, CU или TU. Таким образом, размер блока может определить количество режимов с внутренним предсказанием, доступных для блока, из которых кодер может выбрать режим с внутренним предсказанием, чтобы предсказать блок. ТАБЛИЦА 2, представленная ниже, иллюстрирует другой пример соответствия между размерами блока и режимами с внутренним предсказанием, доступными для блоков этого размера.
<b>ТАБЛИЦА 2 </b>
PU или размер блока
Режим с внутренним предсказанием
4×4
0~16, 34
8×8
0~34
16×16
0~34
32×32
0~34
64×64
0~2,34
[0064] Фиг. 3 является концептуальной диаграммой, иллюстрирующей примерный набор направлений предсказания, ассоциированных с различными режимами с внутренним предсказанием. Каждый из 33 направленных режимов с внутренним предсказанием, обеспеченных посредством HМ, соответствует направлению с указанным углом. Например, режим 1 соответствует горизонтальному направлению экстраполяции или под углом 0° от горизонтальной линии, где блок, закодированный, используя режим 1, предсказан из пикселей, направленных к его левой стороне. В качестве другого примера, режим 0 соответствует вертикальному направлению экстраполяции или под углом 90° от горизонтальной линии, где блок, закодированный, используя режим 0, предсказан из пикселей непосредственно выше его. В качестве другого примера, режимы 3, 6 и 9 соответствуют диагональному направлению экстраполяции при угловом разрешении 45°. Режимы 0, 1 и 3-33 соответствуют направлениям предсказания, которые охватывают 180° (между режимами 6 и 9) с угловым разрешением около 5,625°. Режим 2 в примере HМ соответствует режиму DC, где используется формирование выборок из восьми соседних пикселей, чтобы предсказать пиксели текущего блока. Режим 34 соответствует плоскому режиму, где может быть включена линейная плоская функция, которая соответствует блоку целей предсказания. Плоский режим может работать хорошо в областях с плавно изменяющейся яркостью. Плоский режим может быть эффективным для предсказания больших блоков, но может быть менее эффективным, когда используется для предсказания меньших блоков. Окружности на Фиг. 3 представляют угловое разрешение направленных режимов с внутренним предсказанием, ассоциированных с каждой окружностью. Например, для окружности 0 разрешение между режимами в окружности (режимы 0 и 1) составляет 90°, разрешение между режимами в окружности 1 (режимы 3, 6 и 9) составляет 45°, разрешение между режимами внутри окружности 2 (режимы 4, 5, 7 и 8) составляет 22,5° и т.д.
[0065] Фиг. 4 является блок-схемой, иллюстрирующей пример видеокодера 20, который может реализовать способы для применения фильтра сглаживания к пикселям, окружающим выборки предсказания, используемые при кодировании с внутренним предсказанием видеоданных. Видеокодер 20 может выполнить внутреннее и внешнее предсказание видеоблоков в видеокадрах, включая блоки LCU, блоки CU и блоки PU, и вычислить остаточные значения, которые могут быть закодированы как блоки TU. Внутреннее кодирование основано на пространственном предсказании, чтобы уменьшить или удалить пространственную избыточность в видео в заданном видеокадре. Внешнее кодирование основано на временном предсказании, чтобы уменьшить или удалить временную избыточность в видео в смежных кадрах видеопоследовательности. Внутренний режим (I-режим) может относиться к любому из нескольких, основанных на пространстве режимов сжатия. Внешние режимы, такие как однонаправленное предсказание (P-режим), двунаправленное предсказание (B-режим) или обобщенное предсказание P/B (GPB-режим), могут относиться к любым из нескольких, основанных на времени режимов сжатия. Модуль 42 оценки движения и модуль 44 компенсации движения могут выполнить кодирование с внешним предсказанием, в то время как модуль 46 внутреннего предсказания может выполнить кодирование с внутренним предсказанием.
[0066] Как показано на Фиг. 4, видеокодер 20 принимает текущий видеоблок в видео или вырезке кадра, которая должна быть закодирована. В примере Фиг. 4 видеокодер 20 включает в себя модуль 40 выбора режима, модуль 41 предсказания, хранилище 64 опорных кадров, модуль 50 суммирования, модуль 52 преобразования, модуль 54 квантования и модуль 56 статистического кодирования. Модуль 41 предсказания включает в себя модуль 42 оценки движения, модуль 44 компенсации движения и модуль 46 внутреннего предсказания. Для восстановления видеоблока видеокодер 20 также включает в себя модуль 58 обратного квантования, модуль 60 обратного преобразования и модуль 62 суммирования. Фильтр удаления блочности (не показан на Фиг. 4) также может быть включен для фильтрования границ блока, чтобы удалить артефакты блочности из восстановленного видео. По желанию, фильтр деблокирования, как правило, будет фильтровать выходной сигнал модуля 62 суммирования.
[0067] Во время процесса кодирования видеокодер 20 принимает кадр или вырезку видео, которая должна быть закодирована. Кадр или вырезка могут быть разделены на множественные видеоблоки или блоки CU. Модуль 42 оценки движения и модуль 44 компенсации движения выполняют кодирование с внешним предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах, чтобы обеспечить временное сжатие. Модуль 46 внутреннего предсказания может выполнить кодирование с внутренним предсказанием принятого видеоблока относительно одного или более соседних блоков в том же самом кадре или вырезке, что и блок, который должен быть закодирован, чтобы обеспечить пространственное сжатие.
[0068] Модуль 40 выбора режима может выбрать один из режимов кодирования с внутренним или внешним кодированием, например, на основании результатов ошибок, и выдает выбор режима кодирования к модулю 41 предсказания. Модуль 41 предсказания затем формирует блок с внутренним или внешним кодированием и обеспечивает этот закодированный блок модулю 50 суммирования, чтобы генерировать остаточные данные блока, и модулю 62 суммирования, чтобы восстановить закодированный блок для использования в качестве опорного кадра. Когда модуль 40 выбора режима выбирает кодирование с внутренним предсказанием для блока, модуль 46 внутреннего предсказания может выбрать режим с внутренним предсказанием для блока. Например, выбранный режим с внутренним предсказанием может быть одним из 35 режимов, обеспеченных посредством HМ. Количество режимов с внутренним предсказанием, из которых выбирается режим с внутренним предсказанием для данного блока, может зависеть от размера блока, как показано в примере ТАБЛИЦЫ 1, представленной выше.
[0069] В одном примере, когда модуль 40 выбора режима выбирает кодирование с внешним предсказанием, модуль 42 оценки движения и модуль 44 компенсации движения могут выполнить обработку, ассоциированную с кодированием с внешним предсказанием, чтобы генерировать блок с внешним кодированием. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но иллюстрированы отдельно в концептуальных целях. Оценка движения, выполненная модулем 42 оценки движения, является процессом генерирования векторов движения, который оценивает движение для видеоблоков. Вектор движения, например, может указать смещение предсказывающего блока или PU в предсказывающем опорном кадре (или другом закодированном блоке) относительно текущего блока, закодированного в текущем кадре (или другом закодированном блоке). Предсказывающий блок является блоком, который, как считается, близко соответствует видеоблоку или PU, который должен быть закодирован в отношении пиксельной разности, которая может быть определена суммой абсолютной разности (SAD), суммой разности квадратов (SSD) или другими разностными показателями.
[0070] Вектор движения может также указать смещение фрагмента макроблока. Компенсация движения может включать выбор или генерирование предсказывающего блока на основании вектора движения, определенного посредством оценки движения. В некоторых примерах видеокодер 20 может вычислить значения для суб-целочисленных пиксельных позиций опорных кадров, сохраненных в хранилище 64 опорных кадров. Например, видеокодер 20 может вычислить значения одной четвертой пиксельной позиции, одной восьмой пиксельной позиции или другие фракционные пиксельные позиции опорного кадра. Поэтому модуль 42 оценки движения может выполнить поиск движения относительно полных пиксельных позиций и фракционных пиксельных позиций и вывести вектор движения с фракционной пиксельной точностью.
[0071] Модуль 42 оценки движения вычисляет вектор движения для видеоблока или PU кадра с внешним кодированием посредством сравнения PU с блоками опорного кадра в хранилище 64 опорных кадров. Модуль 44 компенсации движения может также интерполировать суб-целочисленные пиксели опорного кадра, например, I-кадра или P-кадра. HМ, как пример, описывает два списка: список 0, который включает в себя опорные кадры, имеющие порядок отображения раньше, чем текущий кодируемый кадр, и список 1, который включает в себя опорные кадры, имеющие порядок отображения позже, чем текущий кодируемый кадр. Поэтому данные, сохраненные в хранилище 64 опорных кадров, могут быть организованы согласно этим спискам. В некоторых случаях модуль 42 оценки движения может дополнительно вычислить значение разности векторов движения (MVD) для вектора движения и передать значение MVD, а не вектор движения непосредственно, в модуль 56 статистического кодирования.
[0072] В одном примере, когда модуль 40 выбора режима выбирает кодирование с внутренним предсказанием, модуль 46 внутреннего предсказания может выполнить обработку, ассоциированную с кодированием с внутренним предсказанием, чтобы генерировать блок с внутренним кодированием. Как отмечено выше, на основании размера блока может быть определено количество режимов с внутренним предсказанием, доступных для блока. Пример соответствия между размером блока и количеством режимов с внутренним предсказанием, доступных для блоков этого размера, показан в ТАБЛИЦЕ 1 и ТАБЛИЦЕ 2, представленных выше. Модуль 46 внутреннего предсказания может кодировать с внутренним предсказанием текущий видеоблок относительно соседних, ранее закодированных блоков, например, блоков выше, выше и справа, выше и слева, или слева от текущего блока, принимая порядок кодирования или блоков слева-направо, сверху-вниз. Модуль 46 внутреннего предсказания может использовать соседний блок на основании выбранного режима с внутренним предсказанием для текущего блока.
[0073] Модуль 46 внутреннего предсказания может определить подходящий режим с внутренним предсказанием для блока посредством выбора одного из доступных режимов с внутренним предсказанием. Модуль 46 внутреннего предсказания может выбрать режим с внутренним предсказанием, например, посредством вычисления значений ошибки для различных режимов с внутренним предсказанием, ассоциированных с размером блока, и выбора режима, который приводит к самому низкому значению ошибки. Режимы направленного предсказания могут включать в себя функции для комбинирования значений пространственно соседних пикселей и применения комбинированных значений к одной или более пиксельным позициям в блоке предсказания (PU). Как только значения для всех пиксельных позиций в PU будут вычислены, модуль 46 внутреннего предсказания может вычислить значение ошибки для режима предсказания на основании пиксельных разностей между PU и текущим блоком, который должен быть закодирован. Модуль 46 внутреннего предсказания может продолжить проверять режимы с внутренним предсказанием, ассоциированные с размером блока текущего блока, до тех пор пока не будет обнаружен режим с внутренним предсказанием, который обеспечивает приемлемое значение ошибки. Режим с внутренним предсказанием, приводящий к самому низкому значению ошибки, может затем быть использован для генерирования PU для текущего блока. Модуль 46 внутреннего предсказания может сигнализировать выбранный режим с внутренним предсказанием таким образом, чтобы он был закодирован с элементами синтаксиса, ассоциированными с закодированным блоком.
[0074] В соответствии с настоящим раскрытием, видеокодер 20 может определять, применить ли фильтр сглаживания к пикселям вокруг выборок предсказания текущего блока, который закодирован, используя кодирование с внутренним предсказанием. Определение может быть основано на размере блока и режиме с внутренним предсказанием, используемых при кодировании текущего блока. В одном примере согласно способам настоящего раскрытия не применяется фильтр сглаживания, когда используются режимы 0, 1 или 2, которые соответствуют вертикальному, горизонтальному и DC режимам, соответственно, так как каждый из этих режимов обеспечивает относительно точные результаты предсказания без применения сглаживания. Поэтому, когда направление предсказания является полностью горизонтальным, вертикальным, или режим с внутренним предсказанием является режимом DC, фильтр сглаживания не применяется. Определение, применить ли фильтр сглаживания для других режимов (то есть диагональных режимов), зависит от размера блока предсказания и режима с внутренним предсказанием. ТАБЛИЦА 3, представленная ниже, показывает примерное соотношение комбинаций размера блока и режима с внутренним предсказанием, для которого применен фильтр сглаживания. Комбинации размера блока и режима с внутренним предсказанием, для которых может быть применено фильтрование, могут быть основаны на офлайновом обучении и статистических результатах. ТАБЛИЦА 3 не представляет единственный тип соотношений, которые могут быть определены, но просто обеспечивает на примере, совместимом с настоящим раскрытием.
<b>ТАБЛИЦА 3</b>
Размер блока
Режимы, которые фильтруются
Показано на Фиг. 3
2×2
Нет фильтрования для всех режимов
Нет
4×4
Режим 3,6 и 9
Режимы между циклом 0 и циклом 1
8×8
Режим 3,4,5,6,7,8 и 9
Режимы между циклом 0 и циклом 2
16×16
Режим 3-17
Режимы между циклом 0 и циклом 3
32×32
Режим 3-33
Режимы между циклом 0 и циклом 4
64×64
Режим 3-4
Режимы между циклом 0 и циклом 4
128×128
Режим 3-4
Режимы между циклом 0 и циклом 4
[0075] Как иллюстрирует ТАБЛИЦА 3, определение, применить ли фильтр сглаживания, является общим и остается одним и тем же на основании размера блока и режима с внутренним предсказанием, используемого для кодирования блока. В одном примере комбинации размеров и режимов с внутренним предсказанием, показанные выше в ТАБЛИЦЕ 3, и для которых применен фильтр сглаживания, могут быть предварительно определены в таблице поиска (LUT). LUT может быть или доступна в обоих - кодере или декодере, или кодер может послать ее на декодер. Поэтому определение, применить ли фильтр сглаживания, может быть общим и остается одним и тем же независимо от изменений в кодере и/или декодере, и сигнализация определения фильтрования может не быть необходима. Дополнительно, создание определения, применить ли фильтр сглаживания, не вызывает существенной сложности кодера.
[0076] В одном примере во время кодирования с внутренним предсказанием блока кодер может определить, применить ли фильтр сглаживания к предсказывающим выборкам на основании используемой комбинации размера блока и режима с внутренним предсказанием согласно комбинациям, определенным в LUT. Эти комбинации могут быть ассоциированы с опцией наиболее вероятного фильтрования, как указано в таблице наиболее вероятных фильтров. Например, Таблица наиболее вероятных фильтров может быть составлена, чтобы указать для каждой комбинации размера блока и режима с внутренним предсказанием, какую опцию фильтрования использовать. В одном примере фильтр сглаживания может быть выбран из списка фильтров-кандидатов для каждой комбинации режима с внутренним предсказанием и размера блока. Никакая опция фильтрования не может быть обобщена в фильтр сглаживания, который является всепропускающим фильтром. В некоторых примерах могут быть использованы один или более фильтров сглаживания, где, например, один фильтр сглаживания может работать лучше для некоторых комбинаций размеров блока и режимов с внутренним предсказанием, и второй фильтр сглаживания может работать лучше для других комбинаций размеров блока и режимов с внутренним предсказанием. Количество фильтров в наборе фильтров-кандидатов сглаживания может изменяться от одной системы к другой. В одном примере опции фильтра для комбинации размера блока и режима с внутренним предсказанием могут быть основаны на офлайновом обучении с различными учебными видеоданными. Для простоты количество фильтров может быть равно 3, фильтр 0, фильтр 1 и фильтр 2, где фильтр 0 указывает всепропускающее фильтрование (то есть отсутствие фильтрования). Используя фильтры-кандидаты, Таблица наиболее вероятных фильтров может быть сгенерирована согласно следующей таблице, которая представлена в псевдокоде:
// Таблица наиболее вероятных фильтров
<img file="00000001.tif" he="76" wi="146" img-content="undefined" img-format="tif" />
[0077] В примере, представленном выше, наиболее вероятный фильтр сглаживания может быть определен для каждого размера блока и режима с внутренним предсказанием. Индекс таблицы фильтров сглаживания для конкретной комбинации может быть определен как [S, М], соответствующие размеру и режиму. Размер блока может варьироваться от 1 до 7, соответствуя размерам блока 2×2, 4×4, 8×8, 16×16, 32×32, 64×64 и 128×128, например. Режим с внутренним предсказанием может варьироваться от 1 до 40, например. Однако в примере настоящего раскрытия определены только 35 режимов, и поэтому остальная часть режимов заполнена 0, указывая фильтр 0 или всепропускающий фильтр. Пример таблицы, представленной выше, показывает каждую запись в таблице фильтров сглаживания из примерного набора фильтров (0, 1, 2). Режимы с внутренним предсказанием, для которых применен фильтр сглаживания 1 или 2, соответствуют комбинациям, определенным в ТАБЛИЦЕ 3, представленной выше.
[0078] В одном примере во время кодирования видеокодер 20 может реализовать фиксированное зависимое от режима кодирование с внутренним предсказанием, где видеокодер 20 выбирает наиболее вероятный фильтр сглаживания для каждой комбинации размера блока и режима с внутренним предсказанием, как определено таблицей, представленной выше. В этом примере видеокодер 20 может указать фиксированное, зависимое от режима кодирование с внутренним предсказанием без необходимости кодировать, какой фильтр сглаживания используется для блока. Во время декодирования, если указано фиксированное, зависимое от режима кодирование с внутренним предсказанием, декодер (например, видеодекодер 30) может определить, какой применить фильтр сглаживания, используя информацию из таблицы, представленной выше, на основании информации о размере блока и режиме с внутренним предсказанием, используемой в качестве индекса для таблицы. Например, блок 8x8, закодированный, используя режим с внутренним предсказанием, может соответствовать фильтру 1 ([3,6]), который является фильтром сглаживания 2. Фильтр 1 может указать, что информация получена из таблицы, соответствующей таблице наиболее вероятных фильтров.
[0079] В некоторых случаях использование фиксированного, зависимого от режима кодирования с внутренним предсказанием может не обеспечить наилучшие результаты для некоторых из больших размеров блока, например, 64×64 и 128×128. В одном примере во время кодирования с внутренним предсказанием блока видеокодер 20 может определить, применить ли фильтр сглаживания к предсказывающим выборкам, используя адаптивное, зависимое от режима кодирование с внутренним предсказанием. Для блоков, меньших, чем пороговый размер, например, 64×64, видеокодер 20 может использовать таблицу наиболее вероятных фильтров, показанных выше. Для блоков, больших или равных порогу, например, блоков 64×64 и больше, видеокодер 20 может оценить результаты для применения различных фильтров сглаживания, не включающих в себя фильтр, к предсказывающим выборкам, и определить, какой приводит к лучшим результатам. Результаты могут быть определены на основании метрики качества или метрики искажения скорости передачи. Часть скорости передачи упомянутой метрики может указывать скорость кодирования текущего блока, и часть искажения упомянутой метрики может указывать величину искажения в текущем блоке. Метрика «искажение - скорость передачи» может быть основана на скорости передачи, искажении или их комбинации.
[0080] В одном примере оценка применения различных фильтров сглаживания может быть основана на скорости кодирования, ассоциированной с применением каждого из фильтров к текущему блоку. Скорость кодирования может быть пропорциональна величине остаточных данных, соответствующих текущему блоку, когда используется фильтр сглаживания. Чем больше величина остаточных данных, тем выше скорость кодирования для текущего блока. Фильтр сглаживания, который приводит к меньшей величине остаточных данных и, следовательно, к лучшей скорости кодирования, может считаться фильтром, который приводит к лучшим результатам.
[0081] В другом примере оценка применения различных фильтров сглаживания может быть основана на величине искажения, ассоциированного с применением каждого из фильтров к текущему блоку. В одном примере степень искажения может быть определена на основании среднеквадратического значения ошибки между блоком предсказания и первоначальным блоком. Блок предсказания может быть результатом использования выборок предсказания, полученных посредством применения выбранного фильтра сглаживания. Фильтр сглаживания, который приводит к наименьшему среднеквадратическому значению ошибки и, следовательно, меньшему искажению, может считаться фильтром, который приводит к лучшим результатам.
[0082] В одном примере видеокодер 20 может сравнить результаты применения фильтра, определенного таблицей наиболее вероятных фильтров, показанной выше, с фильтрами, определенными второй таблицей наиболее вероятных фильтров, показанной ниже, которая представлена в псевдокоде:
// Вторая Таблица наиболее вероятных фильтров
<img file="00000002.tif" he="76" wi="147" img-content="undefined" img-format="tif" />
[0083] В некоторых примерах может быть использовано больше таблиц для определения других фильтров. В простом примере использования таблицы наиболее вероятных фильтров и второй таблицы наиболее вероятных фильтров, записи, соответствующие фильтрам, отличным от нуля, например, фильтрам 1 и 2 в первой таблице, могут быть заменены фильтром 0 во второй таблице, и наоборот. В этом способе сравнение между наиболее вероятным и вторым наиболее вероятным фильтром сделано между фильтрованием и нефильтрованием. Если опция фильтрования, которая приводит к лучшему результату, является опцией, определенной в таблице наиболее вероятных фильтров, то видеокодеру 20 нет необходимости указывать что-нибудь, так как декодер предполагает, что используется наиболее вероятный фильтр, если не определено иное. Если опция фильтрования, которая приводит к лучшему результату, является опцией, определенной во второй таблице наиболее вероятных фильтров, видеокодер 20 может сигнализировать режим фильтрования для указания, что фильтр, отличный от наиболее вероятного фильтра, должен быть применен во время декодирования. Таблицы фильтров могут быть сохранены в блоке памяти (не показан), ассоциированном с видеокодером 20, и доступны посредством блока 46 внутреннего предсказания во время кодирования.
[0084] Сигнализация режима фильтрования может быть сделана несколькими способами. В одном примере видеокодер 20 может использовать флаг режима фильтрования, чтобы сигнализировать, используется ли фильтрование, кроме того, что определено в таблице наиболее вероятных фильтров для некоторого блока. В примерах, где есть больше, чем две используемые таблицы фильтров, например, есть третья (или более) Таблица наиболее вероятных фильтров, видеокодер 20 может указать, какая из: второй или третьей (или более) таблиц наиболее вероятных фильтров используется для некоторого блока. В еще одном примере сигнализация может быть основана на комбинации контекстной информации, такой как, размер блока текущего блока, режим предсказания и режим фильтрования соседних блоков. Контекстная информация может быть использована, чтобы составить таблицу VLC или таблицу CABAC, которая статистически кодирует сигнал относительно того, использовалось ли фильтрование для текущего блока. В этом способе декодер может определить на основании контекстной информации, должно ли быть использовано фильтрование с блоком, и использовать таблицу VLC или информацию CABAC, чтобы определить режим фильтрования.
[0085] В других примерах другие способы могут быть использованы для определения, применить ли фильтр сглаживания. Способы фильтра сглаживания настоящего раскрытия могут обеспечить решение режима фильтрования с внутренним сглаживанием (фильтровать или нет) на основании статистики метрики небольшого искажения в зависимости от скорости передачи как функции комбинации режима с внутренним предсказанием и размера блока.
[0086] Снова ссылаясь на Фиг. 2B, она иллюстрирует комбинации режимов с внутренним предсказанием и размера PU, которые являются кандидатами для фильтрования с внутренним сглаживанием, на основании сравнения между статистикой фильтрованных и нефильтрованных режимов с внутренним сглаживанием. Например, статистические данные указывают, что вертикальное (режим 0) и горизонтальное (режим 1) направления предсказания являются кандидатами для фильтрования с внутренним сглаживанием для PU размера 32×32, и главные диагональные направления с внутренним предсказанием (режимы 3, 6, 9) являются кандидатами для фильтрования с внутренним сглаживанием для PU размеров 32×32, 16×16, 8×8 и 4×4. Статистика может также указывать, что направления с внутренним предсказанием между горизонтальным или вертикальным направлениями с внутренним предсказанием и главными диагональными направлениями являются кандидатами для фильтрования с внутренним сглаживанием в прогрессивно меньших размерах PU. Для режима DC статистика может указать, что режим 2, режим DC, не является кандидатом для фильтрования с внутренним сглаживанием, в то время как плоский режим (режим 34) является кандидатом для фильтрования с внутренним сглаживанием в некоторых размерах PU, например, 8×8, 16×16 и 32×32.
[0087] Хотя статистика может указать, какие режимы с внутренним предсказанием и какие размеры PU являются кандидатами для фильтрования с внутренним сглаживанием, эксперименты эффективности кодирования могут демонстрировать, что назначение кандидата для фильтрования с внутренним сглаживанием, показанное на Фиг. 2B, может не быть оптимальным в смысле искажения в зависимости от скорости передачи. Поэтому кандидаты с внутренним сглаживанием на Фиг. 2B могут быть "шаблоном модели" для получения "шаблона поднабора" с более высокой эффективностью кодирования. В одном примере "шаблон поднабора" определен посредством выбора кандидатов для фильтрования с внутренним сглаживанием из "шаблона модели" для каждого режима с внутренним предсказанием и для каждого размера PU, или альтернативно- никакого фильтрования с внутренним сглаживанием для любого размера PU, соответствующего некоторому режиму с внутренним предсказанием. ТАБЛИЦЫ 4-7, представленные ниже, обеспечивают некоторые примеры шаблонов поднабора. ТАБЛИЦЫ 4-7 могут, в целом, называться Таблицами решений фильтрования.
[0088] В каждой из ТАБЛИЦ 4-7 "1" может указывать, что фильтрование с внутренним сглаживанием применяется к соответствующему режиму с внутренним предсказанием и размеру блока. Поэтому "1" в конкретной позиции колонки и ряда указывает, что внутреннее сглаживание применяется в случае режима с внутренним предсказанием и размера блока, которые отображены в эти позиции колонки и ряда, соответственно. В одном примере ТАБЛИЦА 4 может соответствовать "шаблону модели", и каждая из ТАБЛИЦ 5-7 может соответствовать различному "шаблону поднабора." В другом примере ТАБЛИЦА 7 может соответствовать "шаблону модели", и каждая из ТАБЛИЦ 4-6 может соответствовать различному "шаблону поднабора." "Шаблон модели" может соответствовать Фиг. 2B и иллюстрирован ТАБЛИЦЕЙ 4, например, которая также показывает размер PU 64×64 для обобщения. ТАБЛИЦЫ 5-7 могут представлять "шаблоны поднабора". В одном примере настоящего раскрытия ТАБЛИЦА 7 может представить "шаблон поднабора", который подходит для общих видеопоследовательностей на основании экспериментов эффективности кодирования.
[0089] После того как модуль 41 предсказания генерирует предсказывающий блок или PU для текущего видеоблока (с внешним или внутренним кодированием), видеокодер 20 формирует остаточный видеоблок посредством вычитания предсказывающего блока из текущего видеоблока. Модуль 50 суммирования представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 52 преобразования может формировать один или более блоков преобразования (блоки TU) из остаточного блока. Модуль 52 преобразования применяет преобразовывание, такое как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование, к TU, формируя видеоблок, содержащий остаточные коэффициенты преобразования. Преобразовывание может преобразовать остаточный блок из области пикселя в область преобразования, такую как частотная область.
[0090] Модуль 52 преобразования может выполнять другие преобразования, такие как преобразования, определенные посредством HМ, которые концептуально аналогичны DCT. Могут быть также использованы вейвлет-преобразования, целочисленные преобразования, преобразования частотного поддиапазона или другие типы преобразований. В любом случае модуль 52 преобразования применяет преобразовывание к остаточному блоку, производя блок остаточных коэффициентов преобразования. Преобразовывание может преобразовать остаточную информацию из области пиксельного значения в область преобразования, такую как частотная область.
[0091] Модуль 52 преобразования может послать получившиеся в результате коэффициенты преобразования на модуль 54 квантования. Модуль 54 квантования квантует преобразованные коэффициенты, чтобы дополнительно уменьшить скорость передачи битов. Процесс квантования может уменьшить глубину в битах, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством регулирования параметра квантования. В некоторых примерах модуль 54 квантования затем может выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Альтернативно, модуль 56 статистического кодирования может выполнить сканирование.
[0092] После квантования модуль 56 статистического кодирования статистически кодирует квантованные коэффициенты преобразования. Например, модуль 56 статистического кодирования может выполнить контекстно-адаптивное кодирование с переменной длиной кода (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) или другой способ статистического кодирования. После статистического кодирования посредством блока 56 статистического кодирования закодированное видео может быть передано на другое устройство (например, видеодекодер 30) или заархивировано для более поздней передачи или извлечения.
[0093] В некоторых случаях модуль 56 статистического кодирования или другой блок видеокодера 20 может быть сконфигурирован для выполнения других функций кодирования в дополнение к статистическому кодированию. Например, модуль 56 статистического кодирования может быть сконфигурирован для определения значений CBP для макроблоков и фрагментов. Кроме того, в некоторых случаях модуль 56 статистического кодирования может выполнить кодирование переменной длины кода коэффициентов в макроблоке или его фрагменте. В частности, модуль 56 статистического кодирования может применить зигзагообразное сканирование или другой шаблон сканирования для сканирования коэффициентов преобразования в макроблоке или фрагменте и закодировать серии нолей для дополнительного сжатия. Модуль 56 статистического кодирования может также сконструировать информацию заголовка, которая включает в себя соответствующие элементы синтаксиса, для передачи в закодированном видеобитовом потоке. Чтобы статистически кодировать элементы синтаксиса, модуль 56 статистического кодирования может выполнить CABAC и преобразовать в двоичную форму элементы синтаксиса в один или более двоичных битов на основании контекстной модели. Модуль 56 статистического кодирования может также выполнить CAVLC и закодировать элементы синтаксиса как ключевые слова согласно вероятностям на основании контекста.
[0094] В соответствии со способами настоящего раскрытия, модуль 56 статистического кодирования может быть сконфигурирован для кодирования индикации, что фильтр сглаживания, отличный от наиболее вероятного фильтра, применен к выборкам предсказания во время кодирования с внутренним предсказанием. Когда решение фильтрования для блока является тем же, как решение, определенное в таблице наиболее вероятных фильтров, видеокодер 20 может не посылать индикацию на декодер, и поэтому никакая дополнительная информация не должна быть закодирована. Когда индикация является необходимой, например, когда решение фильтрования для блока определено во второй (или более) таблице наиболее вероятных фильтров, видеокодер 20 может закодировать индикацию относительно фильтрования. Дополнительно, видеокодер 20 может закодировать режим с внутренним предсказанием, используемый при кодировании блока. Модуль 56 статистического кодирования может закодировать индикацию (например, режим с внутренним предсказанием и решение фильтрования, когда применимо), используя CABAC. Кроме того, модуль 56 статистического кодирования может использовать информацию контекста для выполнения CABAC, чтобы закодировать индикацию, которая указывает режим с внутренним предсказанием для блока, и информацию фильтрования, когда второй (или более), наиболее вероятный фильтр применен к выборкам предсказания.
[0095] Модуль 58 обратного квантования и модуль 60 обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для более позднего использования в качестве опорного блока опорного кадра. Модуль 44 компенсации движения может вычислить опорный блок посредством суммирования остаточного блока к предсказывающему блоку одного из кадров хранилища 64 опорных кадров. Модуль 44 компенсации движения может также применить один или более фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования в оценке движения. Модуль 62 суммирования суммирует восстановленный остаточный блок с блоком предсказания с компенсацией движения, произведенному модулем 44 компенсации движения, чтобы сформировать восстановленный видеоблок для хранения в хранилище 64 опорных кадров. Восстановленный видеоблок может быть использован модулем 42 оценки движения и модулем 44 компенсации движения как опорный блок, чтобы внешне предсказать блок в последующем видеокадре.
[0096] Фиг. 5 является блок-схемой, иллюстрирующей пример видеодекодера 30, который декодирует закодированную видеопоследовательность. В примере Фиг. 5 видеодекодер 30 включает в себя модуль 70 статистического декодирования, модуль 71 предсказания, модуль 76 обратного квантования, модуль 78 обратного преобразования, хранилище 82 опорных кадров и блок 80 суммирования. Модуль 71 предсказания включает в себя модуль 72 компенсации движения и модуль 74 внутреннего предсказания. Видеодекодер 30 в некоторых примерах может выполнять проход декодирования, в целом, обратный проходу кодирования, описанному относительно видеокодера 20 (Фиг. 4). Модуль 71 предсказания может генерировать данные предсказания на основании информации, принятой от модуля 70 статистического декодирования. Когда указано кодирование с внешним предсказанием, модуль 72 компенсации движения может генерировать данные предсказания на основании векторов движения, принятых от модуля 70 статистического декодирования. Когда указано кодирование с внутренним предсказанием, модуль 74 внутреннего предсказания может генерировать данные предсказания для текущего блока текущего кадра на основании указанного режима с внутренним предсказанием и данные от ранее декодированных блоков текущего кадра.
[0097] Видеодекодер 30 может принять закодированный видеобитовый поток, например, с помощью сети, вещания или от физического носителя. Закодированный битовый поток может включать в себя статистически закодированные видеоданные. Модуль 70 статистического декодирования видеодекодера 30 статистически декодирует битовый поток, чтобы генерировать квантованные коэффициенты, векторы движения и данные предсказания. Модуль 70 статистического декодирования отправляет векторы движения и данные предсказания на модуль 71 предсказания.
[0098] В соответствии со способами настоящего раскрытия, статистически закодированные видеоданные могут включать в себя статистически закодированную индикацию режима с внутренним предсказанием, используемого при кодировании текущего блока. Статистически закодированные видеоданные также могут включать в себя статистически закодированную индикацию фильтрования, указывающую решение фильтра сглаживания. В одном примере индикация фильтрования может быть использована для указания, что Таблица наиболее вероятных фильтров не была использована для выбора фильтра сглаживания во время кодирования с внутренним предсказанием текущего блока. Когда статистически закодированные видеоданные не включают в себя индикацию фильтрования, отсутствие индикации подразумевает, что Таблица наиболее вероятного фильтра была использована для выбора фильтра сглаживания во время кодирования с внутренним предсказанием текущего блока. Статистически закодированные видеоданные могут также включать в себя информацию о размере блока, которую модуль 70 статистического декодирования может использовать наряду с режимом с внутренним предсказанием в качестве информации контекста при статистическом декодировании индикации фильтрования для закодированного с внутренним предсказанием блока. В этом способе модуль 70 статистического декодирования может декодировать индикацию фильтрования (например, применен ли фильтр сглаживания) и посылать индикацию на модуль 74 внутреннего предсказания.
Y
[0099] Модуль 72 компенсации движения может использовать векторы движения, принятые в битовом потоке, чтобы идентифицировать блок предсказания в опорных кадрах в хранилище 82 опорных кадров. Модуль 74 внутреннего предсказания может использовать режимы с внутренним предсказанием, принятые в битовом потоке, чтобы сформировать блок предсказания из пространственно смежных блоков. Модуль 76 обратного квантования обратно квантует, то есть деквантует, квантованные коэффициенты блока, обеспеченные в битовом потоке и декодированные блоком 70 дестатистического кодирования. Процесс обратного квантования может включать в себя обычный процесс, например, как определено стандартом декодирования H.264. Процесс обратного квантования может также включать в себя использование параметра квантования QP, вычисленного видеокодером 20 для каждого видеоблока или CU, чтобы определить степень квантования и, аналогично, степень обратного квантования, которое должно быть применено. Модуль 78 обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области.
[0100] Модуль 72 компенсации движения может также выполнить интерполяцию на основании фильтров интерполяции. Модуль 72 компенсации движения может использовать фильтры интерполяции, которые используются видеокодером 20 во время кодирования видеоблока, чтобы вычислить интерполированные значения для суб-целочисленных пикселей опорного блока. Модуль 72 компенсации движения может определить фильтры интерполяции, используемые видеокодером 20, от принятых элементов синтаксиса и использовать фильтры интерполяции, чтобы сформировать предсказывающие блоки.
[0101] Модуль 72 компенсации движения использует некоторое из: информации синтаксиса, чтобы определить размеры блоков LCU и блоков CU, используемых для кодирования кадра(ов) и/или вырезки(вырезок) закодированной видеопоследовательности, информации разделения, которая описывает, как разделен каждый макроблок кадра закодированной видеопоследовательности, режимов, указывающих, как каждый фрагмент кодирован, одного или более опорных кадров (и списков опорных кадров) для каждого внешне закодированного CU, и другой информации, чтобы декодировать закодированную видеопоследовательность.
[0102] Модуль 74 внутреннего предсказания может также определить, применять ли фильтр сглаживания к выборкам предсказания при выполнении блока предсказания. Модуль 74 внутреннего предсказания может выполнить определение относительно того, применять ли фильтр сглаживания на основании размера блока и соответствующего режима с внутренним предсказанием. Если индикация фильтрования не сигнализирована, модуль 74 внутреннего предсказания может определить фильтрование на основании того, что определено в таблице наиболее вероятных фильтров (показанной выше) для комбинации размера блока и режима с внутренним предсказанием. Если индикация фильтрования сигнализирована, модуль 74 внутреннего предсказания может определить, что решение фильтрования не основано на таблице наиболее вероятных фильтров и может определить фильтрование на основании того, что определено во второй таблице наиболее вероятных фильтров (показанной выше) для комбинации размера блока и режима с внутренним предсказанием. В одном примере может быть обеспечена более чем одна дополнительная Таблица фильтров, например, вторая, третья или более таблиц наиболее вероятных фильтров. В этом примере индикация фильтрования может также указывать, какая из таблиц должна быть использована для определения, какой фильтр сглаживания применить. Таблицы фильтров могут быть сохранены в блоке памяти (не показан) в видеодекодере 30. Модуль 74 внутреннего предсказания может получить доступ к Таблицам фильтров из памяти во время декодирования.
[0103] Блок 80 суммирования суммирует остаточные блоки с соответствующими блоками предсказания, сгенерированными модулем 72 компенсации движения или модулем 74 внутреннего предсказания, чтобы сформировать декодированные блоки. Если необходимо, фильтр удаления блочности может также применяться для фильтрования декодированных блоков, чтобы удалить артифакты блочности. Декодированные видеоблоки затем сохраняются в хранилище 82 опорных кадров, которое обеспечивает опорные блоки для последующей компенсации движения, а также формирует декодированное видео для представления на устройстве отображения (таком как устройство 32 отображения на Фиг. 1).
[0104] Фиг. 6 является последовательностью операций, иллюстрирующей примерный способ для кодирования видеоданных в соответствии со способами настоящего раскрытия. Хотя описано относительно видеокодера 20 (Фиг. 1 и 4) в целях примера, должно быть понятно, что способы согласно Фиг. 6 могут быть выполнены любым модулем кодирования видео. Кроме того, этапы, иллюстрированные на Фиг. 6, могут быть выполнены в различном порядке, некоторые этапы могут быть опущены, и дополнительные этапы могут быть добавлены, не отступая от способов настоящего раскрытия.
[0105] Видеокодер 20 может принимать блок (например, CU) видеоданных, которые должны быть закодированы. Когда текущий блок определяется как блок, который должен быть закодирован, используя кодирование с внутренним кодированием, видеокодер 20 может определить, применить ли фильтр сглаживания к выборкам предсказания, и определить фильтр сглаживания, если таковой должен быть применен. Фильтр сглаживания в некоторых случаях может быть применен к выборкам предсказания или предсказателям, которые используются для предсказания блока в одном и том же кадре при кодировании с внутренним предсказанием. Применение фильтра сглаживания в некоторых случаях обеспечивает более точное предсказание и минимизирует блочность в восстановленном предсказанном кадре.
[0106] Видеокодер 20 может определить, работать ли в фиксированном зависимом от режима кодировании с внутренним предсказанием или адаптивном зависимом от режима кодировании с внутренним предсказанием (этап 602). В одном примере определение может быть сделано на уровне последовательности или картинки на основании контента или на основании размера блока. Например, для больших блоков может быть использовано адаптивное, зависимое от режима кодирование с внутренним предсказанием, и для маленьких блоков может быть использовано фиксированное, зависимое от режима кодирование с внутренним предсказанием. В результате, когда используются большие блоки, имеется меньше блоков для кодирования в пределах картинки, таким образом, меньший объем информации служебных расходов, чем тогда, когда используются маленькие блоки. Однако фиксированное, зависимое от режима кодирование с внутренним предсказанием добавляет немного или не добавляет дополнительной информации служебных расходов, тогда как адаптивное, зависимое от режима кодирование с внутренним предсказанием запрашивает дополнительную информацию служебных расходов. В этом способе выбранный режим может обеспечить компромисс между информацией служебных расходов и производительностью.
[0107] Если видеокодер 20 должен работать в фиксированном, зависимом от режима кодировании с внутренним предсказанием, видеокодер 20 может определить, применить ли фильтр сглаживания на основании фильтра, определенного в таблице фильтров, например, таблице наиболее вероятных фильтров, выбранной на основании комбинации размера блока и режима с внутренним предсказанием, и применить указанный фильтр (этап 604).
[0108] В одном примере для каждого из доступных режимов с внутренним предсказанием, например, 35 режимов, определенных посредством HМ, применить ли фильтр сглаживания, зависит от размера блока. ТАБЛИЦА 3, представленная выше, показывает комбинации размера блока и режима с внутренним предсказанием, для которых применен фильтр сглаживания. Таблица наиболее вероятных фильтров (показанная выше) может быть сгенерирована на основании комбинаций размера блока и режима с внутренним предсказанием. Каждые из записей таблицы могут указывать фильтр, который должен быть применен для соответствующего индекса, где индекс ассоциирован с размером блока и режимом с внутренним предсказанием. Каждый из фильтров, определенных в таблице, может быть из набора фильтров, где набор фильтров может изменяться от одного потока к другому, одной группы кадров к другой, одного кадра или вырезке к другому, и т.д. Для простоты всепропускающий фильтр может быть идентифицирован для записей, где не должен быть применен никакой фильтр сглаживания.
[0109] Если видеокодер 20 должен работать в адаптивном, зависимом от режима кодировании с внутренним предсказанием, видеокодер 20 может определить, равен ли размер блока или выше порогового размера блока, например, 64×64 (этап 606). Если размер блока меньше, чем пороговый размер блока, то видеокодер 20 может применить фильтр, определенный таблицей наиболее вероятных фильтров, и определить, применить ли фильтр сглаживания на основании размера блока и режима с внутренним предсказанием (этап 604). Если размер блока равен или больше, чем пороговый размер блока, видеокодер 20 может определить, приводит ли применение фильтра согласно таблице наиболее вероятных фильтров к лучшим результатам, чем применение фильтра согласно второй таблице наиболее вероятных фильтров (этап 608). Поэтому видеокодер 20 может применить соответствующий фильтр из первой таблицы к блоку, применить соответствующий фильтр из второй таблицы к блоку и оценить результаты применения двух фильтров посредством сравнения их друг с другом, чтобы определить, какой приводит к лучшим результатам.
[0110] В одном примере для каждой комбинации размера блока и режима с внутренним предсказанием применение фильтра согласно одной из таблиц может быть тем же, как не применение фильтра в целом, или, в этом примере, применение всепропускающего фильтра. Поэтому, в действительности, сравнение применения фильтра согласно таблице наиболее вероятных фильтров и применения фильтра согласно второй таблице наиболее вероятных фильтров может быть тем же, как сравнение результатов применения фильтра или не применения фильтра.
[0111] Если применение фильтра согласно таблице наиболее вероятных фильтров приводит к лучшим результатам, видеокодер 20 может определить и применить фильтр, определенный таблицей наиболее вероятных фильтров, на основании комбинации размера блока и режима с внутренним предсказанием, ассоциированной с текущим блоком (этап 604). Если применение фильтра согласно второй таблице наиболее вероятных фильтров приводит к лучшим результатам, видеокодер 20 может определить и применить фильтр, определенный второй таблицей наиболее вероятных фильтров на основании комбинации размера блока и режима с внутренним предсказанием, ассоциированной с текущим блоком (этап 610). В некоторых примерах, когда имеется больше, чем 2 таблицы наиболее вероятных фильтров, например, третья или более, сравнение среди результатов применения всех возможных фильтров может быть сделано для определения, какую таблицу фильтров использовать для выбора фильтра сглаживания, чтобы применить к выборкам предсказания. В некоторых примерах может быть использовано множество таблиц решений фильтрования, например. ТАБЛИЦЫ 4-7, представленные выше, где одна Таблица может считаться "шаблоном модели", и оставшиеся таблицы могут считаться альтернативными Таблицами или "шаблонами поднабора", обеспечивающими альтернативную опцию фильтрования, как описано выше.
[0112] Видеокодер 20 может затем кодировать текущий блок посредством применения выбранного фильтра сглаживания к выборкам предсказания и выполнения кодирования с внутренним предсказанием согласно режиму с внутренним предсказанием, ассоциированному с текущим блоком (этап 612). Видеокодер 20 может также кодировать элементы синтаксиса, ассоциированные с кодированием с внутренним предсказанием с текущим блоком (этап 614), например, один или более элементов синтаксиса, которые идентифицируют режим с внутренним предсказанием. Другими примерами элементов синтаксиса, ассоциированных с кодированием с внутренним предсказанием, которое может быть закодировано с блоком, может быть тип фрагмента, ассоциированный с блоком, размер PU, размер TU, CBP и квантованные коэффициенты. Если примененное решение фильтра сглаживания не было основано на таблице наиболее вероятных фильтров или "шаблоне модели", например, решение фильтрования было принято, используя вторую таблицу наиболее вероятных фильтров или другие "шаблоны поднабора", видеокодер 20 может также кодировать элементы синтаксиса, указывающие, что Таблица наиболее вероятных фильтров не была использована для сигнализации, что блок не был закодирован, используя фиксированное, зависимое от режима кодирование с внутренним предсказанием. Например, если ТАБЛИЦА 7, представленная выше, является "шаблоном модели" и ТАБЛИЦЫ 4-6 являются "шаблонами поднабора", видеокодер может кодировать элементы синтаксиса, указывающие используемую таблицу "шаблона поднабора", когда она используется вместо таблицы "шаблона модели". Видеокодер 20 может затем передать закодированный видеоблок в закодированном видеокадре и с элементами синтаксиса на видеодекодер (этап 616).
[0113] Фиг. 7 является последовательностью операций, иллюстрирующей примерный способ для декодирования видеоданных в соответствии со способами настоящего раскрытия. Хотя описано относительно видеодекодера 30 (Фиг. 1 и 5) в целях примера, должно быть понятно, что способы согласно Фиг. 7 могут быть выполнены любым блоком кодирования видео. Кроме того, этапы, иллюстрированные на Фиг. 7, могут быть выполнены в различном порядке, некоторые этапы могут быть опущены, и дополнительные этапы могут быть добавлены, не отступая от способов настоящего раскрытия.
[0114] Видеодекодер 30 может принять закодированный блок (например, CU) видеоданных, которые должны быть декодированы (этап 702). Видеодекодер 30 может декодировать закодированный видеоблок и элементы синтаксиса для определения, что блок закодирован, используя кодирование с внутренним предсказанием (этап 704). На основании элементов синтаксиса видеодекодер 30 может также определить режим с внутренним предсказанием блока (этап 706). Видеодекодер 30 может определить, включают ли в себя элементы синтаксиса индикацию фильтрования (этап 708).
[0115] Если нет индикации фильтрования, видеодекодер 30 может затем декодировать блок, используя кодирование с внутренним предсказанием, и применить выбор фильтра сглаживания, как определено таблицей наиболее вероятных фильтров (этап 710). Если имеется индикация фильтрования, видеодекодер 30 может затем декодировать блок, используя кодирование с внутренним предсказанием и применение выбора фильтра сглаживания, как определено второй таблицей наиболее вероятных фильтров (этап 712). В любом случае, использовать ли таблицу наиболее вероятных фильтров или вторую таблицу наиболее вероятных фильтров, видеодекодер 30 может определить фильтр на основании комбинации размера блока и режима с внутренним предсказанием, ассоциированной с текущим блоком. В некоторых примерах множественные таблицы могут определить второй (или более) вероятный фильтр, или могут быть множественные фильтры "шаблона поднабора", и индикация фильтрования может указывать таблицу "шаблона поднабора", альтернативно используемую для таблицы наиболее вероятных фильтров или таблицы "шаблона поднабора".
[0116] В этом способе видеодекодеру 30 нет необходимости делать какие-либо определения, относительно которых опции фильтрования обеспечивают лучшие результаты. Если индикация не сигнализирована посредством кодера, то видеодекодер 30 предполагает, что Таблица наиболее вероятных фильтров или Таблица "шаблона модели" была использована, иначе, любой тип сигнализации указывает, что вторая Таблица наиболее вероятных фильтров была использована. В некоторых примерах, в которых используются больше, чем две таблицы фильтров, например, третья (или более) Таблица наиболее вероятных фильтров или "шаблоны поднабора", индикация фильтрования может идентифицировать, какая из дополнительных таблиц была использована при выборе фильтра сглаживания.
[0117] Как рассмотрено выше, фильтрование с внутренним сглаживанием может быть использовано для больших размеров PU, как иллюстрировано посредством Фиг. 2B и ТАБЛИЦЕЙ 4, например. Фильтрование с внутренним сглаживанием может также быть использовано для большинства размеров PU для режимов с внутренним предсказанием, соответствующих истинным диагональным направлениям (то есть ±45 и ±135 градусов), или режимов 3, 6, 9, в то время как фильтрование с внутренним сглаживанием не может быть использовано для меньших размеров PU в случае вертикального (режим 0) и горизонтального (режим 1) направления. Для направлений с внутренним предсказанием между диагональными направлениями и, соответственно, горизонтальным или вертикальным направлениями, фильтрование с внутренним предсказанием может быть менее вероятно использовано для маленьких размеров PU, когда направление близко к горизонтальному или вертикальному направлениям, в то время как более вероятно использовано для маленьких размеров PU, когда направление близко к диагональным направлениям, как иллюстрировано на Фиг. 2B и ТАБЛИЦЕ 4. В одном примере кодер и декодер согласно способам настоящего раскрытия могут применить фильтрование с внутренним сглаживанием согласно "шаблонам поднабора", определенным ТАБЛИЦЕЙ 7, показанной выше. В одном примере для режима DC (режим 2) фильтрование с внутренним сглаживанием может не быть использовано ни для какого размера PU. Кроме того, для плоского режима (режим 34) фильтрование с внутренним сглаживанием может быть использовано с большими размерами PU.
[0118] Кодер и декодер могут применять фильтрование с внутренним сглаживанием согласно "шаблону поднабора", который получен из "шаблона модели" (ТАБЛИЦА 4), который определяет для каждого размера PU и комбинации режима с внутренним предсказанием, выполнено ли фильтрование с внутренним сглаживанием. "Шаблон поднабора" может быть получен посредством выбора кандидатов для фильтрования с внутренним сглаживанием из "шаблона модели" для каждого режима с внутренним предсказанием и для каждого размера PU, или альтернативно никакого фильтрования с внутренним сглаживанием для любого размера PU, соответствующего этому режиму с внутренним предсказанием. "Шаблон поднабора", полученный из "шаблона модели", может иметь некоторые характеристики, такие как, например, для каждого режима с внутренним предсказанием фильтрование с внутренним сглаживанием не применяется для по меньшей мере одного из размеров PU, таким образом, кодер имеет опцию выполнения внутреннего предсказания без внутреннего сглаживания. "Шаблон поднабора" может также иметь некоторые характеристики, такие как, например, для каждого режима с внутренним предсказанием, если фильтрование с внутренним сглаживанием не применено в некотором размере PU, фильтрование с внутренним сглаживанием может не быть применено ни в каких меньших размерах PU для этого режима с внутренним предсказанием.
[0119] Вычисление выборок предсказания для каждого режима с внутренним предсказанием и комбинации размера PU может подлежать правилам округления, таким как округление в меньшую сторону, округление в большую сторону или округление к самому близкому целому числу. Правила округления могут быть изменены в кодере и декодере на основании местоположения выборки предсказания детерминированным образом, например, на основании режима с внутренним предсказанием размера PU, таком как перемежение выборок предсказания с различными правилами округления, чтобы повысить эффективность кодирования. В примере фильтрования с внутренним сглаживанием опорных выборок для внутреннего предсказания фильтрование с внутренним сглаживанием может быть пропущено для некоторых местоположений опорной выборки, например, опорной выборки в верхнем левом углу или других местоположениях опорной выборки детерминированным образом (например, на основании режима с внутренним предсказанием размера PU), чтобы увеличить эффективность кодирования.
[0120] В одном примере кодер и/или декодер могут сохранить "шаблон поднабора" как таблицу поиска (LUT) и получить доступ к этой LUT, чтобы определить, применять ли фильтрование с внутренним сглаживанием или нет для размера PU, и комбинацию режима с внутренним предсказанием, ассоциированную с текущим блоком. В другом примере кодер и/или декодер могут представить "шаблон поднабора" посредством набора условий, используемых для определения, применить ли фильтрование с внутренним сглаживанием для вводов: размера PU и режима с внутренним предсказанием. В другом примере кодер и/или декодер могут представить "шаблон поднабора" посредством одного или более математических уравнений, которые вычисляют, применять ли фильтрование с внутренним сглаживанием для вводов: размера PU и режима с внутренним предсказанием. В другом примере кодер и/или декодер могут представить "шаблон поднабора" посредством комбинации LUT, набора условий и/или набора математических уравнений.
[0121] В одном примере "шаблон модели" (например, ТАБЛИЦА 4) или "шаблоны поднабора" (например, ТАБЛИЦЫ 5-7) могут быть расширены, чтобы включать в себя множественные типы фильтров с внутренним сглаживанием, которые могут быть, возможно, использованы для каждой комбинации размера PU и режима с внутренним предсказанием. Например, для каждой комбинации, где применено фильтрование с внутренним сглаживанием, число в таблице может указать тип фильтра для использования. В одном примере два фильтра с внутренним сглаживанием могут быть определены и представлены посредством "1" и "2". Запись в таблице, соответствующая некоторой позиции ряда/колонки, может не иметь никакой записи, то есть никакой фильтр, или "1" или "2", не применяется для указания, что применено фильтрование с внутренним сглаживанием, и используется фильтр с внутренним сглаживанием, то есть - или фильтр "1", или фильтр "2".
[0122] В некоторых примерах HEVC может поддерживать блоки PU внутреннего предсказания на коротком расстоянии (SDIP), которые могут иметь различные прямоугольные размеры для каждого блока кодирования (CU). В одном примере способы настоящего раскрытия могут применяться к квадратным и прямоугольным блокам PU, таким как используемые во внутреннем предсказании на коротком расстоянии (SDIP). ТАБЛИЦА 8, представленная ниже, иллюстрирует примеры прямоугольных размеров PU (в пикселях) для каждого размера CU SDIP.
<b>ТАБЛИЦА 8</b>
Размер CU
Возможный размер PU
CU 32×32
8×32, 32×8
CU 16×16
4×16, 16×4, 1×16, 16×1
CU 8×8
2×8, 8×2
[0123] В дополнение к способам, рассмотренным выше, способы настоящего раскрытия могут включать в себя способы для улучшения применения MDIS к прямоугольным разделениям SDIP. Например, применение фильтрования с внутренним сглаживанием может зависеть от ширины и/или высоты прямоугольного разделения SDIP. Способы для определения размерности фрагмента SDIP или правила определения размерностей могут быть использованы для определения размерности или размерностей фрагмента. Например, такие способы для определения размерности фрагмента SDIP могут включать в себя определение минимальной или максимальной размерности фрагмента, математические уравнения, которые вычисляют размерности фрагмента на основании других известных переменных, ассоциированных с фрагментом, или условные проверки, которые могут применяться к ширине и высоте фрагмента SDIP, чтобы определить размерности фрагмента. В одном примере получающаяся в результате определенная размерность фрагмента может быть использована для определения, применить ли фильтрование с внутренним сглаживанием, например, используя одну из таблиц решений фильтрования, описанных выше. Например, способы могут использовать размерность для определения, выполнять ли фильтрование или нет. Если в одном иллюстративном примере минимальная размерность составляет 8 пикселей, решение фильтрования может быть определено на основании записи таблицы, ассоциированной с блоками 32×32, и соответствующего режима с внутренним предсказанием, ассоциированного в настоящее время с обрабатываемым разделением.
[0124] В одном примере применение фильтрования с внутренним сглаживанием может быть основано на направлении с внутренним предсказанием, ассоциированном с разделением SDIP, и/или на ширине и/или высоте фрагмента SDIP. Например, когда выбрано вертикальное направление предсказания, высота фрагмента может быть использована в одной из таблиц решений фильтрования, описанных выше, и в случае горизонтального направления ширина может быть использована в одной из таблиц решений фильтрования, описанных выше. В другом примере горизонтальное, вертикальное и диагональное направления могут быть отдельно рассмотрены, чтобы определить размерность, которая должна быть использована.
[0125] В одном примере, когда плоский режим используется для фрагмента SDIP, способы определения размерности, как описано выше, могут быть использованы для определения размерности фрагмента SDIP. Определенная размерность может быть использована для определения, применить ли фильтрование с внутренним сглаживанием или нет, например, посредством получения доступа к одной из таблиц решений фильтрования, описанных выше.
[0126] Фиг. 8 является последовательностью операций, иллюстрирующей другой примерный способ для кодирования видеоданных в соответствии со способами настоящего раскрытия. Хотя описано относительно видеокодера 20 в целях примера, должно быть понятно, что способы согласно Фиг. 8 могут быть выполнены любым блоком кодирования видео. Кроме того, этапы, иллюстрированные на Фиг. 8, могут быть выполнены в другом порядке, некоторые этапы могут быть опущены, и дополнительные этапы могут быть добавлены, не отступая от способов настоящего раскрытия.
[0127] Видеокодер 20 может принять блок (например, CU) видеоданных, которые должны быть закодированы. Когда текущий блок определяется как текущий блок, который должен быть закодирован, используя кодирование с внутренним предсказанием, видеокодер 20 может определить текущий размер блока и режим с внутренним предсказанием, используемый для кодирования текущего блока (этап 802). Видеокодер может затем определить и применить фильтр сглаживания, используя таблицу фильтров, например, ТАБЛИЦУ 7, представленную выше, на основании размера блока и режима с внутренним предсказанием (этап 804), как рассмотрено выше.
[0128] Видеокодер 20 может затем закодировать текущий блок посредством применения выбранного фильтра сглаживания к выборкам предсказания и выполнения кодирования с внутренним предсказанием согласно режиму с внутренним предсказанием, ассоциированному с текущим блоком (этап 612). Видеокодер 20 может также закодировать элементы синтаксиса, ассоциированные с кодированием с внутренним предсказанием с текущим блоком (этап 614), например, один или более элементов синтаксиса, которые идентифицируют режим с внутренним предсказанием. Другими примерами элементов синтаксиса, ассоциированных с кодированием с внутренним предсказанием, которые могут быть закодированы с блоком, может быть тип фрагмента, ассоциированный с блоком, размер PU, размер TU, CBP и квантованные коэффициенты. Видеокодер 20 может затем передать закодированный видеоблок в закодированном видеокадре и с элементами синтаксиса на видеодекодер (этап 616).
[0129] Фиг. 9 является последовательностью операций, иллюстрирующей другой примерный способ для декодирования видеоданных в соответствии со способами настоящего раскрытия. Хотя описано относительно видеодекодера 30 в целях примера, должно быть понятно, что способы Фиг. 9 могут быть выполнены любым блоком кодирования видео. Кроме того, этапы, иллюстрированные на Фиг. 9, могут быть выполнены в другом порядке, некоторые этапы могут быть опущены, и дополнительные этапы могут быть добавлены, не отступая от способов настоящего раскрытия.
[0130] Видеодекодер 30 может принять закодированный блок (например, CU) видеоданных, которые должны быть декодированы (этап 902). Видеодекодер 30 может декодировать закодированный видеоблок и элементы синтаксиса, чтобы определить, что блок закодирован, используя кодирование с внутренним предсказанием (этап 904). На основании элементов синтаксиса видеодекодер 30 может также определить режим с внутренним предсказанием блока (этап 906). Видеодекодер 30 может затем декодировать блок, использующий кодирование с внутренним предсказанием, и применить фильтр сглаживания, выбранный из той же таблицы фильтрования, например, ТАБЛИЦЫ 7, используемой во время кодирования, на основании размера блока и режима с внутренним предсказанием (этап 908). В этом способе видеодекодеру 30 нет необходимости делать любые определения относительно опций фильтрования, кроме выбора фильтра из таблицы фильтров.
[0131] В одном или более примерах описанные функции могут быть реализованы в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Если реализовано в программном обеспечении, функции могут быть сохранены на или переданы как одна или более команд или код посредством считываемого компьютером носителя и выполнены на основании аппаратного обеспечения посредством блока обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером запоминающие носители, которые соответствуют материальному носителю, такому как запоминающие носители данных, или коммуникационные носители, включающие в себя любой носитель, который облегчает передачу компьютерной программы от одного места к другому, например, согласно протоколу связи. В этом способе считываемый компьютером носитель в целом может соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются невременными, или (2) коммуникационному носителю, такому как сигнал или несущая. Запоминающие носители данных могут быть любыми доступными носителями, которые могут быть доступны посредством одного или более компьютеров или одного или более процессоров, чтобы извлечь команды, код и/или структуры данных для реализации способов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0132] Посредством примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, флеш-память или любой другой носитель, который может быть использован, чтобы сохранять желаемый программный код в форме команд или структур данных, и который может быть доступным посредством компьютера. Кроме того, любое соединение должным образом называется считываемым компьютером носителем. Например, если команды передаются от вебсайта, сервера или другого удаленного источника, используя коаксиальный кабель, волоконно-оптический кабель, витую пару, абонентскую цифровую линию (DSL) или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, то эти коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако должно быть понятно, что считываемые компьютером запоминающие носители и запоминающие носители данных не включают в себя соединения, несущие, сигналы или другие временные носители, но вместо этого направлены на невременные, материальные запоминающие носители. Диск (disk) и диск (disc), как используются в настоящем описании, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), дискету и диск blue-ray, где диски (disks) обычно воспроизводят данные магнитным способом, в то время как диски (discs) воспроизводят данные оптическим образом посредством лазеров. Комбинации вышеупомянутого должны быть также включены в понятие считываемых компьютером носителей.
[0133] Команды могут быть выполнены одним или более процессорами, например, одним или более цифровыми сигнальными процессорами (процессорами DSP), микропроцессорами общего назначения, специализированными интегральными схемами (схемами ASIC), программируемыми пользователем вентильными матрицами (матрицами FPGA) или другой эквивалентной интегрированной или дискретной логической схемой. Соответственно, используемый в настоящем описании термин "процессор" может относиться к любой предшествующей структуре или любой другой структуре, подходящей для реализации способов, описанных в настоящем описании. В дополнение, в некоторых аспектах функциональные возможности, описанные в настоящем описании, могут быть обеспечены в пределах специализированных модулей аппаратного обеспечения и/или программного обеспечения, сконфигурированных для кодирования и декодирования или объединенных в объединенный кодек. Кроме того, способы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0134] Способы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включающих в себя беспроводную телефонную трубку, интегральную схему (IC) или набор схем IC (например, набор микросхем). Различные компоненты, модули или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых способов, но необязательно требовать реализации посредством различных блоков аппаратного обеспечения. Вместо этого, как описано выше, различные блоки могут быть объединены в блоке аппаратного обеспечения кодека или обеспечены коллекцией взаимодействующих блоков аппаратного обеспечения, включающих в себя один или более процессоров, как описано выше в соединении с подходящим программным обеспечением и/или программно-аппаратным обеспечением.