КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ИНТРА-ПРЕДСКАЗАНИЯ Российский патент 2024 года по МПК H04N19/593 

Описание патента на изобретение RU2821012C2

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ

Настоящая заявка притязает на приоритет предварительной заявки США №62/822865, поданной 23 марта 2019 г., предварительной заявки США №62/824282, поданной 26 марта 2019 г., и предварительной заявки США №62/824360, поданной 27 марта 2019 г., все из которых включены в настоящий документ по ссылке.

Область техники

Варианты осуществления настоящей заявки (раскрытие) в целом относятся к области обработки изображений и, в частности, к интра- (intra) предсказанию.

Уровень техники

Видеокодирование (закодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях реального времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и камкодеры приложений безопасности.

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

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

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

Сущность изобретения

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

Согласно первому аспекту изобретение относится к способу, выполняемому устройством декодирования. Способ включает в себя этап, на которых: получают значение информации указания текущего блока, причем значение информации указания указывает, содержится ли режим интра-предсказания текущего блока в наборе наиболее вероятных режимов. Когда значение информации указания указывает, что режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов, выводят режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока с помощью следующих упорядоченных этапов, на которых:

i. IntraPredModeY[xCb][yCb] устанавливается равным intra_luma_mpm_remainder[xCb][yCb],

ii. значение IntraPredModeY[xCb][yCb] увеличивается на единицу;

где intra_luma_mpm_remainder[xCb][yCb] представляет режим интра-предсказания остатка, местоположение яркости (xCb, yCb) определяет верхний левый дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения.

В возможной форме реализации способа согласно первому аспекту после этапа ii выведение режима интра-предсказания IntraPredModeY[xCb][yCb] текущего блока дополнительно содержит этап, на котором:

iii. Для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше или равно candModeList[i], значение IntraPredModeY[xCb][yCb] увеличивается на единицу.

В возможной форме реализации способа согласно первому аспекту набор наиболее вероятных режимов содержит 5 возможных режимов интра-предсказания и планарный режим. Потенциально подходящий режим интра-предсказания candModeList[i] в наборе наиболее вероятных режимов получается следующим образом:

когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами (swap) следующим образом:

(candModeList[i], candModeList[j]) = swap(candModeList[i], candModeList[j]).

Согласно второму аспекту изобретение относится к способу, выполняемому устройством кодирования. Способ включает в себя выведение переменной (например, intra_luma_mpm_remainder) с использованием режима интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока не содержится в наборе наиболее вероятных режимов:

i. Для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше, чем candModeList[i], значение IntraPredModeY[xCb][yCb] уменьшается на единицу, где candModeList[i] представляет потенциально подходящий режим интра-предсказания в наборе наиболее вероятных режимов;

ii. значение IntraPredModeY[xCb][yCb] уменьшается на единицу;

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

В возможной форме реализации способа согласно второму аспекту набор наиболее вероятных режимов содержит 5 возможных режимов интра-предсказания и планарный режим. Потенциально подходящий режим интра-предсказания candModeList[i] в наборе наиболее вероятных режимов получается следующим образом:

когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = swap(candModeList[i], candModeList[j]).

Способ согласно первому аспекту изобретения может выполняться устройством декодирования согласно третьему аспекту изобретения. Устройство декодирования включает в себя блок получения и блок выведения. При этом, блок получения сконфигурирован получать значение информации указания текущего блока, причем значение информации указания указывает, содержится ли режим интра-предсказания текущего блока в наборе наиболее вероятных режимов. Блок выведения сконфигурирован выводить режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда значение информации указания указывает, что режим интра-предсказания текущего блока не содержится в наборе наиболее вероятные режимы:

i. IntraPredModeY[xCb][yCb] устанавливается равным intra_luma_mpm_remainder[xCb][yCb],

ii. Значение IntraPredModeY[xCb][yCb] увеличивается на единицу;

где intra_luma_mpm_remainder[xCb][yCb] представляет режим интра-предсказания остатка, местоположение яркости (xCb, yCb) определяет верхний левый дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения.

Дополнительные признаки и формы реализации способа согласно третьему аспекту изобретения соответствуют признакам и формам реализации устройства согласно первому аспекту изобретения.

Способ согласно второму аспекту изобретения может выполняться устройством кодирования согласно четвертому аспекту изобретения. Устройство кодирования включает в себя блок выведения и блок передачи. Блок выведения сконфигурирован выводить переменную (например, intra_luma_mpm_remainder) с использованием режима интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока не содержится в наборе наиболее вероятных режимов:

i. Для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше, чем candModeList[i], значение IntraPredModeY[xCb][yCb] уменьшается на единицу, где candModeList[i] представляет потенциально подходящий режим интра-предсказания в наборе наиболее вероятных режимов;

ii. значение IntraPredModeY[xCb][yCb] уменьшается на единицу;

Блок передачи сконфигурирован отправлять поток битов в декодер, причем поток битов включает в себя информацию упомянутой переменной.

Дополнительные признаки и формы реализации способа согласно четвертому аспекту изобретения соответствуют признакам и формам реализации устройства согласно второму аспекту изобретения.

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

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

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

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

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

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

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

В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:

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

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

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

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

Фиг. 4 - блок-схема, иллюстрирующей пример устройства кодирования или устройства декодирования;

Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;

Фиг. 6 - блок-схема, иллюстрирующая пример инструмента кодирования с множественными опорными строками (MRL);

Фиг. 7 - блок-схема, иллюстрирующая пример разделения блоков 4×8 и 8×4;

Фиг. 8 - блок-схема, иллюстрирующая пример разделения всех блоков, кроме 4×8, 8×4 и 4×4;

Фиг. 9 - блок-схема, иллюстрирующая пример контекстного моделирования/кодирования CABAC;

Фиг. 10 - блок-схема, иллюстрирующая пример левого (L) и верхнего (A) соседних блоков текущего блока;

Фиг. 11 - блок-схема, иллюстрирующая режимы интра-предсказания;

Фиг. 12 иллюстрирует варианты осуществления способа 1200 интра-предсказания текущего блока, реализуемого устройством декодирования, согласно настоящему изобретению;

Фиг. 13 иллюстрирует варианты осуществления способа 1300 интра-предсказания текущего блока, реализуемого устройством кодирования, согласно настоящему изобретению;

Фиг. 14 иллюстрирует варианты осуществления устройства 1400 декодирования для использования в декодере изображения согласно настоящему изобретению;

Фиг. 15 иллюстрирует варианты осуществления устройства 1500 кодирования для использования в кодере изображения согласно настоящему изобретению;

Фиг. 16 - блок-схема, показывающая примерную структуру системы 3100 доставки контента, которая реализует услугу доставки контента; и

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

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

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ СУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ

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

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

Видеокодирование обычно относится к обработке последовательности снимков, которые образуют видео или видеопоследовательность. Вместо термина «снимок» можно использовать термин «кадр» или «изображение» как синонимы в области видеокодирования. Видеокодирование (или кодирование в общем смысле) содержит две части: закодирование видео и декодирование видео. Закодирование видео выполняется на стороне источника, обычно содержа обработку (например, посредством сжатия) исходных видеоснимков для уменьшения объема данных, необходимых для представления видеоснимков (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне получателя и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоснимков. Варианты осуществления, относящиеся к «кодированию» видеоснимков (или снимков в целом, следует понимать как относящиеся либо к «закодированию», либо к «декодированию» видеоснимков или соответственных видеопоследовательностей. Объединение кодирующей части и декодирующей части также называется CODEC (закодирование и декодирование).

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

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

В следующих вариантах осуществления системы 10 видеокодирования кодер 20 и декодер 30 описываются на основе Фиг. 1-3.

Фиг. 1A является схематической блок-схемой, иллюстрирующей примерную систему 10 кодирования, например систему 10 видеокодирования (или вкратце систему 10 кодирования), которая может использовать методики настоящей заявки. Видеокодер 20 (или вкратце кодер 20) и видеодекодер 30 (или вкратце декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методик в соответствии с различными примерами, описанными в настоящей заявке.

Как показано на Фиг. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 снимка, например, в устройство-получатель 14 для декодирования кодированных данных 13 снимка.

Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. в необязательном порядке, содержать источник 16 снимка, препроцессор (или модуль предварительной обработки) 18, например препроцессор 18 снимка, и интерфейс связи или модуль 22 связи.

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

В отличие от препроцессора 18 и обработки, выполняемой модулем 18 предварительной обработки, снимок или данные 17 снимка также могут называться необработанным снимком или данными 17 необработанного снимка.

Препроцессор 18 выполнен с возможностью приема данных 17 (необработанного) снимка и выполнения предварительной обработки данных 17 снимка для получения предварительно обработанного снимка 19 или данных 19 предварительно обработанного снимка. Предварительная обработка, выполняемая препроцессором 18, может, например, включать в себя обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или уменьшение шума. Можно понять, что модуль 18 предварительной обработки может быть необязательным компонентом.

Видеокодер 20 выполнен с возможностью приема данных 19 предварительно обработанного снимка и предоставления данных 21 кодированного снимка (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).

Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема данных 21 кодированного снимка и для передачи данных 21 кодированного снимка (или любой их дальнейшей обработанной версии) по каналу 13 связи на другое устройство, например, на устройство-получатель 14 или любое другое устройство для хранения или прямого восстановления.

Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. в необязательном порядке, содержать интерфейс или модуль 28 связи, постпроцессор 32 и устройство 34 отображения.

Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема данных 21 кодированного снимка (или любой их дальнейшей обработанной версии), например, непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройство хранения данных кодированного снимка, и предоставить данные 21 кодированного снимка в декодер 30.

Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема данных 21 кодированного снимка или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.

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

Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения данных 21 кодированного снимка.

И интерфейс 22 связи, и интерфейс 28 связи могут быть выполнены как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающего от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и может быть сконфигурирован, например, для отправки и приема сообщений, например для установки соединения, для подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, к передаче данных кодированного снимка.

Декодер 30 выполнен с возможностью приема данных 21 кодированного снимка и предоставления данных 31 декодированного снимка или декодированного снимка 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5).

Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки данных 31 декодированного снимка (также называемых данными восстановленного снимка), например, декодированного снимка 31, для получения данных 33 снимка с постобработкой, например снимка 33 с постобработкой. Постобработка, выполняемая модулем 32 постобработки, может включать в себя, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или передискретизацию, либо любую другую обработку, например, для подготовки данных декодированного снимка 31 для отображения, например, с помощью устройства 34 отображения.

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

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

Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных модулей или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг. 1A, может варьироваться в зависимости от фактического устройства и применения.

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30), либо как кодер 20, так и декодер 30 могут быть реализованы посредством схем обработки, как показано на Фиг. 1B, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSP), прикладных программ. специальные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, оборудование, предназначенные для видеокодирования или любые их сочетания. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 на Фиг. 2, и/или любой другой кодирующей системе или подсистеме, описанной здесь. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 на Фиг. 3, и/или любую другую систему или подсистему декодера, описанную в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, как описано ниже. Как показано на Фиг. 5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем долговременном машиночитаемом носителе данных и может исполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик согласно этому раскрытию. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг. 1B.

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

В некоторых случаях система 10 видеокодирования, проиллюстрированная на Фиг. 1A, является просто примером, и методики настоящей заявки могут применяться к настройкам кодирования видео (например, закодирования видео или декодирования видео), которые не обязательно включают в себя какой-либо обмен данными между устройствами закодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются по сети и т.п. Устройство закодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах закодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.

Для удобства описания варианты осуществления изобретения описаны здесь, например, со ссылкой на высокоэффективное видеокодирование (HEVC) или на опорное программное обеспечение универсального кодирования видео (VVC), стандарта кодирования видео следующего поколения, разработанного Объединенной группой сотрудничества по кодированию видео (JCT-VC) Группы экспертов ITU-T по кодированию видео (VCEG) и Группы экспертов ISO/IEC по движущимся изображениям (MPEG). Специалист в данной области техники поймет, что варианты осуществления изобретения не ограничиваются HEVC или VVC.

Кодер и способ закодирования

На Фиг. 2 показано схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации способов настоящей заявки. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или интерфейс 201 ввода), модуль 204 вычисления остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования и модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 220 контурного фильтра, буфер 230 (DPB) декодированных снимков, модуль 260 выбора режима, модуль 270 энтропийного кодирования и вывод 272 (или интерфейс 272 вывода). Модуль 260 выбора режима может включать в себя модуль 244 интер-предсказания, модуль 254 интра-предсказания и модуль 262 разбиения. Модуль 244 интер-предсказания может включать в себя модуль оценки движения и модуль компенсации движения (не показаны). Видеокодер 20, показанный на Фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.

Модуль 204 вычисления остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 260 выбора режима могут относится к формированию прямого тракта сигнала кодера 20, тогда как модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных снимков, модуль 244 интер-предсказания и модуль 254 интра-предсказания могут относится к формированию обратного тракта сигнала видеокодера 20, при этом обратный тракт сигнала видеокодера 20 соответствует тракту сигнала декодера (см. видеодекодер 30 на Фиг. 3). Модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных снимков, модуль 244 интер-предсказания и модуль 254 интра-предсказания также относятся к формированию «Встроенного декодера» видеокодера 20.

Снимки и разбиение снимков (снимки и блоки)

Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 снимка 17 (или данных 17 снимка), например снимка из последовательности снимков, образующих видео или видеопоследовательность. Принятый снимок или данные снимка также могут представлять собой предварительно обработанный снимок 19 (или предварительно обработанные данные 19 снимка). Для простоты нижеследующее описание ссылается на снимок 17. Снимок 17 также может именоваться текущим снимком или снимком, который подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущий снимок от других снимков, например, ранее закодированных и/или декодированных снимков той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущий снимок).

(Цифровой) снимок представляет собой или может рассматриваться как двумерный массив или матрица дискретных отсчетов со значениями интенсивности. Дискретный отсчет в массиве также может называться пикселем (сокращенная форма элемента снимка) или пикселом. Количество дискретных отсчетов в горизонтальном и вертикальном направлении (или по оси) массива или снимка определяет размер и/или разрешение снимка. Для представления цвета обычно используются три цветовых компонента, то есть снимок может быть представлен или включать в себя три массива дискретных отсчетов. В формате RBG или цветовом пространстве снимок содержит соответствующий массив дискретных отсчетов красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или короткой яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновом снимке), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, снимок в формате YCbCr содержит массив дискретных отсчетов яркости значений дискретных отсчетов яркости (Y) и два массива дискретных отсчетов цветности значений цветности (Cb и Cr). Снимки в формате RGB могут быть преобразованы или преобразованы в формат YCbCr, и наоборот, этот процесс также известен как преобразование или конверсия цвета. Если снимок является монохромным, то он может содержать только массив дискретных отсчетов яркости. Соответственно, снимок может быть, например, массивом дискретных отсчетов яркости в монохромном формате или массивом дискретных отсчетов яркости и двумя соответствующими массивами дискретных отсчетов цветности в цветовой формат 4:2:0, 4:2:2 и 4:4:4.

Варианты осуществления видеокодера 20 могут содержать модуль разбиения снимка (не показан на Фиг. 2), выполненный с возможностью разбиения снимка 17 на множество (обычно не перекрывающихся) блоков 203 снимка. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разбиения снимка может быть приспособлен для использования одного и того же размера блока для всех снимков видеопоследовательности и соответствующей сетки, определяющей размер блока, либо для изменения размера блока между снимками или подмножествами или группами снимков, а также для разбиения каждого снимка на соответствующие блоки.

В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 снимка 17, например одного, нескольких или всех блоков, образующих снимок 17. Блок 203 снимка также может называться блоком текущего снимка или блоком снимка, который должен быть кодирован.

Подобно снимку 17, блок 203 снимка снова является или может рассматриваться как двумерный массив или матрица дискретных отсчетов со значениями интенсивности (значениями дискретных отсчетов), хотя и меньшего размера, чем снимок 17. Другими словами, блок 203 может содержать, например, один массив дискретных отсчетов (например, массив яркости в случае монохромного снимка 17 или массив яркости или цветности цветного снимка) или три массива дискретных отсчетов (например, массив яркости и два массива цветности в случае цветного снимка 17) или любое другое количество и/или вид массивов в зависимости от применяемого цветового формата. Количество дискретных отсчетов в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, представлять собой массив дискретных отсчетов M×N (M столбцов на N строка) или массив M×N коэффициентов преобразования.

Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть выполнены с возможностью кодирования снимка 17 блок за блоком, например, закодирование и предсказание выполняются для каждого блока 203.

Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или закодирования снимка с использованием срезов (также называемых видео срезами (слайсами)), при этом снимок может быть разделен или закодирован с использованием одного или более слайсов (обычно без перекрытия), и каждый слайс может содержать один или более блоков (например, CTU).

Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или закодирования снимка с использованием групп клеток (плиток, tile) (также называемых группами клеток) и/или клеток (также называемых видео клетками), в котором снимок может быть разделен или закодирован с использованием одной или более групп клеток (обычно не перекрывающихся), и каждая группа клеток может содержать, например, один или более блоков (например, CTU) или одну или более клеток, при этом каждая клетка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.

Вычисление остатка

Модуль 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также упоминаемого как остаток 205) на основе блока 203 снимка и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, посредством вычитания значений дискретных отсчетов блока 265 предсказания из значений дискретных отсчетов блока 203 снимка, дискретный отсчет за дискретным отсчетом (пиксель за пикселем), чтобы получить остаточный блок 205 в области дискретных отсчетов.

Преобразование

Модуль 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям дискретных отсчетов остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.

Модуль 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью двойки для операций сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например, модулем 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например, модулем 312 обработки обратного преобразования в видеокодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например, посредством модуля 206 обработки преобразования, в кодере 20 могут быть определены соответственно.

Варианты осуществления видеокодера 20 (соответственно модуль 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированными или сжатыми через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.

Квантование

Модуль 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, посредством применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.

Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большие размеры шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, и соответствующее и/или обратное деквантование, например, посредством модуля 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования, и кодер может передавать их в декодер, например, в потоке битов. Квантование - это операция с потерями, при которой потери возрастают с увеличением размеров этапов квантования.

Варианты осуществления видеокодера 20 (соответственно модуль 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированными через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.

Обратное квантование

Модуль 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, посредством применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования в качестве модуля 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.

Обратное преобразование

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

Восстановление

Модуль 214 восстановления (например, сумматор 214) выполнен с возможностью добавления блока 213 преобразования (то есть восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области дискретных отсчетов, например, посредством добавления (дискретный отсчет за дискретным отсчетом) значений дискретных отсчетов восстановленных остаточный блок 213 и значения дискретных отсчетов блока 265 предсказания.

Фильтрация

Модуль 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных дискретных отсчетов для получения отфильтрованных дискретных отсчетов. Модуль контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Модуль 220 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением дискретных отсчетов (SAO), либо один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любое их сочетание. Хотя модуль 220 контурного фильтра показан на Фиг. 2 как контурный фильтр, в других конфигурациях модуль 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.

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

Буфер декодированных снимков

Буфер 230 декодированных снимков (DPB) может быть памятью, в которой хранятся опорные снимки или, в общем, данные опорных снимков для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть образован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных снимков может быть выполнен с возможностью хранения одного или более фильтрованных блоков 221. Буфер 230 декодированных снимков может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего снимка или разных снимков, например ранее восстановленных снимков, и может предоставлять полные ранее восстановленные, т.е. декодированные, снимки (и соответствующие опорные блоки и дискретные отсчеты) и/или частично восстановленный текущий снимок (и соответствующие опорные блоки и дискретные отсчеты), например, для интер-предсказания. Буфер 230 декодированных снимков (DPB) также может быть выполнен с возможностью хранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных дискретных отсчетов, например если восстановленный блок 215 не фильтруется модулем 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или дискретных отсчетов.

Выбор режима (Разбиение и Предсказание)

Модуль 260 выбора режима содержит модуль 262 разбиения, модуль 244 интер-предсказания и модуль 254 интра-предсказания и выполнен с возможностью приема или получения данных исходного снимка, например исходного блока 203 (текущего блока 203 текущего снимка 17), и данных восстановленного снимка, например отфильтрованных и/или нефильтрованных восстановленных дискретных отсчетов или блоков того же самого (текущего) снимка и/или из одного или множества ранее декодированных снимков, например из буфера 230 декодированных снимков или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного снимка используются в качестве данных опорного снимка для предсказания, например интер-предсказания или интра-предсказания, чтобы получить блок 265 предсказания или предиктор 265.

Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для режима предсказания текущего блока (включая отсутствие разбиения) и режима предсказания (например, режима интра- или интер-предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.

Варианты осуществления модуля 260 выбора режима могут быть выполнены с возможностью выбора разбиения и режима предсказания (например, из тех, которые поддерживаются или доступны для модуля 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба. Модуль 260 выбора режима может быть выполнен с возможностью определения режима разбиения и предсказания на основе оптимизации соотношения искажения-скорость (RDO), то есть выбора режима предсказания, который обеспечивает минимальное соотношение искажение-скорость. Такие термины, как «лучший», «минимум», «оптимальный» и т.д. в этом контексте не обязательно относятся к общему «лучшему», «минимуму», «оптимальному» и т.д., но также могут относиться к выполнению прекращения или критерия выбора, такому как значение, превышающее или падающее ниже порогового значения, либо другие характеристики, потенциально ведущие к «неоптимальному выбору», но уменьшающие сложность и время обработки.

Другими словами, модуль 262 разбиения может быть выполнен с возможностью разбиения блока 203 на более мелкие блочные разделы или подблоки (которые снова образуют блоки), например, итеративно с использованием разбиения на основе квадратичного дерева (QT), двоичного разбиения (BT) или разбиения на основе троичного дерева (TT) или любого их сочетания, и для выполнения, например, предсказания для каждого из разбиений блока или подблоков, при этом выбор режима включает в себя выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разбиений или подблоков блока.

Далее более подробно поясняется разбиение (например, посредством модуля 260 разбиения) и обработка предсказания (посредством модуля 244 интер-предсказания и модуля 254 интра-предсказания), выполняемые примерным видеокодером 20.

Разбиение

Модуль 262 разбиения может разбивать (или разделять) текущий блок 203 на более мелкие элементы разбиения, например меньшие блоки квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут называться подблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также относится к разбиению дерева или иерархическому разбиению дерева, в котором корневой блок, например, на уровне корневого дерева 0 (уровень иерархии 0, глубина 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлы на уровне дерева 1 (уровень иерархии 1, глубина 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень дерева 2 (уровень иерархии 2, глубина 2) и т.д. до тех пор, пока разбиение не будет завершено, например, потому что выполнен критерий завершения, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются блоками-листьями или концевыми узлами дерева. Дерево, использующее разбиение на два элемента разбиения, называется двоичным деревом (BT), дерево, использующее разбиение на три элемента разбиения, называется тройным деревом (TT), а дерево, использующее разбиение на четыре элемента разбиения, называется квадродеревом (QT).

Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью снимка. Что касается, например, HEVC и VVC, блок может быть или соответствовать единичному блоку дерева кодирования (CTU), единичному блоку кодирования (CU), единичному блоку предсказания (PU) и единичному блоку преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).

Например, единичный блок дерева кодирования (CTU) может быть или содержать CTB дискретных отсчетов яркости, два соответствующих CTB дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или CTB дискретных отсчетов монохромного снимка или снимка, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов. Соответственно, блок дерева кодирования (CTB) может быть блоком N×N дискретных отсчетов для некоторого значения N, так что разбиение компонента на CTB является разбиением. Единичный блок кодирования (CU) может быть или содержать блок кодирования дискретных отсчетов яркости, два соответствующих блока кодирования дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или блок кодирования дискретных отсчетов монохромного снимка или снимка, который кодируется с использованием трех отдельных цветовых плоскости и синтаксические структуры, используемые для кодирования дискретных отсчетов. Соответственно, блок кодирования (CB) может быть блоком M×N дискретных отсчетов для некоторых значений M и N, так что разделение CTB на блоки кодирования является разбиением.

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

В вариантах осуществления, например согласно разрабатываемым в настоящее время наиболее новым стандарту видеокодирования, который называется универсальным видеокодированием (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В структуре блока QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единичный блок дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Концевые узлы квадродерева дополнительно разделяются посредством структуры двоичного дерева или троичного (или тройного) дерева. Концевые узлы дерева разделения называются единичными блоками кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разбиения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с структурой блока QTBT можно использовать множественное разбиение, например разбиение троичного дерева.

В одном примере модуль 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разбиения, описанных в данном документе.

Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предварительно определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы интра-предсказания и/или режимы интер-предсказания.

Интра-предсказание

Набор режимов интра-предсказания может содержать 35 различных режимов интра-предсказания, например ненаправленные режимы, такие как режим постоянного (или среднего) и планарный режим, или направленные режимы, например, как определено в HVEC, или может содержать 67 различных режимов интра-предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определено для VVC.

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

Модуль 254 интра-предсказания (или, в общем, модуль 260 выбора режима) дополнительно выполнен с возможностью вывода параметров интра-предсказания (или, в общем, информации, указывающей выбранный режим интра-предсказания для блока) в модуль 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 закодированного снимка, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.

Интер-предсказание

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

В дополнение к вышеупомянутым режимам предсказания могут применяться режим перескока и/или прямой режим.

Модуль 244 интер-предсказания может включать в себя модуль оценки движения (ME) (не показан на Фиг. 2) и модуль компенсации движения (MC) (оба не показаны на Фиг. 2). Модуль оценки движения может быть выполнен с возможностью приема или получения блока 203 снимка (блока 203 текущего снимка текущего снимка 17) и декодированного снимка 231, или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или более множество других/различных ранее декодированных снимков 231 для оценки движения. Например, видеопоследовательность может содержать текущий снимок и ранее декодированные снимки 231, или, другими словами, текущий снимок и ранее декодированные снимки 231 могут быть частью или формировать последовательность снимков, образующих видеопоследовательность.

Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или различных снимков из множества других снимков и подает опорный снимок (или индекс опорного снимка) и/или смещение (пространственное смещение) между положением (X, Y) координатами опорного блока и положением текущего блока в качестве взаимосвязанных параметров предсказания в модуль оценки движения. Это смещение также называется вектором движения (MV).

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

Энтропийное кодирование

Модуль 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разбиением интервала вероятности (PIPE) или другого способа или методики энтропийного кодирования) или пропуска (без сжатия) в отношении квантованных коэффициентов 209, параметров интер-предсказания, параметров интра-предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения данных 21 кодированного снимка, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.

Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь модуль 208 квантования и модуль 210 обратного квантования, объединенные в единый блок.

Декодер и способ декодирования

На Фиг. 3 показан пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема данных 21 кодированного снимка (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированный снимок 331. Данные кодированного снимка или кодированный битовый поток содержат информацию для декодирования данных кодированного снимка, например данных, которые представляют блоки снимка кодированного слайса видео (и/или клеток или групп клеток) и связанные элементы синтаксиса.

В примере на Фиг. 3 декодер 30 содержит модуль 304 энтропийного декодирования, модуль 310 обратного квантования, модуль 312 обработки обратного преобразования, модуль 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных снимков, модуль 360 применения режима, модуль 344 интер-предсказания и модуль 354 интра-предсказания. Модуль 344 интер-предсказания может быть или включать в себя модуль компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг. 2.

Как описано в отношении кодера 20, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных снимков, модуль 344 интер-предсказания и модуль 354 интра-предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, модуль 310 обратного квантования может быть идентичен по функции модулю 110 обратного квантования, модуль 312 обработки обратного преобразования может быть идентичен по функции модулю 212 обработки обратного преобразования, модуль 314 восстановления может быть идентичен по функции модулю 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных снимков может быть идентичен по функции буферу 230 декодированных снимков. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.

Энтропийное декодирование

Модуль 304 энтропийного декодирования выполнен с возможностью синтаксического анализа (разбора) битового потока 21 (или, в общем, данных 21 кодированного снимка) и выполнения, например, энтропийного декодирования в отношении данных 21 кодированного снимка, чтобы получить, например, квантованные коэффициенты 309 и/или параметры декодированного кодирования (не показаны на Фиг. 3), например, любые или все из параметров интер-предсказания (например, индекс опорного снимка и вектор движения), параметр интра-предсказания (например, индекс или режим интра-предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие элементы синтаксиса. Модуль 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении модуля 270 энтропийного кодирования кодера 20. Модуль 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров интер-предсказания, параметра интра-предсказания и/или других элементов синтаксиса модулю 360 применения режима и других параметров другим модулям декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим элементам синтаксиса могут приниматься и/или использоваться группы клеток и/или клетки и соответствующие элементы синтаксиса.

Обратное квантование

Модуль 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из данных 21 кодированного снимка (например, посредством синтаксического анализа и/или декодирования, например, посредством модуля 304 энтропийного декодирования) и применять на основе параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или клетке или группе клеток), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.

Обратное преобразование

Модуль 312 обработки обратного преобразования может быть выполнен с возможностью принимать деквантованные коэффициенты 311, также называемые коэффициентами 311 преобразования, и применять преобразование к деквантованным коэффициентам 311, чтобы получить восстановленные остаточные блоки 213 в области дискретных отсчетов. Восстановленные остаточные блоки 213 также могут упоминаться как блоки 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или принципиально аналогичным процессом обратного преобразования. Модуль 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из данных 21 кодированного снимка (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое должно применяться к деквантованным коэффициентам 311.

Восстановление

Модуль 314 восстановления (например, сумматор 314) может быть выполнен с возможностью добавления восстановленного остаточного блока 313 к блоку 365 предсказания, чтобы получить восстановленный блок 315 в области дискретных отсчетов, например, посредством добавления значений дискретных отсчетов восстановленных остаточный блок 313 и значения дискретных отсчетов блока 365 предсказания.

Фильтрация

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

Буфер декодированных снимков

Декодированные видеоблоки 321 снимка затем сохраняются в буфере 330 декодированных снимков, который сохраняет декодированные снимки 331 в качестве опорных снимков для последующей компенсации движения для других снимков и/или для вывода, соответственно, отображения.

Декодер 30 выполнен с возможностью вывода декодированного снимка 311, например, через вывод 312 для представления или просмотра пользователю.

Предсказание

Модуль 344 интер-предсказания может быть идентичен модулю 244 интер-предсказания (в частности, модулю компенсации движения), а модуль 354 интра-предсказания может быть идентичен модулю 254 интер-предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разбиения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, посредством анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Модуль 360 применения режима может быть выполнен с возможностью осуществления предсказания (интра- или интер-предсказания) для каждого блока на основе восстановленных снимков, блоков или соответствующих дискретных отсчетов (фильтрованных или нефильтрованных) для получения блока 365 предсказания.

Когда видеослайс кодируется как слайс с интра-кодированием (I), модуль 354 интра-предсказания модуля 360 применения режима конфигурируется для генерации блока 365 предсказания для блока снимка текущего видеослайса на основе сообщенного режима интра-предсказания и данных из ранее декодированных блоков текущего снимка. Когда видеоснимок кодируется как слайс, закодированный интер-кодированием (то есть B или P), модуль 344 интер-предсказания (например, модуль компенсации движения) модуля 360 применения режима конфигурируется для создания блоков 365 предсказания для видеоблока текущего видео слайса на основе векторов движения и других элементов синтаксиса, полученных от модуля 304 энтропийного декодирования. Для интер-предсказания блоки предсказания могут быть созданы из одного из опорных снимков в одном из списков опорных снимков. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных снимков, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп клеток (например, групп видеоклеток) и/или клеток (например, видеоклеток) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B клеток и/или клеток.

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

Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования снимка с использованием слайсов (также называемых видео слайсами), при этом снимок может быть разделен на или декодирован с использованием одного или более слайсов (обычно без перекрытия), и каждый слайс может содержать один или более блоков (например, CTU).

Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования снимка с использованием групп клеток (также называемых группами клеток) и/или клеток (также называемых видеоклетками), при этом снимок может быть разделен на или декодирован с использованием одной или более групп клеток (обычно не перекрывающихся), и каждая группа клеток может содержать, например, один или более блоков (например, CTU) или одну или более клеток, при этом каждая клетка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.

Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 закодированного снимка. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без модуля 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь модуль 310 обратного квантования и модуль 312 обработки обратного преобразования, объединенные в один модуль.

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

Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения подблока в аффинном, планарном режимах, режиме ATMVP, временным векторам движения и т.п.). Например, значение вектора движения ограничивается предварительно определенным диапазоном согласно его представляющему биту. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1)~2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth равна 16, то диапазон составляет -32768~32767; если bitDepth равна 18, то диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех подблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех подблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения согласно bitDepth.

Способ 1: удаление MSB (самого старшего бита) переполнения посредством следующих операций

где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или подблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или подблока, а ux и uy указывает промежуточное значение;

Например, если значение mvx равно -32769, то после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные количества хранятся как дополнение до двойки. Дополнением до двойки для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двойки является 0111,1111,1111,1111 (десятичное количество составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).

Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).

Способ 2: удаление MSB переполнения посредством усечения значения

vx=Clip3(-2bitDepth-1, 2bitDepth-1-1, vx)

vy=Clip3(-2bitDepth-1, 2bitDepth-1-1, vy)

где vx представляет собой горизонтальную компоненту вектора движения блока изображения или подблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или подблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:

Фиг. 4 является схематической диаграммой устройства 400 видеокодирования согласно варианту осуществления раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 с Фиг. 1A или кодер, такой как видеокодер 20 с Фиг. 1А.

Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и модули 420 приемника (Rx) для приема данных; процессор, логический модуль или центральный процессор (CPU) 430 для обработки данных; модули 440 передатчика (Tx) и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования может также содержать оптико-электрические (OE) компоненты и электрическо-оптические (EO) компоненты, подключенные к входным портам 410, модулям 420 приемника, модулям 440 передатчика и выходным портам 450 для выход или попадание оптических или электрических сигналов.

Процессор 430 реализован аппаратно и программно. Процессор 430 может быть реализован как одна или более микросхем ЦП (CPU), ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, модулями 420 приемника, модулями 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Таким образом, разрешение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает преобразование устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.

Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 460 может быть, например, энергозависимой и/или долговременной и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую память с произвольным доступом (SRAM)).

Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 по Фиг. 1 согласно примерному варианту осуществления.

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

Память 504 в устройстве 500 может быть постоянным запоминающим устройством (ПЗУ, ROM) или устройством оперативной памяти (ОЗУ, RAM) в реализации. В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502, используя шину 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы.

Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.

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

Предпосылки касаемо кодирования режима интра-предсказания

В текущей версии VTM 4.0 для кодирования режима интра-предсказания создается список из 6-MPM (наиболее вероятных режимов). Список MPM вводится для уменьшения количества битов, необходимых для кодирования режима интра-предсказания текущего блока. Список 6-MPM строится на основе режимов интра-предсказания соседних блоков текущего блока. Когда режим интра-предсказания текущего блока попадает в список MPM, кодируется индекс, а не фактический режим, который может использовать меньше битов. Когда режим интра-предсказания текущего блока не попадает в список MPM, усеченная бинаризация используется для кодирования режима интра-предсказания текущего блока. Список MPM обеспечивает хорошее предсказание для режима интра-предсказания текущего блока.

Список MPM для множественной опорной строки (MRL).

В VTM 4.0 инструмент кодирования с множественными опорными строками (MRL) может использовать одну из множества соседних опорных строк для предсказания дискретных отсчетов текущего блока. Когда значение индекса строки MRL равно 0 (т.е. используется наиболее близкая соседняя опорная строка, как показано на Фиг. 6), используется обычный список из 6 MPM, содержащий планарный и DC. Когда значение индекса строки MRL не равно 0, используется список из 6-MPM, за исключением планарного (т.е. значение 0) и DC (т.е. значение 1).

Список MPM для режима кодирования внутри подраздела (ISP)

Режим кодирования внутри подраздела (ISP) - это инструмент, недавно принятый в VTM4.0 (JVET-M0102). Блоки с интра-предсказанием яркости делятся по вертикали или горизонтали на 2 или 4 части, в зависимости от размеров блока, как показано в таблице 1. На Фиг. 7 и 8 показаны примеры двух возможностей. Все подразделы удовлетворяют условию наличия не менее 16 дискретных отсчетов.

Таблица 1: Количество подразделов в зависимости от размера блока

Размер блока Количество подразделов 4×4 Не разделен 4×8 и 8×4 2 Все остальные случаи 4

Когда включен режим кодирования внутри подраздела, в VTM 4.0 используется другой список MPM, в котором исключен режим DC. Режим внутри подраздела может применяться, когда значение индекса множественной опорной строки равно 0 (т.е. MRL не применяется к текущему блоку интра-предсказания). Все подразделы используют один режим интра-предсказания, поэтому список MPM создается один раз для интра-блока и совместно используется всеми подразделами.

Построение MPM может зависеть от режима разбиения ISP. Определены два режима разбиения: горизонтальный и вертикальный. Они показаны на Фиг. 7 и 8, где горизонтальное разделение/разбиение показано вверху, а вертикальное разделение/разбиение показано внизу.

В нижеследующей Таблице 2 приведены характеристики списка 3 MPM, используемого в VTM 4.0.

Таблица 2: различные 6-MPM, используемые в VTM 4.0 при различных обстоятельствах

Конфигурация MRL Конфигурация ISP Характеристика списка MPM - 6 MPM, но исключая планарный режим и режим DC 1 6 MPM, но исключая режим DC 0 6 MPM, включая планарный режим и режим DC

Предпосылки касаемо контекстного моделирования/кодирования CABAC.

Как показано на Фиг. 9, кодирование CABAC состоит из бинаризации, контекстного моделирования и двоичного арифметического кодирования. Бинаризация отображает элементы синтаксиса в двоичные символы (элементы дискретизации, бины). Контекстное моделирование оценивает вероятность каждого непропущенного (т.е. регулярно кодированного) бина на основе некоторого конкретного контекста. Наконец, двоичное арифметическое кодирование сжимает бины в биты в соответствии с оценочной вероятностью.

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

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

Предпосылки касаемо того, как определять соседей слева и сверху.

Кодирование режима интра-предсказания в отношении VVC зависит от режимов интра-предсказания его соседних блоков. А именно левого и верхнего блоков текущего блока. Их положение показано на Фиг. 10.

Сигнализация индекса MPM

Флаг (т.е. флаг MPM) используется, чтобы указывать, находится ли режим интра-предсказания текущего блока в списке MPM или нет. Когда флаг MPM имеет значение «истина» (т.е. значение 1), то режим интра-предсказания может быть определен с использованием индекса MPM. Индекс MPM кодируется с использованием усеченного унарного кода, как показано в нижеследующей Таблице 3, когда длина списка MPM равна 6. Когда флаг MPM - не истина, режим интра-предсказания текущего блока отсутствует в списке MPM, и режим кодируется с использованием усеченного двоичного кода. Другой пример индекса MPM, когда список MPM состоит из 5 режимов, показан в Таблице 4. Строчка бинов для индекса кодирования называется усеченным унарным кодом (неусеченным двоичным кодом для кодирования режимов без MPM). Обратите внимание, что для усеченного унарного кода бины 0 и 1 взаимозаменяемы без потери общности. В одном примере индекс MPM, когда список MPM состоит из 5 режимов, также может быть закодирован, как показано в Таблице 5.

Таблица 3: Кодирование флага MPM и индекса MPM при 6 записях в списке MPM

Режимы интра-предсказания Флаг MPM Индекс MPM Строчка бинов индекса MPM Режимы MPM (6) 1 0 0 1 10 2 110 3 1110 4 11110 5 11111 0 Усеченный двоичный код (TB)

Таблица 4: Кодирование флага MPM и индекса MPM, когда в списке MPM 5 записей

Режимы интра-предсказания Флаг MPM Индекс MPM Строчка бинов индекса MPM Режимы MPM (5) 1 0 0 1 10 2 110 3 1110 4 1111 0 Усеченный двоичный код (TB)

Таблица 5: Кодирование флага MPM и индекса MPM, когда в списке MPM 5 записей, и альтернативное кодовое слово для индекса MPM

Режимы интра-предсказания Флаг MPM Индекс MPM Строчка бинов индекса MPM Режимы MPM (5) 1 0 1 1 01 2 001 3 0001 4 0000 0 Усеченный двоичный код (TB)

Предпосылки касаемо планарного режима, режима DC, горизонтального, вертикального режимов и угловых режимов: Режимы интра-предсказания: планарный (значение 0) и DC (значение 1). Другие режимы интра-предсказания называются угловыми режимами предсказания.

В VTM4.0 следующая структура синтаксиса, как показано в Таблице 6, используется для передачи информации о режиме интра-предсказания.

Таблица 6: Разбор синтаксиса в VTM4.0

если (intra_luma_ref_idx[x0][y0] == 0 && intra_subpartitions_mode_flag[x0][y0] == 0) intra_luma_mpm_flag[x0][y0] ае(v) если (intra_luma_mpm_flag[x0][y0]) { intra_luma_mpm_idx[x0][y0] ае(v) } иначе intra_luma_mpm_remainder[x0][y0] ае(v)

intra_luma_ref_idx[x0][y0] может иметь три значения: 0, 1 или 2, указывающих, какая опорная строка используется. Когда intra_luma_ref_idx[x0][y0] отсутствует, предполагается, что он равен 0.

intra_subpartitions_mode_flag[x0][y0], равное 1, указывает, что текущая единица интра-кодирования дополнительно разделена (т.е. включен режим ISP). intra_subpartitions_mode_flag[x0][y0], равный 0, указывает, что текущая единица интра-кодирования не разделена на прямоугольные подразделы блока преобразования. Когда intra_subpartitions_mode_flag[x0][y0] отсутствует, предполагается, что он равен 0.

Элементы синтаксиса intra_luma_mpm_flag[x0][y0], intra_luma_mpm_idx[x0][y0] и intra_luma_mpm_remainder[x0][y0] определяют режим интра-предсказания для дискретных отсчетов яркости.

intra_luma_mpm_flag[x0][y0] указывает, получен ли режим интра-предсказания текущего блока из списка MPM или нет. Если значение intra_luma_mpm_flag[x0][y0] равно 1, это указывает, что режим интра-предсказания текущего блока получен из списка MPM; Если значение intra_luma_mpm_flag[x0][y0] равно 0, это указывает, что режим интра-предсказания текущего блока не получен из списка MPM. Когда intra_luma_mpm_flag[x0][y0] отсутствует, предполагается, что он равен 1. intra_luma_mpm_flag[x0][y0] соответствует флагу MPM в Таблице 3.

intra_luma_mpm_idx соответствует индексу MPM в Таблице 3 и использует усеченный унарный код, как показано в Таблице 3.

intra_luma_mpm_remainder представляет усеченный двоичный код режима, которого нет в списке MPM.

В варианте 1 осуществления раскрыт элемент синтаксиса intra_luma_planar_flag и ctx.

Согласно одному варианту осуществления изобретения вводится флаг intra_luma_planar_flag. Если значение intra_luma_mpm_flag - истина (например, значение равно 1), декодер получает, посредством анализа, intra_luma_planar_flag, чтобы определить, является ли режим интра-предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_planar_flag равно 1, режим интра-предсказания текущего блока является планарным режимом. Когда значение intra_luma_planar_flag равно 0, режим интра-предсказания текущего блока не является планарным режимом. Если intra_luma_planar_flag отсутствует (например, этот флаг не может быть получен анализом из потока битов в случае, если intra_luma_mpm_flag равно 0), значение intra_luma_planar_flag выводится как 0.

Если написать в стиле спецификации рабочего проекта VVC, режим интра-предсказания текущего блока

IntraPredModeY[xCb][yCb] получается путем применения следующей процедуры:

- Если intra_luma_mpm_flag[xCb][yCb] равно 1,

- Если intra_luma_planar_flag[xCb][yCb] равно 1, intraPredModeY[xCb][yCb] устанавливается равным INTRA_PLANAR.

- В противном случае IntraPredModeY[xCb][yCb] устанавливается равным candModeList[intra_luma_mpm_idx[xCb][yCb]].

Если режим интра-предсказания не является планарным режимом (то есть, значение intra_luma_planar_flag равно 0), декодер дополнительно разбирает элемент синтаксиса intra_luma_mpm_idx.

В одном примере значение intra_luma_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок нормальным интра-блоком или нет.

В одном примере значение intra_luma_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок интра-блоком с включенной множественной опорной строкой (MRL) или нет.

В одном примере значение intra_luma_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок интра-блоком с включенным режимом кодирования внутри подраздела (ISP) или нет.

В примере позиция intra_luma_planar_flag размещена как в Таблице 7.

Таблица 7: синтаксис с intra_luma_planar_flag

если (intra_luma_ref_idx[x0][y0] == 0 && intra_subpartitions_mode_flag[x0][y0] == 0) intra_luma_mpm_flag[x0][y0] ае(v) если (intra_luma_mpm_flag[x0][y0]) { intra_luma_planar_flag[x0][y0] ае(v) если (!intra_luma_planar_flag[x0][y0]) intra_luma_mpm_idx[x0][y0] ае(v) } иначе intra_luma_mpm_remainder[x0][y0] ае(v)

Вариант 2 осуществления: intra_luma_not_planar_flag и ctx

Согласно одному варианту осуществления изобретения вводится элемент синтаксиса intra_luma_not_planar_flag.

Если значение intra_luma_mpm_flag - истина (например, значение равно 1), декодер анализирует intra_luma_not_planar_flag, чтобы определить, является ли режим интра-предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_not_planar_flag равно 1, режим интра-предсказания текущего блока не является планарным режимом; когда значение intra_luma_not_planar_flag равно 0, режим интра-предсказания текущего блока является планарным режимом. Если intra_luma_not_planar_flag отсутствует в потоке битов, значение intra_luma_not_planar_flag выводится как 1. В примере позиция intra_luma_not_planar_flag размещена, как в Таблице 8.

Если режим интра-предсказания текущего блока не является планарным режимом (то есть значение intra_luma_not_planar_flag равно 1), декодер дополнительно анализирует элемент синтаксиса intra_luma_mpm_idx.

Написано в стиле спецификации рабочего проекта VVC, режим интра-предсказания текущего блока

IntraPredModeY[xCb][yCb] получается путем применения следующей процедуры:

- Если intra_luma_mpm_flag[xCb][yCb] равно 1,

- Если intra_luma_not_planar_flag[xCb][yCb] равно , intraPredModeY[xCb][yCb] устанавливается равным INTRA_PLANAR.

- В противном случае IntraPredModeY[xCb][yCb] устанавливается равным candModeList[intra_luma_mpm_idx[xCb][yCb]].

В одном примере значение intra_luma_not_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок нормальным интра-блоком или нет.

В одном примере значение intra_luma_not_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок интра-блоком с включенной множественной опорной строкой (MRL) или нет.

В одном примере значение intra_luma_not_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок интра-блоком с включенным режимом кодирования внутри подраздела (ISP) или нет.

Таблица 8: синтаксис с intra_luma_not_planar_flag

если (intra_luma_ref_idx[x0][y0] == 0 && intra_subpartitions_mode_flag[x0][y0] == 0) intra_luma_mpm_flag[x0][y0] ае(v) если (intra_luma_mpm_flag[x0][y0]) { intra_luma_not_planar_flag[x0][y0] ае(v) если (intra_luma_not_planar_flag[x0][y0]) intra_luma_mpm_idx[x0][y0] ае(v) } иначе intra_luma_mpm_remainder[x0][y0] ае(v)

Вариант 3 осуществления: intra_luma_planar_flag и MRL, и декодирование с пропуском

Согласно одному варианту осуществления изобретения вводится флаг intra_luma_planar_flag.

Если значение intra_luma_mpm_flag - истина (например, значение равно 1), декодер получает посредством анализа то, равно ли значение индекса опорной строки (intra_luma_ref_idx) 0 или нет. Если значение индекса опорной строки равно 0, значение intra_luma_planar_flag анализируется, чтобы определить, является ли режим интра-предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_planar_flag равно 1, режим интра-предсказания текущего блока является планарным режимом. Когда значение intra_luma_planar_flag равно 0, режим интра-предсказания текущего блока не является планарным режимом. Если intra_luma_planar_flag отсутствует, значение intra_luma_planar_flag выводится как 0.

Если режим интра-предсказания текущего блока не является планарным режимом (то есть, значение intra_luma_planar_flag равно 0), декодер дополнительно анализирует intra_luma_mpm_idx.

В одном примере значение intra_luma_planar_flag закодировано кодированием CABAC с пропуском (т.е. не закодировано контекстным кодированием CABAC), и декодер получает посредством анализа флаг без использования какого-либо контекста CABAC.

Положение intra_luma_planar_flag показано в Таблице 9.

Таблица 9: синтаксис с intra_luma_planar_flag, и он закодирован с пропуском

если (intra_luma_ref_idx[x0][y0] == 0 && intra_subpartitions_mode_flag[x0][y0] == 0) intra_luma_mpm_flag[x0][y0] ае(v) если (intra_luma_mpm_flag[x0][y0]) { если (intra_luma_ref_idx[x0][y0] == 0) intra_luma_planar_flag[x0][y0] ае(v) если (!intra_luma_planar_flag[x0][y0]) intra_luma_mpm_idx[x0][y0] ае(v) } иначе intra_luma_mpm_remainder[x0][y0] ае(v)

Вариант 4 осуществления: intra_luma_not_planar_flag и MRL, и декодирование с пропуском

Согласно одному варианту осуществления изобретения вводится флаг intra_luma_not_planar_flag.

Если значение intra_luma_mpm_flag - истина (например, значение равно 1), декодер анализирует, равно ли значение индекса опорной строки 0 или нет. Если значение индекса опорной строки равно 0, intra_luma_not_planar_flag анализируется, чтобы определить, является ли режим интра-предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_not_planar_flag равно 1, режим интра-предсказания текущего блока не является планарным режимом. Когда значение intra_luma_planar_flag равно 0, режим интра-предсказания текущего блока является планарным режимом. Если intra_luma_not_planar_flag отсутствует, значение intra_luma_not_planar_flag выводится как 1.

Если режим интра-предсказания текущего блока не является планарным режимом (то есть, значение intra_luma_not_planar_flag равно 1), декодер дополнительно анализирует intra_luma_mpm_idx.

В одном примере значение intra_luma_not_planar_flag закодировано кодированием CABAC с пропуском (т.е. не закодировано контекстным кодированием CABAC), и декодер получает посредством анализа флаг без использования какого-либо контекста CABAC.

Положение intra_not_luma_planar_flag размещено как в Таблице 10.

Таблица 10: синтаксис с intra_luma_not_planar_flag, и он закодирован с пропуском

если (intra_luma_ref_idx[x0][y0] == 0 && intra_subpartitions_mode_flag[x0][y0] == 0) intra_luma_mpm_flag[x0][y0] ае(v) если (intra_luma_mpm_flag[x0][y0]) { если (intra_luma_ref_idx[x0][y0] == 0) intra_luma_not_planar_flag[x0][y0] ае(v) если (intra_luma_not_planar_flag[x0][y0]) intra_luma_mpm_idx[x0][y0] ае(v) } иначе intra_luma_mpm_remainder[x0][y0] ае(v)

Вариант 5 осуществления: intra_luma_not_planar_flag и MRL, и контекстное кодирование CABAC (отличие от варианта 4 осуществления состоит в том, что intra_luma_not_planar_flag кодируется контекстным кодированием CABAC вместо кодирования с пропуском).

Согласно одному варианту осуществления изобретения вводится флаг intra_luma_not_planar_flag.

Если значение intra_luma_mpm_flag - истина (например, значение равно 1), декодер анализирует, равно ли значение индекса опорной строки 0 или нет. Если значение индекса опорной строки равно 0, intra_luma_not_planar_flag анализируется, чтобы определить, является ли режим интра-предсказания текущего блока планарным режимом или нет. Когда значение intra_luma_not_planar_flag равно 1, режим интра-предсказания текущего блока НЕ является планарным режимом. Когда значение intra_luma_planar_flag равно 0, режим интра-предсказания текущего блока является планарным режимом. Если intra_luma_not_planar_flag отсутствует, значение intra_luma_not_planar_flag выводится как 1.

Если режим интра-предсказания текущего блока не является планарным режимом (т.е. значение intra_luma_not_planar_flag равно 1), декодер дополнительно анализирует intra_luma_mpm_idx.

В одном примере значение intra_luma_not_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок нормальным интра-блоком или нет.

В одном примере значение intra_luma_not_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок интра-блоком с включенной множественной опорной строкой (MRL) или нет.

В одном примере значение intra_luma_not_planar_flag закодировано контекстным кодированием CABAC (т.е. не закодировано кодированием CABAC с пропуском), и декодер получает посредством анализа флаг с использованием контекста на основе того, является ли текущий блок интра-блоком с включенным режимом кодирования внутри подраздела (ISP) или нет.

Положение intra_not_luma_planar_flag размещено, как показано в Таблице 11.

Таблица 11: синтаксис с intra_luma_not_planar_flag, и он закодирован контекстным кодированием CABAC

если (intra_luma_ref_idx[x0][y0] == 0 && intra_subpartitions_mode_flag[x0][y0] == 0) intra_luma_mpm_flag[x0][y0] ае(v) если (intra_luma_mpm_flag[x0][y0]) { если (intra_luma_ref_idx[x0][y0] == 0) intra_luma_not_planar_flag[x0][y0] ае(v) если (intra_luma_not_planar_flag[x0][y0]) intra_luma_mpm_idx[x0][y0] ае(v) } иначе intra_luma_mpm_remainder[x0][y0] ае(v)

В примере,

Добавить intra_luma_not_planar_flag

если (intra_luma_mpm_flag[x0][y0]) { если (intra_luma_ref_idx[x0][y0] == 0) intra_luma_not_planar_flag[x0][y0] ае(v) если (intra_luma_not_planar_flag[x0][y0]) intra_luma_mpm_idx[x0][y0] ае(v) } иначе intra_luma_mpm_remainder[x0][y0] ае(v) }

intra_luma_mpm_flag[ ][ ] FL cMax=1 intra_luma_not_planar_flag[ ][ ] FL cMax=1 intra_luma_mpm_idx[ ][ ] Tr cMax=4, cRiceParam=0

Когда intra_luma_not_planar_flag[x0][y0] отсутствует, предполагается, что он равен 1.

В приведенной ниже Таблице 12 показан пример назначения ctxInc элементам синтаксиса с контекстно-кодированными бинами.

Таблица 12 - Присвоение ctxInc элементам синтаксиса с контекстно-кодированными бинами Элемент синтаксиса binIdx 0 1 2 3 4 >= 5 intra_subpartition_split_flag 0 нд нд нд нд нд intra_luma_mpm_flag[ ][ ] 0 нд нд нд нд нд intra_luma_not_planar_flag[ ][ ] !intra_subpartitions_mode_flag нд нд нд нд нд intra_luma_mpm_idx[ ][ ] обход пропуск пропуск пропуск нд нд intra_luma_mpm_remainder[ ][ ] обход пропуск пропуск пропуск пропуск пропуск

В варианте осуществления список MPM создается согласно следующему процессу.

8.4.2 Процесс выведения для режима интра-предсказания яркости

Входными данными в этот процесс является следующее:

- местоположение яркости (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования яркости относительно верхнего левого дискретного отсчета яркости текущего изображения,

- переменная cbWidth, указывающая ширину текущего блока кодирования в дискртеных отсчетах яркости,

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

В этом процессе выводится режим IntraPredModeY[xCb][yCb] интра-предсказания яркости.

Таблица 13 определяет значение для режима интра-предсказания IntraPredModeY[xCb][yCb] и соответствующие имена.

Таблица 13 - Спецификация режима интра-предсказания и соответствующие имена

Режим интра-предсказания Соответствующие имена 0 INTRA_PLANAR 1 INTRA_DC 2..66 INTRA_ANGULAR2..INTRA_ANGULAR66 81..83 INTRA_LT_CCLM, INTRA_L_CCLM, INTRA_T_CCLM

ПРИМЕЧАНИЕ - : Режимы интра-предсказания INTRA_LT_CCLM, INTRA_L_CCLM и INTRA_T_CCLM применимы только к компонентам цветности.

IntraPredModeY[xCb][yCb] выводится следующим образом:

- Если intra_luma_not_planar_flag[xCb][yCb] равно 1, применяются следующие упорядоченные этапы:

1. Соседние местоположения (xNbA, yNbA) и (xNbB, yNbB) устанавливаются равными (xCb - 1, yCb+cbHeight - 1) и (xCb+cbWidth - 1, yCb - 1), соответственно.

2. Если X заменяется на A или B, переменные candIntraPredModeX выводятся следующим образом:

- Вызывается процесс выведения доступности для блока: Процесс проверки доступности соседних блоков вызывается с местоположением (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением (xNbY, yNbY), установленным равным (xNbX, yNbX) в качестве входных данных, а выходу присваивается availableX.

- Потенциально подходящий режим интра-предсказания candIntraPredModeX выводится следующим образом:

- Если истинным является одно или более из следующих условий, candIntraPredModeX устанавливается равным INTRA_PLANAR.

- Значением переменной availableX является ЛОЖЬ (FALSE).

- CuPredMode[xNbX][yNbX] не равен MODE_INTRA, а ciip_flag[xNbX][yNbX] не равен 1.

- pcm_flag[xNbX][yNbX] равен 1.

- X равно B и yCb - 1 меньше, чем ((yCb >> CtbLog2SizeY) << CtbLog2SizeY).

- В противном случае CandIntraPredModeX устанавливается равным IntraPredModeY[xNbX][yNbX],

где X заменяется либо соседним блоком A, либо B, местоположение яркости (xCb, yCb) определяет верхний левый дискретный отсчет текущего блока кодирования яркости относительно верхнего левого дискретного отсчета яркости текущего изображения, местоположение (xNbA, yNbA) соседа A устанавливается равным (xCb - 1, yCb + cbHeight - 1), местоположение (xNbB, yNbB) соседа B устанавливается равным (xCb+cbWidth - 1, yCb - 1), переменная cbWidth задает ширину текущего блока кодирования в дискретных отсчетах яркости, переменная cbHeight задает высоту текущего блока кодирования в дискретных отсчетах яркости, CuPredMode представляет текущий режим предсказания, SizeY представляет размер Y компонентов блока дерева кодирования.

3. CandModeList [x] с x=0..4 выводится следующим образом:

- Если CandIntraPredModeB равен candIntraPredModeA, а candIntraPredModeA больше INTRA_DC, candModeList[x] с x=0..4 выводится следующим образом:

candModeList[0] = candIntraPredModeA (8-10)

candModeList[1] = 2 + ((candIntraPredModeA+61)% 64) (8-12)

candModeList[2] = 2 + ((candIntraPredModeA - 1)% 64) (8-13)

candModeList[3] = INTRA_DC (8-11)

candModeList[4] = 2 + ((candIntraPredModeA+60)% 64) (8-14).

- В противном случае, если candIntraPredModeB не равно candIntraPredModeA, а candIntraPredModeA или candIntraPredModeB больше INTRA_DC, применяется следующее:

- Переменные minAB и maxAB выводятся следующим образом:

minAB = Min(candIntraPredModeA, candIntraPredModeB) (8-24)

maxAB = Max(candIntraPredModeA, candIntraPredModeB) (8-25)

- Если candIntraPredModeA и candIntraPredModeB оба больше, чем INTRA_DC, candModeList[x] с x=0..4 выводится следующим образом:

candModeList[0] = candIntraPredModeA (8-27)

candModeList[1] = candIntraPredModeB (8-29)

candModeList[2] = INTRA_DC (8-29)

- Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:

candModeList[3] = 2 + ((maxAB+61)% 64) (8-30)

candModeList[4] = 2 + ((maxAB - 1)% 64) (8-31)

- Иначе применяется следующее:

candModeList[3] = 2 + ((maxAB+60)% 64) (8-32)

candModeList[4] = 2 + ((maxAB)% 64) (8-33)

- В противном случае (candIntraPredModeA или candIntraPredModeB больше, чем INTRA_DC), candModeList[x] с x=0..4 выводится следующим образом:

candModeList[0] = maxAB (8-65)

candModeList[1] = INTRA_DC (8-66)

candModeList[2] = 2 + ((maxAB+61)% 64) (8-66)

candModeList[3] = 2 + ((maxAB - 1)% 64) (8-67)

candModeList[4] = 2 + ((maxAB+60)% 64) (8-68)

- Иначе применяется следующее:

candModeList[0] = INTRA_DC (8-71)

candModeList[1] = INTRA_ANGULAR50 (8-72)

candModeList[2] = INTRA_ANGULAR18 (8-73)

candModeList[3] = INTRA_ANGULAR46 (8-74)

candModeList[4] = INTRA_ANGULAR54 (8-75)

4. IntraPredModeY[xCb][yCb] получается путем применения следующей процедуры:

- Если intra_luma_mpm_flag[xCb][yCb] равно 1, IntraPredModeY[xCb][yCb] устанавливается равным candModeList [intra_luma_mpm_idx[xCb][yCb]].

- В противном случае IntraPredModeY[xCb][yCb] получается путем выполнения следующих упорядоченных этапов:

1. Когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = Swap(candModeList[i], candModeList[j]) (8-94)

2. IntraPredModeY[xCb][yCb] получается с помощью следующих упорядоченных этапов:

i. IntraPredModeY[xCb][yCb] устанавливается равным intra_luma_mpm_remainder[xCb][yCb].

ii. Значение IntraPredModeY[xCb][yCb] увеличивается на единицу.

iii. Для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше или равно candModeList[i], значение IntraPredModeY[xCb][yCb] увеличивается на единицу.

- В противном случае (intra_luma_not_planar_flag[xCb][yCb] равно 0) IntraPredModeY[xCb][yCb] устанавливается равным INTRA_PLANAR.

Переменная IntraPredModeY[x][y] с x = xCb..xCb + cbWidth - 1 и y = yCb..yCb + cbHeight - 1 устанавливается равной IntraPredModeY[xCb][yCb].

В одном примере режим интра-предсказания текущего блока (например, имя переменной luma_intra_mode) не является ни планарным режимом, ни режимом интра-предсказания в списке 5-MPM, его значение выводится и предсказание этого режима интра-предсказания выполняется следующим образом:

1. Выводится значение intra_luma_mpm_remainder из потока битов, и luma_intra_mode устанавливается равным значению intra_luma_mpm_remainder.

2. Значение IntraPredModeY[xCb][yCb] увеличивается на единицу;

3. Для i, равного от 0 до 4 (следует сравнить с каждой записью в списке 5-MPM), когда luma_intra_mode больше или равно MPM[i] (здесь MPM[0] соответствует первой записи в списке MPM, MPM[1] соответствует второй записи в списке MPM и т.д.), значение luma_intra_mode увеличивается на единицу.

4. Использование выведенного режима интра-предсказания (luma_intra_mode) и соответствующих опорных дискретных отсчетов для выполнения интра-предсказания.

(Сторона кодера)

В одном примере режим интра-предсказания текущего блока (например, имя переменной IntraPredModeY[xCb][yCb]) не является ни планарным режимом, ни режимом интра-предсказания в списке 5-MPM, и его значение кодируется следующим образом:

1. Когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = Swap(candModeList[i], candModeList[j]) (8-94)

2. Для i от 4 до 0 включительно, когда IntraPredModeY[xCb][yCb] больше, чем candModeList[i], значение IntraPredModeY[xCb][yCb] уменьшается на единицу.

3. значение IntraPredModeY[xCb][yCb] уменьшается на единицу;

4. значение IntraPredModeY[xCb][yCb] записывается в поток битов с кодовым словом с использованием процесса усеченной двоичной бинаризации, и все бины в кодовом слове кодируются с пропуском.

В кодере текущий режим уже известен, выводится кодовое слово (то есть intra_luma_mpm_remainder).

Для спецификации процесса усеченной двоичной бинаризации он определяется следующим образом (9.3.3.4 в JVET-Q2001-VE.docx): Процесс бинаризации усеченного двоичного кода (TB)

Входом в этот процесс является запрос на бинаризацию TB для элемента синтаксиса со значением synVal и cMax. Выходом этого процесса является бинаризация TB элемента синтаксиса. Строчка бинов процесса бинаризации TB элемента синтаксиса synVal задается следующим образом:

- Если synVal меньше u, строчка бинов TB получается путем вызова процесса бинаризации FL, указанного в пункте 9.3.3.7 для synVal, со значением cMax, равным (1 << k) - 1.

- В противном случае (synVal больше или равно u) строчка бинов TB получается путем вызова процесса бинаризации FL, указанного в разделе 9.3.3.7 для (synVal+u), со значением cMax, равным (1 << (k+1)) - 1.

В одной реализации вышеупомянутых вариантов осуществления планарный режим может неявно рассматриваться всегда как первая запись в неявном списке 6-MPM. Этот неявный список 6-MPM состоит из планарного (всегда первая запись) и 5 других режимов (которые могут быть явно описаны как список 5-MPM).

Это связано с тем, что если планарный режим всегда находится в первой позиции неявного списка 6-MPM, он может быть отделен от неявного списка MPM и ему назначается специальный флаг (например, флаг intra_luma_planar_flag или флаг intra_luma_not_planar_flag), чтобы указать, является ли режим интра-предсказания текущего блока планарным или нет.

В одном примере рассматривается введение intra_luma_not_planar_flag[x0][y0] в качестве специального флага, чтобы указать, является ли планарный режим режимом интра-предсказания текущего блока. Когда это планарный режим, intra_luma_not_planar_flag устанавливается в 0, в противном случае устанавливается в 1. В этом случае первый бин mpm_idx эквивалентен специальному флагу intra_luma_not_planar_flag.

Когда режим интра-предсказания текущего блока является планарным, индекс MPM равен 0, а кодированный бин равен 0. Когда режим интра-предсказания текущего блока непланарный, индекс MPM не равен 0, а первый бин индекса MPM всегда равен 1.

В примере, intra_luma_mpm_idx кодируется с использованием усеченного унарного (TR) кода,

Согласно одному варианту осуществления изобретения (неугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится за пределами границ снимка или соседний блок кодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• Left_mode - это не угловой режим и above_mode - не угловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: DC

MPM[2]: вертикальный режим (т.е. 50)

MPM[3]: горизонтальный режим (т.е. 18)

MPM[4]: вертикальный-4 (т.е. 46)

MPM[5]: по вертикали+4 (т.е. 54)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (неугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• Left_mode - это не угловой режим и above_mode - не угловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: DC

MPM[2]: вертикальный режим (т.е. 50)

MPM[3]: горизонтальный режим (т.е. 18)

MPM[4]: 66

MPM[5]: 2

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (неугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• Left_mode - это не угловой режим, а above_mode - не угловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: DC

MPM[2]: вертикальный режим (т.е. 50)

MPM[3]: горизонтальный режим (т.е. 18)

MPM[4]: 2

MPM[5]: 34

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (неугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode - неугловой режим, и above_mode - неугловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.д.):

MPM[1]: DC

MPM[2]: вертикальный режим (т.е. 50)

MPM[3]: горизонтальный режим (т.е. 18)

MPM[4]: 66

MPM[5]: 34

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (одноугловая ветвь, один - угловой, другой - неугловой):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все нижеследующие условия (помеченные маркерами пункты) оценены как истинные,

• Один из left_mode и above_mode - угловой режим, другой - неугловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

задают угловой режим как ang и получают следующее:

если left_mode - угловой режим, то ang = left_mode

в противном случае (above_mode - угловой режим) ang = above_mode

MPM[1]: ang

MPM[2]: DC

MPM[3]: 2 + ((ang + 61) % 64)

MPM[4]: 2 + ((ang - 1) % 64)

MPM[5]: 2 + ((ang + 60) % 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (одноугловая ветвь, один - угловой, другой - неугловой):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• Один из left_mode и above_mode - это угловой режим, другой - неугловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.д.):

задают угловой режим как ang и получают следующее:

если left_mode - угловой режим, ang = left_mode

в противном случае (above_mode - угловой режим) ang = above_mode

MPM[1]: DC

MPM[2]: ang

MPM[3]: 2 + ((ang + 61)% 64)

MPM[4]: 2 + ((ang - 1)% 64)

MPM[5]: 2 + ((ang + 60)% 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (одноугловая ветвь, один - угловой, другой - неугловой):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• Один из left_mode и above_mode - это угловой режим, другой - неугловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.д.):

задают угловой режим как ang и получают следующее:

если left_mode - угловой режим, ang = left_mode,

в противном случае (above_mode - угловой режим) ang = above_mode

MPM[1]: ang

MPM[2]: 2 + ((ang + 61) % 64)

MPM[3]: DC

MPM[4]: 2 + ((ang - 1) % 64)

MPM 5]: 2 + ((ang + 60) % 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (одноугловая ветвь, один - угловой, другой - неугловой):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все из следующих условий (помеченные маркерами пункты) оценены как истинные,

• Один из left_mode и above_mode - это угловой режим, другой - неугловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.д.):

задают угловой режим как ang и получают следующее:

если left_mode - угловой режим, ang = left_mode,

в противном случае (above_mode - угловой режим) ang = above_mode

MPM[0]: Планарный

MPM[1]: ang

MPM[2]: 2 + ((ang + 61) % 64)

MPM[3]: 2 + ((ang - 1) % 64)

MPM[4]: DC

MPM[5]: 2 + ((ang + 60) % 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (одноугловая ветвь, один - угловой, другой - неугловой):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• Один из left_mode и above_mode - это угловой режим, другой - неугловой режим.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

задают угловой режим как ang и получают следующее:

если left_mode - угловой режим, ang = left_mode

в противном случае (above_mode - это угловой режим) ang = above_mode

MPM[1]: ang

MPM[2]: 2 + ((ang + 61) % 64)

MPM[3]: 2 + ((ang - 1) % 64)

MPM[4]: 2 + ((ang + 60) % 64)

MPM[5]: DC

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (одноугловая ветвь, оба одинаково угловые):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - оба угловые режимы и они одинаковы.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: left_mode

MPM[2]: 2 + ((left_mode + 61)% 64)

MPM[3]: 2 + ((left_mode - 1)% 64)

MPM[4]: DC

MPM[5]: 2 + ((left_mode + 60)% 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

По одному варианту осуществления изобретения (одноугловая ветвь, оба одинаково угловые):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - оба угловые режимы и они одинаковы.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: DC

MPM[2]: left_mode

MPM[3]: 2 + ((left_mode + 61) % 64)

MPM[4]: 2 + ((left_mode - 1) % 64)

MPM[5]: 2 + ((left_mode + 60) % 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (одноугловая ветвь, оба одинаково угловые):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - оба угловые режимы и они одинаковы.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: left_mode

MPM[2]: DC

MPM[3]: 2 + ((left_mode + 61) % 64)

MPM[4]: 2 + ((left_mode - 1) % 64)

MPM[5]: 2 + ((left_mode + 60) % 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

По одному варианту осуществления изобретения (одноугловая ветвь, оба одинаково угловые):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - оба угловые режимы и они одинаковы.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: left_mode

MPM[2]: 2 + ((left_mode + 61) % 64)

MPM[3]: DC

MPM[4]: 2 + ((left_mode - 1) % 64)

MPM[5]: 2 + ((left_mode + 60) % 64)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

По одному варианту осуществления изобретения (одноугловая ветвь, оба одинаково угловые):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, являются ли режимы интра-предсказания соседних блоков угловыми режимами или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - оба угловые режимы и они одинаковы.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: left_mode

MPM[2]: 2 + ((left_mode + 61) % 64)

MPM[3]: 2 + ((left_mode - 1) % 64)

MPM[4]: 2 + ((left_mode + 60) % 64)

MPM[5]: DC

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (двухугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, является ли режим интра-предсказания соседних блоков угловым режимом или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - два разных угловых режима.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: left_mode

MPM[2]: above_mode

MPM[3]: DC

Переменные minAB и maxAB выводятся следующим образом:

minAB = Min(above_mode, left_mode)

maxAB = Max(above_mode, left_mode)

Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:

MPM[4] = 2 + ((maxAB + 61) % 64) (8-30)

MPM[5] = 2 + ((maxAB - 1) % 64) (8-31)

Иначе применяется следующее:

MPM[4] = 2 + ((maxAB + 60) % 64) (8-32)

MPM[5] = 2 + ((maxAB) % 64) (8-33)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (двухугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, является ли режим интра-предсказания соседних блоков угловым режимом или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - два разных угловых режима.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: above_mode

MPM[2]: left_mode

MPM[3]: DC

Переменные minAB и maxAB выводятся следующим образом:

minAB = Min(above_mode, left_mode)

maxAB = Max(above_mode, left_mode)

Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:

MPM[4] = 2 + ((maxAB + 61) % 64) (8-30)

MPM[5] = 2 + ((maxAB - 1) % 64) (8-31)

Иначе применяется следующее:

MPM[4] = 2 + ((maxAB + 60) % 64) (8-32)

MPM[5] = 2 + ((maxAB) % 64) (8-33)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (двухугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, является ли режим интра-предсказания соседних блоков угловым режимом или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - два разных угловых режима.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: left_mode

MPM[2]: DC

MPM[3]: above_mode

Переменные minAB и maxAB выводятся следующим образом:

minAB = Min(above_mode, left_mode)

maxAB = Max(above_mode, left_mode)

Если maxAB - minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:

MPM[4] = 2 + ((maxAB + 61) % 64) (8-30)

MPM[5] = 2 + ((maxAB - 1) % 64) (8-31)

Иначе применяется следующее:

MPM[4] = 2 + ((maxAB + 60)% 64) (8-32)

MPM[5] = 2 + ((maxAB) % 64) (8-33)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

Согласно одному варианту осуществления изобретения (двухугловая ветвь):

• Этап 1: получение режима интра-предсказания левого соседнего блока и режима интра-предсказания верхнего соседнего блока согласно Фиг. 10. Если режим интра-предсказания соседнего блока недоступен (например, соседний блок находится вне границ снимка или соседний блок закодирован интер-кодированием), режим интра-предсказания соседнего блока устанавливается как планарный. Режим интра-предсказания левого соседа обозначен как left_mode, а режим интра-предсказания верхнего соседнего блока обозначен как above_mode.

• Этап 2: определение того, является ли режим интра-предсказания соседних блоков угловым режимом или нет.

• Этап 3: если все следующие условия (помеченные маркерами пункты) оценены как истинные,

• left_mode и above_mode - два разных угловых режима.

тогда создается список режимов интра-предсказания, который содержит N записей режимов интра-предсказания следующим образом (например, N равно 5, где 1-я запись соответствует MPM[1], 2-я запись соответствует MPM[2] и т.п.):

MPM[1]: above_mode

MPM[2]: DC

MPM[3]: left_mode

Переменные minAB и maxAB выводятся следующим образом:

minAB = Min(above_mode, left_mode)

maxAB = Max(above_mode, left_mode)

Если maxAB-minAB находится в диапазоне от 2 до 62 включительно, применяется следующее:

MPM[4] = 2 + ((maxAB + 61) % 64) (8-30)

MPM[5] = 2 + ((maxAB - 1) % 64) (8-31)

Иначе применяется следующее:

MPM[4] = 2 + ((maxAB + 60) % 64) (8-32)

MPM[5] = 2 + ((maxAB) % 64) (8-33)

• Этап 4: предсказание текущего блока в соответствии с индексом (обозначенным как индекс MPM) и записями построенного списка.

В одной реализации варианта осуществления N установлено равным 6.

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

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

В одной реализации варианта осуществления упомянутый список режимов интра-предсказания называется списком MPM.

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

Например, первый бин кодового слова для mpm_index кодируется контекстным кодированием CABAC.

В одном примере его контекст определяется на основе того, применяется ли текущий интра-блок с множественными опорными строками, ISP или обычными интра-блоками. Всего создается три контекста для контекста CABAC первого бина кодового слова для mpm_index.

Если список MPM содержит как планарный режим, так и режим DC, то список MPM, с исключением планарного режима и режима DC из созданного списка MPM, используется инструментом кодирования с множественными опорными строками. В этом случае список 4-MPM используется при кодировании в режиме интра-предсказания с множественными опорными строками. В одном примере список MPM: {Planar (значение 0), DC (значение 1), VER (значение 50), HOR (значение 18), VER-4 (значение 46), VER+4 (значение 54)} после построения списка MPM, тогда список 4-MPM из {VER, HOR, VER-4, VER+4} используется при кодировании в режиме интра-предсказания, когда задействуется множественная опорная строка.

Если список MPM содержит планарный режим, но без режима DC, то список MPM, с исключением планарного режима из созданного списка MPM, используется инструментом кодирования с множественными опорными строками. В этом случае список 5-MPM используется при кодировании в режиме интра-предсказания с множественными опорными строками. В одном примере список MPM равен {Planar, VER, HOR, 43, 60, 3} после построения списка MPM, тогда список 5-MPM из {VER, HOR, 43, 60, 3} используется при кодировании в режиме интра-предсказания, когда задействуется множественная опорная строка.

В другом примере может потребоваться модификация синтаксиса для списка MPM без режима DC. Если список MPM не содержит DC, скорее всего режим DC будет очень часто использоваться в ветви без MPM (т.е. флаг mpm есть ложь). В этом случае вводится новый синтаксис, DC_mode. DC_mode, равный 1, указывает, что режимом интра-предсказания текущего блока является режим DC. DC_mode, равный 0, указывает, что режим интра-предсказания текущего блока не является режимом DC.

А именно, старый синтаксис без MPM изменен с

Если (mpm_flag)

иначе

intra_mode (с использованием TB)

на

Если (mpm_flag)

иначе

DC_mode

Если (DC_mode == 0)

intra_mode (с использованием TB)

Синтаксис DC_mode может быть закодирован с помощью контекстно адаптивного энтропийного кодера (Context Adaptive Entropy Coder, CABAC). DC_mode может быть закодирован в соответствии с различным количеством вероятностных моделей (другими словами, контекстом) посредством CABAC. С введением DC_Mode, максимальное значение для усеченного двоичного объекта составляет 60, т.е. 67 (количество всех режимов) - 6 (MPM) - 1 (DC). Тогда как без введения DC_mode максимальное значение для усеченного двоичного объекта составляет 61, то есть 67 (количество всех режимов) - 6 (MPM).

В частности, нижеследующие методы кодирования с предсказанием текущего блока реализуются устройством декодирования. Устройство декодирования может быть видеодекодером 30 на Фиг. 1А или декодером 30 на Фиг. 3.

Согласно варианту 1200 осуществления (см. Фиг. 12), способ интра-предсказания текущего блока, реализуемый устройством декодирования, включает в себя следующие этапы. На этапе 1201 устройство получает значение информации указания текущего блока. Информация указания указывается флагом, например, intra_luma_mpm_flag.

На этапе 1202 устройство определяет, указывает ли значение информации указания, что режим интра-предсказания текущего блока входит в набор наиболее вероятных режимов. Как описано выше, когда значение intra_luma_mpm_flag равно 1, режим интра-предсказания текущего блока содержится в наборе наиболее вероятных режимов. Когда значение intra_luma_mpm_flag равно 0, режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов.

На этапе 1203 устройство выводит режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока с помощью следующих упорядоченных этапов, когда значение информации указания указывает, что режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов:

i. IntraPredModeY[xCb][yCb] устанавливается равным intra_luma_mpm_remainder[xCb][yCb].

ii. Значение IntraPredModeY[xCb][yCb] увеличивается на единицу.

iii. Для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше или равно candModeList[i], значение IntraPredModeY[xCb][yCb] увеличивается на единицу.

Потенциально подходящий режим интра-предсказания candModeList[i] в наборе наиболее вероятных режимов получается следующим образом:

когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = Swap(candModeList[i], candModeList[j]).

На этапе 1204 устройство использует выведенный режим интра-предсказания (luma_intra_mode) и соответствующие опорные дискретные отсчеты для выполнения интра-предсказания.

Подробная информация об этом варианте 1200 осуществления показана в вышеупомянутых вариантах осуществления.

Согласно варианту осуществления 1300 (см. Фиг. 13) способ интра-предсказания текущего блока, реализуемый устройством кодирования, включает в себя следующие этапы. Устройство кодирования может быть видеокодером 20 по Фиг. 1A или кодером 20 по Фиг. 2.

На этапе 1301 устройство определяет, входит ли режим интра-предсказания текущего блока в набор наиболее вероятных режимов. На этапе 1302 устройство выводит переменную, используя режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока, посредством следующих упорядоченных этапов, когда режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока не содержится в наборе наиболее вероятных режимов:

i. Для i от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше, чем candModeList[i], значение IntraPredModeY[xCb][yCb] уменьшается на единицу;

ii. значение IntraPredModeY[xCb][yCb] уменьшается на единицу.

Потенциально подходящий режим интра-предсказания candModeList[i] в наборе наиболее вероятных режимов получается следующим образом:

когда candModeList[i] больше, чем candModeList[j] для i = 0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = Swap(candModeList[i], candModeList[j]).

На этапе 1303 устройство кодирует поток битов, причем двоичный поток включает в себя информацию упомянутой переменной, например, intra_luma_mpm_remainder[xCb][yCb], и отправляет закодированный поток битов на устройство декодирования.

Подробная информация об этом варианте 1300 осуществления показана в вышеупомянутых вариантах осуществления.

Фиг. 14 иллюстрирует варианты осуществления устройства 1400 декодирования. Устройство 1400 декодирования может быть видеодекодером 30 по Фиг. 1А или декодером 30 по Фиг. 3. Устройство 1400 декодирования может использоваться для реализации варианта 1200 осуществления и других вариантов осуществления, описанных выше.

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

Блок выведения (1402) сконфигурирован для выведения режима интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда значение информации указания указывает, что режим интра-предсказания текущего блока не содержится в набор наиболее вероятных режимов:

i. IntraPredModeY[xCb][yCb] устанавливается равным intra_luma_mpm_remainder[xCb][yCb],

ii. Значение IntraPredModeY[xCb][yCb] увеличивается на единицу;

где intra_luma_mpm_remainder[xCb][yCb] представляет режим интра-предсказания остатка, местоположение яркости (xCb, yCb) определяет верхний левый дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения.

Устройство 1400 дополнительно включает в себя блок 1403 предсказания (не показан на Фиг. 14). Блок 1403 предсказания сконфигурирован для использования выведенного режима интра-предсказания (luma_intra_mode) и соответствующих опорных дискретных отсчетов для выполнения интра-предсказания.

Фиг. 15 иллюстрирует варианты осуществления устройства 1500 кодирования для интра-предсказания. Устройство 1500 кодирования может быть видеокодером 20 по Фиг. 1A или кодером 20 по Фиг. 2. Устройство 1500 кодирования можно использовать для реализации варианта 1300 осуществления и других вариантов осуществления, описанных выше.

Устройство 1500 включает в себя блок 1501 выведения и блок 1502 передачи. Блок (1501) выведения сконфигурирован для выведения переменной с использованием режима интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока равен не содержится в наборе наиболее вероятных режимов:

i. Для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше, чем candModeList[i], значение IntraPredModeY[xCb][yCb] уменьшается на единицу, где candModeList[i] представляет потенциально подходящий режим интра-предсказания в наборе наиболее вероятных режимов;

ii. значение IntraPredModeY[xCb][yCb] уменьшается на единицу;

при этом местоположение яркости (xCb, yCb) задает левый верхний дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения.

Блок (1502) передачи сконфигурирован для отправки потока битов в декодер, причем поток битов включает в себя информацию упомянутой переменной.

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

Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.

Фиг. 16 - это блок-схема, показывающая систему 3100 поставки контента для реализации услуги распространения контента. Эта система 3100 предоставления контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и, в необязательном порядке, включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, помимо прочего, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любое их сочетание и т.п.

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает кодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, помимо прочего, камеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференцсвязи, PDA, установленное на транспортном средстве устройство или сочетание любого из них или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет кодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106.

В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит кодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, установленное в транспортном средстве устройство 3124, или их сочетание, или подобное, способное декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, как описано выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения обработки декодирования звука.

Для терминального устройства с дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122 или установленное в транспортном средстве устройство 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, например STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения, в нем устанавливается контакт с внешним дисплеем 3126 для приема и отображения декодированных данных.

Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования снимка или устройство декодирования снимка, как показано в вышеупомянутых вариантах осуществления.

Фиг. 17 - схема, показывающая структуру примера терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, модуль 3202 обработки протокола анализирует протокол передачи потока. Протокол включает в себя, помимо прочего, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP), или любое их сочетание или тому подобное.

После того, как модуль 3202 обработки протокола обработает поток, создается файл потока. Файл выводится в модуль 3204 демультиплексирования. Модуль 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.

Посредством обработки демультиплексирования генерируются элементарный поток (ES) видео, ES аудио и, в необязательном порядке, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерации видеокадра и подает эти данные в модуль 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерации аудиокадра и подает эти данные в модуль 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на Фиг. 17) перед подачей его в модуль 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на Фиг. 17) перед подачей его в модуль 3212 синхронизации.

Модуль 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, модуль 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может закодироваться в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки самого потока данных.

Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.

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

Математические операторы

Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и деление с действительным знаком. Правила нумерации и подсчета обычно начинаются с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.

Арифметические операторы

Следующие арифметические операторы определены следующим образом:

+ Сложение - Вычитание (как оператор с двумя аргументами) или отрицание (как унарный префиксный оператор) * Умножение, в том числе матричное умножение xy Возведение в степень. Определяет x в степени y. В других контекстах такое обозначение используется в качестве надстрочного индекса, которое не следует интерпретировать в качестве возведения в степень. / Целочисленное деление с усечением результата в сторону нуля. Например, 7/4 и -7/-4 усекаются до 1, а -7/4 и 7 /-4 усекаются до -1. ÷ Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. Суммирование f(i), где i принимает все целые значения от x до y включительно. x%y Операция по модулю. Остаток от деления x на y, определена только для целых чисел x и y, где x >= 0 и y > 0.

Логические операторы

Следующие логические операторы определены следующим образом:

x && y Булево логическое "и" для x и y

х || y Булево логическое "или" для x и y

! Булево логическое «не»

x?y:z Если x равен ИСТИНЕ или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.

Операторы отношения

Следующие операторы отношения определены следующим образом:

> Больше чем

>= Больше или равно

< Менее чем

<= Меньше или равно

== Равно

!= Не равно

Когда оператор отношения применяется к элементу или переменной синтаксиса, которой присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для элемента или переменной синтаксиса. Значение «na» не считается равным любому другому значению.

Побитовые операторы

Следующие побитовые операторы определены следующим образом:

& Побитовое "и". При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется посредством добавления более значимых битов, равных 0.

| Побитовое "или". При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется посредством добавления более значимых битов, равных 0.

^ Побитовое «исключающее ИЛИ». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется посредством добавления более значимых битов, равных 0.

x >> y Арифметический сдвиг вправо целочисленного представления x с двоичным дополнением на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в старшие значащие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.

x << y Арифметический сдвиг влево целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в младшие значащие биты (LSB) в результате сдвига влево, имеют значение, равное 0.

Операторы присваивания

Следующие арифметические операторы определены следующим образом:

= Оператор присваивания

++ Приращение, т.е. x++ эквивалентно x=x+1; при использовании в индексе массива оценивается в значение переменной до операции приращения.

-- Уменьшение, т.е. x-- эквивалентно x=x-1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.

+= Приращение на указанную величину, т.е. x+=3 эквивалентно x=x+3, а x+=(-3) эквивалентно x=x+(-3).

-= Уменьшение на указанную величину, т.е. x-=3 эквивалентно x=x-3, а x-=(-3) эквивалентно x=x-(-3).

Обозначение диапазона

Следующее обозначение используется для указания диапазона значений:

x=y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, и z больше y.

Математические функции

Определены следующие математические функции:

Asin(x) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах счисления радиан.

Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах счисления радиан.

Ceil(x) наименьшее целое число, большее или равное x.

Clip1Y(x)=Clip3(0, (1 << BitDepthY) - 1, x)

Clip1C(x)=Clip3(0, (1 << BitDepthC) - 1, x)

Cos(x) тригонометрическая функция косинуса, работающая с аргументом x в единицах счисления радиан.

Floor(x) наибольшее целое количество, меньшее или равное x.

Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,781 281 828…).

Log2(x) логарифм x по основанию 2.

Log10(x) логарифм x по основанию 10.

Round(x)=Sign(x)*Floor(Abs(x)+)

Sin(x) тригонометрическая функция синуса, работающая с аргументом x в единицах счисления радиан.

Swap(x, y)=(y, x)

Tan(x) тригонометрическая функция тангенса, работающая с аргументом x в единицах счисления радиан.

Порядок приоритетности операций

Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:

- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.

- Операции с одинаковым приоритетом оцениваются последовательно слева направо.

В Таблице 14 ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в Таблице 14 указывает на более высокий приоритет.

Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.

Таблица 14: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы)

операции (с операндами x, y и z) "x++", "x- -" "!x", "-x" (как унарный префиксный оператор) xy "x*y", "x/y", "x÷y", "x%y" "x+y", "x-y" (как оператор с двумя аргументами), "" "x<<y", "x>>y" "x<y", "x<=y", "x>y", "x>=y" "x==", "x!=y" "x&y" "x|y" "x&&y" "x||y" "x?y:z" "x..y" "x=y", "x+=y", "x-=y"

Текстовое описание логических операций

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

если(условие 0)

выражение 0

иначе если(условие 1)

выражение 1

иначе /* информативный комментарий по оставшемуся условию */

выражение n

может быть описано следующим образом:

… как указано ниже / … применяется следующее:

- Если условие 0, выражение 0

- Иначе, Если условие 1, выражение 1

- …

-- Иначе (информативный комментарий по оставшемуся условию), выражение n.

Каждое выражение «Если … Иначе, Если … Иначе, …» в тексте вводится словами «…как указано ниже» или «…применяется следующее», за которым сразу следует «Если…». Последним условием «Если … Иначе Если … Иначе, …» всегда является «Иначе, …». Чередование определений «Если … Иначе Если … Иначе, …» может быть идентифицировано посредством сопоставления «…как указано ниже» или «…применяется следующее» с завершающим «Иначе, …».

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

если(условие 0a && условие 0b)

выражение 0

иначе если(условие 1a | | условие 1b)

выражение 1

иначе

выражение n

может быть описано следующим образом:

… как указано ниже / … применяется следующее:

-- Если все из следующих условий истинны, выражение 0:

- условие 0a

- условие 0b

- Иначе, если истинными являются одно или более из следующих условий, выражение 1:

- условие 1a

- условие 1b

- …

- Иначе, выражение n

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

если(условие 0)

выражение 0

если(условие 1)

выражение 1

может быть описано следующим образом:

Когда условие 0, выражение 0

Когда условие 1, выражение 1.

Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного снимка (изображения), т.е. обработки или кодирования отдельного снимка независимо от любого предшествующего или последующего снимка, как при видеокодировании. В общем, только модули 244 интер-предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование для обработки снимка ограничено одним снимком 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных снимков, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, интра-предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования 270 и энтропийного декодирования 304.

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

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

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

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

Похожие патенты RU2821012C2

название год авторы номер документа
СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ВНУТРЕННЕГО ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MPM-СПИСКА И ОБОРУДОВАНИЕ ДЛЯ ЭТОГО 2020
  • Лим, Дзаехиун
  • Ли, Линг
  • Хео, Дзин
  • Чой, Дзангвон
  • Ким, Сеунгхван
RU2801266C2
СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ВНУТРЕННЕГО ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MPM-СПИСКА И ОБОРУДОВАНИЕ ДЛЯ ЭТОГО 2023
  • Лим, Дзаехиун
  • Ли, Линг
  • Хео, Дзин
  • Чой, Дзангвон
  • Ким, Сеунгхван
RU2813279C1
СПОСОБ ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ВНУТРЕННЕГО ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ MPM-СПИСКА И ОБОРУДОВАНИЕ ДЛЯ ЭТОГО 2020
  • Лим, Дзаехиун
  • Ли, Линг
  • Хео, Дзин
  • Чой, Дзангвон
  • Ким, Сеунгхван
RU2777721C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2800681C2
АФФИННОЕ ЛИНЕЙНОЕ ВЗВЕШЕННОЕ ВНУТРЕННЕЕ ПРОГНОЗИРОВАНИЕ ПРИ КОДИРОВАНИИ ВИДЕО 2020
  • Рамасубрамониан, Адарш Кришнан
  • Ван Дер Аувера, Герт
  • Фам Ван, Луонг
  • Карчевич, Марта
RU2816748C2
СПОСОБ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ И СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ В СИСТЕМЕ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ 2020
  • Чой, Дзангвон
  • Хео, Дзин
  • Ким, Сеунгхван
  • Лим, Дзаехиун
  • Ли, Линг
RU2804481C2
СПОСОБ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ И СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ В СИСТЕМЕ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ 2023
  • Чой, Дзангвон
  • Хео, Дзин
  • Ким, Сеунгхван
  • Лим, Дзаехиун
  • Ли, Линг
RU2811779C1
СПОСОБ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ И СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ В СИСТЕМЕ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ 2020
  • Чой, Дзангвон
  • Хео, Дзин
  • Ким, Сеунгхван
  • Лим, Дзаехиун
  • Ли, Линг
RU2780018C1
СПОСОБ И УСТРОЙСТВО ДЛЯ ВЗАИМОДЕЙСТВИЯ МЕЖДУ РЕЖИМОМ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ И РЕЖИМОМ БЛОЧНОЙ ДИФФЕРЕНЦИАЛЬНОЙ ИМПУЛЬСНО-КОДОВОЙ МОДУЛЯЦИИ 2020
  • Чжао Синь
  • Ли Сян
  • Чжао Лян
  • Лю Шань
RU2779825C1
УСОВЕРШЕНСТВОВАННАЯ ОБРАБОТКА ВЕСОВЫХ КОЭФФИЦИЕНТОВ ПРИ ИСПОЛЬЗОВАНИИ КОМБИНИРОВАННОГО РЕЖИМА С ВНУТРИКАДРОВЫМ И МЕЖКАДРОВЫМ ПРОГНОЗИРОВАНИЕМ 2020
  • Лю, Хунбинь
  • Чжан, Ли
  • Чжан, Кай
  • Сюй, Цзичжэн
  • Ван, Юэ
  • Цханг, На
RU2802175C2

Иллюстрации к изобретению RU 2 821 012 C2

Реферат патента 2024 года КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ИНТРА-ПРЕДСКАЗАНИЯ

Изобретение относится к кодированию и декодированию изображений. Технический результат заключается в повышении эффективности кодирования и декодирования изображений. Такой результат обеспечивается за счет того, что получают значение информации указания текущего блока. Когда значение информации указания указывает, что режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов, выводят режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока с помощью следующих упорядоченных этапов: i. IntraPredModeY[xCb][yCb] устанавливают равным intra_luma_mpm_remainder[xCb][yCb], ii. значение IntraPredModeY[xCb][yCb] увеличивают на единицу. 10 н. и 8 з.п. ф-лы, 18 ил.

Формула изобретения RU 2 821 012 C2

1. Способ интра-предсказания, реализуемый устройством декодирования, содержащий этапы, на которых:

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

когда значение информации указания указывает, что режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов, выводят режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока с помощью следующих упорядоченных этапов:

i. IntraPredModeY[xCb][yCb] устанавливают равным intra_luma_mpm_remainder[xCb][yCb],

ii. значение IntraPredModeY[xCb][yCb] увеличивают на единицу,

iii. для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше или равно candModeList[i], значение IntraPredModeY[xCb][yCb] увеличивают на единицу, причем candModeList[i] представляет потенциально подходящий режим интра-предсказания в наборе наиболее вероятных режимов, отличающийся от планарного режима,

при этом intra_luma_mpm_remainder[xCb][yCb] представляет режим интра-предсказания остатка, местоположение яркости (xCb, yCb) задает верхний левый дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения;

выполняют интра-предсказание на основе выведенного режима интра-предсказания IntraPredModeY[xCb][yCb] и соответствующих опорных дискретных отсчетов,

при этом выведение потенциально подходящего режима интра-предсказания candModeList[i] в наборе наиболее вероятных режимов осуществляют посредством:

когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = swap(candModeList[i], candModeList[j]).

2. Способ по п.1, в котором значение информации указания указывается флагом intra_luma_mpm_flag.

3. Способ по п.2, в котором, когда значение intra_luma_mpm_flag не равно 1, режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов.

4. Способ интра-предсказания, реализуемый устройством кодирования, содержащий этапы, на которых:

выводят режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока не содержится в наборе наиболее вероятных режимов, при этом набор наиболее вероятных режимов содержит планарный режим и 5 потенциально подходящих режимов интра-предсказания, причем значение планарного режима есть 0:

i. IntraPredModeY[xCb][yCb] устанавливают равным intra_luma_mpm_remainder[xCb][yCb],

ii. значение IntraPredModeY[xCb][yCb] увеличивают на единицу,

iii. для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше или равно candModeList[i], значение IntraPredModeY[xCb][yCb] увеличивают на единицу, где candModeList[i] представляет потенциально подходящий режим интра-предсказания в наборе наиболее вероятных режимов, отличающийся от планарного режима,

при этом местоположение яркости (xCb, yCb) задает левый верхний дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения;

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

при этом выведение потенциально подходящего режима интра-предсказания candModeList[i] в наборе наиболее вероятных режимов осуществляют посредством:

когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = swap(candModeList[i], candModeList[j]).

5. Способ по п.4, в котором значение информации указания указывается флагом intra_luma_mpm_flag.

6. Способ по п.5, в котором, когда значение intra_luma_mpm_flag не равно 1, режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов.

7. Декодер (30), содержащий схему обработки для выполнения способа по любому одному из пп.1-3.

8. Кодер (20), содержащий схему обработки для выполнения способа по любому одному из пп.4-6.

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

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

11. Декодер для интра-предсказания, содержащий:

один или более процессоров; и

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

12. Кодер для интра-предсказания, содержащий:

один или более процессоров; и

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

13. Устройство декодирования для интра-предсказания, содержащее:

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

блок выведения (1402), сконфигурированный для выведения режима интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда значение информации указания указывает, что режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов:

i. IntraPredModeY[xCb][yCb] устанавливается равным intra_luma_mpm_remainder[xCb][yCb],

ii. значение IntraPredModeY[xCb][yCb] увеличивается на единицу,

iii. для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше или равно candModeList[i], значение IntraPredModeY[xCb][yCb] увеличивается на единицу, причем candModeList[i] представляет потенциально подходящий режим интра-предсказания в наборе наиболее вероятных режимов, отличающийся от планарного режима,

при этом intra_luma_mpm_remainder[xCb][yCb] представляет режим интра-предсказания остатка, местоположение яркости (xCb, yCb) задает верхний левый дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения,

при этом блок выведения дополнительно сконфигурирован выполнять интра-предсказание на основе выведенного режима интра-предсказания IntraPredModeY[xCb][yCb] и соответствующих опорных дискретных отсчетов,

при этом блок выведения дополнительно сконфигурирован для выведения потенциально подходящего режима интра-предсказания candModeList[i] в наборе наиболее вероятных режимов посредством:

когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = swap(candModeList[i], candModeList[j]).

14. Устройство по п.13, при этом значение информации указания указывается флагом intra_luma_mpm_flag.

15. Устройство по п.14, при этом когда значение intra_luma_mpm_flag не равно 1, режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов.

16. Устройство кодирования для реализации интра-предсказания, содержащее:

блок выведения (1501), сконфигурированный для выведения режима интра-предсказания IntraPredModeY[xCb][yCb] текущего блока посредством следующих упорядоченных этапов, когда режим интра-предсказания IntraPredModeY[xCb][yCb] текущего блока не содержится в наборе наиболее вероятных режимов, при этом набор наиболее вероятных режимов содержит планарный режим и 5 потенциально подходящих режимов интра-предсказания, причем значение планарного режима есть 0:

i. IntraPredModeY[xCb][yCb] устанавливается равным intra_luma_mpm_remainder[xCb][yCb],

ii. значение IntraPredModeY[xCb][yCb] увеличивается на единицу,

iii. для i, равного от 0 до 4 включительно, когда IntraPredModeY[xCb][yCb] больше или равно candModeList[i], значение IntraPredModeY[xCb][yCb] увеличивается на единицу, где candModeList[i] представляет потенциально подходящий режим интра-предсказания в наборе наиболее вероятных режимов, отличающийся от планарного режима,

при этом местоположение яркости (xCb, yCb) задает левый верхний дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета яркости текущего изображения;

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

при этом блок выведения дополнительно сконфигурирован для выведения потенциально подходящего режима интра-предсказания candModeList[i] в наборе наиболее вероятных режимов посредством:

когда candModeList[i] больше, чем candModeList[j] для i=0..3 и, для каждого i, j = (i+1)..4, оба значения меняются местами следующим образом:

(candModeList[i], candModeList[j]) = swap(candModeList[i], candModeList[j]).

17. Устройство по п.16, при этом значение информации указания указывается флагом intra_luma_mpm_flag.

18. Устройство по п.17, при этом когда значение intra_luma_mpm_flag не равно 1, режим интра-предсказания текущего блока не содержится в наборе наиболее вероятных режимов.

Документы, цитированные в отчете о поиске Патент 2024 года RU2821012C2

US 20180063524 A1, 01.03.2018
WO 2018232676 A1, 27.12.2018
CN 102685474 A, 19.09.2012
CN 105357535 А, 24.02.2016
EP 2916545 A3, 18.11.2015
ГРУППИРОВАНИЕ ЭЛЕМЕНТОВ СИНТАКСИСА С КОДИРОВАНИЕМ В РЕЖИМЕ ОБХОДА В КОДИРОВАНИИ ВИДЕО 2013
  • Чиэнь Вэй-Цзюн
  • Чен Цзянле
  • Кобан Мухаммед Зейд
  • Карчевич Марта
RU2623884C2
УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, СПОСОБ ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ, ПРОГРАММА И ЗАПОМИНАЮЩИЙ НОСИТЕЛЬ 2008
  • Цукуба Такеси
  • Токумо Ясуаки
RU2496252C2
RU 2011131824 A, 10.02.2013.

RU 2 821 012 C2

Авторы

Ван, Бяо

Эсенлик, Семих

Котра, Ананд Меер

Гао, Хань

Чен, Цзянле

Даты

2024-06-14Публикация

2020-03-23Подача