Область техники
[0001] Настоящее изобретение в некоторых вариантах осуществления относится к кодированию и декодированию видео. Более конкретно, настоящее изобретение относится к способу и устройству для интра-предсказания, в которых единица предсказания делится на субблоки и предсказывается в субблоках.
УРОВЕНЬ ТЕХНИКИ
[0002] Поскольку видеоданные имеют большой объем данных по сравнению с аудиоданными или данными неподвижных изображений, требуется много аппаратных ресурсов, включая память, для хранения или передачи данных в необработанном виде перед тем, как подвергнуть их процессу сжатия.
[0003] Соответственно, хранение или передача видеоданных обычно сопровождает их сжатие с использованием кодера до того, как декодер сможет принимать, распаковывать и воспроизводить сжатые видеоданные. Известные технологии сжатия видеоизображений включают стандарт H.264/AVC и стандарт высокоэффективного кодирования видеоизображений (HEVC), повышающий эффективность кодирования H.264 / AVC примерно на 40%.
[0004] Однако постоянное увеличение размера, разрешения и частоты кадров видеоизображений и, как следствие, увеличение объема данных, подлежащих кодированию, требует нового и улучшенного метода сжатия с более высокой эффективностью кодирования и более высоким качеством изображения по сравнению с известными методами сжатия.
[0005] Между тем, при интра-предсказании предсказание выполняется с ранее реконструированными отсчетами, расположенными рядом с текущим блоком, где соседний отсчет, используемый для интра-предсказания, упоминается как опорный отсчет. Как правило, интра-предсказание использует опорный отсчет для максимального предсказания всех отсчетов в текущем блоке. Например, для блока 16×16, 256 значения отсчетов, принадлежащих блоку 16×16, предсказываются с использованием их соседних отсчетов. Поскольку в видео существует пространственная корреляция, чем ближе текущий отсчет блока к опорному отсчету, тем лучше результаты предсказания в целом. Соответственно, текущие отсчеты блоков, смежные с опорными отсчетами, могут иметь точные значения предсказания, однако те, которые далеки от опорных отсчетов, могут приводить к неточным значениям предсказания.
Сущность изобретения
Техническая проблема
[0006] Настоящее изобретение, как правило, стремится создать метод интра-предсказания для разделения единицы предсказания на субблоки таким образом, чтобы разместить восстановленные соседние отсчеты, используемые для предсказания текущего отсчета, чтобы он был ближе к текущему отсчету, и предсказания субблоков блоков с использованием общего режима интра-предсказания.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[0007] Согласно по меньшей мере одному аспекту настоящего изобретения предложен способ декодирования видео для восстановления текущего блока с использованием интра-предсказания, включающий этап определения, разделять ли текущий блок на множество субблоков; этап определения, когда текущий блок разделяется на множество субблоков, направления разделения для текущего блока между направлением горизонтального разделения и направлением вертикального разделения и определения количества субблоков на основе информации разделения, декодированной из потока битов, и ширину и высоту текущего блока; этап восстанавления текущего блока путем последовательного восстановления субблоков, заданных в соответствии с направлением разделения и количеством субблоков, с использованием интра-предсказания; и этап установки сетки из N отсчетов на равных интервалах в горизонтальном и вертикальном направлениях и выполнения деблокирующей фильтрации среди границ между субблоками в текущем блоке, причем границы совпадают с границей сетки.
[0008] Согласно другому аспекту настоящего изобретения предложено устройство декодирования видео для восстановления текущего блока с использованием интра-предсказания. Устройство декодирования видео включает средство для определения, следует ли разделить текущий блок на множество субблоков, средство для определения, когда текущий блок разделен на множество субблоков, направления разделения для текущего блока между направлением горизонтального разделения и направлением вертикального разделения, и количества субблоков на основе информации разделения, декодированной из потока битов, а также ширины и высоты текущего блока, средство восстановления текущего блока путем последовательного восстановления субблоков, которые указаны в соответствии с направлением разделения и количеством субблоков, с использованием интра-предсказания, и средство установки сетки из N отсчетов с регулярными интервалами в горизонтальном и вертикальном направлениях и выполнения деблокирующей фильтрации среди границ между субблоками в текущем блоке, причем границы совпадают с границей сетки.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0009] На фиг. 1 показана схема, иллюстрирующая устройство кодирования видеоизображений, которое может реализовывать методы, предложенные настоящим изобретением.
[0010] На фиг. 2 показана схема, поясняющая способ разделения блока с использованием структуры QTBTTT.
[0011] На фиг. 3A показана схема, иллюстрирующая множество режимов интра-предсказания.
[0012] На фиг. 3B показана схема, иллюстрирующая множество режимов интра-предсказания, включая режимы широкоугольного интра-предсказания.
[00013] На фиг. 4 показана схема, иллюстрирующая устройство декодирования видеоизображений, выполненное с возможностью реализовывать методы, предложенные настоящим изобретением.
[0014]На фиг. 5A-5C показаны схемы, иллюстрирующие типы, в которых текущий блок может быть разделен на множество субблоков, когда текущий блок кодируется интра-предсказанием согласно по меньшей мере одному варианту осуществления настоящего изобретения.
[0015]На фиг. 6 показана функциональная блок-схема, иллюстрирующая примерную конфигурацию блока интра-предсказания в устройстве кодирования видео согласно по меньшей мере одному варианту осуществления настоящего изобретения.
[0016] На фиг. 7 показана блок-схема способа, выполняемого устройством кодирования видео для кодирования с интра-предсказанием текущего блока видео согласно по меньшей мере одному варианту осуществления настоящего изобретения.
[0017] На фиг. 8 показана функциональная блок-схема, иллюстрирующая примерную конфигурацию блока интра-предсказания в устройстве кодирования видео согласно по меньшей мере одному варианту осуществления настоящего изобретения.
[0018] На фиг. 9 показана блок-схема способа, выполняемого устройством декодирования видео для декодирования текущего блока, кодированного с интра-предсказанием, из потока битов кодированного видео, согласно по меньшей мере одному варианту осуществления настоящего изобретения.
[0019] На фиг. 10A и 10B показаны схемы, иллюстрирующие блок кодирования, подвергающийся восстановлению последовательно в единицах субблоков при генерации субблока предсказания субблока.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0020] Далее варианты осуществления настоящего изобретения будут подробно описаны со ссылкой на приложенные чертежи. В нижеследующем описании одинаковые номера позиций предпочтительно относятся к одинаковым элементам, несмотря на то, что эти элементы показаны на разных чертежах. Кроме того, в целях ясности и краткости изложения, в нижеследующем описании некоторых вариантов осуществления опущено подробное описание относящихся к ним известных компонентов и функций, в случае, когда они затрудняют понимание объекта настоящего изобретения.
[0021] На фиг. 1 показана схема, иллюстрирующая устройство кодирования видеоизображений, которое может реализовывать методы, предложенные настоящим изобретением. Далее устройство кодирования виде и субкомпоненты устройства будут описаны со ссылкой на фиг. 1.
[0022] Устройство кодирования видео может быть конфигурировано так, что оно содержит блок 110 разделения изображения, блок 120 предсказания, блок 130 вычитания, блок 140 преобразования, блок 145 квантования, блок 150 переупорядочивания, блок 155 энтропийного кодирования, блок 160 обратного квантования, блок 165 обратного преобразования, сумматор 170, блок 180 фильтрации и память 190.
[0023] Соответствующие компоненты устройства кодирования видео могут быть реализованы в виде аппаратного или программного обеспечения, или в виде комбинации аппаратного и программного обеспечения. Кроме того, функция каждого компонента может быть реализована программно, а функция программного обеспечения для каждого компонента может быть реализована с возможностью ее исполнения микропроцессором.
[0024] Видео состоит из множества изображений. Каждое изображение разбивается на множество участков, и для каждого участка выполняется кодирование. Например, одно изображение разбивается на один или более мозаичных элементов и/или секций. Здесь один или более мозаичных элементов могут быть определены как группа мозаичных элементов. Каждый мозаичный элемент и/или секцию разделяют на одну или более единиц дерева кодирования (CTU). И каждую CTU разделяют на одну или более единиц кодирования (CU) древовидной структурой. Информация, применяемая к соответствующим CU, кодируется как синтаксис CU, а информация, обычно применяемая к CU, включенным в одну единицу CTU, кодируется как синтаксис CTU. Кроме того, информация, обычно применяемая ко всем блокам в одной секции, кодируется как синтаксис заголовка секции, а информация, применяемая ко всем блокам, составляющим одно изображение, кодируется в наборе параметров изображения (PPS) или заголовке изображения. Кроме того, информация, на которую обычно ссылается множество изображений, кодируется в наборе параметров последовательности (SPS). Кроме того, информация, на которую обычно ссылаются один или более наборов SPS, кодируется в наборе параметров видеоизображения (VPS). Таким же образом информация, обычно применяемая к одному мозаичному элементу или группе мозаичных элементов, может быть кодирована как синтаксис заголовка мозаичного элемента или заголовка группы мозаичных элементов.
[0025] Блок 110 разделения изображения определяет размер единицы дерева кодирования CTU. Информация о размере CTU (размер CTU) кодируется как синтаксис набора SPS или набора PPS и передается в устройство декодирования видео.
[0026] Блок 110 разделения изображения разделяет каждое изображение, составляющее видео, на множество CTU, имеющих заранее определенный размер, а затем использует древовидную структуру для рекурсивного разделения CTU. Концевой узел в древовидной структуре становится единицей кодирования CU, которая является базовой единицей кодирования.
[0027] Древовидная структура для может быть деревом квадрантов (QuadTree (QT)), в котором верхний узел (или родительский узел) разделен на четыре нижних узла одинакового размера (или дочерние узлы), двоичным деревом (BinaryTree (BT)), в котором верхний узел разделен на два нижних узла, троичным деревом (TernaryTree (TT)), в котором верхний узел разделен на три нижних узла с соотношением размеров 1: 2: 1, или комбинацией двух или более из структуры QT, структуры BT и структуры TT. Например, может использоваться структура, включающая дерево квадрантов и двоичное дерево (QTBT), или структура, включающая дерево квадрантов и двоичное дерево троичное дерево (QTBTTT). Здесь BTTT может в совокупности называться деревом множественного типа (MTT).
[0028] На фиг. 2 показана древовидная структура разделения QTBTTT. Как показано на фиг. 2, CTU может быть сначала разделена на структуру QT. Разделение дерева квадрантов может повторяться до тех пор, пока размер блока разделения не достигнет минимального размера блока (MinQTSize) концевого узла, разрешенного в структуре QT. Первый флаг (QT_split_flag), указывающий, разделен ли каждый узел структуры QT на четыре узла нижнего уровня, кодируется блоком 155 энтропийного кодирования и передается в устройство декодирования видео. Если концевой узел структуры QT не превышает максимальный размер (MaxBTSize) блока корневого узла, разрешенного в структуре BT, он может быть дополнительно разделен на любую одну или более структур BT или структур TT. В структуре BT и/или структуре TT может быть множество направлений разделения. Например, может быть два направления, в которых блок соответствующего узла разделяется по горизонтали и по вертикали. Как показано на фиг. 2, когда начинается разделение MTT, второй флаг (mtt_split_flag), указывающий, разделены ли узлы, и, если да, дополнительный флаг, указывающий направления разделения (вертикальное или горизонтальное), и/или флаг, указывающий разделение или тип разделения (двоичное или троичное) кодируется блоком 155 энтропийного кодирования и передается в устройство декодирования видео.
[0029] В качестве альтернативы, перед кодированием первого флага (QT_split_flag), указывающего, разделен ли каждый узел на четыре узла нижнего уровня, может быть закодирован флаг разделения единицы CU (split_cu_flag), указывающий, разделен ли этот узел или нет. Когда значение флага разделения CU (split_cu_flag) указывает, что разделение не выполняется, блок соответствующего узла становится конечным узлом в структуре дерева разделения и обслуживает единицу кодирования (CU), которая является базовой единицей кодирования. Когда значение флага разделения единицы CU (split_cu_flag) указывает, что узел был разделен, устройство кодирования видео начинает кодирование с первого флага описанным выше способом.
[0030] В качестве другого примера древовидной структуры, в которой используется структура QTBT, можно привести два типа разделения, включающие тип, в котором по горизонтали разделяют блок соответствующего узла на два блока одинакового размера (т.е. симметричное горизонтальное разделение), и тип, в котором его же разделяют по вертикали (т. е. симметричное вертикальное разделение). Кодируемым блоком 155 энтропийного кодирования и передаваемым в устройство декодирования видеоизображений является флаг разделения (split_flag), указывающий, разделен ли каждый узел структуры BT на блоки нижнего уровня, и информацию о типе разделения, указывающую тип его разделения. Между тем, может быть дополнительный тип, в котором блок соответствующего узла разбивается на два асимметрично сформированных блока. Асимметричная форма может включать в себя форму блока соответствующего узла, разбиваемого на два прямоугольных блока, имеющих соотношение размеров 1:3, или форму блока соответствующего узла, разбиваемого в диагональном направлении.
[0031] CU может иметь различные размеры в зависимости от структуры QTBT или QTBTTT разделения CTU. В дальнейшем блок, соответствующий CU, который должен быть закодирован или декодирован (то есть концевой узел QTBTTT), называется «текущим блоком». При использовании разделения QTBTTT текущий блок может иметь форму не только квадрата, но и прямоугольника.
[0032] Блок 120 предсказания предсказывает текущий блок, чтобы сгенерировать блок предсказания. Блок 120 предсказания включает в себя блок 122 интра-предсказания и блок 124 интер-предсказания.
[0033] В общем, каждый из текущих блоков изображения может кодироваться с предсказанием. Предсказание текущего блока обычно может выполняться с использованием метода интра-предсказания или метода интер-предсказания, при этом метод интра-предсказания использует данные из изображения, содержащего текущий блок, а метод интер-предсказания использует данные из изображения, закодированного до изображения, содержащего текущий блок. Интер-предсказание включает в себя как однонаправленное, так и двунаправленное предсказание.
[0034] Блок 122 интра-предсказания предсказывает пиксели в текущем блоке, используя соседние пиксели (опорные пиксели), расположенные вокруг текущего блока в текущем изображении. Существует множество режимов интра-предсказания согласно направлениям предсказания. Например, как показано на фиг. 3A, несколько режимов интра-предсказания могут включать в себя 2 ненаправленных режима, включая планарный режим и режим DC, а также 65 направленных режимов. Соответствующие режимы предсказания обеспечивают различные соответствующие определения соседних пикселей и формул вычисления, которые должны использоваться.
[0035] Для эффективного направленного прогнозирования блока тока прямоугольной формы могут использоваться дополнительные направленные режимы, как показано на фиг. 3B пунктирными стрелками режимов интра-предсказания под номерами 67-80 и номерами -1- -14. Они могут называться «режимами широкоугольного интра-предсказания». Стрелки на фиг. 3B указывают соответствующие опорные отсчеты, используемые для предсказания, а не направления предсказания. Направление предсказания противоположно направлению, указанному стрелкой. Режим широкоугольного внутреннего предсказания - это режим, в котором предсказание выполняется в направлении, противоположном определенному направленному режиму без дополнительной передачи битов, когда текущий блок имеет прямоугольную форму. В этом случае из режимов широкоугольного интра-предсказания некоторые режимы широкоугольного интра-предсказания, доступные для использования в текущем блоке, могут определяться отношением ширины к высоте прямоугольного текущего блока. Например, режимы широкоугольного интра-предсказания, которые имеют угол меньше 45 градусов (режимы интра-предсказания под номерами 67-80), могут использоваться, когда текущий блок имеет прямоугольную форму с высотой меньше ширины. Режимы широкоугольного интра-предсказания, имеющие угол -135 градусов или больше (режимы интра-предсказания под номерами -1 - -14) могут использоваться, когда текущий блок имеет прямоугольную форму с высотой больше ширины.
[0036] Блок 122 интра-предсказания может определять режим интра-предсказания, который будет использоваться для кодирования текущего блока. В некоторых примерах блок 122 интра-предсказания может кодировать текущий блок с использованием нескольких режимов интра-предсказания и выбирать для использования подходящий режим интра-предсказания из проверенных режимов. Например, блок 122 интра-предсказания может вычислять значения скоростного искажения посредством анализа скорости-искажения нескольких протестированных режимов интра-предсказания и выбирать режим интра-предсказания, который имеет лучшие характеристики скорости-искажения среди протестированных режимов.
[0037] Блок 122 интра-предсказания выбирает один режим интра-предсказания из множества режимов интра-предсказания и предсказывает текущий блок, используя по меньшей мере один соседний пиксель (опорный пиксель), определенный согласно выбранному режиму интра-предсказания и формуле вычисления. Информация о выбранном режиме интра-предсказания кодируется блоком 155 энтропийного кодирования и передается в устройство декодирования видеоизображений.
[0038] Блок 124 интер-предсказания генерирует блок предсказания для текущего блока посредством процесса компенсации движения. Блок 124 внешнего предсказания ищет блок, наиболее похожий на текущий блок в опорном изображении, которое был кодировано и декодировано раньше, чем текущее изображение, и генерирует блок предсказания текущего блока, используя найденный блок. Затем блок 124 интер-предсказания генерирует вектор движения, соответствующий смещению между текущим блоком в текущем изображении и блоком предсказания в опорном изображении. В общем, оценку движения выполняют для компонента яркости, а вектор движения, вычисленный на основе компонента яркости, используется как для компонента яркости, так и для компонента цветности. Информация о движении, включающая в себя информацию об опорном изображении и информацию о векторе движения, используемую для предсказания текущего блока, кодируется блоком 155 энтропийного кодирования и передается в устройство декодирования видеоизображений.
[0039] Блок 130 вычитания генерирует остаточный блок путем вычитания из текущего блока предсказания, сгенерированного блоком 122 интра-предсказания или блоком 124 интер-предсказания.
[0040] Блок 140 преобразования преобразует остаточный сигнал в остаточном блоке, имеющем значения пикселей в пространственной области, в коэффициенты преобразования в частотной области. Блок 140 преобразования может преобразовывать остаточные сигналы в остаточном блоке, используя полный размер остаточного блока в качестве блока преобразования, или разделять остаточный блок на два субблока, которые являются областью преобразования и областью без преобразования, и преобразовывать остаточные сигналы, используя только субблок области преобразования в качестве единицы преобразования. Здесь субблок области преобразования может быть одним из двух прямоугольных блоков, имеющих соотношение размеров 1: 1 по горизонтальной оси (или вертикальной оси). В этом случае флаг (cu_sbt_flag), указывающий, что преобразован только один субблок, информация о направлении (по вертикали/горизонтали) (cu_sbt_horizontal_flag) и/или информация о положении (cu_sbt_pos_flag) кодируются блоком 155 энтропийного кодирования и передаются в устройство декодирования видео. Кроме того, размер субблока области преобразования может иметь соотношение размеров 1: 3 по горизонтальной оси (или вертикальной оси). В этом случае флаг (cu_sbt_quad_flag), определяющий соответствующее разделение, дополнительно кодируется энтропийным кодером 155 и передается в устройство декодирования видео.
[0041] Между тем, для преобразования может быть определен максимальный и/или минимальный размер преобразования. Преобразованию запрещено использовать блок преобразования, размер которого меньше минимального размера преобразования. Кроме того, когда остаточный блок текущего блока больше, чем максимальный размер преобразования, блок 140 преобразования разделяет остаточный блок на субблоки, имеющие размер, равный или меньший, чем максимальный размер преобразования, и выполняет преобразование, используя субблоки в качестве единицы преобразования. Здесь максимальный и/или минимальный размер преобразования может быть определен как фиксированный размер, установленный между устройством кодирования видео и устройством декодирования видео. В качестве альтернативы, информация о максимальном и/или минимальном размере преобразования может быть включена в SPS или PPS и передана из устройства кодирования видео в устройство декодирования видео.
[0042] Блок 145 квантования квантует коэффициенты преобразования, выданные из блока 140 преобразования, и выводит квантованные коэффициенты преобразования в блок 155 энтропийного кодирования.
[0043] Блок 150 переупорядочивания может выполнять переупорядочение значений коэффициентов с помощью квантованных коэффициентов преобразования. Блок 150 переупорядочивания может использовать сканирование коэффициентов для преобразования двумерной матрицы коэффициентов в одномерную последовательность коэффициентов. Например, блок 150 переупорядочивания может сканировать коэффициенты DC до коэффициентов в высокочастотной области посредством зигзагообразного сканирования или диагонального сканирования для вывода одномерной последовательности коэффициентов. В зависимости от размера блока преобразования и режима интра-предсказания используемое зигзагообразное сканирование может быть заменено вертикальным сканированием для сканирования двумерного массива коэффициентов в направлении столбца и горизонтальным сканированием для сканирования коэффициентов в форму двумерного блока в направлении строки. Другими словами, способ сканирования, который должен использоваться, может быть выбран из зигзагообразного сканирования, диагонального сканирования, вертикального сканирования и горизонтального сканирования в соответствии с размером блока преобразования и режимом интра-предсказания.
[0044] Блок 155 энтропийного кодирования кодирует последовательность одномерных квантованных коэффициентов преобразования, выводимых из блока 150 переупорядочивания, с использованием различных методов кодирования, таких как контекстно-зависимый адаптивный двоичный арифметический код (CABAC), экспоненциальный алгоритм Голомба и т.п. кодирования для генерации битового потока.
[0045] Кроме того, блок 155 энтропийного кодирования кодирует информацию о разделении блока, такую как размер единицы CTU, флаг разделения единицы CU, флаг разделения QT, тип разделения MTT и направление разделения MTT, позволяя устройству декодирования видео разделить блок таким же образом, как и устройство кодирования видео. Кроме того, блок 155 энтропийного кодирования кодирует информацию о типе предсказания, указывающую, закодирован ли текущий блок посредством интра-предсказания или интер-предсказания, и декодирует, в зависимости от типа предсказания, информацию интра-предсказания, то есть информацию о режиме интра-предсказания или информацию интер-предсказания, т. е. информацию об опорных изображениях и векторах движения.
[0046] Блок 160 обратного квантования обратно квантовывает квантованные коэффициенты преобразования, выведенные из блока 145 квантования, для генерации коэффициентов преобразования. Блок 165 обратного преобразования преобразует коэффициенты преобразования, выданные из блока 160 обратного квантования, из частотной области в пространственную область, чтобы восстановить остаточный блок.
[0047] Сумматор 170 складывает восстановленный остаточный блок и блок предсказания, сгенерированный блоком 120 предсказания, чтобы восстановить текущий блок. Пиксели в восстановленном текущем блоке используются в качестве опорных пикселей при интра-предсказании следующего блока.
[0048] Блок 180 фильтрации выполняет фильтрацию восстановленных пикселей для уменьшения блочных артефактов, артефактов звона, артефактов размытия и т.д., генерируемых вследствие предсказания на основе блоков и преобразования/квантования. Блок 180 фильтрации может включать в себя фильтр 182 удаления блочности и фильтр 184 адаптивного смещения отсчетов (SAO).
[0049] Фильтр 180 удаления блочности фильтрует границу между восстановленными блоками, чтобы удалить блочный артефакт, вызванный поблочным кодированием/декодированием, а фильтр 184 SAO выполняет дополнительную фильтрацию отфильтрованного изображения с удаленной блочностью. Фильтр 184 SAO - это фильтр, используемый для компенсации разницы между восстановленным пикселем и исходным пикселем, вызванной кодированием с потерями.
[0050] Восстановленный блок фильтруется через фильтр 182 удаления блочности и фильтр 184 SAO и сохраняется в памяти 190. Когда все блоки в одном изображении восстановлены, восстановленное изображение может использоваться в качестве опорного изображения для интер-предсказания блоков в приближающемся изображении, подлежащим кодированию.
[0051] На фиг. 4 показана схема, иллюстрирующая устройство декодирования видео, выполненное с возможностью реализовывать методы, предложенные настоящим изобретением. В дальнейшем устройство декодирования видео и компоненты устройства будут описаны со ссылкой на фиг. 4.
[0052] Устройство декодирования видео может быть конфигурировано так, что оно включает блок 410 энтропийного декодирования, блок 415 переупорядочивания, блок 420 обратного квантования, блок 430 обратного преобразования, блок 440 предсказания, сумматор 450, блок 460 фильтрации и память 470.
[0053] Как и в устройстве кодирования видеоизображений с фиг. 1, соответствующие компоненты устройства декодирования видео могут быть реализованы как аппаратные средства или программное обеспечение, или как комбинация аппаратных средств и программного обеспечения. Кроме того, функция каждого компонента может быть реализована программно, а функция программного обеспечения для каждого компонента может быть реализована с возможностью ее исполнения микропроцессором.
[0054] Блок 410 энтропийного декодирования декодирует поток битов, сгенерированный устройством кодирования видео, и извлекает информацию о разделе блока, чтобы определить текущий блок, который должен быть декодирован, и извлекает информацию прогнозирования и информацию об остаточном сигнале и тому подобное, необходимое для восстановления текущего блока.
[0055] Блок 410 энтропийного декодирования извлекает информацию о размере CTU из набора параметров последовательности (SPS) или набора параметров изображения (PPS), определяет размер CTU и разделяет изображение на CTU заданного размера. Затем блок 410 энтропийного декодирования определяет CTU как наивысший уровень, то есть корневой узел древовидной структуры, и извлекает информацию разделения на CTU и тем самым разделяет CTU с использованием древовидной структуры.
[0056] Например, при разделении CTU с использованием структуры QTBTTT сначала извлекается первый флаг (QT_split_flag), связанный с разделением QT, и каждый узел разделяется на четыре узла нижнего уровня. Для узла, соответствующего концевому узлу QT, блок 410 энтропийного декодирования извлекает второй флаг (MTT_split_flag), связанный с разделением MTT, и информацию о направлении разделения (вертикальное/горизонтальное) и/или типе разделения (двоичное/троичное), чтобы разделить соответствующий концевой узел на структуру MTT. Это позволяет рекурсивно разбивать соответствующие узлы ниже концевого узла QT на структуру BT или TT.
[0057] В качестве другого примера, при разделении CTU с использованием структуры QTBTTT блок 410 энтропийного декодирования может сначала извлечь флаг разделения CU (split_cu_flag), указывающий, разделена ли CU. Когда соответствующий блок разделен, он может извлечь первый флаг (QT_split_flag). В процессе разделения каждый узел может иметь ноль или более рекурсивных разделений QT, за которыми следует ноль или более рекурсивных разделений MTT. Например, CTU может сразу войти в разделение MTT или, наоборот, иметь только несколько разделений QT.
[0058] В качестве еще одного примера, при разделении CTU с использованием структуры QTBT блок 410 энтропийного декодирования извлекает первый флаг (QT_split_flag), связанный с разделением QT, чтобы разделить каждый узел на четыре узла нижнего уровня. И для узла, соответствующего концевому узлу QT, блок 410 энтропийного декодирования извлекает флаг разделения (split_flag), указывающий, является ли этот узел дополнительно разделенным на BT и информацию о направлении разделения.
[0059] Между тем, когда блок 410 энтропийного декодирования определяет текущий блок, который должен быть декодирован посредством разделения древовидной структуры, он извлекает информацию о типе предсказания, указывающую, был ли текущий блок предсказан интра-предсказанием или интер-предсказанием. Когда информация о типе предсказания указывает на интра-предсказание, блок 410 энтропийного декодирования извлекает элемент синтаксиса для информации интра-предсказания (режим интра-предсказания) текущего блока. Когда информация о типе предсказания указывает на интер-предсказание, блок 410 энтропийного декодирования извлекает элемент синтаксиса для информации интер-предсказания, то есть информацию, указывающую вектор движения и опорное изображение, на которое ссылается вектор движения.
[0060] Кроме того, блок 410 энтропийного декодирования извлекает информацию о квантованных коэффициентах преобразования текущего блока в качестве информации об остаточном сигнале.
[0061] Блок 415 переупорядочения изменяет в обратном порядке сканирования коэффициентов, выполняемого устройством кодирования видео, последовательность одномерных квантованных коэффициентов преобразования, энтропийно декодированных блоком 410 энтропийного декодирования, в двумерный массив коэффициентов. (т.е. блок).
[0062] Блок 420 обратного квантования выполняет обратное квантование квантованных коэффициентов преобразования. Блок 430 обратного преобразования выполняет обратное преобразование коэффициентов обратного квантованного преобразования из частотной области в пространственную для восстановления остаточных сигналов и, таким образом, генерирования остаточного блока текущего блока.
[0063] Кроме того, когда блок 430 обратного преобразования выполняет обратное преобразование только частичной области (субблока) блока преобразования, он извлекает флаг (cu_sbt_flag), указывающий, что был преобразован только субблок блока преобразования, направленность субблока (вертикальная / horizontal) информации (cu_sbt_horizontal_flag) и / или информации о положении субблока (cu_sbt_pos_flag) и обратно преобразует коэффициенты преобразования субблока из частотной области в пространственную область для восстановления остаточных сигналов. В то же время блок 430 обратного преобразования заполняет оставшуюся область, которая не подвергается обратному преобразованию, значением «0» в качестве остаточных сигналов, и тем самым генерирует последний остаточный блок для текущего блока. Между тем, преобразование не допускается при использовании блока преобразования с размером меньше минимального размера преобразования. Кроме того, когда остаточный блок текущего блока больше, чем максимальный размер преобразования, блок 430 обратного преобразования разделяет остаточный блок на субблоки, имеющие размер, равный или меньший, чем максимальный размер преобразования, и выполняет обратное преобразование, используя субблоки в качестве единиц преобразования.
[0064] Блок 440 предсказания может включать в себя блок 442 интра-предсказания и блок 444 интер-предсказания. Блок 442 интра-предсказания активируется, когда тип предсказания текущего блока является интра-предсказанием, и блок 444 интер-предсказания активируется, когда тип предсказания текущего блока является интер-предсказанием.
[0065] Блок 442 интра-предсказания определяет, из числа множества режимов интра-предсказания, режим интра-предсказания текущего блока из элемента синтаксиса для режима интра-предсказания, извлеченного блоком 410 энтропийного декодирования, и в соответствии с определенным режимом интра-предсказания, он предсказывает текущий блок, используя соседние опорные пиксели текущего блока. Режим интра-предсказания, определенный синтаксическим элементом для режима интра-предсказания, может быть значением, указывающим один из всех режимов интра-предсказания (например, всего 67 режимов), как описано выше. В случае, когда текущий блок является прямоугольным, некоторые направленные режимы из числа общего количества 67 режимов могут быть заменены одним из режимов широкоугольного интра-предсказания на основе отношения ширины к высоте текущего блока.
[0066] Блок 444 интер-предсказания использует элемент синтаксиса для режима интра-предсказания, извлеченный блоком 410 энтропийного декодирования, для определения вектора движения текущего блока и опорного изображения, на которое ссылается вектор движения, и он использует вектор движения и опорное изображение для предсказания текущего блока.
[0067] Сумматор 450 суммирует остаточный блок, выданный из блока обратного преобразования, и блок предсказания, выданный из блока интер-предсказания или блока интра-предсказания, для восстановления текущего блока. Пиксели в восстановленном текущем блоке используются в качестве опорных пикселей при интра-предсказании подлежащих декодированию приходящих блоков.
[0068] Блок 460 фильтрации может включать в себя фильтр 462 удаления блочности и фильтр 464 SAO. Фильтр 462 удаления блочности выполняет фильтрацию удаления блочности на границе между реконструированными блоками, чтобы удалить артефакт блокировки, вызванный поблочным декодированием. Фильтр 464 SAO выполняет дополнительную фильтрацию на восстановленном блоке после фильтрации удаления блочности, чтобы компенсировать разницу между восстановленным пикселем и исходным пикселем, вызванную кодированием с потерями. Восстановленный блок фильтруется через фильтр 462 удаления блочности и фильтр 464 SAO и сохраняется в памяти 470. Когда все блоки в одном изображении восстановлены, восстановленное изображение может использоваться в качестве опорного изображения для интер-предсказания подлежих кодированию блоков в изображении.
[0069] Технологии вариантов осуществления, проиллюстрированных здесь, в целом относятся к кодированию с интра-предсказанием, то есть кодированию и декодированию текущего блока. Соответственно, определенные технологии настоящего изобретения могут выполняться блоком 122 интра-предсказания или блоком 442 интра-предсказания. В некоторых вариантах осуществления блок 122 интра-предсказания или блок 442 интра-предсказания выполняет методы настоящего изобретения, описанные со ссылкой на фиг. 5-9. В других вариантах осуществления один или более других блоков устройства кодирования видео или устройства декодирования видео могут дополнительно участвовать в выполнении методов настоящего изобретения. Нижеследующее описание в основном относится к технологии декодирования, в частности, к работе устройства декодирования видео, при этом технология кодирования описана кратко, поскольку последняя является обратной по отношению к подробно описанной технологии декодирования.
[0070] В интра-предсказании предсказание выполняется с ранее реконструированными отсчетами, расположенными рядом с текущим блоком, где соседний отсчет, используемый для интра-предсказания, упоминается как опорный отсчет. Обычно в интра-предсказании все отсчеты в текущем блоке предсказываются как единое целое с использованием опорных отсчетов. Например, для блока 16×16, 256 значения отсчетов, принадлежащих блоку 16×16, предсказываются с использованием их соседних отсчетов. Поскольку в видео существует пространственная корреляция, чем ближе текущий отсчет блока к опорному отсчету, тем лучше результаты предсказания в целом. Соответственно, в режиме вертикального предсказания (режим 50 на фиг. 3B) или в режиме горизонтального предсказания (режим 18 на фиг. 3B) текущие отсчеты блоков, смежные с опорными отсчетами, могут иметь точные значения предсказания, но те, которые далеки от опорных отсчетов, могут привести к неточным значениям предсказания.
[0071] Инструмент интра-кодирования, описанный ниже, относится к разделению CU в зависимости от ее размера на множество субблоков равного размера в вертикальном или горизонтальном направлении и выполнению предсказания для каждого субблока в одном и том же режиме интра-предсказания. Восстановленные значения отсчетов (или предсказанные значения отсчетов) каждого субблока доступны для предсказания следующего субблока, которое итеративно применяется для соответствующих субблоков. Например, когда текущий блок (CU) делится на четыре параллельных субблока, первый субблок может быть предсказан по соседним отсчетам текущего блока (CU), второй субблок может быть предсказан по его соседним пикселям, включая отсчеты первого субблока, третий субблок может быть предсказан из его соседних отсчетов, включая отсчеты второго субблока, а четвертый субблок может быть предсказан из соседних отсчетов, включая отсчеты третьего субблока. Таким образом, вместо предсказания всех пикселей текущего блока (CU) из отсчетов ранее кодированных или декодированных блоков, смежных с текущим блоком (CU), отсчеты в текущем блоке (CU) могут использоваться для предсказания других отсчетов в том же текущем блоке (CU).
[0072] Одно преимущество инструмента интра-кодирования, предложенного согласно изобретению, состоит в том, что восстановленные соседние отсчеты имеют тенденцию быть намного ближе к предсказанному отсчету, чем в обычном сценарии интра-предсказания. Расположенные ближе к текущему отсчету в качестве основы для предсказания текущего отсчета, восстановленные соседние отсчеты могут повысить точность предсказания текущего отсчета.
[0073] 1. Разделение субблоков и сигнализация
[0074]На фиг. 5A-5C показаны схемы, иллюстрирующие типы, в которых текущий блок может быть разделен на множество субблоков, когда текущий блок кодируется интра-предсказанием согласно по меньшей мере одному варианту осуществления настоящего изобретения. Минимальный размер блока, применимый к инструменту интра-кодирования согласно изобретению, может составлять 4×8 или 8×4. Дополнительно может быть добавлено ограничение, согласно которому все субблоки имеют минимум 16 отсчетов. Как показано на фиг. 5A-5C, блок размером 4×8 или 8×4 делится на два, и блок большего размера может быть разделен на 4 или 8 блоков. Размер CU, для которого может использоваться инструмент интра-кодирования, может быть ограничен максимумом 64×64 из-за блока данных виртуального конвейера (VPDU), который является блоком обработки VVC.
[0075] Устройство кодирования видео может сигнализировать флаг разделения, указывающий, что текущий блок был разделен на несколько субблоков и интра-предсказан каждым субблоком. Соответственно, устройство декодирования видео может декодировать флаг разделения из потока битов видеоданных и определять, следует ли разделить текущий блок, на основе флага разделения. Флаг разделения первого значения (например, «0») указывает, что текущий блок не был разделен на множество субблоков, а флаг разделения второго значения (например, «1») указывает, что текущий блок был разделен на множество субблоков и интра-предсказан каждым субблоком.
[0076] Флаг разделения может быть выведен устройством декодирования видео без явной сигнализации, то есть без декодирования из потока битов, но вместо этого в зависимости от ширины и высоты текущего блока, площади текущего блока, минимального размера преобразования и/или максимального размера преобразования, разрешенного для преобразования коэффициентов преобразования.
[0077] По меньшей мере в одном варианте осуществления, когда ширина и высота текущего блока меньше, чем минимальный размер преобразования, флаг разделения может не нуждаться в декодировании из потока битов, а вместо этого должен быть установлен на первое значение, указывающее, что текущий блок не разделяется. В другом варианте осуществления, когда область текущего блока (т. е. количество пикселей, включенных в текущий блок) меньше, чем область блока преобразования (т. е. количество пикселей, включенных в блок преобразования), определяемая минимумом размер преобразования, флаг разделения может не нуждается в декодировании из потока битов, но вместо этого должен быть установлен на первое значение, указывающее, что текущий блок не разделен. В еще одном варианте осуществления, когда ширина и высота текущего блока больше, чем максимальный размер преобразования, флаг разделения не может быть декодирован из потока битов. В этом случае можно сделать вывод, что флаг разделения имеет второе значение, т. е. что текущий блок был разделен на множество субблоков и интра-предсказан каждым субблоком. В качестве альтернативы можно сделать вывод, что флаг разделения имеет первое значение. Другими словами, когда ширина и высота текущего блока больше, чем максимальный размер преобразования, когда инструмент кодирования настоящего изобретения, который разделяет текущий блок на множество субблоков и выполняет интра-предсказание для каждого субблока, может не применяться к текущему блоку. В еще одном варианте осуществления, когда текущий блок расположен на границе изображения (или мозаичного элемента), инструмент интра-кодирования настоящего изобретения не используется для текущего блока, и предполагается, что флаг разделения имеет первое значение. В качестве альтернативы, текущий блок, когда он расположен на границе изображения (или мозаичного элемента), может сопровождать использование инструмента интра-кодирования настоящего изобретения, и, таким образом, предполагается, что флаг разделения имеет второе значение, тем самым устраняя необходимость в дополнительных блочных разбиениях CTU на границе изображения.
[0078] Кроме того, когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, информация о направлении и количестве разделов субблока может предоставляться различными способами. Например, направление и количество разделов субблока могут быть определены на основе элементов синтаксиса (например, флагов), извлеченных из потока битов, размера текущего блока, положения текущего блока, длины (например, ширины или высоты) одной стороны текущего блока, количества пикселей, включенных в текущий блок, режима интра-предсказания текущего блока, размера минимального или максимального блока преобразования и т.п.
[0079] В некоторых вариантах осуществления, когда текущий блок разделяется на множество субблоков, устройство декодирования видео может определять направление разделения и количество субблоков на основе информации разделения, декодированной из потока битов, а также ширины и высоты текущего блока.
[0080] В частности, количество субблоков может определяться шириной и высотой текущего блока. Например, как показано в таблице 1, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков определяется равным 2, а когда ширина и высота текущего блока больше, чем 4×4 и не равно 4×8 и 8×4, количество субблоков может быть определено как равное 4. В качестве другого примера, как показано в таблице 2, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков определяется как равное 2, а когда ширина и высота текущего блока равны от 8×N до 32×N или от N× 8 до N×32 (здесь N> 4), количество субблоков может быть определено как равное 4. Кроме того, количество субблоков может быть определено как равное 8 для текущих блоков, размер которых превышает 32×N и N×32.
[0081] Таблица 1
[0082] Таблица 2
32×N и N×32
[0083] Является ли направление разделения горизонтальным или вертикальным, может определяться информацией разделения. В качестве альтернативы или дополнения направление разделения может быть определено (или выведено) на основе отношения ширины к высоте текущего блока. Например, направление разделения может быть определено как горизонтальное, когда ширина текущего блока больше, чем его высота, и может быть определено как вертикальное, когда ширина текущего блока меньше его высоты.
[0084] Альтернативно или дополнительно, когда текущий блок существует на границе изображения (или мозаичного элемента, группы мозаичных элементов и т. д.), форма разделения и количество субблоков могут быть выведены в соответствии с положением текущего блока.
[0085] Дополнительно, является ли направление разделения горизонтальным или вертикальным, может быть определено на основе направленности режимов предсказания, включенных в кандидатов режима интра-предсказания (то есть список MPM), определенных для текущего блока. В качестве примера, когда режимы с относительно горизонтальным интра-предсказанием, например, режимы с 3 по 33, показанные на фиг. 3B (далее «горизонтально ориентированные режимы») существуют или доминируют в списке MPM, направление разделения может быть определено как вертикальное. И когда режимы с относительно вертикальным интра-предсказанием, например, режимы с 35 по 65, показанные на фиг. 3B (далее «вертикально ориентированные режимы») существуют или доминируют в списке MPM, направление разделения может быть определено как горизонтальное.
[0086] 2. Определение режима интра-предсказания
[0087] Когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, режим интра-предсказания, определенный для текущего блока, может обычно применяться к интра-предсказанию субблоков текущего блока.
[0088] Режим широкоугольного интра-предсказания все еще может использоваться для текущего блока, к которому применяется инструмент интра-кодирования настоящего изобретения. В этом случае режим широкоугольного интра-предсказания может определяться соотношением между шириной и высотой текущего блока, а не соотношением между шириной и высотой субблока, отделенного от текущего блока.
[0089] Устройство декодирования видео может определять режим интра-предсказания текущего блока путем декодирования из потока битов информации режима интра-предсказания текущего блока. Например, устройство декодирования видео выбирает заранее определенное количество кандидатов режима интра-предсказания из множества режимов интра-предсказания и использует информацию режима интра-предсказания текущего блока для определения из числа кандидатов режима интра-предсказания (т. е. список MPM), режима интра-предсказания текущего блока.
[0090] Кандидаты в режим интра-предсказания могут быть выбраны различными способами в зависимости от того, является ли направление разделения горизонтальным или вертикальным. Например, когда направление разделения является горизонтальным, режимы с вертикальной ориентацией из числа множества режимов интра-предсказания могут быть выбраны в качестве кандидатов в режимы интра-предсказания, а не режимы с горизонтальной ориентацией. Кроме того, когда направление разделения является вертикальным, режимы с горизонтальной ориентацией из числа множества режимов с интра-предсказанием могут быть выбраны в качестве кандидатов в режимы интра-предсказания, а не режимы с вертикальной ориентацией. В качестве другого примера, когда направление разделения является горизонтальным, горизонтальные режимы (например, режим 18 на фиг. 3B) или режимы с горизонтальной ориентацией могут быть исключены из выбора кандидатов режима интра-предсказания, а когда направление разделения является вертикальным, вертикальным режимы (например, 50 на фиг. 3B) или режимы с вертикальной ориентацией могут быть исключены из выбора кандидатов режима интра-предсказания.
[0091] 3. Генерация блока интра-предсказания в единицах субблоков
[0092] Устройство декодирования видео восстанавливает текущий блок путем последовательного восстановления множества субблоков с использованием режима интра-предсказания, определенного для текущего блока. Например, устройство декодирования видео может сгенерировать интра-предсказанный субблок путем предсказания из восстановленных пикселей вокруг субблока целевого субблока, который будет восстановлен в текущий момент, из числа множества субблоков. Устройство декодирования видео может восстанавливать коэффициенты преобразования путем декодирования из потока битов информации о коэффициентах преобразования, соответствующей целевому субблоку, и может выполнять обратное квантование и обратное преобразование коэффициентов преобразования, используя тот же размер преобразования, что и размер целевого субблока, тем самым генерируя остаточный субблок, имеющий остаточные сигналы. Устройство декодирования видео может восстанавливать целевой субблок, используя интра-предсказанный субблок и остаточный субблок. В частности, пиксели в восстановленном субблоке могут использоваться для интра-предсказания следующего субблока в текущем блоке. За счет этого процесса субблоки текущего блока обрабатываются, начиная с субблока, включающего верхний левый отсчет текущего блока, до субблоков в направлении вниз последовательно, когда направление разделения является горизонтальным, и до субблоков в правом направлении последовательно, когда направление разделения вертикальное.
[0093] В некоторых случаях, чтобы сохранить ширину минимальной единицы предсказания для субблоков равной 4 отсчетам, зависимость предсказания подблока 1×N/2×N от восстановленных значений ранее декодированного субблока 1× N/2×N текущего блока не может быть разрешена. Другими словами, когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, допускается преобразование в единицах 1×N и 2×N, но может быть запрещено предсказание в единицах 1×N и 2×N. Например, текущий блок 8×N (N> 4), разделенный в вертикальном направлении, может быть разделен на четыре субблока 2×N. Соответственно, остаточные сигналы текущего блока генерируются путем восстановления и обратного преобразования в единицах 2×N субблоков. Однако, поскольку предсказание не допускается в единицах субблоков 2×N, текущий блок предсказывается в единицах субблоков 4×N, имеющих ширину 4 отсчета. Другими словами, текущий блок 8×N (N> 4), разделенный в вертикальном направлении, может быть разделен на две области предсказания 4×N и четыре области предсказания 2×N. Кроме того, текущий блок 4×N, разделенный в вертикальном направлении, может быть предсказан как область предсказания 4×N и разделен на четыре области преобразования 1×N. Это ограничение связано с типичной особенностью конструкции аппаратного обеспечения, хранящей результаты интра-предсказанных блоков, разделенных на несколько тактов в строковых единицах, что требует количества тактов, используемых для обработки блоков 1×N или 2×N, чтобы не превысить счет тактов для блоков 4×N.
[0094] 4. Внутриконтурная фильтрация
[0095] Устройство декодирования видео может выполнять внутриконтурную фильтрацию, включая деблокировочную фильтрацию на восстановленном текущем блоке, и может сохранять отфильтрованный текущий блок в буфере (например, в памяти 470 на фиг. 4) для использования в качестве опорного изображения для блоки взаимного предсказания, которые должны быть закодированы в выдающемся изображении.
[0096] В иллюстративном варианте осуществления устройство декодирования видео устанавливает сетку из M отсчетов с регулярными интервалами на CTU или изображении, содержащем текущий блок в горизонтальном и вертикальном направлениях, и выполняет деблокирующую фильтрацию на границах, которые совпадают с границами сетки среди границ между множеством субблоков в текущем блоке, к которому применяется инструмент интра-кодирования настоящего изобретения. Соответственно, деблокирующая фильтрация не может выполняться на границах между множеством субблоков, которые не совпадают с границей сетки. Например, при выполнении деблокирующей фильтрации в единицах 8×8, деблокирующая фильтрация может выполняться только на границе между субблоками, совпадающими с границей единичной сетки 8×8 среди границ между субблоками 2×N (или N×2) или 4×N (или N×4) размер. Хотя в качестве примера дана сетка размером 8×8 единиц, размер сетки не обязательно ограничивается 8×8. Например, количество M выборок может быть выражено в форме 2n (n - натуральное число) и может иметь любое значение 4, 8, 16 и т.п.
[0097] В некоторых случаях внутриконтурная фильтрация может выполняться только на части границы между субблоками в соответствии с направлением разделения субблока и количеством разделов. Например, с текущим разделением блоков в горизонтальном направлении может выполняться только вертикальная деблокирующая фильтрация, а горизонтальная деблокирующая фильтрация может быть опущена. Аналогично, с текущим разделением блоков в вертикальном направлении, может выполняться только деблокирующая фильтрация в горизонтальном направлении, а деблокирующая фильтрация в вертикальном направлении может быть опущена.
[0098] В некоторых вариантах осуществления, когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, может быть определено, выполняется ли внутриконтурная фильтрация в единицах каждого субблока. Соответственно, устройство декодирования видео может проверять, выполняется ли внутриконтурная фильтрация в единицах каждого субблока, или может проверять то же самое посредством синтаксиса высокого уровня.
[0099] При выполнении внутриконтурной фильтрации для текущего блока, способ выполнения внутриконтурной фильтрации или способ вычисления параметров внутриконтурной фильтрации может отличаться в соответствии с критериями, вычисленными на основе по меньшей мере одного из элементов информации, размера субблока, местоположения, глубины, QP и т.п.
[0100] Например, когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, субблок текущего блока может быть меньше, чем блок, в котором выполняется вычисление параметров внутриконтурной фильтрации, например параметров для определения интенсивности фильтра и значения отсечения для изменения пикселя. В этом случае вместо вычисления параметров фильтрации в единицах субблоков параметры фильтрации могут быть вычислены относительно текущего блока, а внутриконтурная фильтрация может выполняться в единицах каждого субблока. В качестве альтернативы, общие параметры фильтрации могут быть вычислены относительно каждых двух или более объединенных субблоков, и эти субблоки могут совместно использовать общие параметры фильтрации.
[0101] В качестве другого примера, когда блок для вычисления параметров ALF охватывает границу субблока, параметры ALF могут быть получены в единицах, например, {N×1, 1×N, N×2, 2×N} для выполнения ALF. В другом примере настоящее изобретение может избежать вычисления параметров для определения того, выполнять ли деблокировочную фильтрацию (или коэффициенты фильтра), конфигурируя деблокировочную фильтрацию, чтобы она когда-либо выполнялась или никогда не выполнялась в текущем блоке. В качестве другого примера, настоящее изобретение зависит от того, перекрывает ли граница текущего субблока границу CU (или CTU, или VPDU) для адаптивного изменения метода выполнения внутриконтурной фильтрации или метода вычисления параметров.
[0102] 5. Сигнальный флаг кодированного блока
[0103] Когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, элемент синтаксиса (например, флаг кодированного блока; CBF) может сигнализироваться для каждого субблока, указывая, существует ли по меньшей мере один ненулевой коэффициент в этом субблоке. Например, CBF, равный «0», может указывать на то, что все коэффициенты в соответствующем субблоке являются нулевыми коэффициентами, а CBF, равный «1», может указывать, что по меньшей мере один ненулевой коэффициент существует в соответствующем субблоке.
[0104] CBF может быть выведен на основе количества разделенных субблоков, размера (ширины или высоты) субблоков, режима интра-предсказания, положения блока, QP, количества пикселей, включенных в субблок, и тому подобное. Например, считается, что по меньшей мере один CBF для субблоков текущего блока не равен «0». Соответственно, когда текущий блок имеет n субблоков и все CBF предыдущих n-1 субблоков равны «0», CBF n-го субблока считается равным «1» и, таким образом, CBF явно не сигнализируются.
[0105] В качестве другого примера, когда ширина или высота субблоков данного текущего блока не больше 2, инструмент интра-кодирования настоящего изобретения может применяться только тогда, когда CBF каждого субблока не равен 0. В этом случае, например, когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку 8×16 и делится на 4 субблока 2×16, CBF каждого субблока выводится равным «1» и, таким образом, явно не сигнализируется. С другой стороны, если текущий блок 8 × 16 разделен на два субблока 4×16, CBF каждого субблока должен быть явно сигнализирован.
[0106] 6. Параметр квантования сигнализации
[0107] Устройство кодирования видео определяет значение параметра квантования (QP) для текущего блока (CU) и определяет значение параметра дельта-квантования (DQP) для текущего блока на основе значения QP и значения предсказания QP. Устройство кодирования видео может быть конфигурировано для сигнализации значения DQP и квантования текущего блока с использованием определенного значения QP. Устройство кодирования видео может регулировать значение QP текущего блока и, таким образом, регулировать степень квантования, применяемую к блокам коэффициентов, относящихся к текущему блоку.
[0108] DQP определяется как разница между текущим QP (то есть фактическим QP, используемым в текущем блоке) и значением предсказания текущего QP (т.е. значением предсказания QP). На основе сигнализированного DQP соответствующее текущее значение QP может быть восстановлено путем добавления DQP к значению предсказания QP. Другими словами, в устройстве кодирования видео DQP вычисляется путем вычитания значения предсказания QP из фактического QP текущего блока, а в устройстве декодирования видео фактический QP текущего блока восстанавливается путем добавления принятого DQP к значению предсказания QP. В некоторых примерах значение предсказания QP определяется для текущего блока как среднее из фактических значений QP для верхнего блока и левого блока.
[0109] Устройство декодирования видео может быть конфигурировано для приема значения DQP для текущего блока квантования, определения значения QP для текущего блока квантования на основе принятого значения DQP и значения предсказания QP и обратного квантования текущего блока квантования путем использования определенного значения QP.
[0110] Когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, DQP может определяться с каждым субблоком как единица. В этом случае настоящее решение может проверять флаг, чтобы определить, использовать ли DQP по единицам субблока, или может проверять посредством синтаксиса высокого уровня, применять ли DQP.
[0111] В некоторых примерах, когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, один и тот же QP может использоваться для всех субблоков. Соответственно, значение QP текущего блока может быть определено с использованием QP (левого и/или верхнего) CU, смежных с текущим блоком, и переданного значения DQP. В качестве альтернативы значение QP текущего блока может быть выведено через переданное значение DQP и синтаксис высокого уровня.
[0112] В некоторых других примерах для каждого субблока может использоваться другой DQP. В этом случае QP каждого субблока может быть определено с использованием QP, определенного для текущего блока, и значения DQP каждого субблока. В качестве альтернативы, QP каждого субблока может определяться посредством DQP между соответствующими субблоками, или QP текущего блока может определяться с использованием QP конкретного субблока.
[0113] В некоторых других примерах может сигнализироваться QP текущего блока, или значение QP, которое должно использоваться, может выводиться посредством синтаксиса высокого уровня.
[0114] Фиг. 6 - функциональная блок-схема, иллюстрирующая примерную конфигурацию блока интра-предсказания в устройстве кодирования видео согласно по меньшей мере одному варианту осуществления настоящего изобретения, причем блок интра-предсказания поддерживает инструмент интра-кодирования настоящего изобретения. Как показано на фиг. 6, блок 600 интра-предсказания может включать в себя блок 610 выбора режима, блок 620 построения опорного отсчета, блок 630 фильтрации опорного отсчета и блок 640 генерации сигнала предсказания.
[0115] Селектор 610 режима может определять режим интра-предсказания, который будет использоваться для кодирования текущего блока. Например, селектор 610 режима может кодировать текущий блок, используя различные режимы интра-предсказания, и выбирать подходящий режим интра-предсказания, который будет использоваться, из тестируемых режимов.
[0116] В некоторых случаях селектор 610 режима может сигнализировать о режиме интра-предсказания для текущего блока, используя процесс наиболее вероятного режима (MPM). Например, селектор 610 режима может устанавливать режимы интра-предсказания соседних блоков, смежных с текущим блоком, например, блока, расположенного вверху текущего блока, и блока, расположенного слева от текущего блока, в качестве кандидатов MPM. Когда два кандидата MPM не могут быть найдены, например, когда ни один соседний блок не был интра-предсказан, или когда соседние блоки имеют одинаковый инра-режим, селектор 610 режима может заменить режим интра-предсказания соседнего блока на планарный режим. Когда количество кандидатов MPM, включенных в список кандидатов MPM, меньше максимального количества (например, 6), настоящее решение может вставлять в список кандидатов MPM режимы по умолчанию, отличные от ранее вставленных кандидатов MPM в список кандидатов MPM и режимы направленности, аналогичные ранее вставленным кандидатам MPM.
[0117] Информация, например флаг MPM, указывающая, является ли режим интра-предсказания текущего блока таким же, как любой из кандидатов MPM, может передаваться через поток битов. Когда режим интра-предсказания текущего блока такой же, как у любого из кандидатов MPM, селектор 610 режима может установить флаг MPM на первое значение и дополнительно сигнализировать информацию индекса MPM для идентификации совпадающего кандидата MPM. В качестве альтернативы, селектор 610 режима может сначала сигнализировать флаг, указывающий, является ли режим интра-предсказания текущего блока плоским режимом, и если нет, он может сигнализировать информацию индекса MPM. Когда режим интра-предсказания текущего блока не соответствует ни одному из кандидатов MPM, селектор 610 режима может установить флаг MPM на второе значение и может сигнализировать информацию об остаточном режиме через поток битов, чтобы указать, какой из оставшихся режимов интра-предсказания соответствует режиму и интра-предсказания текущего блока.
[0118] Селектор 610 режима может выбирать инструмент интра-кодирования настоящего изобретения, который предсказывает текущий блок последовательно в единицах субблоков. В этом случае селектор 610 режима может выполнять анализ коэффициента искажения для определения направления разделения текущего блока на субблоки. Другими словами, селектор 610 режима может определять, следует ли разделить текущий блок на множество субблоков в горизонтальном направлении или на множество субблоков в вертикальном направлении.
[0119] Когда текущий блок предсказываается без разделения на множество субблоков, селектор 610 режима может установить флаг разделения на первое значение, например, «0», указывающее, разделен ли текущий блок или нет. Когда текущий блок предсказывается после разделения на множество субблоков, селектор 610 режима может установить флаг разделения, указывающий, разделен ли текущий блок на второе значение, например, «1». Селектор 610 режима может передать флаг разделения, например, энтропийному декодеру 155 с фиг. 1, чтобы сигнализировать о флаге разделения.
[0120] В некоторых случаях селектор 610 режима может быть ограничен от использования инструмента интра-кодирования настоящего решения, описанного выше, если не удовлетворяются заранее определенные критерии. Например, может ли использоваться инструмент интра-кодирования настоящего изобретения, может быть определено в зависимости от положения текущего блока, ширины и высоты текущего блока, области текущего блока, минимального размера преобразования, максимального размер преобразования и тому подобное. В этом случае настоящее решение может не указывать флаг разделения, указывающий, следует ли использовать его инструмент интра-кодирования. Это означает, что флаг разделения не включен в поток битов.
[0121] Например, когда текущий блок меньше предварительно установленного размера (например, 4×8 или 8×4 и т.д.), селектор 610 режима может не использовать инструмент интра-кодирования настоящего изобретения. В качестве другого примера инструмент интра-кодирования настоящего изобретения не применяется, и флаг разделения не сигнализируется, когда ширина и высота текущего блока меньше, чем минимальный размер преобразования, или когда область текущего блока (т. е. количество пикселей, включенных в текущий блок) меньше, чем площадь единицы преобразования (т. е. количество пикселей, включенных в единицу преобразования), определяемая минимальным размером преобразования. В этом случае устройство декодирования видео определяет флаг разделения как значение, указывающее, что текущий блок не разделен. В качестве другого примера, сигнализация флага разделения может быть опущена, когда ширина и высота текущего блока больше, чем максимальный размер преобразования. В этом случае устройство декодирования видео может быть реализовано для вывода флага разделения как значения, указывающего, что текущий блок разделен на несколько субблоков и интра-предсказан каждым субблоком. В качестве альтернативы, устройство декодирования видео может сделать вывод, что флаг разделения является значением, указывающим, что текущий блок не разделен на субблоки.
[0122] Когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, направление и количество разделов субблока может быть определено на основе размера текущего блока, положения текущего блока, длины одной стороны (т.е. ширина или высота) текущего блока, количества пикселей, включенных в текущий блок, режима интра-предсказания текущего блока, размера минимального или максимального блока преобразования и т.п.
[0123] Информация о направлении и количестве разделов субблока может предоставляться различными способами. Например, селектор 610 режима может использовать один или более элементов синтаксиса, таких как 1-битный флаг, для сигнализации направления и количества разделов субблока.
[0124] В частности, количество субблоков может определяться шириной и высотой текущего блока. Например, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков может быть определено как равное 2, а когда ширина и высота текущего блока больше, чем 4×4 и не равно 4×8 и 8×4, количество субблоков может быть определено как равное 4. В качестве другого примера, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков может быть определено как равное 2, а когда ширина и высота текущего блока составляют от 8×N до 32×N или от N×8 до Nx32 (здесь N> 4), количество субблоков может быть определено как равное 4, а количество субблоков может быть определено как равное 8 для текущих блоков, размер которых превышает 32xN и Nx32.
[0125] Является ли направление разделения горизонтальным или вертикальным, может определяться информацией разделения. В качестве альтернативы или дополнения направление разделения может быть определено (или выведено) на основе отношения ширины к высоте текущего блока. Например, направление разделения может быть определено как горизонтальное разделение, когда ширина текущего блока больше, чем его высота, и может быть определено как вертикальное разделение, когда ширина текущего блока меньше его высоты. Альтернативно или дополнительно, когда текущий блок существует на границе изображения (или мозаичного элемента, группы мозаичных элементов и т.д.), форма и количество разделов субблока могут быть выведены согласно положению текущего блока. Дополнительно, является ли направление разделения горизонтальным или вертикальным, может быть определено на основе направленности режимов предсказания, включенных в кандидатов режима интра-предсказания (то есть список MPM), определенных для текущего блока. Это может освободить поток битов от сигнализации одного или более элементов синтаксиса, указывающих информацию о форме и/или количестве разделов субблока.
[0126] Блок 620 построения опорного отсчета может проверять наличие доступных соседних отсчетов и использовать доступные отсчеты для построения опорных отсчетов, которые будут использоваться для предсказания. Когда нет доступного отсчета, или когда не выполняется интра-предсказание с использованием соседних отсчетов, блок 620 построения опорного отсчета может произвольно построить опорный отсчет.
[0127] Блок 630 фильтрации опорного отсчета может определять, выполнять ли фильтрацию. Следует ли выполнять фильтрацию, может быть определено на основе информации по меньшей мере об одном из размера, глубины, QP и режима текущего блока. Когда необходимо выполнить фильтрацию, блок 630 фильтрации опорного отсчета может выбрать фильтр для выполнения фильтрации. В этом случае информация о том, какую фильтрацию выполнять, может передаваться в потоке битов.
[0128] Блок 640 генерации сигнала предсказания может генерировать субблок предсказания путем предсказания субблока, который должен быть закодирован из числа множества субблоков, из ранее восстановленных пикселей вокруг субблока. Блок 640 генерации сигнала предсказания может использовать режим интра-предсказания, определенный для текущего блока, при выполнении интра-предсказания множества субблоков. Затем субблок предсказания может быть вычтен по отношению к соответствующему субблоку текущего блока, чтобы сгенерировать остаточный субблок. Остаточный субблок может быть восстановлен путем процесса преобразования/квантования и процесса обратного квантования/обратного преобразования. Восстановленный остаточный субблок суммируется с субблоком предсказания, сгенерированным блоком 640 генерации сигнала предсказания, чтобы сгенерировать восстановленный субблок. В частности, при предсказании следующего субблока блок 640 генерации сигнала предсказания может использовать восстановленные пиксели предыдущего субблока и восстановленные пиксели ранее восстановленного CU.
[0129] На фиг. 7 показана блок-схема способа, выполняемого устройством кодирования видео для кодирования с интра-предсказанием текущего блока видео согласно по меньшей мере одному варианту осуществления настоящего изобретения.
[0130] На этапе S710 устройство кодирования видео может определить режим интра-предсказания, который будет использоваться для кодирования текущего блока. Кроме того, устройство кодирования видео может определять, применять ли инструмент интра-кодирования настоящего изобретения, и, если да, определять направление разделения текущего блока между горизонтальным направлением и вертикальным направлением.
[0131] На этапе S720 устройство кодирования видео может кодировать режим интра-предсказания текущего блока и элементы синтаксиса, указывающие, должен ли текущий блок предсказываться после разделения на множество субблоков. Устройство кодирования видео может использовать процесс наиболее вероятного режима (MPM) для сигнализации режима интра-предсказания для текущего блока. Кроме того, устройство кодирования видео может сигнализировать флаг разделения, указывающий, предсказывается ли текущий блок после разделения на множество субблоков.
[0132] В некоторых случаях устройству кодирования видео может быть запрещено использовать инструмент интра-кодирования настоящего изобретения, если не выполняются заранее определенные критерии. Например, может ли использоваться инструмент интра-кодирования настоящего изобретения или нет, может быть определено в зависимости от положения текущего блока, ширины и высоты текущего блока, области текущего блока, минимального размера преобразования, максимального размер преобразования и тому подобное. В этом случае настоящее решение может опускать сигнализацию флага разделения, указывающую, использовать ли инструмент интра-кодирования настоящего изобретения в потоке битов.
[0133] Когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, направление и количество разделов субблока может быть определено на основе размера текущего блока, положения текущего блока, и длины одной стороны (т.е. ширина или высота) текущего блока, количества пикселей, включенных в текущий блок, режима интра-предсказания текущего блока, размера минимального или максимального блока преобразования и т.п.
[0134] Информация о направлении и количестве разделов субблока может предоставляться различными способами. Например, устройство кодирования видео может использовать один или более элементов синтаксиса, таких как 1-битный флаг, для сигнализации информации разделения, такой как направление и/или количество разделов субблока.
[0135] В частности, количество субблоков может определяться шириной и высотой текущего блока. Например, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков может быть определено как равное 2, а когда ширина и высота текущего блока больше, чем 4×4 и не равно 4×8 и 8×4, количество субблоков может быть определено как равное 4.
[0136] Устройство кодирования видео может явно сигнализировать флаг, указывающий направление разделения субблока, например, является ли направление горизонтальным или вертикальным. В качестве альтернативы или дополнения направление разделения может быть определено (или выведено) на основе отношения ширины к высоте текущего блока. Например, направление разделения может быть определено как горизонтальное разделение, когда ширина текущего блока больше, чем его высота, и может быть определено как вертикальное разделение, когда ширина текущего блока меньше его высоты. В этом случае сигнализация флага, указывающего направление разделения, может быть опущена.
[0137] На этапе S730, когда инструмент интра-кодирования настоящего изобретения применяется к текущему блоку, устройство кодирования видео может последовательно кодировать множество субблоков с использованием режима интра-предсказания, определенного для текущего блока.
[0138] Например, устройство кодирования видео может генерировать субблок предсказания путем предсказания целевого субблока, который должен быть закодирован среди множества субблоков, из ранее восстановленных пикселей вокруг целевого субблока (S732). Устройство кодирования видео может генерировать остаточный субблок из целевого субблока и субблока предсказания (S734). Устройство кодирования видео может преобразовывать и квантовать остаточный субблок, используя тот же размер преобразования, что и целевой субблок (S736). Устройство кодирования видео может энтропийно кодировать квантованный коэффициент преобразования (S738). Кроме того, устройство кодирования видео может восстанавливать остаточный субблок, применяя процесс обратного квантования/обратного преобразования к квантованному коэффициенту преобразования, и может добавить восстановленный остаточный субблок к субблоку предсказания, чтобы сгенерировать восстановленный субблок (S738). В частности, пиксели в восстановленном субблоке могут использоваться для интра-предсказания следующего субблока в текущем блоке. Благодаря этому процессу текущий блок обрабатывается последовательно, начиная с субблока, включая верхний левый образец текущего блока, в нисходящем направлении при горизонтальном разделении и в правом направлении при вертикальном разделении.
[0139] На этапе S740 устройство кодирования видео может выполнять деблокировочную фильтрацию и другие процессы в восстановленном текущем блоке и может сохранять отфильтрованный текущий блок в буфере (например, в памяти 190 с фиг. 1) для использования в качестве опорного изображения для интер-предсказания незавершенных блоков, подлежащих кодированию в изображении. Устройство кодирования видео может устанавливать сетку из N отсчетов с регулярными интервалами в горизонтальном и вертикальном направлениях и выполнять деблокировочную фильтрацию на границах, которые совпадают с границей сетки, из числа границ между множеством субблоков в текущем блоке.
[0140] Фиг. 8 - функциональная блок-схема, иллюстрирующая примерную конфигурацию блока интра-предсказания в устройстве декодирования видео согласно по меньшей мере одному варианту осуществления настоящего изобретения, причем блок интра-предсказания поддерживает инструмент интра-кодирования настоящего изобретения. Как показано на фиг. 8, блок 800 интра-предсказания может включать блок 810 определения режима, блок 820 построения опорного отсчета, блок 830 фильтрации опорного отсчета и блок 840 генерации сигнала предсказания.
[0141] Блок 810 определения режима может определять режим интра-предсказания текущего блока путем декодирования из потока битов информации режима интра-предсказания текущего блока. Например, блок 810 определения режима может выбрать предварительно установленное количество кандидатов режима интра-предсказания из множества режимов интра-предсказания и использовать информацию режима интра-предсказания текущего блока для определения режима интра-предсказания текущего блока из числа кандидатов режима интра-предсказания.
[0142] Блок 810 определения режима также может определять, разделять ли текущий блок, кодированный с интра-предсказанием, на множество субблоков. В частности, блок 810 определения режима может разделить текущий блок на субблоки одинакового размера и определить, выполнять ли интра-предсказание для соответствующих субблоков, используя тот же режим интра-предсказания, что и режим интра-предсказания текущего блока.
[0143] Например, блок 810 определения режима может декодировать из потока битов флаг разделения, указывающий, следует ли разбивать текущий блок, и определять, следует ли разбивать текущий блок на множество субблоков, на основе флага разделения. Первое значение, например, «0» флага разделения указывает, что текущий блок не разделен на субблоки, а второе значение, например, «1» флага разделения указывает, что текущий блок был разделен на субблоки и был интра-предсказан каждым субблоком.
[0144] Флаг разделения может быть выведен устройством декодирования видео без явной сигнализации, то есть без декодирования из потока битов, но вместо этого в зависимости от ширины и высоты текущего блока, площади текущего блока, минимального размера преобразования и/или максимального размера преобразования, разрешенного для преобразования коэффициентов преобразования. Соответственно, блок 810 определения режима может вывести значение флага разделения на основе ширины и высоты текущего блока, площади текущего блока и минимального и максимального размеров преобразования, разрешенных для преобразования коэффициентов преобразования.
[0145] По меньшей мере в одном варианте осуществления, когда ширина и высота текущего блока меньше, чем минимальный размер преобразования, флаг разделения может не нуждаться в декодировании из потока битов, а вместо этого должен быть установлен на значение, указывающее, что текущий блок не разделяется. В другом варианте осуществления, когда область текущего блока (т. е. количество пикселей, включенных в текущий блок) меньше, чем область блока преобразования (т. е. количество пикселей, включенных в блок преобразования), определяемая минимумом размер преобразования, флаг разделения может не нуждается в декодировании из потока битов, но вместо этого должен быть установлен на значение, указывающее, что текущий блок не разделен. В еще одном варианте осуществления, когда ширина и высота текущего блока больше, чем максимальный размер преобразования, флаг разделения может не нуждаться в декодировании из потока битов, но вместо этого можно сделать вывод, что флаг разделения имеет второе значение (например, '1'), т. е. текущий блок был разделен на множество субблоков и интра-предсказан каждым субблоком. В качестве альтернативы, наоборот, можно сделать вывод, что флаг разделения имеет первое значение (например, «0»), то есть что инструмент кодирования настоящего решения не применим, с сохранением его процесса разделения текущего блока на множество субблоков и интра-предсказанием соответствующих субблоков.
[0146] Когда инструмент кодирования настоящего изобретения применяется к текущему блоку, блок 810 определения режима может определять направление и количество разделов субблока. Блок 810 определения режима может извлекать один или более элементов синтаксиса из потока битов, чтобы определять направление и количество разделов субблока. Например, о том, является ли направление разделения горизонтальным или вертикальным, можно явно сигнализировать с помощью элемента синтаксиса, такого как 1-битовый флаг. Соответственно, блок 810 определения режима может извлекать из потока битов элемент синтаксиса, указывающий направление разделения текущего блока.
[0147] Альтернативно или дополнительно, направление и количество разделов подблока могут быть определены или выведены на основании размера текущего блока, положения текущего блока, длины одной стороны (то есть ширины или высоты) текущего блока, количества пикселей, включенных в текущий блок, режима интра-предсказания текущего блока, размера минимального или максимального блока преобразования и т.п.
[0148] Например, направление разделения может быть определено (или выведено) на основе отношения ширины к высоте текущего блока. Например, направление разделения может быть определено как горизонтальное разделение, когда ширина текущего блока больше, чем его высота, и может быть определено как вертикальное разделение, когда ширина текущего блока меньше его высоты. Альтернативно или дополнительно, когда текущий блок существует на границе изображения (или мозаичного элемента, группы мозаичных элементов и т.д.), форма и количество разделов субблока могут быть выведены согласно положению текущего блока. Дополнительно, является ли направление разделения горизонтальным или вертикальным, может быть определено на основе направленности режимов предсказания, включенных в кандидатов режима интра-предсказания (то есть список MPM), определенных для текущего блока. Это может освободить поток битов от сигнализации одного или более элементов синтаксиса, указывающих информацию о форме и/или количестве разделов субблока.
[0149] Количество субблоком может быть определено на основании размера текущего блока, положения текущего блока, длины одной стороны (то есть ширины или высоты) текущего блока, количества пикселей, включенных в текущий блок, режима интра-предсказания текущего блока, размера минимального или максимального блока преобразования и т.п.
[0150] В некоторых случаях, количество субблоков может определяться шириной и высотой текущего блока. Например, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков может быть определено как равное 2, а когда ширина и высота текущего блока больше, чем 4×4 и не равно 4×8 и 8×4, количество субблоков может быть определено как равное 4. В качестве другого примера, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков может быть определено как равное 2, а когда ширина и высота текущего блока составляют от 8×N до 32×N или от N×8 до Nx32 (здесь N> 4), количество субблоков может быть определено как равное 4, а количество субблоков может быть определено как равное 8 для текущих блоков, размер которых превышает 32xN и Nx32.
[0151] Блок 820 построения опорного отсчета может проверять наличие доступных соседних отсчетов и использовать доступные отсчеты для построения опорных отсчетов, которые будут использоваться для предсказания. Когда нет доступного отсчета, или когда не выполняется интра-предсказание с использованием соседних отсчетов, блок 820 построения опорного отсчета может произвольно построить опорный отсчет.
[0152] Блок 830 фильтрации опорного отсчета определяет, выполнять ли фильтрацию. Следует ли выполнять фильтрацию, может быть определено на основе информации по меньшей мере об одном из размера, глубины, QP и режима текущего блока. Когда необходимо выполнить фильтрацию, блок 830 фильтрации опорного отсчета может выбрать фильтр для выполнения фильтрации. В этом случае информация о том, какую фильтрацию выполнять, может быть извлечена из потока битов.
[0153] Блок 840 генерации сигнала предсказания может генерировать интра-предсказанный субблок путем предсказания субблока, подлежащего восстановлению в текущий момент из числа множества субблоков, из ранее восстановленных пикселей вокруг субблока. В частности, при предсказании следующего субблока блок 840 генерации сигнала предсказания может использовать восстановленный сигнал предыдущего субблока и восстановленный сигнал ранее восстановленного CU. Чтобы сгенерировать восстановленный субблок, интра-предсказанный субблок может быть суммирован с восстановленным остаточным субблоком из потока битов.
[0154] На фиг. 9 показана блок-схема способа, выполняемого устройством декодирования видео для декодирования текущего блока, кодированного с интра-предсказанием, из потока битов кодированного видео, согласно по меньшей мере одному варианту осуществления настоящего изобретения.
[0155] На этапе S910 устройство декодирования видео определяет, следует ли разделить текущий блок, кодированный с интра-предсказанием, на множество субблоков. В частности, устройство декодирования видео разделяет текущий блок на субблоки одинакового размера и определяет, выполнять ли интра-предсказание для соответствующих субблоков, используя тот же режим интра-предсказания, что и режим интра-предсказания текущего блока.
[0156] Например, устройство декодирования видео может декодировать из потока битов флаг разделения, указывающий, следует ли разбивать текущий блок, и определять, следует ли разбивать текущий блок, на основе флага разделения. Первое значение (например, «0») флага разделения может указывать на то, что текущий блок не был разделен на множество субблоков, а второе значение (например, «1») флага разделения может указывать на то, что текущий блок был разделен на множество субблоков и был интра-предсказан каждым субблоком.
[0157] Флаг разделения может быть выведен устройством декодирования видео без явной сигнализации, то есть без декодирования из потока битов, но вместо этого в зависимости от ширины и высоты текущего блока, площади текущего блока, минимального размера преобразования и максимального размера преобразования, разрешенного для преобразования коэффициентов преобразования. Соответственно, устройство декодировани видео может вывести значение флага разделения на основе ширины и высоты текущего блока, площади текущего блока и минимального и максимального размеров преобразования, разрешенных для преобразования коэффициентов преобразования.
[0158] На этапе S920 устройство декодирования видео может реагировать на то, что текущий блок разделяется на множество субблоков, для определения направления разделения для текущего блока между горизонтальным направлением разделения и вертикальным направлением разделения и количество субблоков на основе о разделенной информации, декодированной из потока битов и ширины и высоты текущего блока.
[0159] Является ли направление разделения горизонтальным или вертикальным, может определяться информацией разделения. В качестве альтернативы или дополнения, направление разделения может быть определено на основе отношения ширины к высоте текущего блока. Например, направление разделения может быть определено как горизонтальное разделение, когда ширина текущего блока больше, чем его высота, и может быть определено как вертикальное разделение, когда ширина текущего блока меньше его высоты.
[0160] Количество субблоков может определяться шириной и высотой текущего блока. Например, когда ширина и высота текущего блока равны 4×8 или 8×4, количество субблоков может быть определено как равное 2, а когда ширина и высота текущего блока больше, чем 4×4 и не равно 4×8 и 8×4, количество субблоков может быть определено как равное 4.
[0161] На этапе S930 устройство декодирования видео восстанавливает текущий блок путем последовательного восстановления множества субблоков, разделенных согласно направлению разделения и количеству субблоков, посредством интра-предсказания.
[0162] Например, устройство декодирования видео может генерировать интра-предсказанный субблок путем предсказания целевого субблока, подлежащего кодированию из числа множества субблоков, из ранее восстановленных пикселей вокруг целевого субблока (S932). Устройство декодирования видео может декодировать из потока битов информацию о коэффициентах преобразования, соответствующую целевому субблоку, чтобы восстановить коэффициенты преобразования (S934), и обратно квантовать и обратно преобразовать коэффициенты преобразования, используя тот же размер преобразования, что и у целевого субблока, чтобы сгенерировать остаточный субблок, имеющий остаточные сигналы (S939). Устройство декодирования видео может восстанавливать целевой субблок, используя интра-предсказанный субблок и остаточный субблок (S938). Пиксели в восстановленном субблоке могут использоваться для интра-предсказания следующего субблока в текущем блоке.
[0163] Дополнительно, на этапе S930 или до него устройство декодирования видео может декодировать информацию режима интра-предсказания текущего блока из потока битов, чтобы определить режим интра-предсказания текущего блока. Например, устройство декодирования видео может выбрать предварительно установленное количество кандидатов режима интра-предсказания (то есть кандидатов MPM) из множества режимов интра-предсказания и использовать информацию режима интра-предсказания текущего блока для определения режима интра-предсказания текущего блока из числа кандидатов MPM. Кандидаты в режим интра-предсказания могут быть выбраны разными способами в соответствии с тем, является ли направление разделения горизонтальным или вертикальным. Например, когда направление разделения является горизонтальным, режимы с вертикальной ориентацией могут быть выбраны в качестве кандидатов MPM из числа множества режимов интра-предсказания вместо режимов с горизонтальной ориентацией. Кроме того, когда направление разделения является вертикальным, режимы с горизонтальной ориентацией могут быть выбраны в качестве кандидатов MPM из числа множества режимов интра-предсказания вместо режимов с вертикальной ориентацией.
[0164] Кроме того, на этапе S930 или до него устройство декодирования видео может декодировать из потока битов флаг субблока, указывающий, существует ли ненулевой коэффициент преобразования в целевом субблоке, на основе положения целевого субблока в текущем блоке и количестве субблоков. В этом случае устройство декодирования видео может восстанавливать коэффициенты преобразования, соответствующие целевому субблоку, из потока битов, когда флаг субблока указывает, что ненулевой коэффициент преобразования существует в целевом субблоке. Если флаг субблока не декодирован из потока битов, устройство декодирования видео может установить флаг субблока на значение, указывающее, что в субблоке существует ненулевой коэффициент преобразования.
[0165] На этапе S940 устройство кодирования видео может выполнять деблокировочную фильтрацию и другие процессы в восстановленном текущем блоке и может сохранять отфильтрованный текущий блок в буфере (например, в памяти 470 с фиг. 4) для использования в качестве части опорного изображения для интер-предсказания незавершенных блоков, подлежащих кодированию в изображении. Устройство кодирования видео может устанавливать сетку из N отсчетов с регулярными интервалами в горизонтальном и вертикальном направлениях и выполнять деблокировочную фильтрацию на границах, которые совпадают с границей сетки, из числа границ между множеством субблоков в текущем блоке.
[0166] Между тем, когда блок (CU) кодируется последовательно в единицах субблоков согласно вышеописанному инструменту интра-кодирования, как интра-предсказание, так и интер-предсказание могут выполняться при генерации сигнала предсказания (для добавления к соответствующему остаточному сигналу) субблока. Фиг. 10A и 10B - схемы, иллюстрирующие блок кодирования, в котором первый субблок восстановлен первым, и второй субблок, который находится в процессе восстановления, при генерации субблока предсказания второго субблока.
[0167] Как показано на фиг. 10A, где первый субблок был восставновлен, а второй субблок блока кодирования (CU) находится в процессе восстановления, взвешенная сумма (или средневзвешенное значение) выполняется для субблока 1010 предсказания из интра-предсказания второго субблока в режим интра-предсказания и субблок 1020 предсказания из интер-предсказания второго субблока, тем самым генерируя окончательный субблок 1030 предсказания (который должен быть добавлен к соответствующему остаточному сигналу) второго субблока. Здесь, для интер-предсказания в единицах субблоков информация о движении может передаваться в единицах субблоков по отдельности, или информация о движении, передаваемая для блока кодирования (CU), может обычно использоваться для всех субблоков CU.
[0168] Когда CU восстанавливается последовательно в единицах субблоков, блок 1060 предсказания из интер-предсказания CU может использоваться в процессе восстановления соответствующих субблоков. Как показано на фиг. 10B, где первый субблок был воссстановлен, а второй субблок блока кодирования (CU) находится в процессе восстановления, взвешенная сумма (или средневзвешенное значение) выполняется для (1) субблока предсказания, который соответствует второму субблоку и извлекается из блока 1060 предсказания, и (2) субблока 1010 предсказания, который генерируется из интра-предсказания второго субблока, тем самым генерируя окончательный субблок 1030 предсказания второго субблока. Блок 1060 предсказания CU может быть сгенерирован перед генерацией окончательного субблока предсказания для первого субблока и сохранен в буфере до генерации окончательного субблока предсказания для четвертого субблока.
[0169] Соответственно, в некоторых вариантах осуществления, когда вышеописанный инструмент интра-кодирования применяется к текущему блоку, устройство декодирования видео может восстанавливать текущий блок последовательно в единицах субблоков таким образом, чтобы обрабатывать целевой субблок, подлежащий восстановлению, путем: генерации его интра-предсказанного субблока и интер-предсказанного субблока; выполнения взвешенного усреднения для двух субблоков предсказания, чтобы сгенерировать окончательный субблок предсказания для целевого субблока; и добавления окончательного субблока предсказания к остаточному субблоку, декодированному из потока битов. Это может восстановить целевой субблок.
[0170] Следует понимать, что в приведенном выше описании представлены иллюстративные варианты осуществления, которые могут быть реализованы различными другими способами. Функции, описанные в некоторых вариантах осуществления, могут быть реализованы с помощью оборудования, программного обеспечения, встроенного программного обеспечения и/или их комбинации. Также следует понимать, что функциональные компоненты, описанные в настоящем описании, помечены как «... блок», чтобы особо подчеркнуть возможность их автономной реализации.
[0171] Между тем, различные способы или функции, приведенные в настоящем описании, могут быть реализованы как инструкции, хранящиеся на энергонезависимом носителе информации, которые могут быть прочитаны и выполнены одним или несколькими процессорами. Невременный носитель записи включает в себя, например, все типы записывающих устройств, в которых данные хранятся в форме, читаемой компьютерной системой. Например, невременный носитель информации может включать в себя, среди прочего, носители данных, такие как стираемое программируемое постоянное запоминающее устройство (EPROM), флэш-накопитель, оптический накопитель, магнитный жесткий диск и твердотельный накопитель (SSD).
[0172] Несмотря на то, что примерные варианты осуществления настоящего изобретения были описаны в иллюстративных целях, специалисты в данной области техники поймут, что возможны различные модификации, дополнения и замены без отклонения от идеи и объема заявленного изобретения. Следовательно, для краткости и ясности были описаны примерные варианты осуществления настоящего изобретения. Объем технической идеи настоящих вариантов осуществления не ограничен иллюстрациями. Соответственно, рядовому специалисту понятно, что объем заявленного изобретения ограничивается не ариантами осуществления, которые были непосредственно описаны выше, а формулой изобретения и ее эквивалентами.
ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННОЕ ЗАЯВЛЕНИЕ
Эта заявка испрашивает приоритет корейской заявки на получение патента № 10-2019-0028356, поданной 12 марта 2019 г., описание которой полностью включено в настоящий документ посредством ссылки.
Изобретение относится к области кодирования изображения на основе интра-предсказания, в которых единица предсказания делится на субблоки и предсказывается в субблоках. Техническим результатом является размещение восстановленных соседних отсчетов, используемых для предсказания текущего отсчета, чтобы он был ближе к текущему отсчету, и предсказания субблоков блоков с использованием общего режима интра-предсказания для повышения эффективности кодирования. Предложен способ декодирования видео, который включает: определение, следует ли разделять текущий блок на множество субблоков; когда текущий блок разделяется на множество субблоков, определение направления разделения для текущего блока между горизонтальным направлением разделения и вертикальным направлением разделения и количество субблоков на основе информации разделения, декодированной из потока битов, а также ширины и высоты текущего блока; восстановление текущего блока путем последовательного восстановления субблоков, которые указаны в соответствии с направлением разделения и количеством субблоков, с использованием интра-предсказания; и установку сетки из N отсчетов с регулярными интервалами в горизонтальном и вертикальном направлениях и выполнение деблокировочной фильтрации среди границ между субблоками в текущем блоке, совпадающих с границей сетки, при этом количество субблоков устанавливают равным 2, когда ширина и высота текущего блока равны 4×8 или 8×4, и количество субблоков устанавливают равным 4, когда ширина и высота текущего блока больше 4×4 и не равны 4×8 и 8×4. 4 н. и 4 з.п. ф-лы, 14 ил., 2 табл.
1. Способ декодирования видео для восстановления текущего блока с использованием интра-предсказания, включающий следующие этапы:
декодируют, из потока битов, флаг разделения, указывающий, следует ли разделить текущий блок на множество субблоков, причем декодирование флага разделения зависит от ширины и высоты текущего блока, области текущего блока, а также минимального размера преобразования и максимального размера преобразования, которые допустимы для преобразования коэффициентов преобразования;
определяют, на основе флага разделения, разделять ли текущий блок на множество субблоков;
когда текущий блок разделяется на множество субблоков, определяют направление разделения для текущего блока между направлением горизонтального разделения и направлением вертикального разделения на основе информации разделения, декодированной из потока битов, и определяют количество субблоков на основе ширины и высоты текущего блока;
восстанавливают текущий блок путем последовательного восстановления субблоков, заданных в соответствии с направлением разделения и количеством субблоков, с использованием интра-предсказания; и
устанавливают сетку из N отсчетов на равных интервалах в горизонтальном и вертикальном направлениях и выполняют деблокирующую фильтрацию, среди границ между восстановленными субблоками в текущем блоке, на границах, совпадающих с границей сетки,
причем когда область текущего блока меньше, чем область единицы преобразования, заданной минимальным размером преобразования, флаг разделения не декодируют из потока битов и устанавливают в значение, указывающее, что текущий блок не должен быть разделен,
причем когда по меньшей мере одно из ширины или высоты текущего блока больше, чем максимальный размер преобразования, флаг разделения не декодируют из потока битов и устанавливают в значение, указывающее, что текущий блок не должен быть разделен,
при этом количество субблоков устанавливают равным 2, когда ширина и высота текущего блока равны 4×8 или 8×4, и количество субблоков устанавливают равным 4, когда ширина и высота текущего блока больше 4×4 и не равны 4×8 и 8×4.
2. Способ по п. 1, в котором восстановление текущего блока включает этапы:
предсказывают целевой субблок, подлежащий восстановлению в текущий момент из числа субблоков из ранее восстановленных пикселей вокруг целевого субблока, чтобы сгенерировать интра-предсказанный субблок;
генерируют остаточный субблок, имеющий остаточные сигналы, путем декодирования, из потока битов, информации о коэффициентах преобразования, соответствующей целевому субблоку, для восстановления коэффициентов преобразования, и
выполняют обратное квантование и обратное преобразование коэффициентов преобразования с использованием размера преобразования, эквивалентного целевому субблоку; и
восстанавливают целевой субблок с использованием интра-предсказанного субблока и остаточного субблока,
при этом пиксели в восстановленном целевом субблоке используют для интра-предсказания последующего субблока в текущем блоке.
3. Способ по п. 2, в котором декодирование информации о коэффициентах преобразования, соответствующей целевому субблоку, включает следующие этапы:
декодируют, из потока битов, флаг субблока, указывающий, существует ли ненулевой коэффициент преобразования в целевом субблоке, на основе положения целевого субблока в текущем блоке и количества субблоков; и
восстанавливают коэффициенты преобразования, соответствующие целевому субблоку, из потока битов, когда флаг субблока указывает, что ненулевой коэффициент преобразования существует в целевом субблоке.
4. Способ по п. 3, в котором, если флаг субблока не декодирован из потока битов, флаг субблока устанавливают в значение, указывающее, что в субблоке существует ненулевой коэффициент преобразования.
5. Способ по п. 2, в котором восстановление текущего блока включает следующие этапы:
определяют вектор движения целевого субблока и генерируют интер-предсказанный субблок для целевого субблока с использованием вектора движения; и
генерируют субблок предсказания для целевого субблока путем вычисления средневзвешенного значения интра-предсказанного субблока и интер-предсказанного субблока,
при этом целевой субблок восстанавливают путем сложения субблока предсказания и остаточного субблока.
6. Способ кодирования видео для восстановления текущего блока с использованием интра-предсказания, включающий следующие этапы:
определяют, следует ли разделить текущий блок на множество субблоков на основе ширины и высоты текущего блока, области текущего блока, а также минимального размера преобразования и максимального размера преобразования, которые допустимы для преобразования коэффициентов преобразования;
кодируют, в поток битов, флаг разделения, указывающий, следует ли разделить текущий блок на множество субблоков,
когда текущий блок разделяется на множество субблоков, определяют направление разделения для текущего блока между направлением горизонтального разделения и направлением вертикального разделения, и определяют количество субблоков на основе ширины и высоты текущего блока;
кодируют, в поток битов, информацию разделения, указывающую направление разделения;
кодируют текущий блок путем последовательного кодирования и восстановления субблоков с использованием интра-предсказания;
устанавливают сетку из N отсчетов на равных интервалах в горизонтальном и вертикальном направлениях и выполняют деблокирующую фильтрацию, среди границ между восстановленными субблоками в текущем блоке, на границах, совпадающих с границей сетки,
причем когда область текущего блока меньше, чем область единицы преобразования, заданной минимальным размером преобразования, флаг разделения не кодируют в поток битов и делают вывод, что текущий блок не должен быть разделен,
причем когда по меньшей мере одно из ширины или высоты текущего блока больше, чем максимальный размер преобразования, флаг разделения не кодируют в поток битов и делают вывод, что текущий блок не должен быть разделен,
при этом количество субблоков устанавливают равным 2, когда ширина и высота текущего блока равны 4×8 или 8×4, и количество субблоков устанавливают равным 4, когда ширина и высота текущего блока больше 4x4 и не равны 4×8 и 8×4.
7. Невременный машиночитаемый носитель, хранящий инструкции, реализуемые в процессоре для выполнения способа кодирования с использованием интра-предсказания, причем способ включает следующие этапы:
определяют, следует ли разделить текущий блок на множество субблоков на основе ширины и высоты текущего блока, области текущего блока, а также минимального размера преобразования и максимального размера преобразования, которые допустимы для преобразования коэффициентов преобразования;
кодируют, в поток данных, флаг разделения, указывающий, разделять ли текущий блок на множество субблоков;
когда текущий блок разделяется на множество субблоков, определяют направление разделения для текущего блока между направлением горизонтального разделения и направлением вертикального разделения и определяют количество субблоков на основе ширины и высоты текущего блока;
кодируют, в поток данных, информацию разделения, указывающую направление разделения;
кодируют текущий блок путем последовательного кодирования и восстановления субблоков, с использованием интра-предсказания; и
устанавливают сетку из N отсчетов на равных интервалах в горизонтальном и вертикальном направлениях и выполняют деблокирующую фильтрацию среди границ между восстановленными субблоками в текущем блоке, на границах, совпадающих с границей сетки,
причем когда область текущего блока меньше, чем область единицы преобразования, заданной минимальным размером преобразования, флаг разделения не кодируют в поток битов и делают вывод, что текущий блок не должен быть разделен,
причем когда по меньшей мере одно из ширины или высоты текущего блока больше, чем максимальный размер преобразования, флаг разделения не кодируют в поток битов и делают вывод, что текущий блок не должен быть разделен,
при этом количество субблоков устанавливают равным 2, когда ширина и высота текущего блока равны 4×8 или 8×4, и количество субблоков устанавливают равным 4, когда ширина и высота текущего блока больше 4×4 и не равны 4×8 и 8×4.
8. Способ сохранения потока битов кодированных видеоданных, причем способ содержит:
кодирование видеоданных в поток битов путем выполнения процесса кодирования; и
сохранение потока битов в невременном машиночитаемом носителе, при этом процесс кодирования включает в себя:
определение, следует ли разделить текущий блок на множество субблоков на основе ширины и высоты текущего блока, области текущего блока, а также минимального размера преобразования и максимального размера преобразования, которые допустимы для преобразования коэффициентов преобразования;
кодирование, в поток битов, флага разделения, указывающего, разделять ли текущий блок на множество субблоков;
когда текущий блок разделяется на множество субблоков, определение направления разделения для текущего блока между направлением горизонтального разделения и направлением вертикального разделения и определение количества субблоков на основе ширины и высоты текущего блока;
кодирование, в поток битов, информации разделения, указывающей направление разделения;
кодирование текущего блока путем последовательного кодирования и восстановления субблоков, с использованием интра-предсказания; и
установление сетки из N отсчетов на равных интервалах в горизонтальном и вертикальном направлениях и выполнение деблокирующей фильтрации среди границ между восстановленными субблоками в текущем блоке, на границах, совпадающих с границей сетки,
причем когда область текущего блока меньше, чем область единицы преобразования, заданной минимальным размером преобразования, флаг разделения не кодируется в поток битов и делается вывод, что текущий блок не должен быть разделен,
причем когда по меньшей мере одно из ширины или высоты текущего блока больше, чем максимальный размер преобразования, флаг разделения не кодируется в поток битов и делается вывод, что текущий блок не должен быть разделен,
при этом количество субблоков устанавливается равным 2, когда ширина и высота текущего блока равны 4×8 или 8×4, и количество субблоков устанавливается равным 4, когда ширина и высота текущего блока больше 4x4 и не равны 4×8 и 8×4.
KENNETH ANDERSSON et al | |||
Походная разборная печь для варки пищи и печения хлеба | 1920 |
|
SU11A1 |
Станок для придания концам круглых радиаторных трубок шестигранного сечения | 1924 |
|
SU2019A1 |
S | |||
DE-LUXAN-HERNANDEZET et al | |||
Переносная печь для варки пищи и отопления в окопах, походных помещениях и т.п. | 1921 |
|
SU3A1 |
Авторы
Даты
2023-09-13—Публикация
2020-03-12—Подача