Перекрестная ссылка на родственные заявки
Настоящая заявка испрашивает приоритет в отношении заявки PCT № PCT/EP 2019/072611, поданной 23 августа 2019 г., которая испрашивает приоритет в отношении заявки PCT № PCT/EP 2019/069944, поданной 24 июля 2019 г. Обе заявки включены сюда посредством ссылки.
Область техники, к которой относится изобретение
Варианты осуществления, представленные в настоящей заявке (раскрытиия), в целом, относятся к области обработки изображений и, более конкретно, к выполнению получения режима внутрикадрового предсказания цветности, используя режим внутрикадрового предсказания, из соответствующего компонента яркости.
Уровень техники
Видеокодирование (видеокодирование и видеодекодирование) используется в широком диапазоне приложений цифрового видео, например, в широковещательном цифровом телевидении, видеопередаче через Интернет и сети мобильной связи, диалоговых приложениях, работающих в реальном времени, таких как видеочат, видеоконференция, диски DVD и Blu-ray, системы получения и редактирования контента и видеокамеры приложений обеспечения безопасности.
Объем видеоданных, необходимый для показа даже относительно короткого видео, может быть существенным, что в результате может приводить к трудностям, когда данные должны передаваться потоком или как-либо иначе по сети связи с ограниченной шириной полосы пропускания. Таким образом, видеоданные, прежде чем передаваться через современные сети связи, обычно сжимаются. Размер видео также может быть проблемой, когда видео хранится в запоминающем устройстве, потому что ресурсы памяти могут быть ограничены. Устройства видеосжатия часто используют программное обеспечение и/или аппаратные средства в источнике сигнала для кодирования видеоданных перед передачей или хранением, уменьшая, таким образом, объем данных, необходимый для представления цифровых видеоизображений. Сжатые данные затем принимаются в месте назначения устройством видеораспаковки, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущем спросе на более высокое качество видео, желательны улучшенные технологии сжатия и распаковки, которые повышают степень сжатия при минимальном влиянии или отсутствии влияния на качество изображения.
Раскрытие сущности изобретения
Варианты осуществления настоящей заявки обеспечивают устройства и способы кодирования и декодирования, соответствующие независимыми пунктами формулы изобретения.
Перечисленные выше и другие задачи решаются предметом независимых пунктов формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и чертежей.
Первый подход изобретения относится к способу кодирования, реализуемому устройством декодирования или устройством кодирования. Способ содержит этапы, на которых: получают информацию указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в компоненте яркости, cbHeight представляет высоту текущего блока кодирования в компоненте яркости. Соответственно, cbWidth/2 представляет половину ширины текущего блока кодирования в компоненте яркости, а cbHeight/2 представляет половину высоты текущего блока кодирования в компоненте яркости. Абсолютным положением (cbWidth/2, cbHeight/2) яркости является (xCb+cbWidth/2, yCb+cbHeight/2), то есть, "середина" соответствующего блока предсказания яркости.
Способ дополнительно содержит этапы, на которых: устанавливают значение режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, как значение по умолчанию, когда информация указания указывает, что внутрикадровое предсказание, основанное на матрице (Matrix-based Intra Prediction, MIP) применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования; и получают значение режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания яркости текущего блока кодирования.
Получение информации о режиме предсказания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение MIP режима и положение режима внутрикадрового предсказания совпадают, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева), где положение режима MIP заменяет положение, в котором получают режим MIP, и положение режима внутрикадрового предсказания яркости заменяет положение, в котором получают режим внутрикадрового предсказания яркости.
Второй подход изобретения относится к способу кодирования, реализуемому устройством декодирования или устройством кодирования. Способ содержит этапы, на которых: получают информацию указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в компоненте яркости, cbHeight представляет высоту текущего блока кодирования в компоненте яркости. Соответственно, cbWidth/2 представляет половину ширины текущего блока кодирования в компоненте яркости, а cbHeight/2 представляет половину высоты текущего блока кодирования в компоненте яркости. Абсолютным положением яркости (cbWidth/2, cbHeight/2) является (xCb+cbWidth/2, yCb+cbHeight/2), то есть, "середина" соответствующего блока предсказания яркости.
Способ содержит этапы, на которых: устанавливают значение режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, как первое значение по умолчанию, когда информация указания указывает, что режим копирования внутрикадрового блока (Intra Block Copy, IBC) или режим палитры применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования; и получают значение режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания яркости текущего блока кодирования.
Получение информации о режиме предсказания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение режима IBC и положение режима внутрикадрового предсказания совпадают, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева), где положение IBC режима заменяет положение, в котором получают режим IBC, и положение режима внутрикадрового предсказания яркости заменяет положение, в котором получают режим внутрикадрового предсказания яркости.
Альтернативно, получение информации о режиме предсказания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение палитры режима и положение режима внутрикадрового предсказания яркости совпадают, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева), где положение палитры режима заменяет положение, в котором получают режим палитры, и положение режима внутрикадрового предсказания яркости заменяет положение, в котором получают режим внутрикадрового предсказания яркости.
Совпадение получения информации о режиме получения из положения (cbWidth/2, cbHeight/2) необходимо, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности. В противном случае, это может вызывать неопределенное поведение, как показано на фиг. 7.
Способ, соответствующий первому подходу изобретения, может выполняться устройством, соответствующим третьему подходу изобретения. Дополнительные признаки и формы осуществления устройства, соответствующего третьему подходу, соответствуют признакам и формам осуществления способа, соответствующего первому подходу изобретения.
Способ по второму подходу изобретения может выполняться устройством, соответствующим четвертому подходу изобретения. Дополнительные признаки и формы осуществления устройства по четвертому подходу, соответствуют признакам и формам осуществления способа по второму подходу изобретения.
В соответствии с пятым подходом, вариант осуществления связан с устройством декодирования или кодирования видеопотока, содержащим процессор и память. Память хранит команды, заставляющие процессор выполнять способ в соответствии с первым подходом.
В соответствии с шестым подходом, вариант осуществления изобретения связан с устройством декодирования или кодирования видеопотока, содержащим процессор и память. Память хранит команды, заставляющие процессор выполнять способ в соответствии с вторым подходом.
В соответствии с седьмым подходом, обеспечивается считываемый компьютером носитель запоминающего устройства, на котором записаны команды, которые, когда исполняются, заставляют один или более конфигурированных процессоров кодировать видеоданные. Команды заставляют один или более процессоров выполнять способ, соответствующий первому или второму подходу, или любой возможный вариант осуществления первого или второго подхода.
В соответствии с восьмым подходом, вариант осуществления изобретения связан с компьютерной программой, содержащей управляющую программу для выполнения способа, соответствующего первому или второму подходу или любому возможному варианту осуществления первого или второго подхода, при ее исполнении на компьютере.
В соответствии с девятым подходом, вариант осуществления изобретения связан с устройством для получения режима внутрикадрового предсказания цветности, содержащим: один или более процессоров; и считываемый компьютером носитель долговременного хранения данных, связанный с процессорами и хранящий программирование для его выполнения процессорами, где программирование, когда исполняется процессорами, конфигурирует декодер, чтобы: получать первую информацию указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в компоненте яркости, cbHeight представляет высоту текущего блока кодирования в компоненте яркости. Соответственно, cbWidth/2 представляет половину ширины текущего блока кодирования в компоненте яркости, а cbHeight/2 представляет половину высоты текущего блока кодирования в компоненте яркости. Абсолютным положением яркости (cbWidth/2, cbHeight/2) является (xCb+cbWidth/2, yCb+cbHeight/2), то есть, "середина" соответствующего блока предсказания яркости.
Один или более процессоров дополнительно выполнены с возможностью установки значения режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, в качестве первого значения по умолчанию, когда первая информация указания указывает, что внутрикадровое предсказание, основанное на матрице (Matrix-based Intra Prediction, MIP), применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования; или получения второй информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования, когда первая информация указания указывает, что MIP не применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) выборки яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока.
Один или более процессоров дополнительно выполнены с возможностью установки значения режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, в качестве второго значения по умолчанию, когда вторая информация указания указывает, что режим копирования внутрикадрового блока (Intra Block Copy, IBC) или режим палитры применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования; и получают значение режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания яркости текущего блока кодирования.
Получение первой информации указания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение MIP режима и положение режима внутрикадрового предсказания яркости совпадают, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева). Когда первая информация указания не указывает, что MIP применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости, получение второй информации указания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение IBC режима и положение режима внутрикадрового предсказания яркости совпадают, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева). Альтернативно, получение второй информации указания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение палитры режима и положение режима внутрикадрового предсказания яркости совпадают, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева).
Подробности одного или более вариантов осуществления изложены ниже на приложенных чертежах и в описании. Другие признаки, задачи и преимущества станут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
В дальнейшем варианты осуществления изобретения описываются более подробно со ссылкой на приложенные чертежи, на которых:
фиг. 1A - блок-схема примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;
фиг. 1B - блок-схема другого примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;
фиг. 2 - блок-схема примера видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг. 3 - блок-схема примера структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
фиг. 4 - блок-схема примера устройства кодирования или устройства декодирования;
фиг. 5 - блок-схема другого примера устройства кодирования или устройства декодирования;
фиг. 6 - пример режимов внутрикадрового кодирования;
фиг. 7 - блок-схема, показывающая потенциальную проблему неопределенного поведения при получении режима внутрикадрового предсказания цветности, используя текущую спецификацию;
фиг. 8 - пример значения местоположения яркости блока кодирования;
фиг. 9 - варианты осуществления способа 900, соответствующие настоящему изобретению;
фиг. 10 - варианты осуществления устройства 1000 для использования в соответствии с настоящим изобретением;
фиг. 11 - блок-схема примерной структуры системы 3100 предоставления контента, реализующей услугу доставки контента;
фиг. 12 - блок-схема структуры примерного оконечного устройства.
В дальнейшем идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не определено иное.
Осуществление изобретения
В последующем описании ссылка делается на сопроводительные чертежи, которые составляют часть раскрытия и которые посредством иллюстрации показывают конкретные подходы вариантов осуществления изобретения или конкретные подходы, при которых могут использоваться варианты осуществления настоящего изобретения. Следует понимать, что варианты осуществления изобретения могут использоваться при других подходах и содержать структурные или логические изменения, не отображенные на чертежах. Последующее подробное описание поэтому не должно рассматриваться в ограничивающем смысле и объем защиты настоящего изобретения определяется приложенной формулой изобретения.
Например, следует понимать, что раскрытие в связке с описанным способом может также оставаться действительным для соответствующего устройства или системы, выполненной с возможностью осуществления способа, и наоборот. Например, если описываются один или множество конкретных этапов способа, соответствующее устройство может содержать один или множество блоков, например, функциональных блоков, для выполнения описанных одного или множества этапов способа (например, один блок выполняет один или множество этапов или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такие один или более блоков явно не описаны или не проиллюстрированы на чертежах. С другой стороны, например, если конкретное устройство описывается на основе одного или множества блоков, например, функциональных блоков, соответствующий способ может содержать один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап выполняет функциональные возможности одного или множества блоков или каждый из множества этапов выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов явно не описаны или не показаны на чертежах. Дополнительно подразумевается, что признаки различных примерных вариантов осуществления и/или подходов, описанные здесь, могут объединяться друг с другом, если конкретно не указано иное.
Видеокодирование обычно относится к обработке последовательности изображений, которые формируют видео или видеопоследовательность. Вместо термина “изображение”, как синонимы в области видеокодирования, может использоваться термин “кадр” или “картинка”. Видеокодирование (или, в общем, кодирование) содержит две части: видеокодирование и видеодекодирование. Видеокодирование выполняется на стороне источника сигнала, обычно содержит обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, требующихся для представления видеоизображений (для более эффективного запоминающего устройства и/или передачи). Видеодекодирование выполняется на стороне места назначения и обычно содержит обратную обработку по сравнению с кодером для реконструкции видеоизображений. Варианты осуществления, относящиеся к “кодированию” видеоизображений (или, в общем, кадров) должны пониматься как относящиеся к “кодированию” или “декодированию” видеоизображений или соответствующих видеопоследовательностей. Сочетание части кодирования и части декодирования также упоминается как CODEC (Coding and Decoding, кодирование и декодирование, кодек).
В случае видеокодирования без потерь исходные видеоизображения могут быть реконструированы, т.е. реконструированные видеоизображения имеют то же самое качество, что и исходные видеоизображения (предполагая отсутствие потерь при передаче или другой потери данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например, посредством квантования, для уменьшения объема данных, представляющих видеоизображения, которые не могут быть полностью реконструированы в декодере, т.е. качество реконструированных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов видеокодирования принадлежат к группе “гибридных видеокодеков с потерями” (т.е. объединяют пространственное и временное предсказание в области выборок и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно делится на ряд неперекрывающихся блоков и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, т.е. кодируется на уровне блоков (видеоблоков), например, используя пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для формирования блока предсказания, вычитая блок предсказания из текущего блока (блока, обрабатываемого в настоящее время/который должен обрабатываться) для получения остаточного блока, преобразуя остаточный блок и квантуя остаточный блок в области преобразования для уменьшения объема данных, который должен передаваться (сжатие), тогда как в декодере, по сравнению с кодером, к кодированному или сжатому блоку для реконструкции текущего блока для презентации применяется обратная обработка. Дополнительно, кодер копирует цикл обработки декодера таким образом, что они вместе формируют идентичные предсказания (например, внутрикадровое и межкадровое предсказание) и/или реконструкции для обработки, т.е. кодирование последующих блоков.
В последующих вариантах осуществления системы 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 изображения может содержать или быть любого рода устройством получения изображения, например, камерой для получения изображения реального мира и/или своего рода устройством формирования изображения, например, процессором компьютерной графики для формирования компьютерного изображения с анимацией или любого вида другим устройством для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, контента экрана, изображения виртуальной реальности (virtual reality, VR)), и/или любым их сочетанием (например, изображением аугментированной реальности (augmented reality, 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 (или блок 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 может быть или содержать любой вид дисплея для представления реконструированного изображения, например, интегрированным или внешним дисплеем или монитором. Дисплеи могут, например, быть жидкокристаллическими дисплеями (liquid crystal display, LCD), дисплеями на органических светодиодах (organic light emitting diode, OLED), плазменными дисплеями, проекторами, микросветодиодными дисплеями, жидкокристаллическими кремниевыми (liquid crystal on silicon, LCoS) дисплеями, цифровым световым процессором (digital light processor, DLP) или любым другим видом дисплея.
Хотя на фиг. 1A устройство 12 источника и устройство 14 назначения показаны как отдельные устройства, варианты осуществления устройств могут также содержать оба устройства или обе технические возможности, устройства 12 источника или его соответствующие функциональные возможности и устройства назначения 14 или его соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или его соответствующие функциональные возможности и устройство 14 назначения или его соответствующие функциональные возможности могут быть реализованы, используя одни и те же аппаратные средства и/или программное обеспечение или отдельные аппаратные средства и/или программное обеспечение или любое их сочетание.
Как должно быть очевидно специалистам в данной области техники, на основе описания существование и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей внутри устройства 12 источника и/или устройства 14 назначения, как показано на фиг. 1A, может варьироваться в зависимости от реального устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или кодер 20 и декодер 30 вместе могут быть реализованы схемой обработки, как показано на фиг. 1B, например, как один или более микропроцессоров, цифровые сигнальные процессоры (digital signal processor, DSP), специализированные прикладные интегральные схемы (application-specific integrated circuit, ASIC), программируемые логические интегральные схемы (field-programmable gate array, FPGA), дискретная логика, аппаратные средства, специализированное видеокодирование или любые их сочетания. Кодер 20 может быть реализован посредством схемы 46 обработки для осуществления различных модулей, как обсуждается в отношении кодера 20, показанного на фиг. 2, и/или любой другой системы кодера или подсистемы, описанных здесь. Декодер 30 может быть реализован схемой 46 обработки, чтобы осуществить различные модули, как обсуждалось в отношении декодера 30, показанного на фиг. 3, и/или любой другой системы декодера или подсистемы, описанных здесь. Схема обработки может быть выполнена с возможностью осуществления различных операций, как обсуждается далее. Как показано на фиг. 5, если технологии реализуются частично в программном обеспечении, устройство может хранить команды программного обеспечения на подходящем считываемом компьютером носителе долговременного хранения и может исполнять команды аппаратными средствами с помощью одного или более процессоров для выполнения технологий, соответствующих настоящему раскрытию. Видеокодер 20 или видеодекодер 30 могут быть интегрированы как часть объединенного кодера/декодера (encoder/decoder, CODEC) в едином устройстве, например, как показано на фиг. 1B.
Устройство 12 источника и устройство 14 назначения могут содержать любое устройство из широкого диапазона устройств, в том числе, любой вид переносных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, абонентские установки, телевизоры, дисплеи, цифровые медиаплееры, консоли видеоигр, устройства потоковой передачи видео (такие как серверы контент-услуг или серверы доставки контента), бытовой радиоприемник, широковещательный передатчик и т.п. и могут использовать или не использовать любого вида операционную систему. В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 видеокодирования, показанная на фиг. 1А, является просто примером и технологии, представленные в настоящей заявке, могут применяться к настройкам видеокодирования (например, видеокодирования или видеодекодирования), которые не обязательно содержат передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются потоком через сеть и т.п. Устройство видеокодирования может кодировать и хранить данные в памяти и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не связаны друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания варианты осуществления раскрытия описываются здесь, например, со ссылкой на высокоэффективное видеокодирование (High-Efficiency Video Coding, HEVC) или со ссылкой на программное обеспечение универсального видеокодирования (Versatile Video coding, VVC), стандарт видеокодирования следующего поколения, разработанный Объединенной группой сотрудничества по видеокодированию (Joint Collaboration Team on Video Coding, JCT-VC) Экспертной группы ITU-T по видеокодированию (Video Coding Experts Group, VCEG) ITU-T и Экспертной группой ISO/IEC по цифровой записи видео и звука (Motion Picture Experts Group, MPEG). Любой из специалистов в данной области техники должен понимать, что варианты осуществления изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
На фиг. 2 показана блок-схема примера видеокодера 20, выполненного с возможностью реализации технологий настоящей заявки. В примере, показанном на фиг. 2, видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обратного преобразования, блок 214 реконструкции, блок 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer, DPB) 230, блок 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 яркости (luminance или, сокращенно, luma) представляет уровень яркости или интенсивность уровня серого (например, при полутоновом изображении), в то время как две компоненты цветности (chrominance или, сокращенно, chroma) Cb и Cr представляют компоненты информации о цвете или цветности. Соответственно, изображение в формате YCbCr содержит массив выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы или трансформированы в формат YCbCr и наоборот, этот процесс также известен как преобразование или трансформация цвета. Если изображение является монохромным, изображение может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно неперекрывающихся) блоков 203 изображения.
Эти блоки могут также упоминаться как корневые блоки, макроблоки (H.264/AVC) или блоки (block) дерева кодирования (coding tree block, CTB) или блоки (unit) дерева кодирования (coding tree unit, CTU) (H.265/HEVC и VVC). Блок разделения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или поднаборами или группами изображений и разделения каждого изображения на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема напрямую блока 203 изображения 17, например, одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения может также упоминаться как блок текущего изображения или блок изображения, подлежащий кодированию.
Подобно изображению 17, блок 203 изображения является или может рассматриваться как двухмерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости luma в случае монохромного изображения 17 или массив цветности chroma в случае цветного изображения) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 17) или любое другое количество и/или виды массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может быть массивом выборок, например, MxN (M столбцов и N строк) или массивом MxN коэффициентов преобразования.
Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть выполнены с возможностью поблочного кодирования изображения 17, например, кодирование и предсказание выполняются для каждого блока 203.
Варианты осуществления видеокодера 20, показанного на фиг. 2, дополнительно могут быть выполнены с возможностью разделения и/или кодирования изображения, используя секции (также называемые видеосекциями), где изображение может быть разделено на части или кодировано, используя одну или более секций (обычно неперекрывающихся), и каждая секция может содержать один или более блоков (например, CTU).
Варианты осуществления видеокодера 20, показанного на фиг. 2, могут дополнительно быть выполнены с возможностью разделения и/или кодирования изображения, используя группы плиток (также называемые группами видеоплиток) и/или плитки (также называемые видеоплитками), в которых изображение может разделяться или кодироваться, используя одну или более (обычно неперекрывающихся) групп плиток, и каждая группа плиток может содержать один или более блоков (например, блоков CTU) или одну или более плиток, где каждая плитка может иметь, например, прямоугольную форму и может содержать один или более блоков (например, CTU), например, полных или дробных блоков.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также называемого остатком 205), основываясь на блоке 203 изображения и блоке 265 предсказания (более подробная информация о блоке 265 предсказания представлена ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения повыборочно (попиксельно) для получения остаточного блока 205 в области выборок.
Преобразование
Блок 206 преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретного синусного преобразования (discrete sine transform, 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. Степень квантования может модифицироваться, регулируя параметр квантования (quantization parameter, QP). Например, для скалярного квантования может применяться различное масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шага квантования соответствуют более тонкому квантованию, тогда как большие размеры шага квантования соответствуют более грубому квантованию. Применяемый размер шага квантования может указываться параметром квантования (quantization parameter, QP). Параметр квантования может быть, например, индексом заданного набора применяемых размеров шага квантования. Например, маленькие параметры квантования могут соответствовать тонкому квантованию (малые размеры шага квантования), а большие параметры квантования могут соответствовать крупному грубому (большие размеры шага квантования) или наоборот. Квантование может содержать деление на размер шага квантования и соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может содержать умножение на размер шага квантования. Варианты осуществления, соответствующие некоторым стандартам, например, HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен, основываясь на параметре квантования с помощью аппроксимации с фиксированной точкой уравнения, содержащего деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и деквантования, чтобы восстанавливать норму остаточного блока, которая может модифицироваться благодаря масштабированию, используемому при аппроксимации с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. Альтернативно, специализированные таблицы квантования могут использоваться и сообщаться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, где потери увеличиваются с увеличением размера шага квантования.
Варианты осуществления видеокодера 20 (соответственно, блока 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, непосредственно или кодированными через блок 270 энтропийного кодирования, так, чтобы, например, видеодекодер 30 мог принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к коэффициентам квантования для получения деквантованных коэффициентов 211, например, применяя инверсию схемы квантования, применяемой блоком 208 квантования, на основе или используя тот же самый размер шага квантования, что и блок 208 квантования. Коэффициенты 211 деквантования могут также упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя обычно они не идентичны коэффициентам преобразования из-за потерь на квантование - коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обратного преобразования выполнен с возможностью применения обратного преобразования для преобразования, применяемого блоком 206 преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусного преобразования (inverse discrete sine transform, DST), или другого обратного преобразования для получения реконструированного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Реконструированный остаточный блок 213 может также упоминаться, как блок 213 преобразования.
Реконструкция
Блок 214 реконструкции (например, устройство сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. реконструированного остаточного блока 213) с блоком 265 предсказания, чтобы получить реконструированный блок 215 в области выборок, например, путем сложения - выборка с выборкой - значений выборки реконструированного остаточного блока 213 со значениями выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или, сокращенно, “контурный фильтр” 220), выполнен с возможностью фильтрации реконструированного блока 215, чтобы получить отфильтрованный блок 221, или, в целом, отфильтровать реконструированные выборки для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания пиксельных переходов или какого-либо иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптивного смещения выборок (sample-adaptive offset, SAO) или один или более других фильтров, например, билатеральный фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр, повышающий резкость, сглаживающий фильтр или коллаборативные фильтры или любое их сочетание. Хотя блок 220 контурного фильтра на фиг. 2 показан как являющийся контурным фильтром, в других конфигурациях блок 220 контурного фильтра может быть реализован как контурный фильтр последующей обработки. Отфильтрованный блок 221 может также упоминаться, как отфильтрованный реконструированный блок 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация об адаптивном смещении выборки), например, непосредственно или кодированными посредством блока 270 энтропийного кодирования, так чтобы, например, декодер 30 мог принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированного изображения
Буфер 230 декодированного изображения (decoded picture buffer, DPB) 230 может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений, для кодирования видеоданных видеокодером 20. DPB 230 может быть образован любым из множества запоминающих устройств, таким как динамическая оперативная память (dynamic random access memory, DRAM), в том числе, синхронная DRAM (SDRAM), магнитостойкая RAM (MRAM), резистивная RAM (RRAM) или другие типы устройств памяти. Буфер 230 декодирования изображения (DPB) 230 может быть выполнен с возможностью хранения одного или более отфильтрованных блоков 221. Буфер 230 декодированного изображения может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например, ранее реконструированных и отфильтрованных блоков 221 одного и того же текущего изображения или разных изображений, например, ранее реконструированных изображений, и может обеспечивать полностью ранее реконструированные, т.е. декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично реконструированное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер 230 декодированного изображения (decoded picture buffer, DPB) может быть также выполнен с возможностью хранения одного или более нефильтрованных реконструированных блоков 215 или, в общем, нефильтрованных реконструированных выборок, например, если реконструированный блок 215 не отфильтрован блоком 220 контурного фильтра или нет никакой другой дополнительно обработанной версии реконструированных блоков или выборок.
Выбор режима (деление и предсказание)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например, с помощью исходного блока 203 (текущего блока 203 текущего изображения 17), и реконструированных данных изображения, например, отфильтрованных и/или нефильтрованных реконструированных выборок или блоков одного и того же (текущего) изображения и/или одного или более из числа ранее декодированных изображений, например, полученных из буфера 230 декодированных изображений или других буферов (например, из строчного буфера, который не показан). Реконструированные данные изображения используются в качестве данных опорного изображения для предсказания, например, межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для режима предсказания текущего блока (в том числе, отсутствия разделения) и режима предсказания (например, режима внутрикадрового или межкадрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для реконструкции реконструируемого блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора режима разделения и предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее совпадение, или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения) или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или которые рассматривают или балансируют то и другое. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания, основываясь на оптимизации соотношения "искажение-скорость" (rate distortion optimization, RDO), т.е. выбора режима предсказания, который обеспечивает минимальное соотношение "искажение-скорость". Термины “наилучший”, “минимальный”, “оптимальный” и т.д. в этом контексте не обязательно относятся к общему пониманию “наилучшего”, “минимального”, “оптимального” и т.д., а могут также относиться к выполнению критерия завершения или выбора, такому как значения превышения порога или падения ниже порога, или других ограничений, потенциально ведущих к “субоптимальному выбору”, но уменьшающим сложность и время обработки.
Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на блоки меньшего размера или субблоки (которые снова образуют блоки), например, многократно используя деление квадродерева (quad-tree-partitioning, QT), деление двоичного дерева (binary-tree partitioning, BT) или деление троичного дерева (triple-tree-partitioning, TT) или любое их сочетание, и выполнения предсказания для каждой из частей блока или для каждого субблока, где выбор режима содержит выбор древовидной структуры разделенного блока 203 и режимы предсказания применяются к каждой из частей блока или к субблоку.
В дальнейшем, процесс разделения (например, посредством блока 260 разделения) и предсказания (посредством блока 244 межкадрового предсказания 244 и блока 254 внутрикадрового предсказания), выполняемый в качестве примера видеокодером 20, будет объяснен более подробно.
Разделение на части
Блок 262 разделения может делить или разбивать текущий блок 203 на части меньшего размера, например, на более мелкие блоки квадратной или прямоугольной формы. Эти более мелкие блоки (который могут также упоминаться как субблоки) могут дополнительно разделяться на еще более мелкие части. Это также упоминается как древовидное деление или иерархическое древовидное деление, где корневой блок, например, на уровне 0 корня дерева (иерархия-уровень 0, глубина 0) может рекурсивно разделяться, например, делиться на два или более блоков следующего, более низкого уровня дерева, например, узлы на уровне 1 дерева (иерархия-уровень 1, глубина 1), где эти блоки могут быть снова разделены в два или более блоков следующего, более низкого уровня, например, уровня 2 дерева (иерархия-уровень 2, глубина 2), и т.д., пока деление не закончится, например, потому, что выполнен критерий завершения, например, достигнуты максимальная глубина дерева или минимальный размер блока. Блоки, которые далее не делятся, также упоминаются как листовые блоки или вершины дерева. Деление с использованием дерева на две части упоминается как двоичное дерево (binary-tree, BT), деление с использованием дерева на три части упоминается как троичное дерево (ternary-tree, TT) и деление с использованием дерева на четыре части упоминается как квадродерево (quad-tree, QT).
Как упоминалось выше, термин "блок", как он используется здесь, может быть частью, в частности, квадратной или прямоугольной частью изображения. Со ссылкой, например, на HEVC и VVC, блок может быть или соответствовать блоку древовидного кодирования (coding tree unit, CTU), блоку кодирования (coding unit, CU), блоку предсказания (prediction unit, PU) или блоку преобразования (transform unit, TU) и/или соответствующим блокам, например, блоку древовидного кодирования (coding tree block, CTB), блоку кодирования (coding block, CB), блоку преобразования (transform block, TB) или блоку предсказания (prediction block, PB).
Например, блок дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которые имеют три массива выборок или CTB выборок монохромного изображения или изображения, которое кодируется с помощью трех отдельных цветовых плоскостей и структур синтаксиса, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть блоком NxN выборок для некоторого значения N, так что разделение компонента на блоки CTB является делением. Блок кодирования (coding unit, CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с помощью трех отдельных цветовых плоскостей и структур синтаксиса, используемых для кодирования выборок. Соответственно, блок кодирования (coding block, CB) может быть блоком MxN выборок для некоторых значений M и N, так что разделение CTB на блоки кодирования является делением.
В вариантах осуществлениях, например, соответствующих HEVC, блок дерева кодирования (CTU) может быть разделен на блоки CU при помощи структуры квадродерева, обозначенной как дерево кодирования. Решение, кодировать ли область изображения, используя межкадровое (временное) или внутрикадровое (пространственное) предсказание, принимается на уровне CU. Каждый CU может быть дополнительно разбит на один, два или четыре блока PU, соответственно типу разбиения PU. Внутри одного PU применяется один и тот же процесс предсказания и соответствующая информация передается декодеру на основе PU. После получения остаточного блока, применяя процесс предсказания на основе типа разбиения PU, CU может быть разделен на блоки преобразования (transform unit, TU) согласно другой структуре квадродерева, подобной дереву кодирования для CU.
В вариантах осуществлениях, например, в соответствии с последним стандартом видеокодирования, который в настоящее время находится в разработке, который упоминается как универсальное видеокодирование (Versatile Video Coding, VVC), объединенное разделение с использованием квадродерева и двоичного дерева (combined quad-tree and binary-tree, QTBT) используется, например, для разделения блока кодирования. В структуре блока QTBT CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала делится посредством структуры квадратичного дерева. Узлы квадратичного дерева дополнительно делятся с помощью структуры двоичного дерева или троичного дерева. Узлы дерева при делении называются блоками кодирования (coding unit, CU) и такая сегментация используется для процесса предсказания и преобразования без какого-либо дополнительного разделения. Это означает, что в структуре блоков кодирования QTBT CU, PU и TU имеют один и тот же размер блока. Параллельно, многочисленное разделение, например, разделение троичного дерева, может использоваться вместе со структурой блока QTBT.
В одном из примеров, блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью реализации любого сочетания описанных здесь технологий разделения.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заранее определенного) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено для VVC.
Блок 254 внутрикадрового предсказания выполнен с возможностью использования реконструированных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутрикадрового предсказания, соответствующего режиму внутрикадрового предсказания из набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, в целом, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в целом, информации, указывающей выбранный режим внутрикадрового предсказания для блока) на блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в кодированные данные 21 изображения, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор режимов (или возможных режимов) межкадрового предсказания зависит от доступных опорных изображений (т.е. от предыдущих, по меньшей мере, частично декодированных изображений, например, сохраненных в DPB 230) и других параметров межкадрового предсказания, например, используется ли опорное изображение полностью или только частично, например, область окна поиска вокруг области текущего блока опорного изображения для поиска наилучшим образом совпадающего опорного блока и/или например, применяется ли пиксельная интерполяция, например, половинная/полуэлементная, четвертьэлементная и/или 1/16-тиэлементная интерполяция.
Дополнительно к упомянутым выше режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 межкадрового предсказания может содержать блок оценки движения (motion estimation, ME) и блок компенсации движения (motion compensation, MC) (оба не показаны в фиг. 2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 17) и декодированного изображения 231 или по меньшей мере одного или множества из ранее реконструированных блоков, например, реконструированных блоков из одного или множества других/отличающихся ранее декодированных изображений 231, для компенсации движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут являться частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же или разных изображений из множества других изображений и предоставления блоку оценки движения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (с координатами x, y) опорного блока и позицией текущего блока как параметров межкадрового предсказания. Это смещение также называют вектором движения (motion vector, MV).
Блок компенсации движения выполнен с возможностью получения, например, приема, параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или используя параметр межкадрового предсказания для получения блока 265 межкадрового предсказания.
Компенсация движения, выполняемая блоком компенсации движения, может содержать выборку или формирование блока предсказания, основываясь на векторе движения/блока, определенном посредством оценки движения, возможно выполняя интерполяции до субпиксельной точности. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая количество возможных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для блока PU текущего изображения, блок компенсации движения может определить местоположение блока предсказания, на который направлен вектор движения в одном из списков опорных изображений.
Блок компенсации движения может также формировать элементы синтаксиса, связанные с блоками и видеосекциями для использования видеодекодером 30 при декодировании блоков изображения видеосекции. Кроме того или как альтернатива секциям и соответствующим элементам синтаксиса, могут быть сформированы или использованы группы плиток и/или плитки и соответствующие элементы синтаксиса.
Энтропийное кодирование
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной слова (variable length coding, VLC), контекстной адаптивной схемы VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, бинаризации, контекстного адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (syntax-based context-adaptive binary arithmetic coding, SBAC), энтропийного кодирования с разделением интервала вероятности (probability interval partitioning entropy, 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 декодированного изображения (decoded picture buffer, 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 обратного квантования может быть выполнен с возможностью приема параметров квантования (quantization parameter, 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 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптивного смещения выборок (sample-adaptive offset, SAO) или один или более других фильтров, например, билатеральный фильтр, адаптивный контурный фильтр (adaptive loop filter, 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 может создавать списки ссылочных кадров, List 0 и List 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, результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после фильтрации интерполяции, получения вектора движения или контурной фильтрации следующая операция, такая как сжатие Clip или сдвиг, может выполняться для результата процесса фильтрации интерполяции, получения вектора движения или контурной фильтрации.
Следует заметить, что дальнейшие операции могут применяться к полученным векторам движения текущего блока (в том числе, но не ограничиваясь только этим, к управлению векторами движения точки аффинного режима, векторами движения субблока в аффинном режиме, планарном режиме, режиме ATMVP, к временным векторам движения и так далее). Например, значение вектора движения ограничивается заданным диапазоном, соответствующим представляющему его биту. Если представляющим битом вектора движения является bitDepth, то диапазон равен -2^ (bitDepth - 1) ~ 2^ (bitDepth -1)-1, где “^” означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон равен -32768 ~ 32767; если bitDepth установлена равной 18, диапазон равен -131072~131071. Например, значение полученного вектора движения (например, MV из четырех субблоков 4x4 в одном блоке 8x8) ограничивается таким образом, что максимальная разность между целочисленными частями четырех субблоков MV 4x4 не превышает N пикселей, например, не более 1 пикселя. Здесь предоставлены два способа ограничения вектора движения, соответствующего bitDepth.
Способ 1: удалить MSB (most significant bit, старший значащий бит) переполнения посредством следующих операций:
ux = (mvx+2bitDepth) % 2bitDepth … (1)
mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux … (2)
uy = (mvy+2bitDepth) % 2bitDepth … (3)
mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy … (4)
где mvx - горизонтальная составляющая вектора движения блока или субблока изображения, mvy - вертикальная составляющая вектора движения блока или субблока изображения, и ux и uy - соответствующие промежуточные значения.
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равно 32767. В компьютерной системе десятичные числа сохраняются как двоичные компоненты. Двоичным дополнительным кодом -31769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, так что результирующим двоичным дополнительным кодом является 0111,1111,1111,1111 (десятичное число 32767), который является таким же, как выходной результат применения формул (1) и (2).
ux = (mvpx + mvdx + 2bitDepth) % 2bitDepth … (5)
mvx = (ux >= 2bitDepth-1) ? (ux - 2bitDepth) : ux … (6)
uy = (mvpy + mvdy + 2bitDepth) % 2bitDepth … (7)
mvy = (uy >= 2bitDepth-1) ? (uy - 2bitDepth) : uy … (8)
Операции могут применяться во время суммирования 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, показанный на фиг. 1A.
Устройство 400 видеокодирования содержит порты 410 ввода (или входные порты 410) и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (central processing unit, CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и порты 450 вывода (или выходные порты 450) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования может также содержать оптоэлектрические (optical-to-electrical, OE) компоненты и электрооптические (electrical-to-optical, EO) компоненты, связанные с входными портами 410, блоками 420 приемника, блоками 440 передатчика 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 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (read-only memory, ROM), оперативной памятью (random access memory, RAM), троичной ассоциативной памятью (ternary content-addressable memory, TCAM) и/или статической оперативной памятью (static random-access memory, 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 может, таким образом, быть реализовано с большим разнообразием конфигураций.
Раздел "Уровень техники" относится к режиму внутрикадрового предсказания.
MIP (Matrix-based Intra Prediction, внутрикадровое предсказание на основе матрицы) and IBC (Intra Block Copy, копирование внутрикадровых блоков) являются двумя способами предсказания. MIP выполняет внутрикадровое предсказание, основываясь на заданных коэффициентах. В IBC значения выборок предсказываются, исходя из других выборок в том же самом изображении, с помощью вектора вектора смещения, называемого блочным вектором, способом, концептуально схожим с предсказанием компенсированного движения.
Режим палитры является инструментом кодирования для кодирования контента экрана (screen content coding, SCC), чтобы повысить эффективность кодирования контентов экрана, таких как формируемое компьютером видео с существенным объемом текста и графики. В режиме палитры пиксели в блоке кодирования (coding unit, CU) представляются выбранными репрезентативными цветами, соответствующими характеристикам контентов экрана, в которых пиксельные значения обычно концентрируются на нескольких цветовых значениях.
В некоторых примерах режим MIP (или IBC или палитры) может применяться для компонента яркости. При выполнении получения режима внутрикадрового предсказания цветности, используя режим DM (режим получения из соответствующего компонента яркости), для режима DM назначаются специальные режимы (lumaIntraPredMode), если соответствующий блок яркости применяется с режимом MIP или IBC или палитры.
Существуют многочисленные документы, относящиеся к процессу получения режима внутрикадрового предсказания цветности, например, ITU JVET-O0925 раскрывает установленный режим получения цветности (derive mode, DM) как планарный режим (Planar mode), если разрешается внутрикадровое предсказание, основанное на матрице (Matrix-based Intra Prediction, MIP), ITU JVET-O0258 раскрывает запрещаемый режим Intra Block Copy, IBC, для компонента цветности, ITU JVET-O0651 раскрывает установленный режим получения цветности (Chroma DM) как DC, если разрешается IBC.
В этом примере процесс получения цветности является следующим:
Входными данными этого процесса являются:
- местоположение яркости (xCb, yCb), указывающее верхнюю-левую выборку текущего блока кодирования цветности относительно левой верхней выборки яркости текущего изображения,
- переменная cbWidth, указывающая ширину текущего блока кодирования, выраженную в выборках яркости,
- переменная cbHeight, указывающая высоту текущего блока кодирования, выраженную в выборках яркости.
В этом процессе получают режим внутрикадрового предсказания цветности IntraPredModeC[xCb][yCb].
Соответствующий режим внутрикадрового предсказания яркости lumaIntraPredMode получают следующим образом:
- Если intra_mip_flag[xCb][yCb] равен 1, lumaIntraPredMode устанавливают равным INTRA_PLANAR.
- В противном случае, если CuPredMode[xCb][yCb] равен MODE_IBC, lumaIntraPredMode устанавливают равным INTRA_DC.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb+cbWidth /2][yCb + cbHeight/2].
В представленном выше процессе, intra_mip_flag[xCb][yCb], равный 1, указывает, что типом внутрикадрового предсказания для выборок яркости является внутрикадровое предсказание, основанное на матрице, и intra_mip_flag[xCb][yCb], равный 0, указывает, что типом внутрикадрового предсказания для выборок яркости не является внутрикадровое предсказание, основанное на матрице.
CuPredMode[xCb][yCb], равное MODE_IBC, указывает, что текущий блок предсказания применяется с режимом IBC.
IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2] определяет режим внутрикадрового предсказания яркости для блока предсказания, содержащего положение (xCb + cbWidth / 2, yCb + cbHeight / 2), то есть, "середины" соответствующего блока предсказания яркости.
В этом примере режим внутрикадрового предсказания цветности IntraPredModeC[xCb][yCb] получают, используя intra_chroma_pred_mode[xCb][yCb] и lumaIntraPredMode, так показано в таблице 8-5 или в таблице 8-6, но существует также много других примеров или таблиц, которые могут использоваться для получения режима внутрикадрового предсказания цветности IntraPredModeC[xCb][yCb]. Помимо представленного выше процесса,
intra_chroma_pred_mode[x0][y0] определяет режим внутрикадрового предсказания (индекс) для выборок цветности. Заметим, что это не окончательный режим внутрикадрового предсказания, более правильным было бы считать это значение как промежуточный индекс, как входные данные для получения окончательного режима внутрикадрового предсказания для выборок цветности.
Таблица 8-5
Спецификация IntraPredModeC[xCb][yCb], зависящая от intra_chroma_pred_mode[xCb][yCb]lumaIntraPredMode, где значение sps_cclm_enabled_flag равно 0
Таблица 8-6
Спецификация IntraPredModeC[xCb][yCb], зависящая от intra_chroma_pred_mode[xCb][yCb]lumaIntraPredMode, где значение sps_cclm_enabled_flag равно 1
В приведенных выше таблицах 8-5 и 8-6 флаг sps_cclm_enabled_flag, равный 0, определяет, что внутрикадровое предсказание линейной модели с перекрестными компонентами (Cross-Component Linear Model, CCLM) из компонента яркости в компонент цветности запрещается. Флаг sps_cclm_enabled_flag, равный 1 определяет, что внутрикадровое предсказание линейной модели с перекрестными компонентами из компонента яркости в компонент цветности разрешается.
В примере, раскрытом в представленном выше процессе, получают режим внутрикадрового предсказания яркости (lumaIntraPredMode) и затем режим внутрикадрового предсказания цветности (intra_chroma_pred_mode) получают, например, из битового потока. В соответствии со значением режима внутрикадрового предсказания яркости (lumaIntraPredMode) и значением syntax intra_chroma_pred_mode, выходной режим предсказания получают в соответствии с таблицами 8-5 и 8-6.
В некоторых примерах, соответствующих таблицам 8-5 и 8-6, выходной режим может быть одним из 70 режимов. 70 режимов могут классифицироваться как 67 обычных режимов и три режима линейной модели с перекрестными компонентами (cross-component linear model, CCLM). 67 обычных режимов могут дополнительно разделяться на неугловые режимы (режимы планарный и DC) и 65 угловых режимов (режимы 2-66), как показано на фиг. 6.
Режимы 81, 82, 83 соответствуют трем режимам CCLM (линейной модели с перекрестными компонентами), которые соответствуют левому и верхнему линейному режиму (INTRA_LT_CCLM), левому линейному режиму (INTRA_L_CCLM) и верхнему линейному режиму (INTRA_T_CCLM). Эти режимы обобщены в таблице 8-3.
Таблица 8-3
Спецификация внутрикадрового режима и соответствующие названия
Несовпадение между положением флага MIP (или IBC) и положением режима внутрикадрового предсказания яркости может вызвать потенциальную проблему в получении режима внутрикадрового предсказания цветности.
А именно, флаг intra_mip_flag (или CuPredMode) выбирается из положения (xCb, yCb) яркости, тогда как режим внутрикадрового предсказания блока яркости выбирается из положения (xCb + cbWidth / 2, yCb + cbHeight / 2), как указано далее (определяется как процесс VVC получения режима внутрикадрового предсказания цветности).
- Если значение intra_mip_flag[xCb][yCb] равно 1, lumaIntraPredMode устанавливается равным INTRA_PLANAR.
- В противном случае, если CuPredMode[xCb][yCb] равен MODE_IBC, lumaIntraPredMode устанавливают равным INTRA_DC.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
Когда CUPredMode[xCb][yCb] равно MODE_IBC, это указывает, что никакой режим внутрикадрового предсказания на определяется в рабочем проекте VVC.
В примере, показанном на фиг. 7, разделение блока предсказания яркости и блока предсказания цветности в области кодирования (например, областью кодирования является CTU) не совпадает, когда разрешается способ кодирования двоичного дерева (одно разделение дерева для яркости и одно разделение дерева для цветности). Для упрощения, предполагается, что компонент цветности в CTU разделяется на две части, левое и правое субразделение (левый CTU на фиг. 7). Компонент яркости в CTU также разделяется на две части, однако, это верхнее и нижнее субразделение. Верхнее субразделение компонента яркости применяется с обычным режимом внутрикадрового предсказания, а нижнее субразделение применяется с режимом IBC (правый CTU на фиг. 7).
В этом примере, показанном на фиг. 7, компонент цветности выполняет получение режима внутрикадрового предсказания цветности. В соответствии с процессом VVC получения режима внутрикадрового предсказания цветности, как описано выше, значение intra_mip_flag[xCb][yCb] равно 0, поскольку обычный режим внутрикадрового предсказания применяется для верхнего субразделения внутри компонента яркости, левым-верхним положением которого является (xCb, yCb). По той же причине CuPredMode[xCb][yCb] также не равно MODE_IBC, где положение (xCb, yCb) принадлежит верхнему субразделению компонента яркости и где блок применяется с обычным внутрикадровым предсказанием. Следовательно, получение режима внутрикадрового предсказания цветности будет извлекать значение обычного режима внутрикадрового предсказания яркости в (xCb + cbWidth / 2, yCb + cbHeight / 2) (то есть, IntraPredModeY[xCb + cbWidth/2][yCb + cbHeight/2]). Однако, положение (xCb + cbWidth / 2, yCb + cbHeight / 2) теперь указывает на местоположение в нижнем субразделении компонента яркости (как показано в нижнем CTU на фиг. 7). Нижнее субразделение компонента яркости применяется вместе с IBC и никакой режим внутрикадрового предсказания яркости не определяется. Поэтому в текущей спецификации значение IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2] является неопределенным значением. В этом случае выхода за обычные пределы процесс получения режима внутрикадрового предсказания цветности нарушается.
Пример, показанный на фиг. 7, является случаем выхода за обычные пределы, где два субподразделения в компоненте яркости применяются с обычным режимом внутрикадрового предсказания и режимом IBC, соответственно. Может быть установлено, что процесс получения цветности также нарушается, когда режим IBC заменяется на режим MIP или режим палитры.
Местоположение (xCb, yCb) яркости указывает верхнюю-левую выборку текущего блока кодирования цветности относительно левой верхней выборки яркости текущего изображения.
Получают значение (xCb, yCb) местоположения яркости для верхнего-левого местоположения компонента цветности текущего блока кодирования, значение (xCb, yCb) местоположения яркости определяют в выборке яркости текущего блока кодирования; получают значение первой информации указания (например, intra_mip_flag) для текущего блока кодирования, получают значение первой информации указания для текущего блока кодирования получают в соответствии с положением яркости (cbWidth/2, cbHeight/2) относительно верхней-левой выборки яркости текущего блока кодирования, cbWidth представляет ширину текущего блока кодирования, выраженную в выборках яркости, cbHeight представляет высоту текущего блока кодирования, выраженную в выборках яркости (xCb+cbWidth/2, yCb+cbHeight/2)).
В качестве примера, показанного на фиг. 8, значением местоположения для верхнего-левого положения текущего изображения является (0, 0), а значением местоположения для верхнего-левого положения текущего блока кодирования является (128, 64). Ширина текущего блока кодирования равна 64, высота текущего блока кодирования равна 32. Следовательно, значение местоположения, которое используется для получения режима внутрикадрового предсказания равно ((128+ 64/2), 64+32/2)), то есть, (160, 80).
В одном из вариантов осуществления настоящего изобретения положение флагов IBC или MIP совпадает с положением режима внутрикадрового предсказания яркости и применяется следующий процесс:
- Если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1, lumaIntraPredMode устанавливается равным INTRA_PLANAR.
- В противном случае, если CuPredMode[xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC, lumaIntraPredMode устанавливается равным INTRA_DC
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В таком случае, снова принимая фиг. 7 в качестве примера, получение режима внутрикадрового предсказания цветности должно попадать на вторую ветвь (то есть, в противном случае, если CuPredMode[xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC), lumaIntraPredMode устанавливается как режим DC.
Спосб гарантирует, что режимы IBC и MIP обнаруживаются в первом месте, используя совпадающее положение, и, таким образом, переменная lumaIntraPredMode всегда должна назначаться вместе с действительным режимом внутрикадрового предсказания яркости.
В одном из вариантов осуществления, когда положение флагов IBC или MIP совпадает с положением режима внутрикадрового предсказания яркости и их соответствующий режим внутрикадрового предсказания в обоих случаях устанавливается как планарный режим, применяется следующий процесс:
- Если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1 или CuPredMode[xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC, lumaIntraPredMode устанавливается равным INTRA_PLANAR.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В одном из вариантов осуществления, когда положение флагов IBC или MIP совпадает с положением режима внутрикадрового предсказания яркости и их соответствующий режим внутрикадрового предсказания в обоих случаях устанавливается как режим DC, применяется следующий процесс:
- Если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1 или CuPredMode[xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC, lumaIntraPredMode устанавливается равным INTRA_DC.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В одном из вариантов осуществления настоящего изобретения положение флагов IBC или MIP совпадает с положением режима внутрикадрового предсказания яркости и применяется следующий процесс:
- Если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1, lumaIntraPredMode устанавливается равным INTRA_PLANAR.
- В противном случае, если CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight /2] равно MODE_IBC, lumaIntraPredMode устанавливается равным INTRA_DC
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В одном из вариантов осуществления настоящего изобретения положение флагов IBC, MIP или палитры совпадает с положением режима внутрикадрового предсказания яркости и применяется следующий процесс:
- Если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1, lumaIntraPredMode устанавливается равным INTRA_PLANAR.
- В противном случае, если CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC или MODE_PLT, lumaIntraPredMode устанавливается равным INTRA_DC.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В одном из вариантов осуществления настоящего изобретения положение флагов IBC, MIP или палитры совпадает с положением режима внутрикадрового предсказания яркости и применяется следующий процесс:
- Если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1 или если CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC или MODE_PLT, lumaIntraPredMode устанавливается равным INTRA_PLANAR.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В одном из вариантов осуществления настоящего изобретения положение флагов IBC, MIP или палитры совпадает с положением режима внутрикадрового предсказания яркости и применяется следующий процесс:
- Если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1 или если CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC или MODE_PLT, lumaIntraPredMode устанавливается равным INTRA_DC.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В одном из вариантов осуществления настоящего изобретения положение флагов IBC, MIP или палитры совпадает с положением режима внутрикадрового предсказания яркости и применяется следующий процесс:
- если CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC или MODE_PLT, lumaIntraPredMode устанавливается равным INTRA_DC
- В противном случае, если значение intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1, lumaIntraPredMode устанавливается равным INTRA_PLANAR.
- В противном случае, lumaIntraPredMode устанавливают равным IntraPredModeY[xCb + cbWidth / 2][yCb + cbHeight / 2].
В представленных выше вариантах осуществления используется CuPredMode[xCb + cbWidth / 2][yCb+ cbHeight / 2] или CuPredMode[i][xCb + cbWidth / 2][yCb + cbHeight /2]. Фактически, они определяют одну и ту же вещь, то есть, режим предсказания в положении (xCb + cbWidth / 2, yCb + cbHeight / 2) компонентов яркости.
Заметим, что CuPredMode[i][xCb + cbWidth / 2][yCb + cbHeight / 2] используется с одним или более размером определения компонентов яркости или цветности, где i=0 или 1.
CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] представляет режим предсказания компонента яркости, поскольку его индекс размера равен 0.
ЕНсли используется канал цветности, соответствующая переменная должна быть CuPredMode[1][xCb + cbWidth / 2][yCb + cbHeight / 2].
В представленном выше варианте осуществления, когда CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_PLT, это указывает, что компонент яркости в положении яркости (cbWidth / 2, cbHeight / 2) использует режим палитры. Положение (cbWidth / 2, cbHeight / 2) выборки определяет положение относительно верхней-левой выборки яркости текущего блока кодирования. Верхняя левая выборка текущего блока кодирования (xCb, yCb) определяет положение относительно верхней левой выборки текущего изображения.
Пример положения (xCb+cbWidth/2, yCb+cbHeight/2) яркости показан на фиг. 7, где xCb = 128, yCb = 64, cbWidth = 64, cbHeight = 32.
В частности, нижеследующие способы и варианты осуществления реализуются посредством устройства кодирования или декодирования. Устройство декодирования может быть видеодекодером 30, показанным на фиг. 1А, или декодером 30, показанным на фиг. 3.
Устройство кодирования может быть видеокодером 20, показанным на фиг. 1А, или кодером 20, показанным на фиг. 2.
В соответствии с вариантом 900 осуществления (фиг. 9), устройство получает первую информацию указания для положения яркости (cbWidth/2, cbHeight/2) текущего блока кодирования относительно верхнего левого положения выборки яркости (xCb, yCb) текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в компоненте яркости, cbHeight представляет высоту текущего блока кодирования в компоненте яркости на этапе 901.
Соответственно, cbWidth/2 представляет половину ширины текущего блока кодирования в компоненте яркости, а cbHeight/2 представляет половину высоты текущего блока кодирования в компоненте яркости. Абсолютным положением положения яркости (cbWidth/2, cbHeight/2) является (xCb+cbWidth/2, yCb+cbHeight/2), то есть, "середина" соответствующего блока предсказания яркости.
Например, первая информация инджикации для положения яркости (cbWidth/2, cbHeight/2) может быть intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2].
На этапе 902, когда первая информация указания указывает, что внутрикадровое предсказание, основанное на матрице (Matrix-based Intra Prediction, MIP), применяется для компонента яркости в положении яркости (cbWidth/2, cbHeight/2) относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, устройство устанавливает значение режима внутрикадрового предсказания яркости, связанное с текущим блоком кодирования, как первое значение по умолчанию. Например, первое значение по умолчанию является значением планарного режима.
Когда intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 1, первая информация указания указывает, что MIP применяется для компонента яркости.
На этапе 903, когда первая информация указания указывает, что MIP не применяется для компонента яркости в положении яркости (cbWidth/2, cbHeight/2) относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, устройство получает вторую информацию указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования.
Когда intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2] равно 0, первая информация указания указывает, что MIP не применяется для компонента яркости.
Например, первая информация инджикации для положения яркости (cbWidth/2, cbHeight/2) может быть intra_mip_flag[xCb + cbWidth / 2][yCb + cbHeight / 2].
На этапе 905, когда вторая информация указания указывает, что режим копирования блока внутрикадрового предсказания (Intra Block Copy, IBC) применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, устройство устанавливает значение режима внутрикадрового предсказания яркости, связанное с текущим блоком кодирования, как второе значение по умолчанию. Например, первое значение по умолчанию является значением планарного режима.
Когда CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_IBC, вторая информация указания указывает, что режим IBC применяется к компоненту яркости. Когда CuPredMode[0][xCb + cbWidth / 2][yCb + cbHeight / 2] равно MODE_PLT, вторая информация указания указывает, что для компонента яркости применяется режим палитры.
Когда вторая информация указания указывает, что режим IBC или режим палитры не применяется к компоненту яркости в положении (cbWidth/2, cbHeight/2) яркости, режим внутрикадрового предсказания яркости, связанный с текущим блоком кодирования, устанавливается как режим внутрикадрового предсказания яркости в положении [xCb +cbWidth/2][yCb + cbHeight/2], то есть, IntraPredModeY[xCb + cbWidth/2][yCb + cbHeight / 2].
На этапе 907 устройство получает значение режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания яркости текущего блока кодирования. Если значение режима внутрикадрового предсказания яркости текущего блока кодирования является первым значением по умолчанию, показанным на этапе 902, устройство получает значение режима внутрикадрового предсказания яркости, основываясь на первом значении по умолчанию. Если значение режима внутрикадрового предсказания яркости текущего блока кодирования является вторым значением по умолчанию, показанным на этапе 905, устройство получает значение режима внутрикадрового предсказания яркости, основываясь на втором значении по умолчанию.
Подробная информация о получении режима внутрикадрового предсказания цветности, используя режим внутрикадрового предсказания из соответствующего компонента яркости, приводится в упомянутых выше вариантах осуществления.
На фиг. 10 показан вариант осуществления устройства 1000. Устройство 1000 может быть видеодекодером 30, показанным на фиг. 1А, или декодером 30, показанным на фиг. 3, или может быть видеокодером, показанным на фиг. 1А, или кодером 20, показанным на фиг. 2. Устройство 1000 может использоваться для реализации варианта осуществления 900 и других вариантов осуществления, описанных выше.
Устройство 1000 для получения режима внутрикадрового предсказания цветности, содержит блок 1001 получения, блок 1002 установки и блок 1003 режима внутрикадрового предсказания цветности. Блок 1001 получения, выполненный с возможностью получения первой информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в компоненте яркости, cbHeight представляет высоту текущего блока кодирования в компоненте яркости. Блок 1002 установки, выполненный с возможностью установки значения режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, как первого значения по умолчанию, когда первая информация указания указывает, что внутрикадровое предсказание, основанное на матрице (Matrix-based Intra Prediction, MIP), применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования.
Блок 1001 получения, дополнительно выполненный с возможностью получения второй информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования, когда первая информация указания указывает, что MIP не применяется к компоненту яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования.
Блок 1002 установки, дополнительно выполненный с возможностью установки значения режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, как второго значения по умолчанию, когда вторая информация указания указывает, что режим копирования блока внутрикадрового предсказания (Intra Block Copy, IBC) или режим палитры применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования.
Блок 1003 режима внутрикадрового предсказания цветности выполнен с возможностью получения значения режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания яркости текущего блока кодирования.
Настоящее раскрытие обеспечивает нижеследующий набор вариантов осуществления или подходов:
В соответствии с первым подходом, изобретение связано со способом кодирования, реализуемым устройством декодирования и содержащим этапы, на которых:
получают значение первой информации указания для текущего блока кодирования, в котором значение первой информации указания для текущего блока кодирования получают из компонента яркости, соответствующего положению (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения выборки яркости текущего блока кодирования (xCb, yCb), где cbWidth представляет ширину текущего блока кодирования, выраженную в выборках яркости, cbHeight представляет высоту текущего блока кодирования, выраженную в выборках яркости;
устанавливают значение режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, как первое значение по умолчанию, когда значение первой информации указания указывает, что внутрикадровое предсказание, основанное на матрице (Matrix-based Intra Prediction, MIP), применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхней-левой выборки яркости текущего блока кодирования (xCb, yCb).
получают значение режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания яркости текущего блока кодирования.
В соответствии со вторым подходом, изобретение связано со способом кодирования, реализуемым устройством декодирования и содержащим этапы, на которых:
получают значение первой информации указания для текущего блока кодирования, в котором значение первой информации указания для текущего блока кодирования получают из компонента яркости, соответствующего положению (cbWidth/2, cbHeight/2) яркости относительно верхней-левой выборки яркости текущего блока кодирования (xCb, yCb), где cbWidth представляет ширину текущего блока кодирования, выраженную в выборках яркости, cbHeight представляет высоту текущего блока кодирования, выраженную в выборках яркости;
устанавливают значение режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, как первое значение по умолчанию, когда значение первой информации указания указывает, что режим копирования блока внутрикадрового предсказания (Intra Block Copy, IBC) или режим палитры применяется для компонента яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхней-левой выборки яркости текущего блока кодирования (xCb, yCb);
получают значение режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания яркости текущего блока кодирования.
Как обсуждалось выше, в традиционных случаях, связанных с MIP или IBC или палитрой (как в примере, показанном на фиг. 7), существует несоответствие между положением режима MIP (или IBC или палитры) и положением режима внутрикадрового предсказания яркости, когда разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева). При подходах и формах реализации изобретения получение первой информации указания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение MIP режима и положение режима внутрикадрового предсказания яркости совпадают, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева). Когда первая информация указания не указывает, что MIP применяется для компонента яркости в положении яркости (cbWidth/2, cbHeight/2), получение второй информации указания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение IBC режима и положение режима внутрикадрового предсказания яркости выравниваются, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева). Альтернативно, получение второй информации указания из фиксированного положения (cbWidth/2, cbHeight/2) в соответствующем компоненте яркости гарантирует, что положение палитры режима и положение режима внутрикадрового предсказания яркости выравниваются, когда при заданном размере блока разделение компонента яркости отличается от разделения компонента цветности (например, когда разрешен способ кодирования двоичного дерева).
Далее приводится объяснение применений способа кодирования, а также, способа декодирования, как они описаны в представленных выше вариантах осуществления, и использующей их системы.
На фиг. 11 представлена блок-схема системы 3100 предоставления контента для реализации услуги распределения контента. Этот система 3100 поддержки контента содержит устройство 3102 получения изображения, оконечное устройство 3106 и, как вариант, содержит дисплей 3126. Устройство 3102 получения изображения осуществляет связь с оконечным устройством 3106 по каналу 3104 связи. Канал связи может содержать канал 13 связи, описанный выше. Линия 3104 связи содержит, но не ограничивается WI-FI, Ethernet, кабельную линию, беспроводную линию связи (3G/4G/5G), USB или их сочетание любого вида и т.п.
Устройство 3102 получения изображения генерирует данные и может кодировать данные по способу кодирования, как представлено в приведенных выше вариантах осуществления. Альтернативно, устройство 3102 получения изображения может распределять данные потоковому серверу (не показан на чертежах) и сервер кодирует данные и передает кодированные данные оконечному устройству 3106. Устройство 3102 получения изображения содержит, не ограничиваясь только этим, камеру, смартфон или планшет, компьютер или переносной компьютер, система видеоконференций, PDA, устройство, монтируемое на транспортном средстве, или сочетание любых из них и т.п. Например, устройство 3102 получения изображения может содержать устройство 12 источника, как описано выше. Когда данные содержат в себе видеоданные, причем видеокодер 20, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс видеокодирования. Когда данные содержат в себе аудиоданные (например, голосовые), аудиокодер, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс аудиокодирования. Для некоторых практических сценариев устройство 3102 получения изображения распределяет кодированные видеоданные и аудиоданные посредством мультиплексирования их вместе. Для других практических сценариев, например, в системе видеоконференций, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 получения изображения раздельно распределяет кодированные аудиоданные и кодированные видеоданные оконечному устройству 3106.
В системе 3100 предоставления контента оконечное устройство 310 принимает и воспроизводит кодированные данные. Оконечное устройство 3106 может быть устройством с возможностями приема и реконструкции данных, таким как смартфон или планшет 3108, компьютером или переносным компьютером 3110, сетевым видеорекордером (NVR) / цифровым видеорекордером (digital video recorder, DVR) 3112, телевизионным приемником 3114, телевизионной приставкой (set top box, STB) 3116, системой 3118 видеоконференций, системой 3120 видеонаблюдения, персональным цифровым помощником (personal digital assistant, PDA) 3122, устройством 3124, монтируемым на транспортном средстве, или сочетанием любых из них и т.п., способным декодировать вышеупомянутые кодированные данные. Например, оконечное устройство 3106 может содержать устройство 14 назначения, как описано выше. Когда кодированные данные содержат в себе видеоданные, видеокодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения видеодекодирования. Когда кодированные данные содержат в себе аудиоданные, аудиодекодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения аудиодекодирования.
Для оконечного устройства, имеющего дисплей, например, смартфон или планшет 3108, компьютер или переносной компьютер 3110, сетевой видеорекордер (NVR) / цифровой видеорекордер (DVR) 3112, телевизионный приемник 3114, персональный цифровой помощник (PDA) 3122, или устройство 3124, монтируемое на транспортном средстве, оконечное устройство может подавать декодированные данные на его дисплей. Для оконечного устройства, не имеющего дисплея, например, STB 3116, система 3118 видеоконференций или система 3120 видеонаблюдения, внешний дисплей 3116 осуществляет с ними связь и показывает декодированные данные.
Когда любое из устройств в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, показанные в упомянутых выше вариантах осуществления.
На фиг. 12 представлена структура примера оконечного устройства 3106. После того, как оконечное устройство 3106 принимает поток от устройства 3102 получения изображения, блок 3202 протокола анализирует протокол передачи потока. Протокол содержит, не ограничиваясь только этим, протокол потоковой передачи в реальном времени (Real Time Streaming Protocol, RTSP), протокол передачи гипертекста (Hyper Text Transfer Protocol, HTTP), протокол живой потоковой передачи HTTP (HTTP Live streaming protocol, HLS), MPEG-DASH, транспортный протокол передачи в реальном времени (Real-time Transport protocol, RTP), протокол передачи сообщений в реальном времени (Real Time Messaging Protocol, RTMP) или их комбинацию любого вида и т.п.
После того, как блок 3202 обработки протокола обработает поток, формируют потоковый файл. Файл выводят на блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференций, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208, не проходя через блок 3204 демультиплексирования.
Посредством процесса демультиплексирования формируются элементарный видеопоток (elementary stream, ES), аудио ES и, как вариант, субтитры. Видеодекодер 3206, который содержит видеодекодер 30, как объяснялось в вышеупомянутых вариантах осуществления, декодирует видео ES способом декодирования, показанным в вышеупомянутых вариантах осуществления, чтобы сформировать видеокадр, и подает эти данные на блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES, чтобы сформировать аудиокадр, и подает эти данные на блок 3212 синхронизации. Альтернативно, видеокадр может быть сохранен в буфере (не показан на фиг. 12) перед его подачей на блок 3212 синхронизации. Аналогично, аудиокадр может быть сохранен в буфере (не показан на фиг. 12) перед его подачей на блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и предоставляет видео/аудио на видео/аудиодисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видеоинформации и аудиоинформации. Информацию можно кодировать в синтаксисе, используя временные отметки, относящиеся к презентации кодированных аудио- и видеоданных, и временные отметки, относящиеся к передаче самого потока данных.
Если в поток включаются субтитры, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и аудиокадром и подает данные видео/аудио/субтитров на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается упомянутой выше системой и любое из таких устройств, как устройство кодирования изображения или устройство декодирования изображения, может быть введено в другую систему, например, в автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, подобны тем, которые используются в языке программирования "С". Однако, результаты операций целочисленного разделения и арифметических сдвигов определяются более точно и определяются дополнительные операции, такие как возведение в степень и деление действительных значений. Правила нумерации и подсчета обычно начинаются с 0, например, "первый" эквивалентно 0-ому, "второй" эквивалентно 1-ому и т.д.
Арифметические операторы
Приведенные ниже арифметические операторы определяются следующим образом:
Логические операторы
Приведенные ниже логические операторы определяются следующим образом:
Операторы отношений
Приведенные ниже операторы соотношений определяются следующим образом:
Когда оператор соотношения применяют к элементу синтаксиса или переменной, которой было присвоено значение "na" (not applicable, не применяется), значение "na" для элемента синтаксиса или переменной рассматривается как отдельное значение. Значение "na" рассматривается как неравное никакому другому значению.
Поразрядные операторы
Приведенные ниже операторы соотношений определяются следующим образом:
Операторы присвоения
Приведенные ниже арифметические операторы определяются следующим образом:
Обозначение диапазона
Нижеследующее обозначение используется для указания диапазона значений.
Математические функции
Определяются нижеследующие математические функции:
Ceil(x) - наименьшее целое числе, большее или равное х.
Clip1Y(x) = Clip3(0, (1 << BitDepthY) - 1, x)
Clip1C(x) = Clip3(0, (1 << BitDepthC) - 1, x)
Cos(x) - тригонометрическая косинусная функция, действующая на аргументе х в единицах радиан.
Floor(x) наибольшее целое числе, меньшее или равное х.
Ln(x) - натуральный логарифм x (логарифм по основанию e, где e - базовая постоянная натурального логарифма 2.718 281 828…).
Log2(x) - логарифм х по основанию 2.
Log10(x) - логарифм x по основанию 10.
Round(x) = Sign(x) * Floor(Abs(x) + 0.5)
Sin(x) - тригонометрическая синусная функция, действующая на аргументе х в единицах радиан.
Sqrt(x) =
Swap(x, y) = (y, x)
Tan(x) - тригонометрическая тангенсная функция, действующая на аргументе х в единицах радиан.
Порядок очередности выполнения операций
Когда порядок выполнения операций в выражении не указан явно, используя скобки, применяют следующие правила.
- Операции с более высоким приоритетом вычисляют перед любой операцией более низкого приоритета.
- Операции равного приоритета вычисляются последовательно слева направо.
Приведенная ниже таблица указывает приоритет операций в порядке от самого высшего к самому низшему; более высокое положение в таблице указывает более высокий приоритет
Для тех операций, которые также используются в языке программирования С, порядок приоритетов, используемый в настоящем описании является таким же, как он используется в языке программирования С.
Таблица: Очередность выполнения операций от наивысшей (вверху таблицы) к наинизшей (внизу таблицы).
Текстовое описание логических операций
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if(condition 0)
statement 0
else if(condition 1)
statement 1
…
else /* informative remark on remaining condition */
statement n
может быть записано следующим образом:
… как следует / … применяется следующее:
- If condition 0, statement 0
- Otherwise, if condition 1, statement 1
- …
- Otherwise (информационное замечание по остающемуся условию), оператор n
Каждый оператор "If … Otherwise, if … Otherwise, …" в тексте вводится с помощью "… as follows" или "… the following applies" непосредственно сопровождается "If … ". Последним условием "If … Otherwise, if … Otherwise, …" всегда означает "В противном случае, …". Interleaved "If … Otherwise, if … Otherwise, …", которые могут идентифицироваться совпадением "… as follows" или "… the following applies" с окончанием "Otherwise, …".
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if(condition 0a && condition 0b)
statement 0
else if(condition 1a | | condition 1b)
statement 1
…
else
statement n
может быть записано следующим образом:
… как следует / … применяется следующее:
- If all of the following conditions are true, statement 0:
- condition 0a
- condition 0b
- Otherwise, if one or more of the following conditions are true, statement 1:
- condition 1a
- condition 1b
- …
- Otherwise, statement n
В тексте оператор логических операций, как он должен быть описан математически в следующей форме:
if(condition 0)
statement 0
if(condition 1)
statement 1
может быть записано следующим образом:
When condition 0, statement 0
When condition 1, statement 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) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемой управляющей программы в форме команд или структур данных и может быть доступен компьютеру. Кроме того, любое соединение соответственно называется считываемым компьютером носителем. Например, если команды передаются с веб-сайта, сервера или от другого удаленного источника, используя коаксиальный кабель, оптический кабель, витую пару, цифровую абонентскую линию (digital subscriber line, DSL) или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, то тогда коаксиальный кабель, оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, содержатся в определении носителя. Однако, следует понимать, что считываемый компьютером носитель запоминающего устройства для хранения данных и носитель запоминающего устройства данных могут не содержать соединения, несущие, сигналы или другие переносные носители, но являться непереносными физическими носителями для хранения данных. Диски содержат компакт-диски (CD)ерные диски, оптические диски, универсальные цифровые диски (DVD), дискеты и диски Blu-ray, где одни диски обычно воспроизводят данные магнитным способом, тогда как другие диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также могут содержаться в рамках объема считываемых компьютером носителей.
Команды могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (digital signal processor, DSP), универсальные микропроцессоры, специализированные интегральные схемы (application-specific integrated circuit, ASIC), программируемые логические интегральные схемы (field programmable gate array, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как он используется здесь, может относиться к любой из вышеперечисленных структур или к любой другой структуре, пригодной для реализации описанных здесь технологий. Кроме того, в некоторых вариантах функциональные возможности, представленные в настоящем описании, могут быть обеспечены в рамках специализированных аппаратных средств и/или в модулях программного обеспечения, выполненных с возможностью кодирования и декодирования, или могут содержаться объединенном кодеке. Кроме того, технологии могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Технологии, описанные в настоящем раскрытии, могут быть реализованы широким разнообразием устройств, в том числе, беспроводным мобильным телефоном, интегральной схемой (integrated circuit, IC) или набором IC (например, набором чипов). Различные компоненты, модули или блоки описываются в насоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью осуществления раскрытых технологий, но не обязательно требующих реализации с помощью различных аппаратных блоков. Точнее, как описано выше, различные блоки могут объединяться в аппаратный блок кодера-декодера или могут обеспечиваться с помощью набора способных к взаимодействию аппаратных средств, содержащих один или более процессоров, как описано выше, в сочетании с соответствующим программным обеспечением и встроенным программным обеспечением.
Изобретение относится к области обработки изображений и, более конкретно, к выполнению получения режима внутрикадрового предсказания цветности, используя режим внутрикадрового предсказания, из соответствующего компонента яркости. Техническим результатом является повышение степени сжатия при минимальном влиянии или отсутствии влияния на качество изображения. Результат достигается тем, что кодирование, реализуемое устройством декодирования или устройством кодирования, содержит получение информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, в котором cbWidth представляет ширину текущего блока кодирования в выборках яркости, cbHeight представляет высоту текущего блока кодирования в выборках яркости; установку значения режима внутрикадрового предсказания яркости, ассоциированного с текущим блоком кодирования в качестве первого значения по умолчанию, когда информация указания указывает, что режим внутрикадрового предсказания, основанный на матрице (Matrix-based Intra Prediction, MIP), применяется к выборкам яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего левого положения (xCb, yCb) выборки яркости текущего блока кодирования; и получение значения режима внутрикадрового предсказания цветности, основываясь на значении режима внутрикадрового предсказания цветности текущего блока кодирования. 7 н. и 23 з.п. ф-лы, 13 ил., 4 табл.
1. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий этапы, на которых:
получают информацию указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в выборках яркости, cbHeight представляет высоту текущего блока кодирования в выборках яркости;
устанавливают значение режима внутрикадрового предсказания яркости, ассоциированного с текущим блоком кодирования, в качестве первого значения по умолчанию, когда значение информации указания указывает, что внутрикадровое предсказание, основанное на матрице (MIP), применяется для выборок яркости в положении (cbWidth/2, cbHeight/2) яркости относительно положения (xCb, yCb) верхней-левой выборки яркости текущего блока кодирования (xCb, yCb); и
получают значение режима внутрикадрового предсказания цветности на основе значения режима внутрикадрового предсказания яркости текущего блока кодирования.
2. Способ по п. 1, в котором первое значение по умолчанию равно значению планарного режима или первое значение по умолчанию равно значению режима DC.
3. Способ по п. 1 или 2, дополнительно содержащий этап, на котором: устанавливают значение режима внутрикадрового предсказания яркости,
ассоциированного с текущим блоком кодирования, в качестве второго значения по умолчанию, когда режим копирования блока внутрикадрового предсказания (Intra Block Copy, IBC) или режим палитры применяется для положения (cbWidth/2, cbHeight/2) яркости, а информация указания указывает, что MIP не применяется для выборок яркости в положении (cbWidth/2, cbHeight/2) яркости относительно положения (xCb, yCb) верхней-левой выборки яркости текущего блока кодирования.
4. Способ по п. 3, в котором второе значение по умолчанию равно значению режима DC или значению планарного режима.
5. Способ по любому из пп. 1-4, в котором разделение компонента яркости и разделение компонента цветности текущего блока кодирования не совпадают друг с другом.
6. Способ по любому из пп. 1-5, в котором абсолютным положением положения яркости (cbWidth/2, cbHeight/2) является (xCb+cbWidth/2, yCb+cbHeight/2), причем абсолютное положение (xCb+cbWidth/2, yCb+cbHeight/2) определяет положение относительно верхней левой выборки текущего изображения; положение (cbWidth/2, cbHeight/2) яркости определяет положение относительно положения (xCb, yCb) верхней левой выборки яркости текущего блока кодирования.
7. Способ по любому из пп. 3-5, в котором, когда режим IBC или режим палитры применяется к выборкам яркости в положении (cbWidth/2, cbHeight/2) яркости,
CuPredMode[0][xCb+cbWidth/2][yCb+cbHeight/2] равно MODE_IBC или MODE_PLT, соответственно.
8. Способ по любому из пп. 1-7, в котором, когда информация указания указывает, что MIP применяется к выборкам яркости в положении (cbWidth/2, cbHeight/2) яркости,
значение intra_mip_flag[xCb+cb Width/2][yCb+cbHeight/2] равно 1.
9. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий этапы, на которых:
получают информацию указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в выборках яркости, cbHeight представляет высоту текущего блока кодирования в выборках яркости;
устанавливают значение режима внутрикадрового предсказания яркости, связанного с текущим блоком кодирования, в качестве первого значения по умолчанию, когда значение информации указания указывает, что режим копирования блока внутрикадрового предсказания (IBC) или режим палитры применяется для выборок яркости в положении (cbWidth/2, cbHeight/2) яркости относительно положения (xCb, yCb) верхней-левой выборки яркости текущего блока кодирования; и
получают значение режима внутрикадрового предсказания цветности на основе значения режима внутрикадрового предсказания яркости текущего блока кодирования.
10. Способ по п. 9, в котором первое значение по умолчанию равно значению планарного режима или значению режима DC.
11. Способ по п. 9 или 10, в котором разделение компонента яркости и разделение компонента цветности текущего блока кодирования не совпадают друг с другом.
12. Способ по любому из пп. 9-11, в котором способ дополнительно содержит этап, на котором:
устанавливают значение режима внутрикадрового предсказания яркости текущего блока кодирования в качестве второго значения по умолчанию, когда режим внутрикадрового предсказания, основанный на матрице (MIP), применяется к выборкам яркости в положении (cbWidth/2, cbHeight/2) яркости и информация указания указывает, что режим IBC или режим палитры не применяется к положению (cbWidth/2, cbHeight/2) яркости.
13. Способ по п. 12, в котором второе значение по умолчанию равно значению планарного режима.
14. Способ по любому из пп. 9-13, в котором абсолютным положением для положения яркости (cbWidth/2, cbHeight/2) является (xCb+cbWidth/2, yCb+cbHeight/2), причем абсолютное положение (xCb+cbWidth/2, yCb+cbHeight/2) определяет положение относительно верхней левой выборки текущего изображения; положение (cbWidth/2, cbHeight/2) яркости определяет положение относительно положения (xCb, yCb) верхней левой выборки яркости текущего блока кодирования.
15. Способ по п. 12 или 13, в котором, когда MIP применяется к положению (cbWidth/2, cbHeight/2) яркости,
значение intra_mip_flag[xCb+cbWidth/2][yCb+cbHeight/2] равно 1.
16. Способ по любому из пп. 9-15, в котором, когда режим IBC или режим палитры применяется к положению (cbWidth/2, cbHeight/2) яркости,
CuPredMode[0][xCb+cbWidth/2][yCb+cbHeight/2] равно MODE_IBC или MODE_PLT, соответственно.
17. Устройство получения режима внутрикадрового предсказания цветности, содержащее:
один или более процессоров; и
энергонезависимый считываемый компьютером носитель хранения данных, соединенный с процессорами и хранящий программы для выполнения процессорами, вызывающие при исполнении процессорами, выполнение устройством:
получения первой информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в выборках яркости, cbHeight представляет высоту текущего блока кодирования в выборках яркости;
установки значения режима внутрикадрового предсказания яркости, ассоциированного с текущим блоком кодирования, в качестве первого значения по умолчанию, когда значение информации указания указывает, что внутрикадровое предсказание, основанное на матрице (MIP), применяется для выборок яркости в положении (cbWidth/2, cbHeight/2) яркости относительно положения (xCb, yCb) верхней-левой выборки яркости текущего блока кодирования;
получения второй информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования, когда первая информация указания указывает, что MIP не применяется к выборкам яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования;
установки значения режима внутрикадрового предсказания яркости, ассоциированного с текущим блоком кодирования, в качестве второго значения по умолчанию, когда второе значение информации указания указывает, что режим копирования блока внутрикадрового предсказания (IBC) или режим палитры применяется для выборок яркости в положении (cbWidth/2, cbHeight/2) яркости относительно положения (xCb, yCb) верхней-левой выборки яркости текущего блока кодирования; и
получения значения режима внутрикадрового предсказания цветности на основе значения режима внутрикадрового предсказания яркости текущего блока кодирования.
18. Устройство по п. 17, в котором первой информацией указания является intra_mip_flag[xCb+cbWidth/2][yCb+cbHeight/2], причем
когда intra_mip_flag[xCb+cbWidth/2][yCb+cbHeight/2] равно 1, первая информация указания указывает, что MIP применяется к выборкам яркости.
19. Устройство по п. 17 или 18, в котором второй информацией является CuPredMode[0] [xCb+cbWidth/2][yCb+cbHeight/2], при этом
когда CuPredMode[0][xCb+cbWidth/2][yCb+cbHeight/2] равно MODE_IBC или MODE_PLT, вторая информация указания указывает, что к выборкам яркости применяется режим IBC или режим палитры.
20. Устройство по любому из пп. 17-19, в котором первое значение по умолчанию является значением планарного режима, а второе значение по умолчанию является значением режима DC.
21. Устройство по любому из пп. 17-20, в котором устройство является декодером или кодером.
22. Устройство по любому из пп. 17-21, в котором разделение компонента яркости и разделение компонента цветности текущего блока кодирования не совпадают.
23. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп. 1-16.
24. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-16.
25. Энергонезависимый машиночитаемый носитель данных, хранящий компьютерный программный продукт, содержащий управляющую программу для выполнения способа по любому из пп. 1-16.
26. Устройство получения режима внутрикадрового предсказания цветности, содержащее:
блок (1001) получения, выполненный с возможностью получения первой информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования, где cbWidth представляет ширину текущего блока кодирования в выборках яркости, cbHeight представляет высоту текущего блока кодирования в выборках яркости;
блок (1002) установки, выполненный с возможностью установки значения режима внутрикадрового предсказания яркости, ассоциированного с текущим блоком кодирования, в качестве первого значения по умолчанию, когда первая информация указания указывает, что внутрикадровое предсказание, основанное на матрице (MIP), применяется к выборкам яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования;
блок (1001) получения, дополнительно выполненный с возможностью получения второй информации указания для положения (cbWidth/2, cbHeight/2) яркости текущего блока кодирования, когда первая информация указания указывает, что MIP не применяется к компоненту яркости в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования;
блок (1002) установки, дополнительно выполненный с возможностью установки значения режима внутрикадрового предсказания яркости, ассоциированного с текущим блоком кодирования, в качестве второго значения по умолчанию, когда вторая информация указания указывает, что к выборкам яркости применяется режим копирования блока внутрикадрового предсказания (IBC) или режим палитры в положении (cbWidth/2, cbHeight/2) яркости относительно верхнего-левого положения (xCb, yCb) выборки яркости текущего блока кодирования; и
блок (1003) режима внутрикадрового предсказания цветности, выполненный с возможностью получения значения режима внутрикадрового предсказания цветности на основе значения режима внутрикадрового предсказания яркости текущего блока кодирования.
27. Устройство по п. 26, в котором первой информацией указания является intra_mip_flag[xCb+cbWidth/2][yCb+cbHeight/2], причем
когда intra_mip_flag[xCb+cbWidth/2][yCb+cbHeight/2] равно 1, первая информация указания указывает, что MIP применяется к выборкам яркости.
28. Устройство по п. 26 или 27, в котором второй информацией является CuPredMode[0][xCb+cbWidth/2][yCb+cbHeight/2], при этом
когда CuPredMode[0][xCb+cbWidth/2][yCb+cbHeight/2] равно MODE_IBC или MODE_PLT, вторая информация указания указывает, что к выборкам яркости применяется режим IBC или режим палитры.
29. Устройство по любому из пп. 26-28, в котором первое значение по умолчанию является значением планарного режима, а второе значение по умолчанию является значением режима DC.
30. Устройство по любому из пп. 26-29, в котором устройство является декодером или кодером.
US 9426461 B2, 2016.08.23 | |||
US 8891620 B2, 2014.11.18 | |||
WO 2017143467 A1, 2017.08.31 | |||
US 9807401 B2, 2017.10.31 | |||
KR 20070077609 A, 2007.07.27 | |||
US 2018241995 A1, 2018.08.23 | |||
CN 109862353 A, 2019.06.07 | |||
CN 100461867 C, 2009.02.11 | |||
Устройство и способ декодирования изображения, долговременный считываемый компьютером носитель записи, на который записана программа декодирования изображения, для декодирования информации | 2014 |
|
RU2662393C1 |
RU 2016139140 A, 2018.12.13. |
Авторы
Даты
2023-08-02—Публикация
2020-07-17—Подача