КОМБИНАЦИЯ ПОЗИЦИОННО-ЗАВИСИМОГО ИНТРА-ПРЕДСКАЗАНИЯ, РАСШИРЕННАЯ УГЛОВЫМИ РЕЖИМАМИ
POSITION-DEPENDENT INTRA-PREDICTION COMBINATION EXPANDED WITH ANGULAR MODES

[0001] Настоящая заявка испрашивает приоритет заявки США № 16/371,638, поданной 01 апреля 2019, которая испрашивает приоритет предварительной заявки США № 62/651,424, поданной 2 апреля 2018, полное содержимое обеих из которых включено в настоящий документ посредством ссылки.
Область техники
[0002] Данное раскрытие относится к кодированию видео и декодированию видео.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0003] Возможности цифрового видео могут быть включены в широкий диапазон устройств, в том числе в цифровые телевизоры, цифровые системы прямого вещания, беспроводные широковещательные системы, персональные цифровые ассистенты (PDA), портативные или настольные компьютеры, планшетные компьютеры, считыватели электронных книг, цифровые камеры, цифровые записывающие устройства, цифровые мультимедийные плееры, видеоигровые устройства, видеоигровые консоли, сотовые или спутниковые радиотелефоны, так называемые смартфоны, устройства телеконференцсвязи, устройства потокового видео и тому подобное. Цифровые видеоустройства реализуют способы кодирования видео, такие как описанные в стандартах, определенных MPEG-2, MPEG-4, ITEG-T H.263, ITEG-T H.264/MPEG-4, часть 10, Усовершенствованное кодирование видео (AVC), стандарте Высокоэффективного кодирования видео (HEVC) и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких способов кодирования видео.
[0004] Методы кодирования видео включают в себя пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для уменьшения или удаления избыточности, присущей видеопоследовательностям. Для блочного кодирования видео, видеослайс (например, видеокадр или часть видеокадра) может быть разделена на видеоблоки, которые также могут упоминаться как блоки дерева, CU и/или узлы кодирования. Изображения (картинки) могут упоминаться как кадры. Опорные картинки могут упоминаться как опорные кадры.
[0005] Пространственное или временное предсказание приводит к блоку предсказания для блока, подлежащего кодированию. Остаточные данные представляют пиксельные разности между исходным блоком, подлежащим кодированию, и блоком предсказания. Для дополнительного сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, приводя к остаточным коэффициентам преобразования, которые затем могут быть квантованы. Энтропийное кодирование может применяться для достижения еще большего сжатия.
Краткое описание сущности изобретения
[0006] В этом раскрытии описаны методы для кодирования блока видеоданных с использованием внутрикадрового (интра-) предсказания. Например, методы настоящего раскрытия включают в себя кодирование блока видеоданных с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), расширенной для использования с угловым режимом интра-предсказания (например, диагональными режимами интра-предсказания или угловыми режимами интра-предсказания, смежными с диагональными режимами интра-предсказания). При интра-предсказании, блок предсказания генерируется для текущего блока на основе пикселов, соседних с текущим блоком. В PDPC, выборки предсказания в блоке предсказания модифицируются, и модифицированные выборки предсказания используются для кодирования или декодирования текущего блока. Для кодирования, видеокодер использует модифицированные выборки предсказания для определения остаточных значений, которые сигнализируются видеодекодеру, и для декодирования, видеодекодер суммирует модифицированные выборки предсказания с принятыми остаточными значениями для восстановления текущего блока.
[0007] Методы PDPC ограничивались определенными режимами интра-предсказания, такими как DC, планарные, вертикальные и горизонтальные режимы интра-предсказания. В этом раскрытии описаны примерные способы, каким образом распространить методы PDPC на угловые режимы интра-предсказания. Например, в методах PDPC, опорные выборки, внешние по отношению к текущему блоку, используются для модификации выборок предсказания. Могут иметь место сложности в определении того, какие опорные выборки должны использоваться, когда методы PDPC распространяются на угловые режимы интра-предсказания. Данное раскрытие описывает примерные способы, как определить опорные выборки для использования, и способ, каким образом опорные выборки и выборки предсказания взвешиваются для выполнения методов PDPC для угловых режимов интра-предсказания, таких как определение опорных выборок на основе угловых режимов интра-предсказания (например, на основе углов угловых режимов интра-предсказания).
[0008] В одном примере, раскрытие описывает способ декодирования видеоданных, причем способ содержит определение блока предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, модифицирование выборки предсказания из множества выборок предсказания блока предсказания для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), при этом модифицирование выборки предсказания содержит определение одной или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и модифицирование выборки предсказания для генерации модифицированной выборки предсказания на основе определенной одной или более опорных выборок и восстановление выборки текущего блока на основе модифицированной выборки предсказания и остаточного значения.
[0009] В одном примере, раскрытие описывает способ кодирования видеоданных, причем способ содержит определение блока предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, модифицирование выборки предсказания из множества выборок предсказания блока предсказания для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), при этом модифицирование выборки предсказания содержит определение одной или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и модифицирование выборки предсказания для генерации модифицированный выборки предсказания на основе определенной одной или более опорных выборок, определение остаточного значения для остаточного блока на основе модифицированной выборки предсказания и значения выборки в текущем блоке и сигнализацию информации, указывающей остаточное значение.
[0010] В одном примере, раскрытие описывает устройство для декодирования видеоданных, причем устройство содержит память, сконфигурированную, чтобы хранить блок предсказания, и видеодекодер, содержащий по меньшей мере одну из схемы с фиксированной функцией и программируемой схемы. Видеодекодер сконфигурирован, чтобы определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока, для хранения в памяти, на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, модифицировать выборку предсказания из множества выборок предсказания блока предсказания для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), при этом для модифицирования выборки предсказания, видеодекодер сконфигурирован, чтобы определять одну или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и модифицировать выборку предсказания для генерации модифицированной выборки предсказания на основе определенной одной или более опорных выборок и восстанавливать выборку текущего блока на основе модифицированной выборки предсказания и остаточного значения.
[0011] В одном примере, раскрытие описывает устройство для кодирования видеоданных, причем устройство содержит память, сконфигурированную, чтобы хранить блок предсказания, и видеокодер, содержащий по меньшей мере одну из схемы с фиксированной функцией и программируемой схемы. Видеокодер сконфигурирован, чтобы определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока, для хранения в памяти, на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, модифицировать выборку предсказания из множества выборок предсказания блока предсказания для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), при этом для модифицирования выборки предсказания, видеокодер сконфигурирован, чтобы определять одну или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и модифицировать выборку предсказания для генерации модифицированной выборки предсказания на основе определенной одной или более опорных выборок, определять остаточное значение для остаточного блока на основе модифицированной выборки предсказания и значения выборки в текущем блоке и сигнализировать информацию, указывающую остаточное значение.
[0012] В одном примере, раскрытие описывает считываемый компьютером запоминающий носитель, хранящий инструкции, которые при исполнении побуждают один или более процессоров устройства для декодирования видеоданных:
[0013] В одном примере, раскрытие описывает считываемый компьютером носитель данных, хранящий инструкции, которые при исполнении побуждают один или более процессоров устройства для декодирования видеоданных определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, модифицировать выборку предсказания из множества выборок предсказания блока предсказания для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), причем инструкции, которые побуждают один или более процессоров модифицировать выборки предсказания, содержат инструкции, которые побуждают один или более процессоров определять одну или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и модифицировать выборку предсказания для генерации модифицированной выборки предсказания на основе определенной одной или более опорных выборок и восстанавливать выборку текущего блока на основе модифицированной выборки предсказания и остаточного значения.
[0014] В одном примере, раскрытие описывает считываемый компьютером запоминающий носитель, хранящий инструкции, которые при исполнении побуждают один или более процессоров устройства для кодирования видеоданных определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока, на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), причем инструкции, которые побуждают один или более процессоров модифицировать выборку предсказания, содержат инструкции, которые побуждают один или более процессоров определять одну или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и модифицировать выборку предсказания для генерации модифицированной выборки предсказания на основе определенного одной или более опорных выборок, определять остаточное значение для остаточного блока на основе модифицированной выборки предсказания и значения выборки в текущем блоке и сигнализировать информацию, указывающую остаточное значение.
[0015] В одном примере, раскрытие описывает устройство для декодирования видеоданных, причем устройство содержит средство для определения блока предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, средство для модифицирования выборки предсказания из множества выборок предсказания в блоке предсказания для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), при этом средство для модифицирования выборки предсказания содержит средство для определения одной или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и средство для модифицирования выборки предсказания для генерации модифицированной выборки предсказания на основе определенного одной или более опорных выборок и средство для восстановления выборки текущего блока на основе модифицированной выборки предсказания и остаточного значения.
[0016] В одном примере, раскрытие описывает устройство для кодирования видеоданных, причем устройство содержит средство для определения блока предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, средство для модифицирования выборки предсказания из множества выборок предсказания блока предсказания для генерации модифицированной выборки предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC), при этом средство для модифицирования выборки предсказания содержит средство для определения одной или более опорных выборок, которые являются внешними по отношению к текущему блоку, на основе углового режима интра-предсказания и средство для модифицирования выборки предсказания для генерации модифицированной выборки предсказания на основе определенной одной или более опорных выборок, средство для определения остаточного значения для остаточного блока на основе модифицированной выборки предсказания и значения выборки в текущем блоке и средство для сигнализации информации, указывающей остаточное значение.
[0017] Подробности одного или более примеров изложены на прилагаемых чертежах и в приведенном ниже описании. Другие признаки, задачи и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
[0018] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, сконфигурированную для реализации методов раскрытия.
[0019] Фиг. 2А и 2В представляют собой концептуальные диаграммы, иллюстрирующие примеры весов PDPC режима DC для позиций выборок внутри блока 4×4.
[0020] Фиг. 3 представляет собой концептуальную диаграмму, иллюстрирующую примеры угловых режимов интра-предсказания.
[0021] Фиг. 4А представляет собой концептуальную диаграмму, иллюстрирующую пример диагонального вверх-вправо режима.
[0022] Фиг. 4B представляет собой концептуальную диаграмму, иллюстрирующую пример диагонального вниз-влево режима.
[0023] Фиг. 4С представляет собой концептуальную диаграмму, иллюстрирующую пример смежного диагонального вверх-вправо режима.
[0024] Фиг. 4D представляет собой концептуальную диаграмму, иллюстрирующую пример смежного диагонального вниз-влево режима.
[0025] Фиг. 5A представляет собой концептуальную схему, иллюстрирующую пример таблицы 1, содержащей "BD-Rates" условия полного интра-тестирования для расширения PDPC, исключающего граничную фильтрацию диагонального и смежного режима.
[0026] Фиг. 5B представляет собой концептуальную схему, иллюстрирующую пример таблицы 2, содержащей "BD-Rates" условия полного интра-тестирования для расширения PDPC, включающего граничную фильтрацию диагонального и смежного режима.
[0027] Фиг. 6 представляет собой блок-схему, иллюстрирующую пример видеокодера.
[0028] Фиг. 7 представляет собой блок-схему, иллюстрирующую пример видеодекодера.
[0029] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ кодирования видеоданных.
[0030] Фиг. 9 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ декодирования видеоданных.
Подробное описание
[0031] Настоящее раскрытие описывает способы кодирования блока видеоданных с использованием интра-предсказания, и, более конкретно, настоящее раскрытие описывает способы, относящиеся к использованию интра-предсказания таким образом, чтобы использовать подход комбинации позиционно-зависимого интра-предсказания (PDPC) и, более конкретно, использовать подход PDPC, который распространяет такой подход PDPC на угловые режимы интра-предсказания (например, диагональные интра-режимы и угловые режимы, которые являются смежными с диагональными интра-режимами). Методы, описанные в настоящем документе, вводят эффективность сжатия в целом для кодирования блока видеоданных и, в частности, вводят эффективность сжатия в подход PDPC посредством использования таких методов для угловых режимов интра-предсказания (например, диагональных режимов интра-предсказания или угловых режимов интра-предсказания, смежных с диагональными режимами интра-предсказания), где эффективность сжатия является обычно желательной целью для совершенствования состояния существующих методов кодирования видео и улучшения рабочих характеристик процессоров кодирования видео и видеокодеков.
[0032] Используемый в данном описании термин "кодирование видео" относится либо к кодированию видео, либо к декодированию видео. Аналогично, термин "устройство кодирования видео" может, в общем, относиться к видеокодеру или видеодекодеру. Кроме того, определенные способы, описанные в этом раскрытии в отношении декодирования видео, могут также применяться к кодированию видео и наоборот. Например, часто видеокодеры и видеодекодеры конфигурируются для выполнения того же самого процесса или взаимно обратных процессов. Кроме того, видеокодеры обычно выполняют декодирование видео как часть процессов определения того, как кодировать видеоданные. Таким образом, если не указано обратное, не следует предполагать, что способ, описанный в отношении декодирования видео, не может быть также выполнен как часть кодирования видео, или наоборот.
[0033] Настоящее раскрытие также может использовать термины, такие как текущий уровень, текущий блок, текущая картинка (кадр), текущий слайс и т.д. В контексте настоящего раскрытия, термин "текущий" предназначен для идентификации блока, изображения, слайса и т.д., который в текущее время кодируется, в противоположность, например, ранее или уже кодированным блокам, картинкам и слайсам или еще не кодированным блокам, картинкам и слайсам.
[0034] На фиг. 1 показана блок-схема, иллюстрирующая примерную систему 10 кодирования и декодирования видео, которая может использовать методы этого раскрытия для кодирования блока видеоданных с использованием подхода PDPC и, более конкретно, с использованием подхода PDPC, который распространяет такой подход PDPC на угловой режим интра-предсказания (например, диагональные интра-режимы и на угловые режимы, смежные с диагональными интра-режимами). Как показано на фиг. 1, система 10 включает в себя устройство 12 источника, которое предоставляет кодированные видеоданные, подлежащие декодированию позже устройством 14 места назначения. В частности, устройство 12 источника предоставляет видеоданные в устройство 14 места назначения через считываемый компьютером носитель 16. Устройство 12 источника и устройство 14 места назначения могут содержать любое из широкого диапазона устройств, включая настольные компьютеры, ноутбуки (т.е. портативные компьютеры), планшетные компьютеры, телевизионные приставки, телефонные трубки, такие как так называемые смартфоны, планшетные компьютеры, телевизоры, камеры, устройства отображения, цифровые мультимедийные плееры, видеоигровые консоли, устройство потокового видео или тому подобное. В некоторых случаях, устройство 12 источника и устройство 14 места назначения могут быть оснащены для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 места назначения могут быть устройствами беспроводной связи. Устройство 12 источника представляет собой примерное устройство кодирования видео (то есть, устройство для кодирования видеоданных). Устройство 14 места назначения является примерным устройством декодирования видео (например, устройством или аппаратом для декодирования видеоданных).
[0035] В примере, показанном на фиг. 1, устройство 12 источника включает в себя источник 18 видео, запоминающие носители 20, сконфигурированные для хранения видеоданных, видеокодер 22 и интерфейс 24 вывода. Устройство 14 места назначения включает в себя интерфейс 26 ввода, запоминающие носители 28, сконфигурированные для хранения кодированных видеоданных, видеодекодер 30 и устройство 32 отображения. В других примерах, устройство 12 источника и устройство 14 места назначения включают в себя другие компоненты или компоновки. Например, устройство 12 источника может принимать видеоданные от внешнего источника видео, такого как внешняя камера. Аналогично, устройство 14 места назначения может взаимодействовать с внешним устройством отображения, вместо того, чтобы включать в себя интегрированное устройство отображения.
[0036] Проиллюстрированная система 10, показанная на фиг. 1, представляет собой только один пример. Методы обработки видеоданных могут выполняться любым цифровым устройством или аппаратом кодирования и/или декодирования видео. Хотя в общем случае методы настоящего раскрытия выполняются устройством кодирования видео и устройством декодирования видео, методы также могут выполняться комбинированным видеокодером/декодером, обычно упоминаемым как кодек. Устройство 12 источника и устройство 14 места назначения являются просто примерами таких устройств кодирования, в которых устройство 12 источника генерирует кодированные видеоданные для передачи в устройство 14 места назначения. В некоторых примерах, устройство 12 источника и устройство 14 места назначения работают по существу симметричным образом, так что каждое из устройства 12 источника и устройства 14 места назначения включает в себя компоненты кодирования и декодирования видео. Следовательно, система 10 может поддерживать однонаправленную или двунаправленную передачу видео между устройством 12 источника и устройством 14 места назначения, например, для потоковой передачи видео, воспроизведения видео, видеовещания или видеотелефонии.
[0037] Источник 18 видео устройства 12 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное видео, и/или интерфейс ввода видео для приема видеоданных от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 18 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или комбинацию видео реального времени, архивированного видео и сгенерированного компьютером видео. Устройство 12 источника может содержать один или более носителей данных (например, запоминающих носителей 20), сконфигурированных для хранения видеоданных. Методы, описанные в этом раскрытии, могут применяться к кодированию видео в общем и могут применяться к беспроводным и/или проводным приложениям. В каждом случае, захваченное, предварительно захваченное или сгенерированное компьютером видео может кодироваться видеокодером 22. Интерфейс 24 вывода может выводить информацию кодированного видео на считываемый компьютером носитель 1615.
[0038] Устройство 14 места назначения может принимать кодированные видеоданные, подлежащие декодированию, посредством считываемого компьютером носителя 16. Считываемый компьютером носитель 16 может содержать носитель или устройство любого типа, способное перемещать кодированные видеоданные от устройства 12 источника к устройству 14 места назначения. В некоторых примерах, считываемый компьютером носитель 16 содержит коммуникационную среду, чтобы обеспечивать возможность устройству 12 источника передавать кодированные видеоданные непосредственно в устройство 14 места назначения в реальном времени. Кодированные видеоданные могут модулироваться в соответствии со стандартом связи, таким как протокол беспроводной связи, и передаваться в устройство 14 места назначения. Коммуникационная среда может содержать любую беспроводную или проводную коммуникационную среду, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может образовывать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения связи от устройства 12 источника к устройству 14 места назначения. Устройство 14 места назначения может содержать один или более носителей данных, сконфигурированных для хранения кодированных видеоданных и декодированных видеоданных.
[0039] В некоторых примерах, кодированные данные (например, кодированные видеоданные) могут выводиться из интерфейса 24 вывода в устройство хранения. Аналогично, кодированные данные могут быть доступными из устройства хранения через интерфейс 26 ввода. Устройство хранения может включать в себя любой из множества распределенных или локально доступных носителей данных, таких как жесткий диск, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любой другой подходящий цифровой носитель данных для хранения кодированных видеоданных. В другом примере, устройство хранения может соответствовать файловому серверу или другому промежуточному устройству хранения, которое может хранить кодированное видео, генерируемое устройством 12 источника. Устройство 14 места назначения может осуществлять доступ к сохраненным видеоданным из устройства хранения посредством потоковой передачи или загрузки. Файловым сервером может быть любой тип сервера, способный хранить кодированные видеоданные и передавать эти кодированные видеоданные в устройство 14 места назначения. Примеры файловых серверов включают в себя веб-сервер (например, для веб-сайта), FTP-сервер, сетевые устройства хранения (NAS) или локальный дисковод. Устройство 14 места назначения может осуществлять доступ к кодированным видеоданным через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или их комбинацию, пригодную для доступа к кодированным видеоданным, хранящимся на файловом сервере. Передача кодированных видеоданных из устройства хранения может представлять собой потоковую передачу, передачу загрузки или их комбинацию.
[0040] Методы настоящего раскрытия могут применяться к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как широковещательные эфирные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, передачи потокового видео через Интернет, такие как методы адаптивной потоковой передачи, включающие в себя динамическую адаптивную потоковую передачу по HTTP (DASH), цифровое видео, которое кодируется на носителе данных, декодирование цифрового видео, хранимого на носителе данных, или другие приложения. В некоторых примерах, система 10 может быть сконфигурирована для поддержки однонаправленной или двунаправленной передачи видео для поддержки приложений, таких как потоковая передача видео, воспроизведение видео, видеовещание и/или видеотелефония.
[0041] Считываемый компьютером носитель 16 может включать в себя переходные среды, такие как беспроводная широковещательная или проводная сетевая передача, или носители хранения (то есть непереходные (не-временные) носители данных), такие как жесткий диск, флэш-накопитель, компакт-диск, цифровой видеодиск, Blu-Ray диск или другие считываемые компьютером носители. В некоторых примерах, сетевой сервер (не показан) может принимать кодированные видеоданные от устройства 12 источника и выдавать закодированные видеоданные в устройство 14 места назначения, например, через сетевую передачу. Подобным образом, вычислительное устройство оборудования по производству носителей, такого как оборудование штамповки дисков, может принимать кодированные видеоданные от устройства 12 источника и производить диск, содержащий кодированные видеоданные. Поэтому считываемый компьютером носитель 16 может пониматься как включающий в себя один или более считываемых компьютером носителей различных форм, в различных примерах.
[0042] Интерфейс 26 ввода устройства 14 места назначения принимает информацию от считываемого компьютером носителя 16. Информация считываемого компьютером носителя 16 может включать в себя синтаксическую информацию, определенную видеокодером 22, также используемую видеодекодером 30, которая включает в себя синтаксические элементы, которые описывают характеристики и/или обработку блоков и других кодированных единиц, например групп изображений (картинок) (GOP). Запоминающие носители 28 могут хранить кодированные видеоданные, принятые интерфейсом 26 ввода. Устройство 32 отображения отображает декодированные видеоданные пользователю. Устройство 32 отображения может содержать любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.
[0043] Видеокодер 22 и видеодекодер 30 могут быть реализованы как любая из множества подходящих схем кодера или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретных логических схем, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их комбинаций. Когда методы реализованы частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем не-временном считываемом компьютером носителе и может исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методов данного раскрытия. Каждый из видеокодера 22 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, каждый из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве.
[0044] В некоторых примерах, видеокодер 22 и видеодекодер 30 могут работать в соответствии со стандартом кодирования видео. Примеры стандартов кодирования видео включают в себя, без ограничения указанным, ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual и ITU-T H.264 (также известный как ISO/IEC MPEG-4 AVC), включая его расширения Масштабируемого кодирования видео (SVC) и Мульти-видового кодирования видео (MVC). Стандарт кодирования видео HEVC (Высокоэффективное кодирование видео) или ITU-T H 265, включая его расширения кодирования диапазона и экранного контента, 3D кодирование видео (3D-HEVC) и мульти-видовые расширения (MV-HEVC) и масштабируемое расширение (SHVC), были разработаны Объединенной группой по кодированию видео (JCT-VC) Группы экспертов по кодированию видео ITU-T (VCEG) и Группы экспертов по движущимся изображениям ISO/IEC (MPEG). Спецификация проекта HEVC, упоминаемая далее как HEVC WD, доступна из ttp://phenix.int-evry.fr/jct/doc_end_user/documents/
l4_Vienna/wg11/JCTVC-Nl003-vl.zip.
th
[0045] Видеокодер 22 и видеодекодер 30 также могут работать в соответствии с другими проприетарными или промышленными стандартами, такими как Тестовая модель совместного исследования (JEM) или ITU-T H.266, также упоминаемая как Многоцелевое кодирование видео (VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 4)”, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 13 Meeting: Marrakech, MA, 9-18 January 2019, JVET-M1001-v5 (далее “VVC Draft 4”). Однако методы настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.
L
Сb
Сr
L
Сb
Сr
[0046] В HEVC и VVC и других спецификациях кодирования видео, видеопоследовательность обычно включает в себя последовательность изображений (картинок). Картинки также могут упоминаться как кадры. Картинка может включать в себя три массива выборок, обозначенных как S, S и S. S представляет собой двумерный массив (т.е. блок) выборок яркости. S представляет собой двумерный массив выборок сигнала цветности Cb. S представляет собой двумерный массив выборок цветности Cr. Выборки цветности также могут упоминаться в данном документе как выборки цветовой насыщенности. В других случаях, картинка может быть монохромной и может включать в себя только массив выборок яркости.
[0047] Кроме того, в HEVC и других спецификациях кодирования видео, для генерации кодированного представления картинки, видеокодер 22 может генерировать набор единиц дерева кодирования (CTU). Каждая из CTU может содержать блок дерева кодирования выборок яркости, два соответствующих блока дерева кодирования выборок цветности и синтаксические структуры, используемые для кодирования выборок блоков дерева кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CTU может содержать один блок дерева кодирования и синтаксические структуры, используемые для кодирования выборок блока дерева кодирования. Блок дерева кодирования может быть блоком N×N выборок. CTU может также упоминаться как “блок дерева” или “наибольшая единица кодирования” (LCU). CTU в HEVC могут быть в целом аналогичны макроблокам других стандартов, таких как H.264/AVC. Однако CTU не обязательно ограничена конкретным размером и может включать в себя одну или более единиц кодирования (CU). Слайс может включать в себя целое число CTU, упорядоченных последовательно в порядке растрового сканирования.
[0048] При работе в соответствии с HEVC, для генерации кодированной CTU, видеокодер 22 может рекурсивно выполнять разбиение квадродерева на блоки дерева кодирования из CTU для разделения блоков дерева кодирования на блоки кодирования, отсюда название “единицы дерева кодирования”. Блок кодирования представляет собой блок N×N выборок. CU может содержать блок кодирования выборок яркости и два соответствующих блока кодирования выборок цветности картинки, которая имеет массив выборок яркости, массив выборок Cb и массив выборок Cr, и синтаксические структуры, используемые для кодирования выборок блоков кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CU может содержать один блок кодирования и синтаксические структуры, используемые для кодирования выборок блока кодирования.
[0049] Синтаксические данные в битовом потоке также могут определять размер для CTU. Слайс включает в себя ряд последовательных CTU в порядке кодирования. Видеокадр или картинка могут быть разбиты на один или более слайсов. Как упомянуто выше, каждый блок дерева может быть разделен на CU в соответствии с квадродеревом. В общем, структура данных квадродерева включает в себя один узел на CU, с корневым узлом, соответствующим блоку дерева. Если CU разбивается на четыре под-CU, узел, соответствующий CU, включает в себя четыре листовых узла, каждый из которых соответствует одной из под-CU.
[0050] Каждый узел структуры данных квадродерева может предоставлять синтаксические данные для соответствующей CU. Например, узел в квадродереве может включать в себя флаг разделения, указывающий, разделяется ли CU, соответствующая узлу, на под-CU. Синтаксические элементы для CU могут быть определены рекурсивно и могут зависеть от того, разделяется ли CU на под-CU. Если CU дальше не разделяется, то она упоминается как листовая CU. Если блок CU разделяется дальше, то он может обычно упоминаться как не-листовая CU. В некоторых примерах данного раскрытия, четыре под-CU листовой CU могут упоминаться как листовые CU, даже если не существует явного разделения исходной листовой CU. Например, если CU с размером 16×16 не разделяется дальше, то четыре 8×8 под-CU также могут упоминаться как листовые CU, хотя 16×16 CU ни разу не была разделена.
[0051] CU имеет то же назначение, что и макроблок стандарта H.264, за исключением того, что CU не имеет отличий по размеру. Например, блок дерева может быть разделен на четыре дочерних узла (также упоминаемых как под-CU), и каждый дочерний узел может, в свою очередь, быть родительским узлом и быть разделен на другие четыре дочерних узла. Наконец, неразделенный дочерний узел, упоминаемый как листовой узел квадродерева, содержит узел кодирования, также упоминаемый как листовая CU. Синтаксические данные, ассоциированные с кодированным битовым потоком, могут определять максимальное количество раз разделения блока дерева, упоминаемое как максимальная глубина CU, и может также определять минимальный размер узлов кодирования. Соответственно, битовый поток может также определять наименьшую единицу кодирования (SCU). Это раскрытие использует термин "блок" для ссылки на любую из CU, PU или TU, в контексте HEVC, или аналогичные структуры данных в контексте других стандартов (например, макроблоки и их подблоки в H.264/AVC).
[0052] CU включает в себя узел кодирования, а также единицы предсказания (PU) и единицы преобразования (TU), ассоциированные с узлом кодирования. Размер CU соответствует размеру узла кодирования и может, в некоторых примерах, иметь квадратную форму. В примере HEVC, размер CU может находиться в диапазоне от 8×8 пикселов до размера блока дерева максимум с 64×64 пикселов или больше. Каждая CU может содержать одну или более PU и одну или более TU. Синтаксические данные, ассоциированные с CU, могут описывать, например, разбиение CU на одну или более PU. Режимы разбиения могут различаться между тем, пропускается ли CU или кодируется в прямом режиме, кодируется в режиме интра-предсказания или кодируется в режиме интер-предсказания. PU могут разбиваться так, чтобы иметь неквадратную форму. Синтаксические данные, ассоциированные с CU, могут также описывать, например, разбиение CU на одну или более TU в соответствии с квадродеревом. TU может иметь квадратную или неквадратную (например, прямоугольную) форму.
[0053] Стандарт HEVC позволяет осуществлять преобразования в соответствии с TU. TU могут отличаться для различных CU. Размеры TU обычно выбираются на основе размера PU в данной CU, определенного для разбитой LCU, хотя это не всегда может иметь место. TU обычно имеют такой же размер или меньше, чем PU. В некоторых примерах, остаточные выборки, соответствующие CU, могут быть разделены на меньшие единицы с использованием структуры квадродерева, иногда называемой "остаточным квадродеревом" (RQT). Листовые узлы RQT могут упоминаться как TU. Пиксельные разностные значения, ассоциированные с TU, могут быть преобразованы для получения коэффициентов преобразования, которые могут быть квантованы.
[0054] Листовая CU может включать в себя одну или более PU. В общем случае, PU представляет собой пространственную область, соответствующую всей или части соответствующей CU, и может включать в себя данные для извлечения опорной выборки для PU. Кроме того, PU включает в себя данные, относящиеся к предсказанию. Например, когда PU является кодированной в интра-режиме, данные для PU могут быть включены в RQT, которое может включать в себя данные, описывающие режим интра-предсказания для TU, соответствующей PU. В качестве другого примера, когда PU является кодированной в интер-режиме, PU может включать в себя данные, определяющие один или более векторов движения для PU. Данные, определяющие вектор движения для PU, могут описывать, например, горизонтальную составляющую вектора движения, вертикальную составляющую вектора движения, разрешение для вектора движения (например, точность в одну четверть пиксела или точность в одну восьмую пиксела), опорную картинку, на которую указывает вектор движения, и/или список опорных картинок (например, список 0, список 1 или список С) для вектора движения.
[0055] Листовая CU, имеющая одну или более PU, может также включать в себя одну или более TU. TU могут быть определены с использованием RQT (также упоминаемого как структура квадродерева TU), как обсуждалось выше. Например, флаг разделения может указывать, разделена ли листовая CU на четыре единицы преобразования. В некоторых примерах, каждая единица преобразования может быть разделена дополнительно на дальнейшие под-TU. Если TU дальше не разделена, то она может упоминаться как листовая TU. В общем случае, для интра-кодирования, все листовые TU, принадлежащие листовой CU, содержат остаточные данные, полученные из одного и того же режима интра- предсказания. То есть, тот же самый режим интра-предсказания обычно применяется для вычисления предсказанных значений, которые будут преобразованы, во всех TU листовой CU. Для интра- кодирования, видеокодер 22 может вычислять остаточное значение для каждой листовой TU с использованием режима интра-предсказания как разность между частью CU, соответствующей TU, и исходным блоком. TU не обязательно ограничена размером PU. Таким образом, TU могут быть больше или меньше, чем PU. Для интра-кодирования, PU может быть расположена совместно с соответствующей листовой TU для той же самой CU. В некоторых примерах, максимальный размер листового TU может соответствовать размеру соответствующей листовой CU.
[0056] Кроме того, TU листовых CU также могут быть ассоциированы с соответствующими структурами RQT. То есть, листовая CU может включать в себя квадродерево, указывающее, как листовая CU разбивается на TU. Корневой узел квадродерева TU обычно соответствует листовой CU, тогда как корневой узел квадродерева CU обычно соответствует блоку дерева (или LCU).
[0057] Как обсуждалось выше, видеокодер 22 может разбивать блок кодирования CU на один или более блоков предсказания. Блок предсказания представляет собой прямоугольный (т.е. квадратный или неквадратный) блок выборок, на котором применяется одно и то же предсказание. PU в CU могут содержать блок предсказания выборок яркости, два соответствующих блока предсказания выборок цветности и синтаксические структуры, используемые для предсказания блоков предсказания. В монохромных картинках или изображениях, имеющих три отдельные цветовые плоскости, PU может содержать один блок предсказания и синтаксические структуры, используемые для предсказания блока предсказания. Видеокодер 22 может генерировать блоки предсказания (например, блоки предсказания яркости, Cb и Cr) для блоков предсказания (например, блоков предсказания яркости, Cb и Cr) каждой PU в CU.
[0058] Видеокодер 22 и видеодекодер 30 могут быть сконфигурированы так, чтобы работать в соответствии с VVC. Согласно VVC, видеокодер (такой как видеокодер 22) разбивает картинку на множество единиц дерева кодирования (CTU). Видеокодер 22 может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множественного типа (МТТ). Структура QTBT удаляет концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT включает в себя два уровня: первый уровень, разбиваемый в соответствии с разбиением квадродерева, и второй уровень, разбиваемый в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).
[0059] В структуре разбиения МТТ, блоки могут быть разбиты с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или более типов разбиения троичного дерева (ТТ). Разбиение троичного дерева представляет собой разбиение, в котором блок разделяется на три подблока. В некоторых примерах, разбиение троичного дерева делит блок на три подблока без разделения исходного блока через центр. Типы разбиения в МТТ (например, QT, ВТ и ТТ) могут быть симметричными или асимметричными.
[0060] В некоторых примерах, видеокодер 22 и видеодекодер 30 могут использовать одну структуру QTBT или MTT для представления каждого из компонентов яркости и цветности, в то время как в других примерах видеокодер 22 и видеодекодер 30 могут использовать две или более структуры QTBT или MTT, такие как одна структура QTBT/MTT для компонента яркости и другая структура QTBT/MTT для обоих компонентов цветности (или две структуры QTBT/MTT для соответствующих компонентов цветности).
[0061] Видеокодер 22 и видеодекодер 30 могут быть сконфигурированы, чтобы использовать разбиение квадродерева по HEVC, разбиение QTBT, разбиение МТТ или другие структуры разбиения. Для целей объяснения, описание методов настоящего раскрытия представлено применительно к разбиению QTBT. Однако следует понимать, что методы настоящего раскрытия также могут применяться к видеокодерам, сконфигурированным для использования разбиения квадродерева или других типов разбиения.
[0062] Видеокодер 22 может использовать интра-предсказание или интер-предсказание для генерации блоков предсказания для PU. Если видеокодер 22 использует интра-предсказание для генерации блоков предсказания PU, видеокодер 22 может генерировать блоки предсказания PU на основе декодированных выборок картинки, которая включает в себя PU.
[0063] После того, как видеокодер 22 генерирует блоки предсказания (например, блоки предсказания яркости, Cb и Cr) для одной или более PU в CU, видеокодер 22 может генерировать один или более остаточных блоков для CU. Например, видеокодер 22 может генерировать остаточный блок яркости для CU. Каждая выборка в остаточном блоке яркости CU указывает разность между выборкой яркости в одном из блоков предсказания яркости CU и соответствующей выборкой в исходном блоке кодирования яркости CU. Кроме того, видеокодер 22 может генерировать остаточный блок Cb для CU. Каждая выборка в остаточном блоке Cb CU может указывать разность между выборкой Cb в одном из блоков предсказания Cb CU и соответствующей выборкой в исходном блоке кодирования Cb CU. Видеокодер 22 может также генерировать остаточный блок Cr для CU. Каждая выборка в остаточном блоке Cr CU может указывать разность между выборкой Cr в одном из блоков Cr предсказания CU и соответствующей выборкой в исходном блоке кодирования Cr CU.
[0064] Кроме того, как обсуждалось выше, видеокодер 22 может использовать разбиение квадродерева для разложения остаточных блоков (например, остаточных блоков яркости, Cb и Cr) CU в один или более блоков преобразования (например, блоков преобразования яркости, Cb и Cr). Блок преобразования представляет собой прямоугольный (например, квадратный или неквадратный) блок выборок, к которому применяется одно и то же преобразование. Блок преобразования (TU) в CU может содержать блок преобразования выборок яркости, два соответствующих блока преобразования выборок цветности и синтаксические структуры, используемые для преобразования выборок блока преобразования. Таким образом, каждый TU в CU может иметь блок преобразования яркости, блок преобразования Cb и блок преобразования Cr. Блок преобразования яркости TU может быть подблоком остаточного блока яркости CU. Блок преобразования Cb может быть подблоком остаточного блока Cb CU. Блок преобразования Cr может быть подблоком остаточного блока Cr CU. В монохромных картинках или в картинках, имеющих три отдельные цветовые плоскости, TU может содержать один блок преобразования и синтаксические структуры, используемые для преобразования выборок блока преобразования.
[0065] Видеокодер 22 может применять одно или более преобразований блока преобразования TU для генерации блока коэффициентов для TU. Например, видеокодер 22 может применять одно или более преобразований к блоку преобразования яркости TU для генерации блока коэффициентов яркости для TU. Блок коэффициентов может быть двумерным массивом коэффициентов преобразования. Коэффициент преобразования может быть скалярной величиной. Видеокодер 22 может применять одно или более преобразований к блоку преобразования Cb TU для генерации блока коэффициентов Cb для TU. Видеокодер 22 может применять одно или более преобразований к блоку преобразования Cr TU для генерации блока коэффициентов Cr для TU.
[0066] В некоторых примерах, видеокодер 22 пропускает применение преобразований к блоку преобразования. В таких примерах, видеокодер 22 может обрабатывать остаточные значения выборок таким же образом, как коэффициенты преобразования. Таким образом, в примерах, где видеокодер 22 пропускает применение преобразований, последующее обсуждение коэффициентов преобразования и блоков коэффициентов может применяться к блокам преобразования остаточных выборок.
[0067] После генерации блока коэффициентов (например, блока коэффициентов яркости, блока коэффициентов Cb или блока коэффициентов Cr), видеокодер 22 может квантовать блок коэффициентов, чтобы, возможно, уменьшить объем данных, используемых для представления блока коэффициентов, потенциально обеспечивая дополнительное сжатие. Квантование обычно относится к процессу, в котором диапазон значений сжимается до одного значения. Например, квантование может выполняться путем деления значения на константу и затем округления до ближайшего целого числа. Чтобы квантовать блок коэффициентов, видеокодер 22 может квантовать коэффициенты преобразования блока коэффициентов. После того как видеокодер 22 квантует блок коэффициентов, видеокодер 22 может энтропийно кодировать синтаксические элементы, указывающие квантованные коэффициенты преобразования. Например, видеокодер 22 может выполнять контекстно-адаптивное двоичное арифметическое кодирование (CABAC) или другие методы энтропийного кодирования на синтаксических элементах, указывающих квантованные коэффициенты преобразования.
[0068] Видеокодер 22 может выводить битовый поток, который включает в себя последовательность битов, которая формирует представление кодированных картинок и ассоциированных данных. Таким образом, битовый поток содержит кодированное представление видеоданных. Битовый поток может содержать последовательность единиц уровня сетевой абстракции (NAL). Единица NAL представляет собой синтаксическую структуру, содержащую указание типа данных в единице NAL, и байты, содержащие эти данные в форме полезной нагрузки (RBSP) исходной последовательности байтов, распределенных по мере необходимости с битами предотвращения эмуляции. Каждая из единиц NAL может включать в себя заголовок единицы NAL и может инкапсулировать RBSP. Заголовок единицы NAL может включать в себя синтаксический элемент, указывающий код типа единицы NAL. Код типа единицы NAL, заданный заголовком единицы NAL в единице NAL, указывает тип единицы NAL. RBSP может быть синтаксической структурой, содержащей целое число байтов, которое инкапсулировано в единице NAL. В некоторых случаях RBSP включает в себя нулевые биты.
[0069] Видеодекодер 30 может принимать битовый поток, генерируемый видеокодером 22. Видеодекодер 30 может декодировать битовый поток для восстановления картинок видеоданных. Как часть декодирования битового потока, видеодекодер 30 может выполнять синтаксический анализ битового потока для получения синтаксических элементов из битового потока. Видеодекодер 30 может восстанавливать картинки видеоданных на основании, по меньшей мере частично, синтаксических элементов, полученных из битового потока. Процесс восстановления видеоданных может быть, в общем, обратным процессу, выполняемому видеокодером 22. Например, видеодекодер 30 может использовать векторы движения PU для определения блоков предсказания для PU текущей CU. Кроме того, видеодекодер 30 может выполнять обратное квантование блоков коэффициентов TU текущей CU. Видеодекодер 30 может выполнять обратные преобразования на блоках коэффициентов для восстановления блоков преобразования TU текущей CU. Видеодекодер 30 может восстанавливать блоки кодирования текущей CU путем суммирования выборок блоков предсказания для PU текущей CU с соответствующими выборками блоков преобразования TU текущей CU. Путем восстановления блоков кодирования для каждой CU картинки, видеодекодер 30 может восстанавливать картинку.
[0070] Методы, раскрытые в настоящем документе, построены на блочном интра-предсказании, которое является частью стандартов видео, включающих в себя AVC, HEVC и VVC. В блочном интра-предсказании, обычно линии опорных выборок из смежных восстановленных блоков используются для предсказания выборок в текущем блоке. Одна или более линий выборок могут использоваться для предсказания. Опорные выборки используются типовыми режимами интра-предсказания, такими как DC, планарные и угловые/направленные режимы.
[0071] Интра-предсказание выполняет предсказание блоков изображения с использованием пространственно соседних восстановленных выборок изображения блока. При интра- предсказании, блок N×M (например, 4×4) предсказывается верхними и левыми соседними восстановленными выборками (опорными выборками) вдоль выбранного направления предсказания. В качестве одного примера, блок предсказывается верхними и левыми соседними восстановленными выборками (т.е. опорными выборками) вдоль выбранного направления предсказания. Опорные выборки являются внешними по отношению к предсказываемому блоку. С опорными выборками, видеокодер 22 формирует блок предсказания, имеющий выборки предсказания, основанные на опорных выборках.
[0072] В общем, в методах интра-предсказания, видеокодер 22 определяет остаточный блок, указывающий различия между блоком предсказания и текущим блоком (например, остаточные значения, указывающие различия между выборками предсказания и выборками текущего блока), и сигнализирует информацию, указывающую остаточные значения в остаточном блоке. Видеодекодер 30 аналогично определяет опорные выборки и формирует блок предсказания. Видеодекодер 30 определяет остаточные значения остаточного блока на основе принятой информации и суммирует остаточные значения остаточного блока с выборками предсказания блока предсказания для восстановления текущего блока.
[0073] Как описано более подробно, примерные методы, описанные в этом раскрытии, модифицируют одну или более (например, все) из выборок предсказания блока предсказания. Видеокодер 22 может определять остаточные значения на основе модифицированных выборок предсказания. Видеодекодер 30 может суммировать остаточные значения с модифицированными выборками предсказания для восстановления текущего блока. Как также описано более подробно, способы применимы для угловых режимов интра-предсказания, и способ, которым модифицируются выборки предсказания, может быть основан на угловом режиме интра-предсказания, используемом для кодирования или декодирования текущего блока.
[0074] Существует множество режимов интра-предсказания. В некоторых примерах, интра-предсказание блока яркости включает в себя 35 режимов, включая планарный режим, DC-режим и 33 угловых режима (например, режимы диагонального интра-предсказания и угловые режимы, смежные с диагональными режимами интра- предсказания). 35 режимов интра-предсказания проиндексированы, как показано в приведенной ниже таблице. В других примерах может быть определено больше интра-режимов, включая углы предсказания, которые могут не быть представлены 33 угловыми режимами. В других примерах, углы предсказания, ассоциированные с угловыми режимами, могут отличаться от углов, используемых в HEVC.
Таблица 1. Спецификация режима интра-предсказания и ассоциированные наименования
Режим интра-предсказания
Ассоциированное наименование
0
INTRA_PLANAR
1
INTRA_DC
2…34
INTRA_ANGULAR2…INTRA_ANGULAR34
xy
x,-1
-1,y
[0075] Для выполнения планарного предсказания для блока N×N, для каждой выборки p, расположенной в (x, y), значение предсказания может быть вычислено посредством применения билинейного фильтра к четырем конкретным соседним восстановленным выборкам, т.е. опорным выборкам. Четыре опорных выборки включают в себя верхнюю-правую восстановленную выборку TR, нижнюю-левую восстановленную выборку BL и две восстановленные выборки, расположенные в одном и том же столбце (r) и строке (r) текущей выборки. Планарный режим может быть сформулирован следующим образом:
xy
p=((N-x1)∙L+(N-y1)∙T+x1∙R+y1∙B)/(2*N)
где x1=x+1, y1=y+1, R=TR и B=BL
[0076] Для DC-режима, блок предсказания заполняется средним значением соседних восстановленных выборок. Как правило, как планарный, так и DC режимы применяются для моделирования плавно изменяющихся и постоянных областей изображения.
[0077] Для угловых режимов интра-предсказания в HEVC, которые включают в себя 33 различных направления предсказания, процесс интра-предсказания может быть описан следующим образом. Для каждого данного углового режима интра-предсказания, направление интра-предсказания может быть идентифицировано соответствующим образом; например, интра-режим 18 соответствует чисто горизонтальному направлению предсказания, а интра-режим 26 соответствует чисто вертикальному направлению предсказания.
[0078] С учетом конкретного направления интра-предсказания, для каждой выборки блока предсказания, его координата (x, y) сначала проецируется на строку/столбец соседних восстановленных выборок вдоль направления предсказания. Предположим, что (x, y) проецируется на дробное положение α между двумя соседними восстановленными выборками L и R; затем значение предсказания для (x, y) может быть вычислено с использованием двухотводного билинейного интерполяционного фильтра, сформулированного следующим образом:
xy
р=(1-a)∙L+a∙R
Например, координаты (x, y) выборки блока предсказания проецируются вдоль конкретного направления интра-предсказания (например, одного из угловых режимов интра-предсказания). Чтобы избежать операций с плавающей запятой, в HEVC, вышеупомянутое вычисление фактически аппроксимируется с использованием целочисленной арифметики как:
xy
p=((32-a')∙L+a'∙R+16>>5,
где а'- целое число, равное 32*а.
[0079] В некоторых примерах, перед интра-предсказанием соседние опорные выборки фильтруют с использованием 2-отводного билинейного или 3-отводного (1,2,1)/4 фильтра, известного как внутри-опорное сглаживание или зависимое от режима внутреннее сглаживание (MDIS). При выполнении интра-предсказания, с учетом индекса режима интра-предсказания (predModelntra) и размера блока (nTbS), принимается решение о том, выполняется ли процесс опорного сглаживания, и какой сглаживающий фильтр используется. Индекс режима интра-предсказания представляет собой индекс, указывающий режим интра-предсказания.
[0080] Выборки предсказания блока предсказания генерируются с использованием вышеприведенных примерных методов. После генерации выборок предсказаний, одна или более из выборок предсказания могут быть модифицированы с использованием комбинации позиционно-зависимого интра-предсказания (PDPC). Формы PDPC описаны в ITU-T SG16/Q6 Doc. COM16-C1046, “Position Dependent intra Prediction Combination (PDPC), и X. Zhao, V. Seregin, A. Said, M. Karczewicz, “EE1 related: Simplification and extension of PDPC”, 8th JVET Meeting, Macau, Oct. 2018, JVET-H0057. В этом документе раскрыто введение PDPC в применении к планарному, DC, горизонтальному и вертикальному режимам без сигнализации, как кратко изложено ниже.
[0081] Выборка предсказания pred(x, y), расположенная в (x, y), предсказывается с помощью режима интра-предсказания (DC, планарного, углового), и его значение модифицируется с использованием выражения PDPC для одиночной линии опорной выборки:
pred(x, y)=(wL×R-1,y+wT×Rx,-1-wTL×R-1,-1+(64-wL-wT+wTL)×pred' (x, y)+32)>>6, (Уравнение 1)
[0082] В уравнении 1, pred'(x, y) представляет собой значение выборки предсказания, как определено с использованием вышеупомянутых примерных методов для генерации выборок предсказания, и pred(x, y) представляет собой модифицированное значение pred'(x, y). В уравнении 1, Rх,-l, R-1,y представляют опорные выборки, расположенные сверху и слева от текущей выборки (x, y) и внешние для текущего блока, соответственно, и R-1,-l представляет опорную выборку, расположенную в верхнем левом углу и внешнюю для текущего блока. Другими словами, Rx,-1 представляет выборку, которая на одну строку выше текущего блока с той же х-координатой, что и х-координата модифицируемой выборки предсказания, и R-1,y представляет выборку, которая на один столбец левее текущего блока с той же y-координатой, что и у-координата модифицируемой выборки предсказания.
[0083] Выборки (например, опорные выборки), которые используются, чтобы модифицировать выборку предсказания, представляют собой выборки в картинке (например, выборки яркости и цветности) и необязательно другие выборки предсказания (хотя возможно). Например, положим, что текущий интра-предсказываемый блок имеет размер N×M. Для этого текущего блока, видеокодер 22 и видеодекодер 30 могут генерировать блок предсказания размером N×M. Опорные выборки, используемые, чтобы модифицировать выборки предсказания, представляют собой выборки текущей картинки (например, выборки яркости и/или цветности), которая включает в себя текущий блок, и являются внешними для текущего блока.
[0084] Система координат предназначена для идентификации выборок, внешних для текущего блока, которые относятся к текущему блоку. Например, выборка, расположенная в верхнем-левом углу текущего блока, имеет координату (0,0). Видеокодер 22 может определять остаток между выборкой предсказания, расположенной в верхнем-левом углу блока предсказания (например, имеющей координату (0,0)), и выборкой в текущем блоке, имеющей координату (0,0). Чтобы восстановить выборку, расположенную в (0,0) в текущем блоке, видеодекодер 30 может суммировать выборку предсказания, расположенную в (0,0) в блоке предсказания, с остаточным значением, соответствующим выборке, расположенной в (0,0). Соответственно, для каждой выборки в текущем блоке, имеется соответствующая выборка в блоке предсказания (например, имеющая ту же самую координату).
[0085] Соответственно, Rx,-1, означает, что y-координата равна -1 и поэтому относится к выборке в строке, которая выше текущего блока. x-координата может быть той же самой, что и x-координата модифицируемой выборки предсказания. Для R-1,y, x-координата равна -1 и поэтому относится к столбцу, который слева от текущего блока. y-координата может быть той же самой, что и y-координата модифицируемой выборки предсказания.
[0086] Может быть возможным использовать также другую систему координат, такую как система координат, где координата (0,0) относится к верхней-левой выборке картинки. Примерные методы описаны относительно системы координат, где координата (0,0) относится к верхней-левой выборке блока.
[0087] Для DC режима, веса вычисляются, как описано далее для блока с измерениями ширины (width) и высоты (height):
wT=32>>((y<<1)>>shift), wL=32>>((x<<1)>>shift), wTL=(wL>>4)+(wT>>4),
[0088] В уравнении выше, сдвиг определяется следующим образом: shift=(log2(width)+log2(height)+2)>>2, в то время как для планарного режима wTL=0, для горизонтального режима wTL=wT, и для вертикального режима wTL=wL. Веса PDPC могут вычисляться только с помощью суммирований и сдвигов. Значение pred(x, y) может вычисляться на одном этапе с использованием Уравнения 1.
[0089] Фиг. 2A иллюстрирует веса (wL, wT,wTL) PDPC режима DC для положения (0,0) внутри одного блока 4×4. Фиг. 2B иллюстрирует веса (wL, wT,wTL) PDPC режима DC для положения (1,0) внутри одного блока 4×4. Если PDPC применяется к DC, планарному, горизонтальному и вертикальному интра-режимам, дополнительные граничные фильтры не применяются, такие как граничный фильтр режима DC или краевые фильтры горизонтального/вертикального режима. Уравнение 1 может быть обобщено, чтобы включать дополнительные линии опорных выборок (например, без ограничения выборками на одну строку выше или одну строку левее текущего блока). В этом случае, множество опорных выборок возможны по соседству с Rx,-1, R-1,y, R-1,-1 и каждая может иметь назначенный вес, который может быть оптимизирован, например, путем обучения.
[0090] Как раскрыто здесь, PDPC может теперь распространяться на угловые режимы в общем (например, на диагональные интра-режимы и на угловые режимы, которые являются смежными с диагональными режимами). Предполагаемые диагональные интра-режимы представляют собой режимы, которые предсказывают в соответствии с направлениями вниз-влево и вверх-вправо, а также некоторые смежные угловые режимы, например, N смежных режимов между диагональным вниз-влево режимом и вертикальным режимом, и N или M смежных режимов между диагональным вверх-вправо режимом и горизонтальным режимом. Фиг. 3 иллюстрирует идентификацию угловых режимов, как раскрыто здесь. В общем, смежные режимы могут представлять собой выбранный поднабор доступных угловых режимов. Разнесение между угловыми режимами может, например, быть неоднородным, и некоторые угловые режимы могут, например, быть пропущены.
[0091] В примерных методах, описанных в настоящем раскрытии, видеокодер 22 и видеодекодер 30 могут быть сконфигурированы, чтобы выполнять PDPC, где текущий блок интра-предсказывается в угловом режиме, который исключает DC, планарный, вертикальный или горизонтальный режимы. Однако могут иметься технические сложности в распространении PDPC на угловые режимы интра-предсказания. Например, опорные выборки, при расположении внешним образом для текущего блока, не должны иметь те же самые x- и/или y-координаты, что и модифицируемая выборка предсказания. Поэтому может быть неясно, какие опорные выборки следует использовать для модифицирования выборки предсказания, так чтобы получить выигрыш по эффективности кодирования видео.
[0092] Например, если информация, необходимая для сигнализации остаточных значений, уменьшается, то имеет место повышение в эффективности ширины полосы. Соответственно, опорные выборки, используемые для модифицирования блока предсказания, должны быть такими, что остаточные значения, сгенерированные из модифицированного блока предсказания, требуют сигнализации меньшего количества информации, по сравнению с другими методами. Однако, если определение того, какие опорные выборки следует использовать, чрезмерно интенсивно, то может иметь место запаздывание по времени, требуемому видеодекодеру 30 для восстановления текущего блока.
[0093] Настоящее раскрытие описывает примерные методы, которые обеспечивают практическое применение для методов кодирования видео, таких как методы для PDPC, используемые с угловыми режимами интра-предсказания. Например, примерные методы обеспечивают техническое решение для использования PDPC с угловыми режимами интра-предсказания. Примерные способы, которыми видеокодер 22 и видеодекодер 30 могут выполнять PDPC с угловыми режимами интра-предсказания, описаны более подробно ниже.
[0094] В качестве одного примера, видеокодер 22 может быть сконфигурирован, чтобы определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, и модифицировать выборку предсказания блока предсказания, чтобы сгенерировать модифицированную выборку предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC). Следует понимать, что хотя методы описаны относительно одной выборки предсказания, примерные методы не ограничены этим. В некоторых примерах, видеокодер 22 может модифицировать другие выборки предсказания блока предсказания с использованием PDPC.
[0095] Чтобы модифицировать выборку предсказания, видеокодер 22 может определять одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания и модифицировать выборку предсказания, чтобы сгенерировать модифицированную выборку предсказания на основе определенной одной или более опорных выборок. Видеокодер 22 может определять остаточное значение для остаточного блока на основе модифицированной выборки предсказания и значения выборки в текущем блоке и сигнализировать информацию, указывающую остаточное значение.
[0096] В качестве одного примера, видеодекодер 30 может быть сконфигурирован, чтобы определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания, и модифицировать выборку предсказания блока предсказания, чтобы сгенерировать модифицированную выборку предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC). Аналогично изложенному выше, хотя методы описаны относительно одной выборки предсказания, примерные методы не ограничены этим. В некоторых примерах, видеодекодер 30 может модифицировать другие выборки предсказания блока предсказания с использованием PDPC.
[0097] Чтобы модифицировать выборку предсказания, видеодекодер 30 может быть сконфигурирован, чтобы определять одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания и модифицировать выборку предсказания, чтобы сгенерировать модифицированную выборку предсказания на основе определенной одной или более опорных выборок. Видеодекодер 30 может также быть сконфигурирован, чтобы восстанавливать выборку текущего блока на основе модифицированной выборки предсказания и остаточного значения.
[0098] Фиг. 4A-4D иллюстрируют определение выборок, используемых посредством распространения PDPC на диагональные и смежные угловые интра-режимы. Фиг. 4A иллюстрирует определение опорных выборок Rx,-1, R-1,y и R-1,-1 для распространения PDPC на диагональный вверх-вправо режим. Выборка pred(x’,y’) предсказания расположена в (x’,y’) в блоке предсказания. Координата x опорной выборки Rx,-1 задается посредством: x=x’+y’+1, и координата y опорной выборки R-1,y аналогично задается посредством: y=x’+y’+1. Веса PDPC для диагонального вверх-вправо режима составляют, например: wT=16>>((y’<<1)>>shift), wL=16>>((x’<<1)>>shift), wTL=0.
[0099] Аналогично, фиг. 4B иллюстрирует определение опорных выборок Rx,-1, R-1,y и R-1,-1 для распространения PDPC на диагональный вниз-влево режим. Координата x опорной выборки Rx,-1 задается посредством: x=x’+y’+1, и координата y опорной выборки R-1,y представляет собой: y=x’+y’+1. Веса PDPC для диагонального вверх-вправо режима составляют, например: wT=16>>((y’<<1)>>shift), wL=16>>((x’<<1)>>shift), wTL=0.
[0100] На фиг. 4A и 4B, видеокодер 22 и видеодекодер 30 могут каждый определять строку, которая находится выше текущего блока (например, непосредственно выше, но методы не ограничены этим), и определять x-координату в определенной строке. x-координата в определенной строке равна x-координате выборки предсказания плюс y-координата выборки предсказания плюс 1. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной x-координаты.
[0101] Аналогично, на фиг. 4A и 4B, видеокодер 22 и видеодекодер 30 могут определять столбец, который находится слева от текущего блока (например, непосредственно слева, но методы не ограничены этим), и определять y-координату в определенном столбце. y-координата в определенном столбце равна x-координате выборки предсказания плюс y-координата выборки предсказания плюс 1. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной y-координаты.
[0102] На основе определенных x и y-координат, видеокодер 22 и видеодекодер 30 могут определять опорные выборки (например, первую опорную выборку на основе определенной строки и определенной x-координаты и вторую опорную выборку на основе определенного столбца и определенной y-координаты). Также, видеокодер 22 и видеодекодер 30 могут определять веса в соответствии с изложенными выше примерными методами для диагональных режимов (например, диагонального вверх-вправо режима и диагонального вниз-влево режима, в качестве двух примеров). Затем, на основе Уравнения 1 (в качестве одного не ограничивающего примера), видеокодер 22 и видеодекодер 30 могут определять модифицированную выборку предсказания (например, pred(x, y)).
[0103] Случай смежного диагонального вверх-вправо режима проиллюстрирован на фиг. 4C. В общем, для угла α, определенного на фиг. 3, y-координата опорной выборки R-1,y определяется следующим образом: y=y’+tan(α)×(x’+1), и x-координата Rx,-1 задается посредством: x=x’+cotan(α)×(y’+1), где tan(α) и cotan(α) представляют собой тангенс и котангенс угла α. Веса PDPC для смежного диагонального вверх-вправо режима составляют, например: wT=32>>((y’<<1)>>shift), wL=32>>((x’<<1)>>shift), wTL=0 или wT=32>>((y’<<1)>>shift), wL=0, wTL=0.
[0104] Аналогично, случай смежного диагонального вниз-влево режима проиллюстрирован на фиг. 4D. В общем, для угла β, определенного на фиг. 3, x-координата опорной выборки Rx,-1 определяется следующим образом: x=x’+tan(β)×(y’+1), и y-координата R-1,y задается посредством: y=y’+cotan(β)×(x’+1), где tan(β) и cotan(β) представляют собой тангенс и котангенс угла β. Веса PDPC для смежного диагонального вниз-влево режима составляют, например: wL=32>>((x’<<1)>>shift), wT=32>>((y’<<1)>>shift), wTL=0 или wL=32>>((x’<<1)>>shift), wT=0, wTL=0.
[0105] На фиг. 4C и 4D, видеокодер 22 и видеодекодер 30 могут каждый определять строку, которая находится выше текущего блока (например, непосредственно выше, но методы не ограничены этим), и определять x-координату в определенной строке. x-координата в определенной строке основана на угле углового режима интра-предсказания. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной x-координаты.
[0106] Чтобы определить x-координату в определенной строке, видеокодер 22 и видеодекодер 30 могут определять одно из котангенса (например, для смежного диагонального вверх-вправо режима) или тангенса (например, для смежного диагонального вниз-влево режима) угла углового режима интра-предсказания. Видеокодер 22 и видеодекодер 30 могут определять x-координату в определенной строке на основе одного из котангенса или тангенса угла углового режима интра-предсказания, x-координаты выборки предсказания и y-координаты выборки предсказания. Например, для смежного диагонального вверх-вправо углового режима интра-предсказания, x-координата в определенной строке равна x’+cotan(α)×(y’+1), и для смежного диагонального вниз-влево режима, x-координата в определенной строке равна x’+tan(β)×(y’+1), где x’ и y’ представляют собой x и y-координаты модифицируемой выборки предсказания.
[0107] Аналогично, на фиг. 4C и 4D, видеокодер 22 и видеодекодер 30 могут каждый определять столбец, который находится слева от текущего блока (например, непосредственно слева, но методы не ограничены этим), и определять y-координату в определенном столбце. y-координата в определенном столбце основана на угле углового режима интра-предсказания. Видеокодер 22 и видеодекодер 30 могут определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной y-координаты.
[0108] Чтобы определить y-координату в определенном столбце, видеокодер 22 и видеодекодер 30 могут определять одно из котангенса (например, для смежного диагонального вниз-влево режима) или тангенса (например, для смежного диагонального вверх-вправо режима) угла углового режима интра-предсказания. Видеокодер 22 и видеодекодер 30 могут определять y-координату в определенном столбце на основе одного из котангенса или тангенса угла углового режима интра-предсказания, x-координаты выборки предсказания и y-координаты выборки предсказания. Например, для смежного диагонального вверх-вправо углового режима интра-предсказания, y-координата в определенном столбце равна y’+tan(α)×(x’+1), и для смежного диагонального вниз-влево режима, y-координата в определенном столбце равна y’+cotan(β)×(x’+1), где x’ и y’ представляют собой x и y-координаты модифицируемой выборки предсказания.
[0109] На основе определенной x и y-координат, видеокодер 22 и видеодекодер 30 могут определять опорные выборки (например, первую опорную выборку на основе определенной строки и определенной x-координаты и вторую опорную выборку на основе определенного столбца и определенной y-координаты). Также, видеокодер 22 и видеодекодер 30 могут определять веса в соответствии с изложенными выше примерными методами для смежных диагональных режимов (например, смежного диагонального вверх-вправо режима и смежного диагонального вниз-влево режима, в качестве двух примеров). Затем, на основе Уравнения 1 (в качестве одного не ограничивающего примера), видеокодер 22 и видеодекодер 30 могут определять модифицированную выборку предсказания (например, pred(x, y)).
[0110] Изложенное выше описывает примерные методы для диагональных вверх-вправо и вниз-влево режимов и смежного диагонального вверх-вправо и смежного диагонального вниз-влево режимов в качестве примерных угловых режимов, для которых может применяться PDPC. Примерные методы могут быть распространены также на другие угловые режимы. Также, в некоторых примерах, одна или более опорных выборок имеют как x-, так и y-координату, которая отличается от и x-, и y-координаты выборки предсказания в блоке предсказания. Например, в приведенных выше примерных уравнениях, чтобы определить x- и y-координаты в соответственных строках и столбцах, чтобы определить опорные выборки, x-координата отличается от x-координаты модифицируемой выборки предсказания, и y-координата отличается от y-координаты модифицируемой выборки предсказания. То есть, опорные выборки могут не находиться в той же самой строке или том же самом столбце, что и модифицируемая выборка предсказания.
[0111] Как в случае для DC, планарного, горизонтального и вертикального режима PDPC, отсутствует дополнительная граничная фильтрация, например, как специфицировано в ‘J. Chen, E. Alshina, G. J. Sullivan, J.-R. Ohm, J. Boyce, “Algorithm description of Joint Exploration Test Model 7,” 7th JVET Meeting, Torino, Italy, July 2017, JVET-G1001, для диагональных и смежных диагональных режимов, когда PDPC распространяется на эти угловые режимы.
[0112] Как описано выше, примерные методы, описанные в настоящем раскрытии, могут создавать возможность применения PDPC к угловым режимам интра-предсказания с минимальным влиянием на сложность. При практической реализации, значения тангенсов и котангенсов углов могут храниться в таблицах, так что они не вычисляются на ходу (например, во время выполнения). Ниже представлены примерные таблицы для 129 угловых режимов в общем:
[0113] TanAngTable[33] = {0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 49, 52, 55, 58, 61, 64}.
[0114] CotanAngTable[33] = {0, 65536, 32768, 21845, 16384, 13107, 10923, 8192, 6554, 5461, 4681, 4096, 3641, 3277, 2979, 2731, 2521, 2341, 2185, 2048, 1928, 1820, 1725, 1638, 1560, 1489, 1425, 1337, 1260, 1192, 1130, 1074, 1024}.
[0115] Более того, таблицы могут уже быть использованы угловым интра-предсказанием блоков и могут быть повторно использованы для распространения PDPC на диагональные и смежные режимы (например, угловые режимы интра-предсказания). Поэтому никакие дополнительные таблицы могут не требоваться в реализации PDPC. В некоторых примерах, настраиваемые таблицы могут формироваться, например, путем обучения, чтобы дополнительно оптимизировать PDPC.
[0116] В некоторых случаях, все горизонтальные угловые режимы отображаются на вертикальные режимы путем зеркального отображения блока относительно нижней-правой диагонали. Симметрия относительно вертикального режима позволяет дополнительно уменьшить количество углов до 33 при хранении значений тангенса и котангенса в TanAngTable и CotanAngTable, соответственно. Ввиду требуемой целочисленной точности, значения в обеих таблицах масштабируются коэффициентом 64 в случае TanAngTable и значением 1024 в случае CotanAngTable. Умножений в формулах выше для вычисления координат x и y избегают за счет накопления табличных значений, соответствующих угловому режиму с увеличением x’ и y’ при проходе блока предсказания.
[0117] Интерполяция опорных выборок, например, посредством линейной или кубической интерполяции, или округление до ближайшего соседа могут использоваться, если вычисляются дробные значения. Например, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания, видеокодер 22 и видеодекодер 30 могут быть сконфигурированы, чтобы определять набор из одной или более выборок на основе углового режима интра-предсказания и интерполировать набор из одной или более выборок, чтобы сгенерировать одну или более опорных выборок. Интерполяция является одним примером. В некоторых примерах, видеокодер 22 или видеодекодер 30 могут выполнять по меньшей мере одно из интерполяции, округления со смещением или округления без смещения. Видеокодер 22 или видеодекодер 30 могут выполнять такое округление со смещением или без смещения на основе соседних выборок в наборе из одной или более выборок, чтобы сгенерировать одну или более опорных выборок.
[0118] Отсечение может требоваться, чтобы предотвратить доступность опорных выборок вне границ буфера опорных линий, в случае, если вычисляются большие значения координат. Если выполняется отсечение, последняя доступная опорная выборка может использоваться или PDPC может возвращаться только к угловому интра-предсказанию, что эквивалентно применению нулевых весов для wL, wT, wTL в Уравнении. 1, например. Например, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания, видеокодер 22 и видеодекодер 30 могут быть сконфигурированы, чтобы определять, что одна или более выборок, внешних для текущего блока, идентифицированных на основе углового режима интра-предсказания, не сохранены в буфере опорных линий, и определять одну или более опорных выборок на основе последней опорной выборки, сохраненной в буфере опорных линий.
[0119] В некоторых примерах, вместо использования последней выборки в буфере опорных линий, PDPC может быть выключено для текущего блока, или PDPC может быть выключено для определенных предсказанных выборок, так что используется нормальное интра-предсказание (например, без модифицированных выборок предсказания). В качестве одного примера, для выборки предсказания в блоке предсказания, видеокодер 22 или видеодекодер 30 могут определять, что первая опорная выборка доступна в опорном буфере, но что вторая опорная выборка недоступна в опорном буфере. В этом примере, видеокодер 22 или видеодекодер 30 могут определять, что PDPC выключена для выборки предсказания. Однако, в некоторых примерах, видеокодер 22 или видеодекодер 30 могут использовать первую опорную выборку для PDPC и не использовать вторую опорную выборку (например, путем установки веса для второй опорной выборки равного нулю).
[0120] Как описано выше, в некоторых примерах, видеокодер 22 и видеодекодер 30 могут выполнять примерные методы PDPC на множестве выборок предсказания в блоке предсказания. Однако могут существовать случаи, когда методы PDPC используются на некоторых выборках предсказания, но не на других выборках предсказания в одном и том же блоке предсказания. Например, положим, что для первой выборки предсказания в блоке предсказания, видеокодер 22 или видеодекодер 30 выполняют методы PDPC, описанные в настоящем раскрытии. Однако для второй выборки предсказания в том же самом блоке предсказания, положим, что опорные выборки, необходимые для выполнения методов PDPC на второй выборке предсказания, не сохранены в буфере опорных линий. В этом примере, для второй выборки предсказания, видеокодер 22 или видеодекодер 30 могут не выполнять методы PDPC и могут использоваться методы нормального интра-предсказания. В некоторых случаях, для второй выборки предсказания, может быть возможным, что одна из опорных выборок доступна в буфере опорных линий, а другая - нет. В некоторых примерах, видеокодер 22 или видеодекодер 30 могут не выполнять методы PDPC на второй выборке предсказания или могут использовать только опорную выборку, которая является доступной, и назначать нулевой вес весам, примененным к опорной выборке, которая не является доступной.
[0121] Эффективность сжатия для распространения PDPC на диагональные и смежные угловые режимы проиллюстрирована в следующих таблицах. Всего имеется 16 режимов, смежных с диагональным вверх-вправо режимом, и 16 режимов, смежных с диагональным вниз-влево режимом, в этом примерном тестировании. Условием примерного тестирования является ‘полное интра’, и используемые значения QP составляют {22, 27, 32, 37}. Таблица 1 (фиг. 5A) представляет BD-rates условия полного интра-тестирования для расширения PDPC (диагонального и смежного), без граничной фильтрации диагонального и смежного режимов. Таблица на фиг. 5A перечисляет BD-rates, когда тестирование проводится с выключенной граничной фильтрацией для диагонального и смежного режимов. Дополнительно, Таблица 2 (фиг. 5B) представляет BD-rates условия полного интра-тестирования для расширения PDPC (диагонального и смежного), включая граничную фильтрацию диагонального и смежного режима. Дополнительно, Таблица 2 на фиг. 5B перечисляет BD-rates, когда тестирование проводится с включенной граничной фильтрацией для диагонального и смежного режимов.
[0122] Подобно распространению PDPC на диагональные и смежные угловые режимы, PDPC может быть распространена на угловые режимы, которые являются смежными с горизонтальными и вертикальными режимами. Смежные угловые режимы в этом случае могут относиться к угловым режимам по обе стороны от горизонтального и вертикального режимов. В случае смежных горизонтальных угловых режимов, x-координата Rx,-1 равна x-координате pred(x, y). Примерные веса PDPC составляют: wT=16>>((y<<1)>>shift), wL=0, wTL=wT. В случае смежных вертикальных угловых режимов, y-координата R-1,y равна y-координате pred(x, y). Примерные веса PDPC составляют: wL=16>>((x<<1)>>shift), wT=0, wTL=wL.
[0123] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный видеокодер 22, который может реализовывать методы настоящего раскрытия. Фиг. 6 обеспечена с целью объяснения и не должна пониматься как ограничивающая методы, как широко объяснено на примерах и описано в настоящем раскрытии. Методы настоящего раскрытия могут быть применимы к различным стандартам кодирования (например, HEVC или VVC) или способам.
[0124] Различные модули (блоки) на фиг. 6 проиллюстрированы, чтобы помочь пониманию операций, выполняемых видеокодером 22. Модули могут быть реализованы как схемы с фиксированной функцией, программируемые схемы или их комбинация. Схемы с фиксированной функцией относятся к схемам, которые обеспечивают конкретную функциональность и предварительно настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы, чтобы выполнять различные задачи, и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или прошивку, которые побуждают программируемые схемы работать способом, определенным инструкциями программного обеспечения или прошивки. Схемы с фиксированной функцией могут исполнять инструкции программного обеспечения (например, принимать параметры или выводить параметры), но типы операций, которые выполняют схемы с фиксированной функцией, в общем неизменны. В некоторых примерах, один или более модулей могут представлять собой отдельные схемные блоки (с фиксированной функцией или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.
[0125] В примере на фиг. 6, видеокодер 22 включает в себя модуль 100 обработки предсказания, память 101 видеоданных, модуль 102 генерации остатка, модуль 104 обработки преобразования, модуль 106 квантования, модуль 108 обратного квантования, модуль 110 обработки обратного преобразования, модуль 112 восстановления, модуль 114 фильтрации, буфер 116 декодированной картинки и модуль 118 энтропийного кодирования. Модуль 100 обработки предсказания включает в себя модуль 120 обработки интер-предсказания и модуль 126 обработки интра-предсказания. Модуль 120 обработки интер-предсказания может включать в себя модуль оценки движения и модуль компенсации движения (не показаны).
[0126] Память 101 видеоданных может быть сконфигурирована, чтобы хранить видеоданные, подлежащие кодированию компонентами видеокодера 22. Видеоданные, хранящиеся в памяти 101 видеоданных, могут быть получены, например, из источника 18 видео. Буфер 116 декодированной картинки может представлять собой память опорной картинки, которая хранит опорные видеоданные для использования при кодировании видеоданных видеокодером 22, например, в режимах интра- или интер-кодирования. Память 101 видеоданных и буфер 116 декодированной картинки могут быть сформированы любым из множества устройств памяти, таким как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 101 видеоданных и буфер 116 декодированной картинки могут быть обеспечены тем же самым устройством памяти или отдельными устройствами памяти. В различных примерах, память 101 видеоданных может находиться на одном чипе с другими компонентами видеокодера 22 или вне чипа относительно этих компонентов. Память 101 видеоданных может представлять собой то же самое, что и запоминающие носители 20 на фиг. 1 или их часть.
[0127] Видеокодер 22 принимает видеоданные. Видеокодер 22 может кодировать каждую CTU в слайсе картинки видеоданных. Каждая из CTU может быть ассоциирована с равными по размеру CTB яркости и соответствующими CTB картинки. В качестве части кодирования CTU, модуль 100 обработки предсказания может выполнять разбиение, чтобы разделить CTB CTU на постепенно все меньшие блоки. Меньшие блоки могут быть блоками кодирования CU. Например, модуль 100 обработки предсказания может разбивать CTB, ассоциированный с CTU, в соответствии с древовидной структурой. В соответствии с одним или более методами настоящего раскрытия, для каждого соответственного не-листового узла древовидной структуры на каждом уровне глубины древовидной структуры, имеется множество разрешенных шаблонов разделения для соответственного не-листового узла, и видеоблок, соответствующий соответственному не-листовому узлу, разбивается на видеоблоки, соответствующие дочерним узлам соответственного не-листового узла в соответствии с одним из множества разрешенных шаблонов разделения. В одном примере, модуль 100 обработки предсказания или другой модуль обработки видеокодера 22 может быть сконфигурирован, чтобы выполнять любую комбинацию методов, описанных здесь.
[0128] Видеокодер 22 может кодировать CU CTU, чтобы генерировать кодированные представления CU (т.е., кодированные CU). Как часть кодирования CU, модуль 100 обработки предсказания может разбивать блоки кодирования, ассоциированные с CU, среди одной или более PU CU. В соответствии с методами настоящего раскрытия, CU может включать в себя только одну PU. То есть, в некоторых примерах настоящего раскрытия, CU не разделяется на отдельные блоки предсказания, а наоборот, процесс предсказания выполняется на всей CU. Таким образом, каждая CU может быть ассоциирована с блоком предсказания яркости и соответствующими блоками предсказания цветности. Видеокодер 22 и видеодекодер 30 могут поддерживать CU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блоку кодирования яркости CU, а также к размеру блока предсказания яркости. Как обсуждено выше, видеокодер 22 и видеодекодер 30 могут поддерживать размеры CU, определенные любой комбинацией примерных методов разбиения, описанных здесь.
[0129] Модуль 120 обработки интер-предсказания может генерировать данные предсказания для PU путем выполнения интер-предсказания на каждой PU CU. Как объяснено здесь, в некоторых примерах настоящего раскрытия, CU может содержать только одну PU, то есть, CU и PU могут быть синонимичными. Данные предсказания для PU могут включать в себя блоки предсказания PU и информацию движения для PU. Модуль 120 обработки интер-предсказания может выполнять разные операции для PU или CU в зависимости от того, находится ли PU в I-слайсе, P-слайсе или B-слайсе. В I-слайсе, все PU соответствуют интра-предсказанию. Таким образом, если PU находится в I-слайсе, модуль 120 обработки интер-предсказания не выполняет интер-предсказание на PU. Таким образом, для блоков, закодированных в I-режиме, предсказанный блок формируется с использованием пространственного предсказания из ранее закодированных соседних блоков в том же самом кадре. Если PU находится в P-слайсе, модуль 120 обработки интер-предсказания может использовать однонаправленное интер-предсказание, чтобы сгенерировать блок предсказания PU. Если PU находится в B-слайсе, модуль 120 обработки интер-предсказания может использовать однонаправленное или двунаправленное интер-предсказание, чтобы сгенерировать блок предсказания PU.
[0130] Модуль 126 обработки интра-предсказания может генерировать данные предсказания для PU путем выполнения интра-предсказания на PU. Данные предсказания для PU могут включать в себя блоки предсказания PU и различные синтаксические элементы. Модуль 126 обработки интра-предсказания может выполнять интра-предсказание на PU в I-слайсах, P-слайсах и B-слайсах.
[0131] Чтобы выполнить интра-предсказание на PU, модуль 126 обработки интра-предсказания может использовать множество режимов интра-предсказания, чтобы генерировать множество наборов данных предсказания для PU. Модуль 126 обработки интра-предсказания может использовать выборки из блоков выборки соседних PU, чтобы сгенерировать блок предсказания для PU. Соседние PU могут находиться выше, выше и справа, выше и слева или слева от PU, предполагая порядок кодирования слева направо, сверху вниз для PU, CU и CTU. Модуль 126 обработки интра-предсказания может использовать различные количества режимов интра-предсказания, например, 35 направленных режимов интра-предсказания. В некоторых примерах, количество режимов интра-предсказания может зависеть от размера области, ассоциированной с PU.
[0132] В одном примере, модуль 126 обработки интра-предсказания может быть сконфигурирован, чтобы реализовывать методы раскрытия. В других примерах, другие блоки или модули могут быть сконфигурированы, чтобы реализовывать все или некоторые из методов раскрытия.
[0133] Модуль 100 обработки предсказания может выбирать данные предсказания для PU CU среди данных предсказания, сгенерированных модулем 120 обработки интер-предсказания для PU, или данных предсказания, сгенерированных модулем 126 обработки интра-предсказания для PU. В некоторых примерах, модуль 100 обработки предсказания выбирает данные предсказания для PU CU на основе метрик скорости/искажения наборов данных предсказания. Блоки предсказания выбранных данных предсказания могут упоминаться здесь как выбранные блоки предсказания.
[0134] Модуль 102 генерации остатка может генерировать, на основе блоков кодирования (например, блоков кодирования яркости, Cb и Cr) для CU и выбранных блоков предсказания (например, блоков предсказания яркости, Cb и Cr) для PU CU, остаточные блоки (например, остаточные блоки яркости, Cb и Cr) для CU. Например, модуль 102 генерации остатка может генерировать остаточные блоки CU так, что каждая выборка в остаточных блоках имеет значение, равное разнице между выборкой в блоке кодирования CU и соответствующей выборкой в соответствующем выбранном блоке предсказания PU CU.
[0135] Модуль 104 обработки преобразования может выполнять разбиение квадродерева или разбиение квадродерева/двоичного дерева (QTBT), чтобы разбить остаточные блоки, ассоциированные с CU, на блоки преобразования, ассоциированные с TU CU. Таким образом, TU может быть ассоциирована с блоком преобразования яркости и двумя блоками преобразования цветности. Размеры и положения блоков преобразования яркости и цветности TU CU могут или не могут быть основаны на размерах и положениях блоков предсказания PU CU. Структура квадродерева, известная как “остаточное квадродерево” (RQT), может включать в себя узлы, ассоциированные с каждой из областей. TU CU могут соответствовать листовым узлам RQT. Видеокодер 22 не может далее разделять CU на TU с использованием структуры RQT. Например, в одном примере, CU включает в себя одну TU.
[0136] Модуль 104 обработки преобразования может генерировать блоки коэффициентов преобразования для каждой TU CU путем применения одного или более преобразований, к блокам преобразования TU. Модуль 104 обработки преобразования может применять различные преобразования к блоку преобразования, ассоциированному с TU. Например, модуль 104 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование или концептуально аналогичное преобразование к блоку преобразования. В некоторых примерах, модуль 104 обработки преобразования не применяет преобразования к блоку преобразования. В таких примерах, блок преобразования может интерпретироваться как блок коэффициентов преобразования.
[0137] Модуль 106 квантования может квантовать коэффициенты преобразования в блоке коэффициентов. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами преобразования. Например, n-битовый коэффициент преобразования может быть округлен в меньшую сторону до m-битного коэффициента преобразования во время квантования, где n больше, чем m. Модуль 106 квантования может квантовать блок коэффициентов, ассоциированный с TU CU, на основе значения параметра квантования (QP), ассоциированного с CU. Видеокодер 22 может регулировать степень квантования, применяемого к блокам коэффициентов, ассоциированным с CU, путем регулировки значения QP, ассоциированного с CU. Квантование может вводить потери информации. Таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные.
[0138] Модуль 108 обратного квантования и модуль 110 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку коэффициентов, соответственно, чтобы восстановить остаточный блок из блока коэффициентов. Модуль 112 восстановления может суммировать восстановленный остаточный блок с соответствующими выборками из одного или более блоков предсказания, сгенерированных модулем 100 обработки предсказания, чтобы сформировать восстановленный блок преобразования, ассоциированный с TU. Путем восстановления блоков преобразования для каждой TU CU таким образом, видеокодер 22 может восстанавливать блоки кодирования CU.
[0139] Модуль 114 фильтрации может выполнять одну или более фильтраций устранения блочности и/или других операций фильтрации, чтобы уменьшить артефакты блочности в блоках кодирования, ассоциированных с CU. Буфер 116 декодированной картинки может сохранять восстановленные блоки кодирования после того, как модуль 114 фильтрации выполняет одну или более операций устранения блочности на восстановленных блоках кодирования. Модуль 120 обработки интер-предсказания может использовать опорную картинку, которая содержит восстановленные блоки кодирования, чтобы выполнить интер-предсказание на PU других картинок. К тому же, модуль 126 обработки интра-предсказания может использовать восстановленные блоки кодирования в буфере 116 декодированных картинок, чтобы выполнить интра-предсказание на других PU в той же самой картинке, что и CU.
[0140] Модуль 118 энтропийного кодирования может принимать данные от других функциональных компонентов видеокодера 22. Например, модуль 118 энтропийного кодирования может принимать блоки коэффициентов от модуля 106 квантования и может принимать синтаксические элементы от модуля 100 обработки предсказания. Модуль 118 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на данных, чтобы сгенерировать энтропийно закодированные данные. Например, модуль 118 энтропийного кодирования может выполнять операцию CABAC, операцию контекстно-адаптивного кодирования с переменной длиной (CAVLC), операцию кодирования из переменной в переменную длину (V2V), операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением вероятностных интервалов (PIPE), операцию кодирования экспоненциальным кодом Голомба или другой тип операции энтропийного кодирования на данных. Видеокодер 22 может выводить битовый поток, который включает в себя энтропийно кодированные данные, сгенерированные модулем 118 энтропийного кодирования. Например, битовый поток может включать в себя данные, которые представляют структуру разбиения для CU в соответствии с методами настоящего раскрытия.
[0141] Фиг. 7 представляет собой блок-схему, иллюстрирующую примерный видеодекодер 30, который сконфигурирован, чтобы реализовывать методы настоящего раскрытия. Фиг. 7 обеспечена с целью объяснения и не ограничивает методы, как широко проиллюстрировано и описано в настоящем раскрытии. С целью объяснения, настоящее раскрытие описывает видеодекодер 30 в контексте кодирования HEVC или VVC. Однако методы настоящего раскрытия могут быть применимы к другим стандартам или способам кодирования.
[0142] Различные модули, показанные на фиг. 7, проиллюстрированы для пояснения операций, выполняемых видеодекодером 30. Модули могут быть реализованы как схемы с фиксированной функцией, программируемые схемы или их комбинация. Аналогично фиг. 6, схемы с фиксированной функцией относятся к схемам, которые обеспечивают конкретную функциональность и предварительно настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы, чтобы выполнять различные задачи, и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или прошивку, которые побуждают программируемые схемы работать способом, определенным инструкциями программного обеспечения или прошивки. Схемы с фиксированной функцией могут исполнять инструкции программного обеспечения (например, принимать параметры или выводить параметры), но типы операций, которые выполняют схемы с фиксированной функцией, в общем неизменны. В некоторых примерах, один или более модулей могут представлять собой отдельные схемные блоки (с фиксированной функцией или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.
[0143] В примере на фиг. 7, видеодекодер 30 включает в себя модуль 150 энтропийного декодирования, память 151 видеоданных, модуль 125 обработки предсказания, модуль 154 обратного квантования, модуль 156 обработки обратного преобразования, модуль 158 восстановления, модуль 160 фильтрации и буфер 162 декодированной картинки. Модуль 125 обработки предсказания включает в себя модуль 164 компенсации движения и модуль 166 обработки интра-предсказания. В других примерах, видеодекодер 30 может включать в себя больше, меньше или другие функциональные компоненты.
[0144] Память 151 видеоданных может хранить закодированные видеоданные, такие как закодированный битовый видеопоток, подлежащие декодированию компонентами видеодекодера 30. Видеоданные, хранящиеся в памяти 151 видеоданных, могут быть получены, например, из считываемого компьютером носителя 16, например, из локального видеоисточника, такого как камера, посредством проводной или беспроводной сети передачи видеоданных или путем доступа к физическим носителям данных. Память 151 видеоданных может формировать буфер кодированной картинки (CPB), который хранит кодированные видеоданные из кодированного битового видеопотока. Буфер 162 декодированной картинки может представлять собой память опорной картинки, которая хранит опорные видеоданные для использования при декодировании видеоданных видеодекодером 30, например, в режимах интра- или интер-кодирования, или для вывода. Память 151 видеоданных и буфер 162 декодированной картинки могут быть сформированы любым из множества устройств памяти, таким как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 151 видеоданных и буфер 162 декодированной картинки могут быть обеспечены тем же самым устройством памяти или отдельными устройствами памяти. В различных примерах, память 151 видеоданных может находиться на чипе с другими компонентами видеодекодера 30 или вне чипа относительно этих компонентов. Память 151 видеоданных может представлять собой то же самое, что и запоминающие носители 28 на фиг. 1, или их часть.
[0145] Память 151 видеоданных принимает и сохраняет закодированные видеоданные (например, единицы NAL) битового потока. Модуль 150 энтропийного декодирования может принимать закодированные видеоданные (например, единицы NAL) от памяти 151 видеоданных и может выполнять синтаксический анализ единиц NAL, чтобы получить синтаксические элементы. Модуль 150 энтропийного декодирования может энтропийно декодировать энтропийно закодированные синтаксические элементы в единицах NAL. Модуль 125 обработки предсказания, модуль 154 обратного квантования, модуль 156 обработки обратного преобразования, модуль 158 восстановления и модуль 160 фильтрации могут генерировать декодированные видеоданные на основе синтаксических элементов, извлеченных из битового потока. Модуль 150 энтропийного декодирования может выполнять процесс, по существу обратный процессу модуля 118 энтропийного кодирования.
[0146] В соответствии с некоторыми примерами настоящего раскрытия, модуль 150 энтропийного декодирования или другой модуль обработки видеодекодера 30 может определять древовидную структуру как часть получения синтаксических элементов из битового потока. Древовидная структура может специфицировать, как исходный видеоблок, такой как CTB, разбивается на меньшие видеоблоки, такие как единицы кодирования. В соответствии с одним или более методами настоящего раскрытия, для каждого соответственного не-листового узла древовидной структуры на каждом уровне глубины древовидной структуры, существует множество разрешенных типов разбиения для соответственного не-листового узла, и видеоблок, соответствующий соответственному не-листовому узлу, разбивается на видеоблоки, соответствующие дочерним узлам соответственного не-листового узла в соответствии с одним из множества разрешенных шаблонов разделения.
[0147] В дополнение к получению синтаксических элементов из битового потока, видеодекодер 30 может выполнять операцию восстановления на неразбитой CU. Чтобы выполнить операцию восстановления на CU, видеодекодер 30 может выполнять операцию восстановления на каждой TU CU. Путем выполнения операции восстановления для каждой TU CU, видеодекодер 30 может восстановить остаточные блоки CU. Как рассмотрено выше, в одном примере раскрытия, CU включает в себя одну TU.
[0148] Как часть выполнения операции восстановления на TU CU, модуль 154 обратного квантования может обратно квантовать, т.е. де-квантовать, блоки коэффициентов, ассоциированные с TU. После того, как модуль 154 обратного квантования обратно квантовал блок коэффициентов, модуль 156 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов, чтобы сгенерировать остаточный блок, ассоциированный с TU. Например, модуль 156 обработки обратного преобразования может применить обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.
[0149] Если CU или PU закодирована с использованием интра-предсказания, модуль 166 обработки интра-предсказания может выполнять интра-предсказание, чтобы сгенерировать блоки предсказания PU. Модуль 166 обработки интра-предсказания может использовать режим интра-предсказания, чтобы сгенерировать блоки предсказания PU на основе выборок пространственно соседних блоков. Модуль 166 обработки интра-предсказания может определять режим интра-предсказания для PU на основе одного или более синтаксических элементов, полученных из битового потока.
[0150] В одном примере, модуль 166 обработки интра-предсказания может быть сконфигурирован, чтобы реализовывать методы раскрытия. В других примерах, другие блоки или модули могут быть сконфигурированы, чтобы реализовывать все или некоторые методы раскрытия.
[0151] Если PU закодирована с использованием интер-предсказания, модуль 150 энтропийного декодирования может определять информацию движения для PU. Модуль 164 компенсации движения может определять, на основе информации движения PU, один или более опорных блоков. Модуль 164 компенсации движения может генерировать, на основе одного или более опорных блоков, блоки предсказания (например, блоки предсказания яркости, Cb и Cr) для PU. Как рассмотрено выше, CU может включать в себя только одну PU. То есть, CU может не разделяться на множество PU.
[0152] Модуль 158 восстановления может использовать блоки преобразования (например, блоки преобразования яркости, Cb и Cr) для TU CU и блоки предсказания (например, блоки яркости, Cb и Cr) PU CU, т.е., либо данные интра-предсказания, либо данные интер-предсказания, как применимо, чтобы восстановить блоки кодирования (например, блоки кодирования яркости, Cb и Cr) для CU. Например, модуль 158 восстановления может суммировать выборки блоков преобразования (например, блоков преобразования яркости, Cb и Cr) с соответствующими выборками блоков предсказания (например, блоков предсказания яркости, Cb и Cr), чтобы восстановить блоки кодирования (например, блоки кодирования яркости, Cb и Cr) CU.
[0153] Модуль 160 фильтрации может выполнять операцию устранения блочности, чтобы уменьшить артефакты блочности, ассоциированные с блоками кодирования CU. Видеодекодер 30 может сохранять блоки кодирования CU в буфере 162 декодированной картинки. Буфер 162 декодированной картинки может обеспечивать опорные картинки для последующей компенсации движения, интра-предсказания и представления на устройстве отображения, таком как устройство 32 отображения на фиг. 1. Например, видеодекодер 30 может выполнять, на основе блоков в буфере 162 декодированной картинки, операции интра-предсказания или интер-предсказания для PU других CU.
[0154] Видеодекодер выводит декодированную версию текущей картинки, которая включает в себя декодированную версию текущего блока. Когда видеодекодер представляет собой видеодекодер, сконфигурированный, чтобы выводить отображаемое декодированное видео, то видеодекодер может, например, выводить декодированную версию текущей картинки на устройство отображения. Когда декодирование выполняется как часть цикла декодирования процесса кодирования видео, видеодекодер может сохранять декодированную версию текущей картинки как опорную картинку для использования при кодировании другой картинки видеоданных.
[0155] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ кодирования видеоданных. Видеокодер 22 (например, с модулем 126 обработки интра-предсказания) может быть сконфигурирован, чтобы определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания (200). Память 101 видеоданных или DPB 16 может хранить блок предсказания.
[0156] Видеокодер 22 (например, с модулем 126 обработки интра-предсказания) может быть сконфигурирован, чтобы модифицировать выборку предсказания блока предсказания, чтобы сгенерировать модифицированную выборку предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC) (202). Например, чтобы модифицировать выборку предсказания, видеокодер 22 может быть сконфигурирован, чтобы определять одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания (204) и модифицировать выборку предсказания, чтобы сгенерировать модифицированную выборку предсказания на основе определенной одной или более опорных выборок (206). В одном примере, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеокодер 22 может быть сконфигурирован, чтобы определять одну или более опорных выборок, имеющих x- и y-координату, отличную от x- и y-координаты выборки предсказания в блоке предсказания.
[0157] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеокодер 22 может быть сконфигурирован, чтобы определять строку, которая находится выше текущего блока, и определять x-координату в определенной строке. x-координата в определенной строке равна x-координате выборки предсказания плюс y-координата выборки предсказания плюс 1. Видеокодер 22 может определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной x-координаты. В качестве другого примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеокодер 22 может быть сконфигурирован, чтобы определять столбец, который находится слева от текущего блока, и определять y-координату в определенном столбце. y-координата в определенном столбце равна x-координате выборки предсказания плюс y-координата выборки предсказания плюс 1. Видеокодер 22 может быть сконфигурирован, чтобы определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной y-координаты.
[0158] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеокодер 22 может быть сконфигурирован, чтобы определять строку, которая находится выше текущего блока, и определять x-координату в определенной строке. x-координата в определенной строке основана на угле углового режима интра-предсказания. Видеокодер 22 может быть сконфигурирован, чтобы определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной x-координаты. Чтобы определить x-координату в определенной строке, видеокодер 22 может быть сконфигурирован, чтобы определять одно из котангенса или тангенса угла углового режима интра-предсказания и определять x-координату в определенной строке на основе одного из котангенса или тангенса угла углового режима интра-предсказания, x-координаты выборки предсказания и y-координаты выборки предсказания.
[0159] В качестве другого примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеокодер 22 может быть сконфигурирован, чтобы определять столбец, который находится слева от текущего блока, и определять y-координату в определенном столбце. y-координата в определенном столбце основана на угле углового режима интра-предсказания. Видеокодер 22 может быть сконфигурирован, чтобы определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной y-координаты. Чтобы определить y-координату в определенном столбце, видеокодер 22 может быть сконфигурирован, чтобы определять одно из котангенса или тангенса угла углового режима интра-предсказания и определять y-координату в определенном столбце на основе одного из котангенса или тангенса угла углового режима интра-предсказания, x-координаты выборки предсказания и y-координаты выборки предсказания.
[0160] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания, видеокодер 22 может быть сконфигурирован, чтобы определять набор из одной или более выборок на основе углового режима интра-предсказания и интерполировать набор из одной или более выборок, чтобы сгенерировать одну или более опорных выборок. В некоторых примерах, видеокодер 22 может быть сконфигурирован, чтобы выполнять по меньшей мере одно из интерполяции, округления со сдвигом или округления без сдвига на наборе из одной или более выборок, чтобы сгенерировать одну или более опорных выборок.
[0161] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания, видеокодер 22 может быть сконфигурирован, чтобы определять, что одна или более выборок, внешних для текущего блока, идентифицированных на основе углового режима интра-предсказания, не хранятся в буфере опорных линий, и определять одну или более опорных выборок на основе последней опорной выборки, сохраненной в буфере опорных линий. В некоторых примерах, модифицирование выборки предсказания блока предсказания может включать в себя модифицирование первой выборки предсказания блока предсказания, и одна или более опорных выборок могут представлять собой первый набор из одной или более опорных выборок. Видеокодер 22 может быть сконфигурирован, чтобы определять, для второй выборки предсказания того же самого блока предсказания, что по меньшей мере одна опорная выборка из второго набора из одной или более опорных выборок для второй выборки предсказания не хранится в буфере опорных линий, и выполнять один из следующих этапов: (a) не применять PDPC ко второй выборке предсказания или (b) применять PDPC с использованием только опорных выборок, доступных в буфере опорных линий (например, путем применения нулевого веса к опорной выборке, которая не является доступной).
[0162] В соответствии с одним или более примерами, видеокодер 22 может быть сконфигурирован, чтобы определять множество весов на основе x- и y-координат выборки предсказания. Чтобы модифицировать выборку предсказания, видеокодер 22 может быть сконфигурирован, чтобы модифицировать выборку предсказания, чтобы сгенерировать модифицированную выборку предсказания на основе определенной одной или более опорных выборок, определенных весов и выборки предсказания.
[0163] Видеокодер 22 может быть сконфигурирован, чтобы определять остаточное значение для остаточного блока на основе модифицированной выборки предсказания и значения выборки в текущем блоке (208). Видеокодер 22 может быть сконфигурирован, чтобы сигнализировать информацию, указывающую остаточное значение (210).
[0164] Фиг. 9 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ декодирования видеоданных. Видеодекодер 30 (например, с модулем 166 обработки интра-предсказания) может быть сконфигурирован, чтобы определять блок предсказания, который включает в себя множество выборок предсказания, для текущего блока на основе углового режима интра-предсказания, который не является DC, планарным, горизонтальным или вертикальным режимом интра-предсказания (212). Память 151 видеоданных или DPB 162 может сохранять блок предсказания.
[0165] Видеодекодер 30 (например, с модулем 166 обработки интра-предсказания) может быть сконфигурирован, чтобы модифицировать выборку предсказания блока предсказания, чтобы сгенерировать модифицированную выборку предсказания с использованием комбинации позиционно-зависимого интра-предсказания (PDPC) (214). Например, чтобы модифицировать выборку предсказания, видеодекодер 30 может быть сконфигурирован, чтобы определять одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания (216), и модифицировать выборку предсказания, чтобы сгенерировать модифицированную выборку предсказания на основе определенной одной или более опорных выборок (218). В одном примере, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеодекодер 30 может быть сконфигурирован, чтобы определять одну или более опорных выборок, имеющих как x-, так и y-координату, отличную от x- и y-координаты выборки предсказания в блоке предсказания.
[0166] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеодекодер 30 может быть сконфигурирован, чтобы определять строку, которая находится выше текущего блока, и определять x-координату в определенной строке. x-координата в определенной строке равна x-координата выборки предсказания плюс y-координата выборки предсказания плюс 1. Видеодекодер 30 может определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной x-координаты. В качестве другого примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеодекодер 30 может быть сконфигурирован, чтобы определять столбец, который находится слева от текущего блока, и определять y-координату в определенном столбце. y-координата в определенном столбце равна x-координате выборки предсказания плюс y-координата выборки предсказания плюс 1. Видеодекодер 30 может быть сконфигурирован, чтобы определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной y-координаты.
[0167] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеодекодер 30 может быть сконфигурирован, чтобы определять строку, которая находится выше текущего блока, и определять x-координату в определенной строке. x-координата в определенной строке основана на угле углового режима интра-предсказания. Видеодекодер 30 может быть сконфигурирован, чтобы определять опорную выборку из одной или более опорных выборок на основе определенной строки и определенной x-координаты. Чтобы определить x-координату в определенной строке, видеодекодер 30 может быть сконфигурирован, чтобы определять одно из котангенса или тангенса угла углового режима интра-предсказания и определять x-координату в определенной строке на основе одного из котангенса или тангенса угла углового режима интра-предсказания, x-координаты выборки предсказания и y-координаты выборки предсказания.
[0168] В качестве другого примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, видеодекодер 30 может быть сконфигурирован, чтобы определять столбец, который находится слева от текущего блока, и определять y-координату в определенном столбце. y-координата в определенном столбце основана на угле углового режима интра-предсказания. Видеодекодер 30 может быть сконфигурирован, чтобы определять опорную выборку из одной или более опорных выборок на основе определенного столбца и определенной y-координаты. Чтобы определить y-координату в определенном столбце, видеодекодер 30 может быть сконфигурирован, чтобы определять одно из котангенса или тангенса угла углового режима интра-предсказания и определять y-координату в определенном столбце на основе одного из котангенса или тангенса угла углового режима интра-предсказания, x-координаты выборки предсказания и y-координаты выборки предсказания.
[0169] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания, видеодекодер 30 может быть сконфигурирован, чтобы определять набор из одной или более выборок на основе углового режима интра-предсказания и интерполировать набор из одной или более выборок, чтобы сгенерировать одну или более опорных выборок. В некоторых примерах, видеодекодер 30 может быть сконфигурирован, чтобы выполнять по меньшей мере одно из интерполяции, округления со сдвигом или округления без сдвига на наборе из одной или более выборок, чтобы сгенерировать одну или более опорных выборок.
[0170] В качестве одного примера, чтобы определить одну или более опорных выборок, которые являются внешними для текущего блока, на основе углового режима интра-предсказания, видеодекодер 30 может быть сконфигурирован, чтобы определять, что одна или более выборок, внешних для текущего блока, идентифицированных на основе углового режима интра-предсказания, не хранятся в буфере опорных линий, и определять одну или более опорных выборок на основе последней опорной выборки, сохраненной в буфере опорных линий. В некоторых примерах, модифицирование выборки предсказания блока предсказания может включать в себя модифицирование первой выборки предсказания блока предсказания, и одна или более опорных выборок могут представлять собой первый набор из одной или более опорных выборок. Видеодекодер 30 может быть сконфигурирован, чтобы определять, для второй выборки предсказания того же самого блока предсказания, что по меньшей мере одна опорная выборка из второго набора из одной или более опорных выборок для второй выборки предсказания не хранится в буфере опорных линий, и выполнять один из следующих этапов: (a) не применять PDPC ко второй выборке предсказания или (b) применять PDPC с использованием только опорных выборок, доступных в буфере опорных линий (например, путем применения нулевого веса к опорной выборке, которая не является доступной).
[0171] В соответствии с одним или более примерами, видеодекодер 30 может быть сконфигурирован, чтобы определять множество весов на основе x- и y-координат выборки предсказания. Чтобы модифицировать выборку предсказания, видеодекодер 30 может быть сконфигурирован, чтобы модифицировать выборку предсказания, чтобы сгенерировать модифицированную выборку предсказания на основе определенной одной или более опорных выборок, определенных весов и выборки предсказания.
[0172] Видеодекодер 30 может быть сконфигурирован, чтобы восстанавливать выборку текущего блока на основе модифицированной выборки предсказания и остаточного значения (220). Например, видеодекодер 30 может принимать информацию для остаточного значения. Видеодекодер 30 может суммировать остаточное значение с модифицированной выборкой предсказания, чтобы восстановить выборку в текущем блоке.
[0173] Некоторые аспекты настоящего раскрытия были описаны относительно расширений стандарта HEVC с целью иллюстрации. Однако, методы, описанные в настоящем раскрытии, могут использоваться для других процессов кодирования видео, включая другие стандартные или проприетарные процессы кодирования видео, еще не разработанные.
[0174] Устройство кодирования видео, как описано в настоящем раскрытии, может относиться к видеокодеру или видеодекодеру. Аналогично, модуль кодирования видео может относиться к видеокодеру или видеодекодеру. Подобным образом, кодирование видео может относиться к кодированию видео или декодированию видео, как это применимо. В настоящем раскрытии, фраза “на основе” может указывать на основе только, на основе по меньшей мере частично или на основе некоторым образом. Настоящее раскрытие может использовать термин “единица видео”, или “блок видео”, или “блок”, чтобы ссылаться на один или более блоков выборок и синтаксических структур, используемых, чтобы кодировать выборки одного или более блоков выборок. Примерные типы единиц видео могут включать в себя CTU, CU, PU, единицы преобразования (TU), макроблоки, разбиения макроблоков и так далее. В некоторых контекстах, обсуждение PU может быть взаимозаменяемым с обсуждением макроблоков или разбиений макроблоков. Примерные типы блоков видео могут включать в себя блоки дерева кодирования, блоки кодирования и другие типы блоков видеоданных.
[0175] Следует иметь в виду, что в зависимости от примера, определенные действия или события любых из методов, описанных здесь, могут выполняться в другой последовательности, могут суммироваться, объединяться или опускаться совсем (например, не все описанные действия или события необходимы для практической реализации методов). Более того, в некоторых примерах, действия или события могут выполняться одновременно, например, через многопотоковую обработку, обработку прерываний или множество процессоров, а не последовательно.
[0176] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, прошивке или любой их комбинации. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или код на считываемом компьютером носителе и исполняться аппаратным процессором. Считываемые компьютером носители могут включать в себя считываемые компьютером носители хранения, которые соответствует материальному носителю, такому как носители данных, или коммуникационным средам, включая любой носитель, который обеспечивает перенос компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители в общем могут соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются непереходными (не-временными), или (2) коммуникационной среде, такой как сигнал или несущая волна. Носители данных могут представлять собой любые доступные носители, доступ к которым может осуществляться одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
[0177] В качестве примера, и не для ограничения, такие считываемые компьютером запоминающие носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может использоваться, чтобы хранить желательный программный код в форме инструкций или структур данных, и доступ к которому может осуществляться компьютером. Также, любое соединение может быть надлежащим образом определено как считываемый компьютером носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, скрученной пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио и микроволновая, то коаксиальный кабель, оптоволоконный кабель, скрученная пара, DSL или беспроводные технологии, такие как инфракрасная, радио и микроволновая, включаются в определение носителя. Следует понимать, однако, что считываемые компьютером запоминающие носители и носители данных не включают в себя соединения, несущие волны, сигналы или другие переходные (временные) носители, а вместо этого относятся к непереходным (не-временным) материальным запоминающим носителям. Магнитный диск (disk) и оптический диск (disc), как использовано здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и Blu-ray диск, где магнитные диски (disks) обычно воспроизводят данные магнитным способом, в то время как оптические диски (discs) воспроизводят данные оптическим способом при помощи лазеров. Комбинации изложенного выше также должны быть включены в объем считываемых компьютером носителей.
[0178] Инструкции могут исполняться одним или более процессорами, такими как один или более DSP, универсальные цифровые микропроцессоры, ASIC, FPGA или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин “процессор”, как использовано здесь, может относиться к любой из вышеописанных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. К тому же, в некоторых аспектах, функциональность, описанная здесь, может обеспечиваться в выделенных аппаратных средствах и/или модулях программного обеспечения, сконфигурированных для кодирования и декодирования или встроенных в комбинированный кодек. Также, методы могут быть полностью реализованы в одной или более схемах или логических элементах.
[0179] Методы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии, чтобы выделить функциональные аспекты устройств, сконфигурированных, чтобы выполнять раскрытые методы, но не обязательно требуют реализации разными модулями аппаратных средств. Напротив, как описано выше, различные модули могут комбинироваться в модуле аппаратных средств кодека или обеспечиваться совокупностью взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или прошивкой.
[0180] Были описаны различные примеры. Эти и другие примеры находятся в пределах объема следующей формулы изобретения.