Перекрестная ссылка на связанные заявки
Данная патентная заявка испрашивает приоритет по предварительной патентной заявке США № US 62/835487, поданной 17 апреля 2019 г. Раскрытие вышеупомянутой патентной заявки включается в данный документ в полном объеме путем ссылки.
Область техники, к которой относится изобретение
Варианты осуществления настоящей заявки (раскрытие) в целом относятся к области обработки изображений и, в частности, к внутреннему предсказанию.
Уровень техники
Видеокодирование (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray дисках, системах сбора и редактирования видеоконтента, а также и видеокамерах приложений безопасности.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные способы сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями в качестве изображения или вообще без них.
Сущность изобретения
Настоящее раскрытие пытается смягчить или решить вышеупомянутую проблему.
Варианты осуществления настоящей заявки обеспечивают устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.
Настоящее раскрытие раскрывает способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий: определение режима внутреннего предсказания текущего блока; и определение выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока.
Таким образом, способ согласно настоящему раскрытию определяет режим внутреннего предсказания текущего блока и определяет, следует ли и как выполнять вторичное преобразование текущего блока, на основе определенного режима внутреннего предсказания.
В способе, как описано выше, определение выбора ядра вторичного преобразования для вторичного преобразования текущего блока может быть основано на индексе режима внутреннего предсказания текущего блока.
В способе, описанном выше, в случае, если текущий блок не предсказывается с использованием режима MIP, внутреннего предсказания на основе матрицы, ядро вторичного преобразования может быть выбрано для вторичного преобразования текущего блока.
Таким образом, в случае, если блок с внутренним предсказанием предсказывается с использованием режима MIP, например, значение флага MIP может использоваться, чтобы указать, предсказывается ли блок с использованием режима MIP или нет, вторичное преобразование отключено для этого блока с внутренним предсказанием, другими словами, значение индекса вторичного преобразования установлено в 0, или индекс вторичного преобразования не нужно декодировать из битового потока. Таким образом, достигается гармонизация инструмента MIP и инструмента RST в смысле выбора ядра вторичного преобразования.
Вышеописанный способ может дополнительно содержать: отключение вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима MIP.
В способе, как описано выше, отключение вторичного преобразования текущего блока может содержать: установку значения информации указания вторичного преобразования для текущего блока в значение по умолчанию.
В способе, как описано выше, может быть указано, предсказывается ли текущий блок с использованием режима MIP, согласно значению информации указания MIP.
В способе, описанном выше, в случае, если текущий блок не предсказывается с использованием режима MIP, вторичное преобразование может быть выбрано в соответствии со следующей таблицей.
при этом:
sps_lfnst_enabled_flag, равный 1, указывает, что lfnst_idx может присутствовать в синтаксисе единицы внутреннего кодирования; при этом sps_lfnst_enabled_fag, равный 0, указывает, что lfnst_idx не присутствует в синтаксисе единицы внутреннего кодирования;
intra_mip_flag[ x0 ][ y0 ], равное 1, указывает, что тип внутреннего предсказания для выборок яркости является внутренним предсказанием на основе матрицы. intra_mip_flag[ x0 ][ y0 ], равное 0, указывает, что тип внутреннего предсказания для выборок яркости не является внутренним предсказанием на основе матрицы; при этом, когда intra_mip_flag[ x0 ][ y0 ] отсутствует, предполагается, что он равен 0;
lfnst_idx указывает, используется ли и какое из двух ядер низкочастотного неразделимого преобразования в выбранном наборе преобразований. lfnst_idx, равное 0, указывает, что низкочастотное неразделимое преобразование не используется в текущей единице кодирования; при этом, когда lfnst_idx отсутствует, предполагается, что он равен 0;
transform_skip_flag[ x0 ][ y0 ][ cIdx ] указывает, применяется ли преобразование к соответствующему блоку преобразования или нет.
Вышеописанный способ может дополнительно содержать: получение индекса режима внутреннего предсказания текущего блока в соответствии с внутренним предсказанием на основе матрицы, MIP, индексом режима текущего блока и размером текущего блока; выбор ядра вторичного преобразования для вторичного преобразования текущего блока на основе индекса режима внутреннего предсказания текущего блока.
Таким образом, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, один из набора ядер вторичного преобразования считается используемым для этого блока.
В способе, описанном выше, индекс режима внутреннего предсказания текущего блока может быть получен согласно соотношению отображения среди индекса режима MIP, размера текущего блока, соотношение отображения может быть указано согласно заранее определенной таблице.
Вышеописанный способ может дополнительно содержать использование ядра вторичного преобразования для вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима внутреннего предсказания на основе матрицы, MIP.
В способе, описанном выше, ядро вторичного преобразования может быть одним из ядер вторичного преобразования, которые используются для не-MIP режимов.
В способе, описанном выше, ядро вторичного преобразования может отличаться от любого из ядер вторичного преобразования, которые используются для не-MIP режимов.
В способе, как описано выше, в котором в случае, если текущий блок предсказывается с использованием режима MIP, таблица соответствия может использоваться для отображения индекса режима MIP в индекс обычного внутреннего режима, и набор ядер вторичного преобразования может быть выбран на основе этого индекса обычного внутреннего режима.
В способе, описанном выше, индекс режима MIP может быть отображен в индекс обычного внутреннего режима на основе следующей таблицы:
при этом выбор набора вторичных преобразований может выполняться в соответствии со следующей таблицей:
Вышеописанный способ может дополнительно содержать: предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований может содержать два преобразования; выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из четырех наборов ядер преобразований, который должен быть применен к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом: если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, или с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований; в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
Описанный способ может дополнительно содержить: предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований может содержать два преобразования; предоставление пятого набора ядер преобразований, имеющего индекс 4 набора ядер преобразований, при этом пятый набор ядер преобразований имеет те же размеры, что и наборы ядер преобразований, имеющие индекс 0-3 набора ядер преобразований; при этом пятый набор ядер преобразований обучается заново на основе того же способа машинного обучения и вводимого обучающего набора для режима MIP. выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из пяти наборов ядер преобразований, который должен быть применен к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом: если текущий внутренний блок предсказывается c использованием режима кросс-компонентной линейной модели, CCLM, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований; если текущий внутренний блок предсказывается с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 4 набора ядер преобразований; в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
Таким образом, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, считается, что для этого блока используется обученный набор ядер вторичного преобразования. Обученный набор ядер вторичного преобразования может отличаться от набора ядер преобразования в приведенных выше примерах.
Настоящее раскрытие дополнительно предоставляет кодер, содержащий схему обработки для выполнения описанного выше способа, когда он реализован устройством кодирования.
Настоящее раскрытие дополнительно предоставляет декодер, содержащий схему обработки для выполнения способа, как описано выше, когда он реализован устройством декодирования.
Настоящее раскрытие дополнительно предоставляет компьютерный программный продукт, содержащий программный код для выполнения способа, как описано выше.
Настоящее раскрытие дополнительно предоставляет декодер, содержащий: один или несколько процессоров; и не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, при этом программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа, как описано выше, когда реализуется устройством декодирования.
Настоящее раскрытие дополнительно предоставляет кодер, содержащий: один или несколько процессоров; и не кратковременный считываемый компьютером носитель данных, соединенный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа, как описано выше, когда реализуется устройством кодирования.
Настоящее раскрытие дополнительно предоставляет декодер, содержащий: блок определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока; и блок выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока.
Настоящее раскрытие дополнительно предоставляет кодер, содержащий: блок определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока; и блок выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока.
Вышеупомянутые и другие цели достигаются изобретением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
Способ согласно первому аспекту изобретения может быть выполнен устройством согласно третьему аспекту изобретения. Дополнительные признаки и формы реализации способа согласно третьему аспекту изобретения соответствуют особенностям и формам реализации устройства согласно первому аспекту изобретения.
Способ согласно второму аспекту изобретения может быть выполнен устройством согласно четвертому аспекту изобретения. Дополнительные признаки и формы реализации способа согласно четвертому аспекту изобретения соответствуют особенностям и формам реализации устройства согласно второму аспекту изобретения.
Согласно пятому аспекту изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно первому аспекту.
Согласно шестому аспекту изобретение относится к устройству для кодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно второму аспекту.
Согласно седьмому аспекту предложен считываемый компьютером носитель, на котором хранятся инструкции, которые при исполнении обеспечивают работу одного или более процессоров, выполненных с возможностью кодирования видеоданных. Инструкции побуждают один или более процессоров выполнять способ согласно первому или второму аспекту или любому возможному варианту осуществления первого или второго аспекта.
Согласно восьмому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно первому или второму аспекту или любому возможному варианту осуществления первого или второго аспекта при исполнении на компьютере.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:
Фиг. 1A является блок-схемой, показывающей пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг. 1B является блок-схемой, показывающей другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;
Фиг. 6 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 4×4
Фиг. 7 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 8×8
Фиг. 8 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 8×4
Фиг. 9 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 16×16
Фиг. 10 является блок-схемой, иллюстрирующей примерный процесс вторичного преобразования
Фиг. 11 является блок-схемой, иллюстрирующей примерный процесс умножения ядра вторичного преобразования устройства кодирования и декодирования
Фиг. 12 - блок-схема, иллюстрирующая примерное уменьшение размера ядра вторичного преобразования с 16×64 до 16×48.
Фиг. 13 является блок-схемой, иллюстрирующей пример восстановления MPM MIP на основе местоположения соседних блоков
Фиг. 14 является блок-схемой, иллюстрирующей другой пример восстановления MPM MIP на основе местоположения соседних блоков.
Фиг. 15 иллюстрирует способ, реализуемый устройством декодирования или устройством кодирования, способ согласно настоящему раскрытию.
Фиг. 16 иллюстрирует кодер согласно настоящему раскрытию.
Фиг. 17 иллюстрирует декодер согласно настоящему раскрытию.
Фиг. 18 - блок-схема, показывающая примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента.
Фиг. 19 является блок-схемой, показывающей структуру примерного терминального устройства.
Следующие одинаковые ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным функциям, если явно не указано иное.
Осуществление изобретения
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Видеокодирование обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательности. Вместо термина "изображение" термины "кадр" или "картинка" могут использоваться как синонимы в области видеокодирования. Видеокодирование (или кодирование (coding) в целом) содержит две части: видеокодирование (video encoding) и видеодекодирование (video decoding). Видеокодирование выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к "кодированию" видеоизображений (или изображений в целом), должны пониматься как относящиеся к "кодированию" или "декодированию" видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется кодеком (CODEC, Coding and Decoding).
В случае видеокодирования без потерь исходные видеоизображения могут быть восстановлены, т.е. восстановленные видеоизображения имеют такое же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например посредством квантования, для сокращения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов видеокодирования принадлежат к группе "гибридных видеокодеков с потерями" (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с 2D-преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (внутри изображения, intra picture) предсказания и/или временного (между изображениями, inter picture) предсказания для формирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут формировать идентичные предсказания (например, внутренние и внешние предсказания) и/или реконструкции для обработки, то есть кодирования (coding), последующих блоков.
В следующих вариантах осуществления системы 10 кодирования видео, видеокодер 20 и видеодекодер 30 описаны на основе фиг.1-3.
Фиг. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодирования, например систему 10 кодирования видео (или сокращенно систему 10 кодирования), которая может использовать способы из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнения способов в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на Фиг. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 изображения, например в устройство-получатель 14 для декодирования кодированных данных 13 изображения.
Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. опционально, содержать источник 16 изображений, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображений, а также интерфейс связи или блок 22 связи.
Источник 16 изображений может содержать или быть устройством захвата изображений любого типа, например камерой для захвата изображения реального мира, и/или устройством формирования изображений любого типа, например процессором компьютерной графики для формирования компьютерного анимированного изображения, или любым типом другого устройства для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником снимка может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых снимков.
В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, изображение или данные 17 изображения также могут именоваться необработанным (raw) изображением или необработанными данными 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 отображения может представлять собой или содержать дисплей любого типа для представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидкий кристалл на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.
Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.
Как будет очевидно для специалиста в данной области техники на основании описания, наличие и (конкретное) разделение функциональных возможностей различных блоков или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенное видеокодирование или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 на фиг. 2 и/или любой другой кодирующей системе или подсистеме, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с Фиг. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на Фиг.5, если способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем не кратковременном считываемом компьютером носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения способов этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг.1B.
Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, проиллюстрированная на Фиг. 1A, является лишь примером, а способы настоящей заявки могут применяться к настройкам видеокодирования (такого как видеокодирование или видеодекодирование), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное видеокодирование (High-Efficiency Video Coding, HEVC) или на эталонное программное обеспечение универсального видеокодирования (Versatile Video coding, VVC), стандарт видеокодирования следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодированию (Joint Collaboration Team on Video Coding, JCT-VC) экспертной группы по видеокодированию (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) декодированных изображений, блок 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, буфер декодированных изображений (DPB) 230, блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию "Встроенный декодер" видеокодера 20.
Изображения и разделение изображений (изображения и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 изображения 17 (или данных 17 изображения), например изображения из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). Для простоты нижеследующее описание ссылается на изображение 17. Изображение 17 также может именоваться текущим изображением или изображением, которое подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).
Изображение (цифровое) является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента изображения) или pel (элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при видеокодировании каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок разбиения изображения (не показан на Фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB, Coding Tree Block) или единицами дерева кодирования (CTU, Coding Tree Units) (H.265/HEVC и VVC). Блок разбиения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или подмножествами или группами изображений и разделения каждого изображения на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 изображения 17, например одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения также может именоваться блоком текущего изображения или блоком изображения, подлежащим кодированию.
Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 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. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для заранее определенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.
Варианты осуществления видеокодера 20 (соответственно блок 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например путем применения обратной схемы квантования относительно таковой, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.
Восстановление
Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т.е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например посредством сложения - выборка за выборкой - значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или сокращенно "контурный фильтр" 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (Sample-Adaptive Offset, SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (Adaptive Loop Filter, ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированных изображений
Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных изображений может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего изображения или разных изображений, например ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер 230 декодированных изображений (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.
Выбор режима (разделение и предсказание)
Блок 260 выбора режима содержит блок 262 разбиения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и выполнен с возможностью приема или получения исходных данных изображения, например исходного блока 203 (текущего блока 203 текущего изображения 17), и восстановленных данных изображения, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков того же самого (текущего) изображения и/или из одного или множества ранее декодированных изображений, например из буфера 230 декодированных изображений или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для режима предсказания текущего блока (включая отсутствие разбиения) и режима предсказания (например, режим внутреннего или внешнего предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные непроизводительные затраты на сигнализацию (минимальные непроизводительные затраты на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации искажения скорости (Rate Distortion Optimization, RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как "лучший", "минимальный", "оптимальный" и т. д. в этом контексте не обязательно относятся к всеобъемлющему "лучшему", "минимуму", "оптимальному" и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к "субоптимальному выбору", но уменьшающих сложность и время обработки.
Другими словами, блок 262 разбиения может быть выполнен с возможностью разделения блока 203 на более мелкие разделы блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделов блока или субблоков.
Далее более подробно поясняется разбиение (например, посредством блока 260 разбиения) и обработка предсказания (посредством блока 244 внешнего предсказания и блока 254 внутреннего предсказания), выполняемые примерным видеокодером 20.
Разбиение
Блок 262 разбиения может разделять (или разбивать) текущий блок 203 на более мелкие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).
Как упоминалось ранее, используемый здесь термин "блок" может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).
Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодирования. Решение о том, следует ли кодировать область изображения с использованием предсказания интер-изображения (временного) или интра-изображения (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разбиения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом видеокодирования, который называется универсальное видеокодирование (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или троичной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественный раздел, например раздел троичного дерева.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разбиения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Внутреннее предсказание
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в VVC.
Блок 254 внутреннего предсказания выполнен с возможностью использования восстановленных дискретных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутреннего предсказания в соответствии с режимом внутреннего предсказания набора режимов внутреннего предсказания.
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Внешнее предсказание
Набор (возможных) режимов внешнего предсказания зависит от доступных опорных изображений (то есть предыдущих, по меньшей мере частично декодированных изображений, например сохраненных в DBP 230) и других параметров внешнего предсказания, например используется ли опорное изображение целиком или только часть, например область окна поиска вокруг области текущего блока, опорного изображения для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (Motion Estimation, ME) и блок компенсации движения (Motion Compensation, MC) (оба на Фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (блока 203 текущего изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одного или множества других/отличных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных изображений из множества других изображений и обеспечения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров внешнего предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получения, например - приема, параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или формирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущего изображения блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений.
Блок компенсации движения может также формировать синтаксические элементы, связанные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков изображения слайса видео. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут формироваться или использоваться группы мозаичных элементов и/или мозаичные элементы и соответствующие синтаксические элементы.
Энтропийное кодирование
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого способа или методологии энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения кодированных данных 21 изображения, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования, . Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
Фиг. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированное изображение 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных изображения, например данных, которые представляют блоки изображения кодированного слайса видео (и/или мозаичных элементов или групп мозаичных элементов) и связанные синтаксические элементы.
В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных изображений, блок 360 применения режима, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.
Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 344 внешнего предсказания и блок 354 внутреннего предсказания также относятся к формированию "встроенного декодера" видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных изображений может быть идентичен по функции буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.
Энтропийное декодирование
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, кодированных данных 21 изображения) и выполнения, например, энтропийного декодирования для кодированных данных 21 изображения, чтобы получить, например, квантованные коэффициенты 309 и/или параметры декодированного кодирования (не показаны на Фиг.3), например, любые или все из параметров внешнего предсказания (например, индекс опорного снимка и вектор движения), параметр внутреннего предсказания (например, индекс или режим внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других синтаксических элементов блоку 360 применения режима и других параметров другим блокам декодера 30. предсказания. Видеодекодер 30 может принимать синтаксические элементы на уровне слайса видео и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы мозаичных элементов и/или мозаичные элементы и соответствующие синтаксические элементы.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или мозаичном элементе или группе мозаичных элементов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.
Обратное преобразование
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированных изображений
Декодированные видеоблоки 321 снимка затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных снимков для последующей компенсации движения для других снимков и/или для вывода, соответственно, отображения.
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователю.
Предсказание
Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутреннего или внешнего предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеослайс кодируется как интра-кодируемый (I) слайс, блок 354 внутреннего предсказания блока 360 применения режима выполнен с возможностью формирования блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как интер-кодируемый (т.е. B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть созданы из одного из опорных изображений в пределах одного из списков опорных изображений. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя способы построения по умолчанию на основе опорных изображений, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп мозаичных элементов (например, групп мозаичных элементов видео) и/или мозаичных элементов (например, мозаичных элементов видео) в дополнение или альтернативно к слайсам (например, слайсам видео), например, видео может быть кодировано с использованием групп I, P или B мозаичных элементов и/или мозаичных элементов.
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутреннее или внешнее предсказание, используемого для кодирования видеоблоков видеослайса, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого интер-кодированного видеоблока слайса, статуса внешнего предсказания для каждого интер-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп мозаичных элементов (например, групп мозаичных элементов видео) и/или мозаичных элементов (например, мозаичных элементов видео) в дополнение или альтернативно к слайсам (например, слайсам видео, например, видео может быть кодировано с использованием групп I, P или B мозаичных элементов и/или мозаичных элементов.
Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием слайсов (также именуемых видеослайсами), при этом изображение может быть разделено на или декодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеодекодера 30, показанные на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием групп мозаичных элементов (также называемых группами мозаичных элементов видео) и/или мозаичных элементов (также называемых мозаичными элементами видео), при этом изображение может быть разделено на или декодировано с использованием одной или более групп мозаичных элементов (обычно не перекрывающихся), и каждая группа мозаичных элементов может содержать, например один или более блоков (например, CTU) или один или более мозаичных элементов, при этом каждый мозаичный элемент, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурного фильтра. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.
Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается заранее определенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где "^" означает возведение в степень. Например, если bitDepth равна 16, диапазон составляет -32768~32767; если bitDepth равна 18, диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операций
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. В компьютерной системе десятичные числа хранятся как дополнение до двойки. Дополнением до двойки для -32769 является 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 является следующим:
Clip3( x, y, z ) =
Фиг. 4 является схематичным представлением устройства 400 видеокодирования согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 по Фиг. 1A, или кодером, таким как видеокодер 20 по Фиг. 1А.
Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.
Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает трансформацию устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).
Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления.
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.
Память 504 в устройстве 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодирования, которое выполняет описанные в данном документе способы.
Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорный ввод (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.
Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях.
На 14-м заседании JVET, состоявшемся в Женеве, был принят документ JVET-N0217: Принято аффинное линейно-взвешенное внутреннее предсказание (ALWIP).
В ALWIP представлены три новых набора внутренних режимов. Они есть:
35 режимов для блоков 4х4.
19 режимов для блоков 8×4, 4×8 и 8×8.
11 режимов для других случаев, когда ширина и высота меньше или равны 64 выборкам.
Соответственно, переменная о типе (sizeId) размера блока определяется в ALWIP следующим образом:
Если размер блока равен 4×4, тип sizeId размера блока равен 0.
В противном случае, если размер блока равен 8×4, 4×8 или 8×8, тип sizeId размера блока равен 1.
В противном случае, если размер блока не указан выше, а ширина и высота блока меньше 64, размер типа sizeId блока равен 2.
Эти режимы формируют сигнал внутреннего предсказания яркости из одной строки опорных выборок слева и выше текущего блока путем умножения вектора матрицы и добавления смещения. По этой причине аффинное линейное взвешенное внутреннее предсказание также называется внутренним предсказанием на основе матрицы (MIP). В следующем тексте термины MIP и ALWIP являются взаимозаменяемыми, и оба они описывают инструмент JVET-N0217.
Для предсказания выборок прямоугольного блока шириной W и высотой H аффинное линейное взвешенное внутреннее предсказание (ALWIP) принимает в качестве входных данных одну строку из H восстановленных соседних граничных выборок слева от блока и одну строку из W восстановленных соседних граничных выборок над блоком. Если восстановленные выборки недоступны, они формируются, как это делается при обычном внутреннем предсказании.
Формирование сигнала предсказания основывается на следующих трех этапах:
1. Из граничных выборок четыре выборки в случае W=H=4 и восемь выборок во всех остальных случаях извлекаются путем усреднения.
2. Выполняют матрично-векторное умножение, за которым следует добавление смещения, с усредненными выборками в качестве входных данных. Результатом является уменьшенный сигнал предсказания для субдискретизированного набора выборок в исходном блоке.
3. Сигнал предсказания в оставшихся позициях формируется из сигнала предсказания на субдискретизированном наборе с помощью линейной интерполяции, которая представляет собой одноэтапную линейную интерполяцию в каждом направлении.
Весь процесс усреднения, матрично-векторного умножения и линейной интерполяции проиллюстрирован для различных форм на Фиг. 6-9. Обратите внимание, что остальные фигуры обрабатываются как в одном из изображенных случаев.
Фиг. 6 иллюстрирует процесс для блока 4×4. Для блока ALWIP берет два средних значения по каждой оси границы. Полученные четыре входных выборки входят в матричное умножение векторов. Матрицы берутся из набора . После добавления смещения это дает 16 окончательных выборок прогноза. Линейная интерполяция не требуется для формирования сигнала предсказания. Таким образом, выполняется всего умножения на выборку.
Фиг. 7 иллюстрирует процесс для блока . Для блока 8×8 ALWIP берет четыре средних значения по каждой оси границы. Полученные восемь входных выборок попадают в матрицу векторного умножения. Матрицы берутся из набора . Это дает 16 выборок на нечетных позициях блока предсказания. Таким образом, выполняется всего ( умножения на выборку. После добавления смещения эти выборки интерполируются вертикально с помощью уменьшенной верхней границы. За этим следует горизонтальная интерполяция с использованием исходной левой границы. Таким образом, для расчета прогноза ALWIP требуется всего 2 умножения на выборку.
Фиг. 8 иллюстрирует процесс для блока . Для блока 8×4 ALWIP берет четыре средних значения по горизонтальной оси границы и четыре исходных граничных значения на левой границе. Полученные восемь входных выборок попадают в матрицу векторного умножения. Матрицы берутся из набора . Это дает 16 выборок по нечетным горизонтальным и каждой вертикальной позициям блока предсказания. Таким образом, выполняется всего ( умножения на выборку. После добавления смещения эти выборки интерполируются по горизонтали с помощью исходной левой границы. Таким образом, для расчета прогноза ALWIP требуется всего 4 умножения на выборку.
Транспонированный случай обрабатывается соответствующим образом.
Фиг. 9 иллюстрирует процесс для блока 16×16. Для блока ALWIP берет четыре средних значения по каждой оси границы. Полученные восемь входных выборок попадают в матрицу векторного умножения. Матрицы берутся из набора . Это дает 64 выборки на нечетных позициях блока предсказания. Таким образом, выполняется всего ( умножения на выборку. После добавления смещения эти выборки интерполируются по вертикали с использованием восьми средних значений верхней границы. За этим следует горизонтальная интерполяция с использованием исходной левой границы. Таким образом, для расчета прогноза ALWIP требуется всего два умножения на выборку.
Для больших форм процедура по существу такая же, и легко проверить, что количество умножений на выборку меньше четырех.
Для блоков с необходима только горизонтальная интерполяция, поскольку выборки даны в нечетных горизонтальных и каждой вертикальной позициях. В этом случае для вычисления уменьшенного (сокращенного) предсказания выполняется ( умножений на выборку. Для количество дополнительных умножений на выборку, необходимое для линейной интерполяции, меньше двух. Таким образом, общее число умножений на выборку меньше или равно четырем.
Наконец, для блоков с , пусть - матрица, которая возникает, если исключить каждую строку, которая соответствует нечетной записи вдоль горизонтальной оси субдискретизированного блока. Таким образом, выходной размер равен 32, и снова остается выполнить только горизонтальную интерполяцию. Для вычисления уменьшенного предсказания выполняются умножений на выборку. Для никаких дополнительных умножений не требуется, в то время как для для линейной интерполяции требуется менее 2 умножений на выборку. Таким образом, общее число умножений на выборку меньше или равно четырем.
Транспонированные случаи обрабатываются соответствующим образом.
В сообщении JVET-N0217 подход, использующий список наиболее вероятных режимов (MPM), также применяется для кодирования внутри режима MIP. Для текущих блоков используются два списка MPM:
1. Когда текущий блок использует нормальный внутренний режим (то есть не внутренний режим MIP), используется список 6-MPM
2. Когда текущий блок использует внутренний режим MIP, используется список 3-MPM
Оба вышеуказанных списка MPM построены на основе режимов внутреннего предсказания их соседних блоков, поэтому могут возникнуть следующие случаи:
1. Текущий блок является нормально внутренне предсказанным, в то время как к одному или более его соседним блокам/блоку применяется внутреннее предсказание MIP, или
2. К текущему блоку применяется внутреннее предсказание MIP, в то время как к одному или более его соседним блокам/блоку применяется нормальное внутреннее предсказание.
При таких обстоятельствах соседние режимы внутреннего предсказания выводятся опосредованно с помощью таблиц соответствия.
В одном примере, когда текущий блок является нормально внутренне предсказаным, в то время как его вышеупомянутый блок (A), как показано на фиг. 13 применяется с внутренним предсказанием MIP, Data</GipSegment>
Используется следующая таблица 1 соответствия. На основе типов размера блока собственно находящегося выше блока и режима внутреннего предсказания MIP находящегося выше блока выводится режим нормального внутреннего предсказания. Аналогично, если левый (L) блок, показанный на фиг. 13 применяется с внутренним предсказанием MIP, на основе типов размера блока левого блока и режима внутреннего предсказания MIP левого блока выводится режим нормального внутреннего предсказания.
Таблица 1. Описание соответствия между режимами аффинного линейного взвешиваемого внутреннего предсказания и внутреннего предсказания
В одном примере, когда текущий блок применяется с внутренним предсказанием MIP, и его вышеупомянутый блок (A), как показано на фиг. 14 предсказывается с использованием нормального внутреннего режима, используется следующая таблица 2 соответствия. На основе типов размера блока собственно находящегося выше блока и режима нормального внутреннего предсказания находящегося выше блока выводится режим внутреннего предсказания MIP. Аналогично, если левый (L) блок, показанный на фиг. 14 применяется с нормальным внутренним предсказанием, на основе типов размера блока левого блока и режима нормального внутреннего предсказания левого блока выводится режим внутреннего предсказания MIP.
Таблица 2. Описание соответствия между режимами внутреннего предсказания и аффинного линейного взвешиваемого внутреннего предсказания
В JEM вторичное преобразование применяется между прямым первичным преобразованием и квантованием (в кодере) и между деквантованием и обратным первичным преобразованием (на стороне декодера). Как показано на фиг. 10, 4×4 (или 8×8) выполняется вторичное преобразование в зависимости от размера блока. Например, вторичное преобразование 4×4 применяется к небольшим блокам (т.е. min(ширина, высота) <8), а вторичное преобразование 8×8 применяется к большим блокам (т.е. min(ширина, высота) > 4) на блок 8×8.
Применение неразделимого преобразования описывается ниже на примере ввода. Чтобы применить неразделимое преобразование, входной блок X 4×4
(1)
сначала представляется как вектор :
(2)
Неразделимое преобразование вычисляется как , где указывает вектор коэффициентов преобразования, а T - матрица преобразования 16×16. Вектор коэффициентов 16×1 впоследствии реорганизуется в блок 4×4 с использованием порядка сканирования для этого блока (горизонтального, вертикального или диагонального). Коэффициенты с меньшим индексом будут помещены с меньшим индексом сканирования в блок коэффициентов 4×4. Всего имеется 35 наборов преобразований и используются 3 матрицы неразделимого преобразования (ядра) на каждый набор преобразований. Отображение из (соответствие между) режима внутреннего предсказания в набор преобразований задано заранее. Для каждого набора преобразований выбранный кандидат неразделимого вторичного преобразования дополнительно определяется явно сигнализируемым индексом вторичного преобразования. Индекс передается в битовом потоке один раз на Intra CU после коэффициентов преобразования.
В VVC 5.0 сокращенное вторичное преобразование (RST) принято с предложением JVET-N0193 в качестве нового инструмента кодирования со следующими функциями.
Основная идея сокращенного преобразования (Reduced Transform, RT) состоит в том, чтобы отобразить вектор размерности N в вектор размерности R в другом пространстве, где R/N (R <N) - коэффициент уменьшения.
Матрица RT представляет собой матрицу R×N следующего вида:
где R строк преобразования являются R базами N-мерного пространства. Матрица обратного преобразования для RT представляет собой транспонирование его прямого преобразования. Прямая и обратная RT изображены на фиг. 11.
Применяется RST8×8 с коэффициентом уменьшения 4 (размер 1/4). Следовательно, вместо 64×64, которые являются обычным размером матрицы 8×8 неразделимого преобразования, используется прямая матрица 16×64. Другими словами, обратная матрица RST размером 64×16 используется на стороне декодера для формирования основных (первичных) коэффициентов преобразования в 8×8 верхних левых областях. Прямой RST8×8 использует матрицы 16×64 (или 8×64 для блока 8×8), так что он производит ненулевые коэффициенты только в верхней левой области 4×4 в данной области 8×8. Другими словами, если применяется RST, то область 8×8, за исключением верхней левой области 4×4, будет иметь только нулевые коэффициенты. Для RST4×4, 16×16 (или 8×16 для блока 4×4) применяется прямое матричное умножение.
Обратный RST применяется условно, если выполняются следующие два условия:
Размер блока больше или равен заданному порогу (W> = 4 && H> = 4);
Флаг режима пропуска преобразования равен нулю;
Если и ширина (W), и высота (H) блока коэффициентов преобразования больше 4, то RST8×8 применяется к верхней левой области 8×8 блока коэффициентов преобразования. В противном случае RST4×4 применяется к верхней левой области min(8, W)×min(8, H) блока коэффициентов преобразования.
Если индекс RST равен 0, RST не применяется. В противном случае применяется RST, ядро которого выбирается с индексом RST.
Кроме того, RST применяется для внутреннего CU как во внутреннем, так и в промежуточном слайсах, а также для Luma и Chroma. Если двойное дерево включено, индексы RST для Luma и Chroma сигнализируются отдельно. Для промежуточных слайсов (двойное дерево отключено) один индекс RST передается и используется как для яркости, так и для цветности.
Intra Sub-Partitions (ISP), как режим внутреннего предсказания в VVC 4.0. Когда выбран режим ISP, RST отключается, и индекс RST не сигнализируется, потому что улучшение производительности было незначительным, даже если RST применялся к каждому возможному блоку раздела. Кроме того, отключение RST для остатка, предсказанного ISP, может снизить сложность кодирования.
Матрица RST выбирается из четырех наборов преобразований, каждый набор преобразований содержит два преобразования. Какой набор преобразований применяется, определяется из режима внутреннего предсказания следующим образом:
Если указан один из трех режимов CCLM (кросс-компонентная линейная модель, англ. Cross-component linear model, в этом режиме компонент цветности предсказывается из компонента яркости), выбирается набор 0 преобразований.
В противном случае выбор набора преобразований выполняется в соответствии со следующей таблицей:
Таблица 3. Таблица выбора набора преобразований
Индекс для доступа к таблице 3, IntraPredMode, имеет диапазон [ -14, 83 ], который представляет собой преобразованный индекс режима, используемый для широкоугольного внутреннего предсказания.
Один из примеров набора преобразований показан ниже.
Индекс набора преобразований равен 0, ядро преобразования 16×16 показано следующим образом
secTransMatrix [ m ][ n ] =
{
{ 108 -40 25 -32 8 -25 8 2 -16 -9 -13 8 -2 4 2 0 },
{ -{ -44 -97 -31 -39 -9 5 9 34 -27 -10 1 -7 13 9 -2 -2 },
{ -{ -15 56 -1 -92 33 16 16 -5 -39 -34 4 -5 -6 11 8 0 },
{ 1 12 7 51 -8 -3 1 1 -109 4 -9 -15 -4 31 -16 -10 },
{ -{ -44 -11 100 -6 -16 -38 37 -7 6 -9 -30 7 -2 4 8 -1 },
{ 19 29 -16 -16 -102 14 36 24 10 -5 -17 -30 28 9 5 -7 },
{ { 7 -12 -29 36 36 11 94 -25 16 -29 -3 -28 -13 16 28 -3 },
{ -1 -3 1 -8 23 -3 -38 -3 24 5 -64 -87 -14 19 -17 -35 },
{ -{ -11 18 -54 3 -4 -97 -7 8 3 -33 -35 31 -3 12 6 -1 },
{ 6 18 21 22 38 7 3 99 19 -26 11 4 37 33 -7 -7 },
{ { 2 -15 14 18 -27 26 -47 -28 10 -96 17 4 -15 32 18 -2 },
{ -1 -3 -4 -15 -5 1 11 -29 24 33 19 33 -3 94 -45 -32 },
{ 0 -1 -7 4 5 55 -6 6 -4 14 -86 61 -2 12 40 -6 },
{ -1 -3 2 1 16 -10 -13 -43 -7 4 6 -5 107 0 36 -33 },
{ -1 2 4 -5 -8 -19 -17 21 -2 39 36 -17 -36 34 97 -16 },
{ 0 1 0 2 -6 3 10 11 -3 -14 14 22 -24 -45 -8 -112 },
}
Индекс набора преобразований равен 1, ядро преобразования 16×16 показано следующим образом:
secTransMatrix [ m ][ n ] =
{
{ -111 -47 -35 13 -11 0 -17 4 5 -4 -2 5 -5 0 -1 -1 },
{ { 39 -27 -23 93 -27 -35 -46 -10 -20 -1 -10 13 -7 4 2 0 },
{ 4 15 4 -27 1 32 -92 -23 32 38 35 18 -34 -2 7 -12 },
{ 3 -1 4 -4 2 -2 14 4 -5 -18 -19 34 -83 -60 -57 23 },
{ { 44 -92 -17 -48 -47 26 7 16 8 -7 5 11 2 5 3 1 },
{ 11 43 -72 13 -4 60 -10 58 -3 -42 8 -4 -1 9 -7 -4 },
{ -{ -12 20 32 -34 -36 -3 -39 -17 -46 -63 -44 18 -4 42 9 17 },
{ -1 -2 6 4 10 -17 29 26 -7 -6 14 18 -73 34 68 -53 },
{ 7 20 -59 -52 -2 -82 -17 30 -4 33 -25 5 4 5 -9 -3 },
{ -{ -16 39 18 11 -85 1 27 21 2 34 25 58 20 -14 6 4 },
{ - { -5 -16 50 1 14 -30 -28 67 -15 -23 58 -3 15 9 -49 -21 },
{ 2 -5 -6 10 29 0 17 2 24 15 17 42 -12 80 -20 72 },
{ 3 10 0 3 -20 -37 1 -13 100 -65 7 -2 4 -5 6 -4 },
{ -1 -5 40 16 -2 21 -15 59 44 33 -84 -10 -3 13 -4 -8 },
{ { 4 -13 0 -3 57 3 -13 13 0 -20 -16 85 44 -38 36 -3 },
{ 2 2 -13 1 4 12 17 -40 5 2 -18 38 12 37 -64 -83 },
}
Индекс набора преобразований равен 2, ядро преобразования 16×16 показано следующим образом:
secTransMatrix [ m ][ n ] =
{
{ -112 29 -36 28 -12 18 5 -13 -4 15 -8 -2 -3 2 4 0 },
{ 47 -7 -87 -5 -24 53 -1 -32 -13 33 -24 -6 -7 6 8 1 },
{ -2 1 69 2 15 69 2 18 -10 63 -27 -24 -16 10 21 4 },
{ 2 -1 -10 -2 -3 -74 0 -2 19 89 15 13 -21 -3 40 11 },
{ -{ -34 -108 -17 -29 26 14 -26 15 18 8 12 -1 10 -5 -4 -2 },
{ 13 40 -33 13 80 24 6 34 46 15 41 -8 24 -16 -11 -4 },
{ 2 2 26 -2 -61 28 0 -27 60 25 26 37 46 -31 -28 -13 },
{ 0 0 -2 0 9 -30 1 7 -48 40 -29 -22 75 12 -57 -34 },
{ { 15 -45 7 103 15 -6 45 -25 16 -4 -17 3 8 7 5 3 },
{ -7 13 14 -36 54 -7 -9 -80 33 -8 -50 18 20 24 14 7 },
{ 1 4 -11 -4 -36 -11 -1 47 60 -15 -39 -51 38 41 31 20 },
{ 0 -1 2 1 2 12 0 -1 -48 -8 27 22 72 -16 70 47 },
{ 8 8 6 48 0 -5 -113 -16 1 -2 0 -23 1 -16 7 -6 },
{ -3 -5 8 -16 -4 -7 28 -50 0 -6 35 -95 2 -41 18 -19 },
{ -1 1 -7 -4 6 -6 8 28 5 -9 -67 17 1 -89 32 -42 },
{ 0 0 0 1 -2 8 -1 2 -2 -7 26 17 7 49 52 -101 },
}
Индекс набора преобразований равен 3, ядро преобразования 16×16 показано следующим образом:
secTransMatrix [ m ][ n ] =
{
{ -114 -19 36 -27 -11 15 13 16 -8 -6 5 -5 1 -3 -2 -5 },
{ { 37 -41 -25 -80 -21 47 25 11 -34 -30 9 -23 3 -2 -7 -12 },
{ 3 19 18 44 37 10 79 -26 -26 -42 -6 -23 23 -21 -33 -18 },
{ 2 -2 -2 -3 -10 -6 -39 13 7 -12 42 36 73 -52 -56 -12 },
{ -{ -22 85 -42 -58 44 -16 -13 -13 -26 -3 -15 3 8 1 -4 8 },
{ -{ -23 -60 -53 1 -4 -44 10 -74 -19 5 -18 22 5 -10 -6 22 },
{ { 14 -11 35 -29 47 42 31 -20 29 57 -9 36 34 -17 21 38 },
{ 0 7 5 19 -12 10 -4 -1 -37 -52 26 40 46 44 63 36 },
{ 21 17 46 -41 -37 -80 49 5 1 -2 15 27 -12 -19 15 -5 },
{ -{ -17 31 -60 18 -41 25 45 -6 22 37 58 -4 2 -20 31 -15 },
{ - { -5 -34 -25 -12 58 -40 12 29 46 -12 14 -16 35 30 32 -51 },
{ 2 2 19 -7 18 21 -8 -47 -9 6 43 56 -38 45 -22 -63 },
{ { 5 -11 8 12 10 -23 3 26 -81 74 23 -25 26 27 -10 -5 },
{ 2 19 21 -17 -46 -2 -1 -49 37 10 -10 -46 52 61 -26 0 },
{ -4 2 -33 7 -16 3 43 54 14 6 -37 56 2 49 -52 15 },
{ -1 -8 -1 -6 31 -14 7 2 20 -15 75 -24 -31 21 -38 73 },
}
Индекс набора преобразований равен 0, ядро преобразования 16×48 отображается следующим образом:
secTransMatrix [ m ][ n ] =
{
{ -117 -29 -10 -15 32 -10 1 0 -13 6 -12 0 -1 6 6 -1 },
{ { 28 -91 62 15 39 1 -33 6 -13 1 -2 -3 9 2 9 7 },
{ 18 47 -11 -10 92 50 -11 -6 -37 -14 -26 0 13 -3 -2 -2 },
{ 2 1 -8 -2 -44 -15 -14 21 -101 -36 -12 -4 5 2 35 9 },
{ 4 9 -2 1 4 2 7 -4 29 9 -9 -15 14 10 110 -11 },
{ 1 0 -2 0 -10 -3 -2 2 -11 -3 2 6 -2 -1 -22 5 },
{ 2 3 -1 1 1 1 2 0 8 2 -1 -3 2 2 11 -1 },
{ 1 0 -1 0 -4 -1 0 0 -3 0 1 1 -1 0 -4 1 },
{ { 32 -54 -95 10 26 -28 29 -20 -12 10 -3 -7 -8 8 -2 -7 },
{ -{ -18 26 3 112 12 -15 -12 -24 -15 9 30 -15 3 3 0 2 },
{ -2 -8 32 -20 -15 14 37 -104 -20 -18 4 -28 -4 -1 -3 -22 },
{ 0 3 0 -17 13 6 -7 30 2 -1 34 -86 -62 -20 1 4 },
{ -1 0 4 -4 -5 1 -4 5 -11 -3 -4 19 4 0 -18 -13 },
{ 0 1 0 -4 2 1 0 5 5 1 0 -5 1 1 12 0 },
{ 0 0 2 -1 -2 1 -1 1 -2 0 -1 4 1 0 -3 -1 },
{ 0 0 0 -2 0 0 0 2 1 0 0 -1 0 0 2 0 },
{ 14 33 32 -20 29 -99 6 -7 -12 38 -30 -5 -12 -4 -5 0 },
{ -1 5 -30 -26 -16 -4 -99 -46 10 26 3 -17 23 4 -4 28 },
{ -3 -9 -4 31 -22 9 3 10 26 -13 -92 -41 16 -16 -22 0 },
{ 0 -1 4 1 8 5 26 -14 12 -1 14 42 -11 0 8 76 },
{ -1 -2 -1 0 0 5 -1 7 -6 -5 19 -6 -17 -2 -25 4 },
{ 0 0 1 0 1 2 5 0 0 -1 0 2 0 0 3 -6 },
{ 0 -1 0 0 0 2 0 1 -1 -1 3 -1 -1 1 0 0 },
{ 0 0 0 0 1 1 2 0 0 0 0 1 0 0 0 -2 },
{ 2 -3 6 2 -20 44 14 9 -32 102 -11 -1 -11 34 -3 -13 },
{ 0 3 2 -16 6 -10 30 21 -2 3 34 -40 97 23 -21 5 },
{ 0 0 -5 -1 4 -11 -27 7 11 -14 21 37 -3 6 2 -76 },
{ 0 0 0 6 -3 1 -2 -6 3 -1 -33 13 -3 -7 -3 -4 },
{ 0 0 0 0 1 -2 1 -2 3 -5 1 -4 0 -4 9 33 },
{ 0 0 0 1 0 0 -1 -1 -1 -1 -2 2 -6 -2 -2 -1 },
{ 0 0 0 0 0 -1 0 0 1 -2 0 -1 0 -1 1 3 },
{ 0 0 0 0 0 0 -1 -1 0 0 -1 1 -2 0 0 0 },
{ 3 7 6 1 1 -5 -6 2 11 -29 -9 -10 -21 108 -7 9 },
{ 0 2 -3 -4 -4 4 6 2 -5 10 -4 13 -5 -5 1 18 },
{ -1 -2 0 0 -3 -3 6 5 -1 10 18 -1 23 -30 3 -3 },
{ 0 0 0 0 2 0 -3 -2 6 0 3 -4 0 6 -5 -35 },
{ 1 -1 2 0 -4 8 1 0 -4 10 2 4 2 -27 3 -4 },
{ 0 1 0 -3 1 -1 3 3 2 -4 0 -4 -2 10 0 -1 },
{ 0 0 -1 0 0 -2 -3 4 1 -1 0 3 -1 7 -1 6 },
{ 0 0 0 1 0 0 0 -1 0 1 -2 4 6 -2 0 1 },
{ 1 2 2 0 1 -2 -1 0 3 -7 -1 -2 -3 11 0 1 },
{ 0 1 -1 -1 -1 1 1 0 -1 1 -1 2 -3 -3 1 2 },
{ 0 -1 0 0 -2 -1 1 1 1 2 3 -1 1 -1 0 0 },
{ 0 0 0 0 1 0 0 0 2 1 0 -1 0 1 -1 -3 },
{ 1 0 1 0 -2 4 0 0 -1 2 0 1 0 -4 1 -1 },
{ 0 0 0 -2 0 0 1 1 0 -1 0 -1 0 1 0 0 },
{ 0 0 0 0 0 -1 -1 2 0 0 0 1 0 0 0 2 },
{ 0 0 0 0 0 0 0 -1 0 0 -1 2 2 1 0 0 },
}
Индекс набора преобразований равен 1, ядро преобразования 16×48 показано следующим образом:
secTransMatrix [ m ][ n ] =
{
{ 110 -43 -19 -35 9 -5 14 7 -13 -11 -4 -2 3 -4 5 -5 },
{ -{ -49 -19 17 -103 5 -5 17 35 -27 -13 -10 1 1 -8 -1 -6 },
{ -3 17 -7 39 -6 -28 27 17 -101 -3 -24 13 5 -1 26 -27 },
{ -4 -1 3 1 -1 9 -12 -4 24 -10 -11 -17 -15 -50 102 -22 },
{ -1 3 -2 7 -1 -3 1 -1 -8 3 3 3 1 6 -13 -12 },
{ -1 0 1 0 0 2 -3 0 6 -1 -2 -5 -2 -4 12 0 },
{ 0 1 -1 2 -1 -1 1 0 -3 1 0 1 1 2 -4 -3 },
{ -1 0 0 0 0 1 -1 0 2 0 -1 -2 -1 -2 4 0 },
{ -{ -38 -98 -32 38 42 -20 8 3 11 -19 -6 3 7 -1 -4 -5 },
{ -1 46 -59 -13 4 -78 19 8 43 -19 -37 0 4 5 -2 8 },
{ 10 14 29 25 21 22 -13 54 6 -37 -45 -55 -7 -22 -40 -20 },
{ 0 -1 3 -6 -11 16 4 -17 28 8 -17 22 29 20 -7 -83 },
{ 2 2 4 1 1 1 -2 1 -6 4 8 6 -1 6 -23 0 },
{ 0 0 0 -1 -3 3 1 -2 3 2 -2 1 2 1 3 0 },
{ 1 1 2 0 1 0 -1 1 -1 0 2 1 -1 0 -5 0 },
{ 0 0 0 0 -1 1 0 -1 1 1 -1 0 1 0 1 0 },
{ -9 26 -72 -1 21 80 48 10 -3 -12 17 8 8 -16 -1 9 },
{ 13 26 43 7 70 -6 -1 14 14 -30 14 74 3 -15 5 7 },
{ { 1 -15 34 6 -32 25 48 -11 21 3 -58 21 12 18 8 24 },
{ -2 -3 -9 -7 -21 -5 -15 -34 -12 -9 14 40 -14 -29 -23 -20 },
{ 0 -2 3 1 0 -4 -4 4 -7 5 15 -14 -9 -11 7 41 },
{ 0 -1 -2 -1 -4 -1 -2 -4 -2 0 0 0 -1 2 2 3 },
{ 0 -1 1 0 -1 -1 -1 1 -1 1 2 -2 -1 -2 1 6 },
{ 0 0 -1 0 -1 0 -1 -1 -1 0 0 0 0 1 1 1 },
{ -4 11 13 -13 34 6 1 -80 -23 -56 -10 -36 4 40 10 15 },
{ 2 -7 36 14 -26 -24 60 -7 10 -9 34 -8 29 -45 -11 20 },
{ -3 -9 -18 2 -57 7 -28 -6 -4 -47 -7 11 -15 -19 -13 12 },
{ 0 2 -10 -4 11 -9 -42 2 -12 8 28 -13 31 -22 -3 11 },
{ 0 0 0 2 4 0 5 15 3 21 4 -23 10 31 12 17 },
{ 0 0 -2 -1 2 0 -6 0 0 1 -1 1 4 2 -3 -9 },
{ 0 0 0 0 0 0 1 3 1 4 1 -3 1 4 2 1 },
{ 0 0 -1 0 1 0 -2 0 0 1 0 0 1 1 0 -2 },
{ -2 9 3 -2 -4 -7 11 -16 2 -11 23 -36 61 -25 -9 -26 },
{ 2 -3 0 11 -32 3 -11 46 9 -30 34 6 22 41 23 -1 },
{ 0 -1 -12 -6 5 13 -51 1 -10 10 -31 16 55 0 4 18 },
{ 1 2 3 -2 24 -4 11 3 0 59 4 -14 14 12 9 -1 },
{ -1 3 6 -2 1 -3 -2 2 1 -2 10 2 13 9 14 -12 },
{ 1 -3 1 4 -6 5 -10 7 -5 8 -22 19 3 7 9 32 },
{ 0 0 -3 -3 12 1 -2 -24 -4 41 -30 -4 -9 -42 -14 3 },
{ 0 0 2 0 4 -5 13 0 4 8 22 -12 -65 12 -4 -18 },
{ -1 4 1 0 -3 -2 2 2 2 2 4 -1 1 -3 0 -5 },
{ 1 -1 -1 3 -2 3 -6 -2 -2 5 -15 0 -11 -14 -12 10 },
{ 0 0 -2 -2 4 1 -4 -5 2 6 9 -7 -21 2 -7 -25 },
{ 0 0 0 0 -2 -2 4 8 2 -7 20 -3 -7 28 6 -5 },
{ -1 2 3 -1 0 -1 -2 1 0 -1 2 0 0 5 3 -2 },
{ 0 -1 1 1 -1 2 -3 -1 -2 3 -5 2 0 1 0 1 },
{ 0 0 -1 -1 0 -1 2 -2 1 5 9 -2 -1 6 6 -8 },
{ 0 0 1 0 0 -2 2 2 0 -2 4 -1 3 2 3 10 },
}
Индекс набора преобразований равен 2, ядро преобразования 16×48 показано следующим образом:
secTransMatrix [ m ][ n ] =
{
{ -121 0 -20 32 -3 -4 7 -8 -15 -3 -1 -5 -2 -2 -2 4 },
{ 33 -2 19 108 0 -12 1 -31 -43 1 -6 -14 0 -10 -3 -4 },
{ 4 0 -5 -43 -1 -3 2 14 -100 2 -3 -48 2 -4 -25 28 },
{ 4 0 2 10 0 1 0 -4 23 0 2 2 0 0 -2 103 },
{ 1 0 -1 -9 0 -1 0 3 -12 0 -1 -5 0 0 -3 -42 },
{ 2 0 1 3 0 0 0 -1 6 0 0 1 0 0 0 24 },
{ 0 0 0 -3 0 0 0 1 -4 0 0 -2 0 0 -1 -9 },
{ 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 7 },
{ - { -1 121 16 4 -29 19 4 9 -6 -6 -6 10 -2 3 -1 1 },
{ - { -1 -23 3 19 11 105 3 43 -17 3 -35 24 0 11 -3 2 },
{ 1 -7 -2 -7 -2 -31 -2 0 -48 1 9 99 1 -1 -1 4 },
{ 0 -3 0 1 1 7 0 1 10 0 0 -17 0 -1 4 0 },
{ 0 -2 0 -1 0 -6 0 -1 -5 0 2 10 0 0 -2 3 },
{ 0 -1 0 0 0 1 0 0 2 0 0 -4 0 0 2 -1 },
{ 0 -1 0 0 0 -2 0 0 -1 0 0 3 0 0 0 0 },
{ 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 },
{ 24 17 -120 11 12 9 22 -13 1 0 1 4 -1 -6 -7 -1 },
{ -5 1 14 -30 7 46 -8 -105 -5 3 -6 14 -1 -40 -8 0 },
{ -1 -2 8 9 -1 -6 1 17 19 -2 11 32 1 -15 -97 -9 },
{ -1 0 1 -2 0 0 -1 -2 -6 0 -2 0 -1 6 17 -42 },
{ 0 0 3 1 0 0 0 2 3 0 2 2 0 -2 -9 17 },
{ 0 0 1 -1 0 0 0 0 -1 0 0 0 0 1 3 -9 },
{ 0 0 1 0 0 0 0 0 1 0 1 1 0 0 -3 3 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 },
{ { 5 -27 -18 0 -117 8 -28 -8 2 -20 -9 -4 -1 5 -8 -1 },
{ -1 4 -2 -8 12 -29 -9 -25 7 8 -100 0 -4 57 -26 1 },
{ 0 2 3 2 9 9 4 -3 15 -2 17 -39 2 -6 -61 -14 },
{ 0 0 0 0 1 -3 0 0 -3 0 -1 6 0 2 -1 6 },
{ 0 0 1 0 3 1 1 0 1 0 1 -4 0 0 -3 -4 },
{ 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 -1 2 },
{ 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 -1 -1 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 },
{ { 3 -12 17 -7 -32 -3 117 -7 4 30 -10 2 -8 1 2 -1 },
{ -1 2 -3 -1 -3 -19 -10 32 10 13 -63 -3 -2 -95 10 -2 },
{ 0 1 -1 2 3 3 -8 -5 5 -3 1 -4 -1 18 24 -4 },
{ 0 0 0 0 0 0 0 1 -1 0 2 0 1 -6 -7 4 },
{ 2 -5 6 -3 12 -4 32 -1 0 -116 -17 2 30 -10 5 0 },
{ -1 1 -1 -1 -2 -6 1 4 3 6 3 -2 4 -34 9 3 },
{ 0 0 -1 1 -1 1 -4 0 1 10 -4 -2 -4 -2 19 1 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 },
{ 2 -1 2 -2 7 0 3 2 -2 -35 -1 0 -102 -4 0 0 },
{ -1 0 0 -2 0 0 1 -1 1 -5 9 0 4 17 1 2 },
{ 0 0 0 1 0 0 -1 0 2 4 -1 -1 8 -2 4 0 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 -2 },
{ 1 -2 2 0 1 0 -3 1 -1 -3 3 0 -69 0 -2 2 },
{ 0 0 0 0 0 -1 1 0 1 -1 4 -1 -2 2 0 0 },
{ 0 0 0 0 0 0 0 -1 1 0 -1 -1 6 1 1 0 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 },
}
Индекс набора преобразований равен 3, ядро преобразования 16×48 показано следующим образом:
secTransMatrix [ m ][ n ] =
{
{ -115 15 29 -36 -6 4 -20 4 12 5 -3 -1 10 4 2 3 },
{ 37 51 -22 -98 18 15 -7 29 13 20 -4 -3 -4 6 9 -3 },
{ { 9 -18 16 25 3 52 -43 1 10 90 -34 2 -6 14 13 12 },
{ 2 0 -6 5 -3 -13 4 26 2 -17 -12 19 12 53 37 84 },
{ 2 -3 3 4 -1 5 0 -5 -1 4 2 -2 5 -4 19 -12 },
{ 1 0 -2 1 0 -3 1 4 3 -3 -1 4 1 4 6 8 },
{ 1 -1 1 2 0 2 -1 -2 -1 2 -1 -1 1 0 2 -2 },
{ 0 0 -1 1 0 -1 1 1 1 -1 0 2 0 2 2 3 },
{ { 10 -95 -4 -59 -50 -17 -7 -17 17 6 5 9 11 0 -9 6 },
{ -{ -29 7 -80 11 -5 -45 35 -7 -2 66 25 3 -9 -1 -3 13 },
{ 8 34 12 -17 -38 16 0 -73 -46 8 11 -35 -12 -20 -9 50 },
{ 0 -3 15 1 12 24 12 6 12 28 43 22 -2 -13 -28 -1 },
{ 1 5 0 1 0 -2 -4 6 7 -7 -10 11 -7 3 -20 45 },
{ 0 -1 3 1 2 4 1 2 0 3 4 1 0 2 -4 1 },
{ 1 2 0 0 0 -1 -1 1 2 -1 -2 2 -1 -1 -3 7 },
{ 0 0 1 0 1 2 0 1 0 1 1 0 0 1 -1 0 },
{ 23 23 45 6 3 -87 -51 -5 16 29 23 -7 33 -3 1 -2 },
{ - { -8 -47 7 -13 67 -8 -2 21 -45 5 20 -65 -10 1 18 18 },
{ -8 1 -59 7 -7 -14 -57 -3 -9 -19 -40 -19 -4 -5 9 -22 },
{ 1 6 7 -3 -40 7 5 5 -53 12 12 -22 18 35 28 -37 },
{ -1 0 -2 0 3 8 15 -1 6 9 21 11 18 -16 24 -13 },
{ 0 1 1 0 -6 1 0 -3 1 -1 -3 4 -4 -6 6 14 },
{ 0 0 -1 0 1 2 4 0 1 1 4 2 4 -1 2 0 },
{ 0 1 0 0 -3 0 0 -1 0 0 -1 1 -1 -2 2 3 },
{ 3 8 -15 14 -12 23 7 -11 70 -10 25 -75 28 46 -20 1 },
{ 3 5 41 -4 -13 -35 39 2 16 14 -28 -18 -72 29 -5 -12 },
{ - { -2 -12 -3 -14 65 -6 5 -52 8 -1 -10 3 1 13 -25 -3 },
{ -1 0 -16 3 -3 -3 -55 -3 -4 -13 5 -1 -49 21 -33 2 },
{ 0 -1 2 -1 -10 1 1 27 -37 7 8 -10 15 37 -36 -15 },
{ 0 0 -3 0 0 1 -7 -2 1 0 6 2 2 -5 9 -8 },
{ 0 0 0 0 -1 0 1 5 -7 1 0 0 2 4 -2 1 },
{ 0 0 -1 0 0 0 -3 0 0 0 2 1 1 -1 2 -1 },
{ 4 3 1 2 9 2 1 0 -12 0 -4 2 56 -10 -13 19 },
{ 0 -3 0 8 -20 5 -10 27 29 -6 21 -35 -23 -53 42 14 },
{ 0 1 7 -3 -5 -17 41 8 3 13 -64 -27 22 -18 1 -4 },
{ -1 -1 -2 -5 22 0 2 -58 21 -4 -8 4 -1 8 57 -12 },
{ 1 2 -3 2 -2 3 4 2 4 0 -5 1 4 9 -22 -4 },
{ 1 1 6 0 0 -1 -3 -5 0 -4 19 8 -1 12 -2 5 },
{ 0 -2 1 0 0 -1 -2 25 5 1 10 -17 -15 -41 -25 17 },
{ 0 0 -2 0 -1 -5 3 3 -1 5 -48 -19 26 -25 -28 8 },
{ 2 1 0 0 2 0 -1 0 -3 0 3 3 6 -2 5 2 },
{ 0 -1 0 3 -3 1 -2 3 4 -1 -1 0 4 2 6 -4 },
{ 0 0 1 0 -2 -4 7 0 1 -1 10 3 -10 13 19 -4 },
{ 0 0 0 -1 3 0 1 -5 4 1 -3 -6 0 -16 -12 4 },
{ 0 1 -1 1 -1 1 1 0 2 0 0 0 0 4 -5 -2 },
{ 0 1 2 0 0 0 -1 -2 0 -1 4 2 2 1 -3 2 },
{ 0 -1 0 0 1 0 -1 7 1 0 3 -1 -3 -5 -2 1 },
{ 0 0 -1 0 0 -2 0 0 0 0 -6 -2 2 1 4 0 },
}
В случае RST8×8 или RST4×4, с точки зрения подсчета умножения может произойти, когда все TU имеют размер 4×4 TU или 8×8 TU. Следовательно, верхние матрицы 8×64 и 8×16 (другими словами, первые 8 базисных векторов преобразования сверху в каждой матрице) применяются к 8×8 TU и 4×4 TU соответственно.
В случае блоков размером более 8×8 TU (ширина и высота больше 8) RST8×8 (т.е. Матрица 16×64) применяется к верхней левой области 8×8. Для 8×4 TU или 4×8 TU, RST4×4 (т.е. Матрица 16×16) применяется к верхней левой области 4×4 (в примере RST 4×4 не применяется к другим областям 4×4). В случае 4xN или Nx4 TU (N ≥ 16) RST4×4 применяется к двум соседним левым верхним блокам 4×4.
С учетом вышеупомянутого упрощения в некоторых случаях количество умножений составляет 8 на выборку.
Чтобы уменьшить размер матрица вторичного преобразования, применяются матрицы 16×48 с той же конфигурацией набора преобразований, каждая матрица 16×48 принимает 48 входных выборок из трех блоков 4×4 в верхнем левом блоке 8×8 (в примере справа внизу Блоки 4×4 исключены), как показано на фиг. 12.
В VVC 5.0 раскрыты инструмент MIP и инструмент RST, и оба инструмента применяются для внутренних блоков. Однако оба инструмента не согласованы в смысле выбора ядра вторичного преобразования. Другими словами, поскольку MIP не является обычным внутренним режимом, что означает, что если один внутренний блок предсказывается с использованием режима MIP, способ выбора ядра преобразования RST не определяется с обоими принятыми предложениями JVET-N0217 и JVET-N0193. Следующие решения решают указанную проблему.
Фиг. 15 иллюстрирует способ согласно настоящему раскрытию. На фиг. 15 проиллюстрирован способ кодирования, реализуемый устройством декодирования или устройством кодирования. Устройство декодирования может быть декодером 30, как описано выше. Аналогично, устройство кодирования может быть кодером 20, как описано выше. На фиг. 15, на этапе 1601 способ содержит определение режима внутреннего предсказания текущего блока. На следующем этапе 1603 способ содержит определение выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока. Это более подробно описано ниже.
Фиг. 16 иллюстрирует кодер 20 согласно настоящему раскрытию. На фиг. 16 кодер 20 содержит блок 2001 определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока. Кодер 20 на фиг.17 дополнительно показывает блок 2003 выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока.
Фиг. 17 иллюстрирует декодер 30 согласно настоящему раскрытию. На фиг. 17 декодер 30 содержит блок 3001 определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока. Декодер 30 на фиг.17 дополнительно показывает блок 3003 выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока.
В дальнейшем способ кодирования по фиг. 15, реализованный устройством декодирования или устройством кодирования по фиг. 17 и 16, соответственно, более подробно.
Решение 1
Согласно решению 1, внутреннее предсказание на основе матрицы и сокращенное вторичное преобразование исключаются для одного и того же блока с внутренним предсказанием.
В примере, когда блок с внутренним предсказанием предсказывается с использованием режима MIP (в примере, значение флага MIP может использоваться, чтобы указать, предсказывается ли блок с использованием режима MIP или нет), вторичное преобразование отключается для этого блок с внутренним предсказанием, другими словами, значение индекса вторичного преобразования установлено в 0, или индекс вторичного преобразования не нужно декодировать из битового потока.
Когда блок с внутренним предсказанием не предсказывается с использованием режима MIP, ядро преобразования вторичного преобразования выбирается на основе упомянутого способа в JVET-N0193.
Изменения в тексте спецификации по сравнению с JVET-N0193 выделены серым цветом.
&& IntraSubPartitionsSplitType == ISP_NO_SPLIT && intra_mip_flag == 0) {
numZeroOutSigCoeff == 0) {
7.4.3.1 Семантика RBSP набора параметров последовательности
……
sps_st_enabled_flag, равный 1, указывает, что st_idx может присутствовать в синтаксисе остаточного кодирования для единиц внутреннего кодирования. sps_st_enabled_flag, равный 0, указывает, что st_idx не присутствует в синтаксисе остаточного кодирования для единиц внутреннего кодирования.
……
7.4.7.5 Семантика единицы кодирования
……
st_idx [ x0 ][ y0 ] указывает, какое ядро вторичного преобразования применяется между двумя ядрами-кандидатами в выбранном наборе преобразований. st_idx [ x0 ][ y0 ], равное 0, указывает, что вторичное преобразование не применяется. Индексы массива x0, y0 определяют положение (x0, y0) левого верхнего выборки рассматриваемого блока преобразования относительно левого верхнего выборки изображения.
intra_mip_flag[ x0 ][ y0 ], равное 1, указывает, что тип внутреннего предсказания для выборок яркости является аффинным линейным взвешенным внутренним предсказанием. intra_lwip_flag[ x0 ][ y0 ], равное 0, указывает, что тип внутреннего предсказания для выборок яркости не является аффинным линейным взвешенным внутренним предсказанием.
Решение 2
Согласно решению 2, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, считается, что для этого блока используется один из набора ядер вторичного преобразования.
В одном варианте осуществления
Набор 0 преобразований используется в качестве выбранного набора ядер вторичного преобразования, когда текущий блок предсказывается в режиме MIP.
Матрица RST выбирается из четырех наборов преобразований, каждый набор преобразований содержит два преобразования. Набор преобразований, который применяется к блоку, определяется в соответствии с режимом внутреннего предсказания следующим образом:
Если текущий внутренний блок предсказывается с использованием режима CCLM, выбирается набор 0 преобразований;
В противном случае, если текущий внутренний блок предсказывается с использованием режима MIP, выбирается набор 0 преобразований;
В противном случае (если текущий внутренний блок не предсказывается с использованием режима CCLM или MIP), выбор набора преобразований выполняется в соответствии со следующей таблицей:
Таблица 4. Таблица выбора набора преобразований
Диапазон индекса для IntraPredMode составляет от -14 до 83 (включая -14 и 83), что представляет собой преобразованный индекс режима, используемый для широкоугольного внутреннего предсказания.
В этом решении один набор преобразований используется, когда текущий блок предсказывается с использованием режима MIP, набор 0 преобразований используется в примере, другие наборы преобразований также могут использоваться в этом решении.
Решение 3
Согласно решению 3, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, считается, что для этого блока используется обученный набор ядер вторичного преобразования. Обученный набор ядер вторичного преобразования может отличаться от набора ядер преобразования в приведенных выше примерах.
В одном варианте осуществления:
Набор 4 преобразований (новый обученный) используется в качестве выбранного набора ядер вторичного преобразования, когда текущий блок предсказывается в режиме MIP.
Набор 4 преобразований имеет те же размеры, что и наборы 0-3 преобразований (т.е. 16×16 и 16×48), которые были обучены на основе того же способа машинного обучения и вводимого обучающего набора для режима MIP.
Матрица RST выбирается из четырех наборов преобразований, каждый набор преобразований содержит два преобразования. Набор преобразований, который применяется к блоку, определяется в соответствии с режимом внутреннего предсказания следующим образом:
Если текущий внутренний блок предсказывается с использованием режимов CCLM, выбирается набор 0 преобразований;
В противном случае, если текущий внутренний блок предсказывается с использованием режима MIP, выбирается набор 4 преобразований;
В противном случае (если текущий внутренний блок не предсказывается с использованием режима CCLM или MIP) выбор набора преобразований выполняется в соответствии со следующей таблицей:
Таблица 5. Таблица выбора набора преобразований
Диапазон индекса для IntraPredMode составляет от -14 до 83 (включая -14 и 83), что представляет собой преобразованный индекс режима, используемый для широкоугольного внутреннего предсказания.
В этом решении новый обученный набор преобразований (например, набор 4 преобразований) используется, когда текущий блок предсказывается с использованием режима MIP.
Решение 4
Согласно решению 4, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, используется таблица соответствия для отображения индекса режима MIP в индекс обычного внутреннего режима, затем набор ядер вторичного преобразования выбирается на основе этого индекса обычного внутреннего режима.
В одном варианте осуществления:
Если текущий блок предсказывается с использованием режима MIP, индекс режима MIP отображается в индекс обычного внутреннего режима на основе таблицы 6. В этом примере таблица 6 такая же, как таблица соответствия MIP MPM.
Таблица 6. Описание соответствия между режимами аффинного линейного взвешиваемого внутреннего предсказания и внутреннего предсказания
Затем выбор набора вторичных преобразований выполняется в соответствии со следующей таблицей:
Таблица 7. Таблица выбора набора преобразований
Например, если текущий блок предсказывается с использованием индекса режима MIP 10, а значение sizeID типа размера блока для текущего блока равно 0, то отображаемый индекс обычного внутреннего режима равен 18 на основе таблицы 6, а набор 2 вторичных преобразований выбирается на основе таблицы 7.
В этом решении используется способ отображения из индекса режима MIP в индекс обычного внутреннего режима, когда блок предсказывается с использованием режима MIP, выбор ядра вторичного преобразования основан на отображенном индексе обычного внутреннего режима.
Фиг. 18 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.
Устройство 3102 захвата формирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по отдельности.
В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (Network Video Recorder, NVR) / цифровой видеорегистратор (Digital Video Recorder, DVR) 3112, телевизор 3114, телевизионная приставка (Set Top Box, STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.
Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования снимка или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
Фиг. 19 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.
После того, как блок 3202 обработки протокола обработает поток, формируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.
Посредством обработки демультиплексирования формируются элементарный поток (Elementary Stream, ES) видео, ES аудио и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует ES видео с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для формирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует ES аудио для формирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. 19) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на ФИГ. 19) перед его подачей в блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.
Математические операторы
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, "первый" эквивалентен 0-му, "второй" эквивалентен 1-му и т. д.
Арифметические операторы
Следующие арифметические операторы определены следующим образом:
Логические операторы
Следующие логические операторы определены следующим образом:
x && y - Булево логическое "и" для x и y
х || y - Булево логическое "или" для x и y
! - Булево логическое "не"
x ? y : z - Если x равно ИСТИНЕ или не равно 0, вычисляется значение y; в противном случае вычисляется значение z.
Операторы отношения
Следующие операторы отношения определены следующим образом:
> - Больше
>= - Больше или равно
< - Меньше
<= - Меньше или равно
== - Равно
!= - Не равно
Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение "na" (не применимо, англ. not applicable), значение "na" обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение "na" не считается равным любому другому значению.
Битовые операторы
Следующие побитовые операторы определены следующим образом:
& - Побитовое "и". При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
| - При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
^ - При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
x >> y - Арифметический сдвиг вправо целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.
x << y - Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Следующие арифметические операторы определены следующим образом:
= - Оператор присвоения
++ - Инкремент, т.е. x++ эквивалентно x=x+1; при использовании в индексе массива вычисляется в значение переменной до операции приращения.
−− - Декремент, т.е. x−− эквивалентно x=x-1; при использовании в индексе массива вычисляется значение переменной до операции уменьшения.
+= - Приращение на указанную величину, т.е. x+=3 эквивалентно x=x+3, а x+=(−3) эквивалентно x=x+(−3).
−= - Уменьшение на указанную величину, т.е. x−=3 эквивалентно x=x−3, а x−=(−3) эквивалентно x=x−(−3).
Обозначение диапазона
Следующее обозначение используется для указания диапазона значений:
x=y..zx принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y.
Математические функции
Определены следующие математические функции:
Abs( x ) =
Asin(x) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от - до включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан.
Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от - π÷2 до π÷2 включительно в единицах радиан.
Atan2(y,x) =
Ceil(x)
Clip1Y(x) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )
Clip1C(x) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
Clip3(x,y,z) =
Cos(x) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.
Floor(x) наибольшее целое число, меньшее или равное x.
GetCurrMsb(a,b,c,d) =
Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 281 828...).
Log2(x)
Log10(x) логарифм x по основанию 10.
Min(x,y)=
Max(x,y)=
Round(x)=Sign(x)*Floor(Abs(x)+)
Sign(x)=
Sin(x) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан.
Sqrt(x) =
Swap(x,y)=(y,x)
Tan(x) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.
Порядок приоритетности операций
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
- Операции с более высоким приоритетом вычисляются перед любой операцией с более низким приоритетом.
- Операции с одинаковым приоритетом вычисляются последовательно слева направо.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.
Таблица. Приоритетность операций от высшей (в верхней части таблицы) до низшей (в нижней части таблицы)
Текстовое описание логических операций
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
if( условие 0 )
инструкция 0
else if( условие 1 )
инструкция 1
...
else /* информативный комментарий по оставшемуся условию */
инструкция n
может быть описано следующим образом:
... как указано ниже / ... применяется следующее:
- If условие 0, инструкция 0
- Иначе, если условие 1, инструкция 1
- ...
-- Иначе (информативный комментарий по оставшемуся условию), инструкция n.
Каждое выражение "Если ... Иначе, если ... Иначе, ..." в тексте вводится словами "... как указано ниже" или "...применяется следующее", за которым сразу следует "Если ...". Последним условием "Если ... Иначе Если ... Иначе, ..." всегда является "Иначе, ...". Чередование определений "Если ... Иначе Если ... Иначе, ..." могут быть идентифицированы путем сопоставления "... как указано ниже" или "... применяется следующее" с завершающим "Иначе, ...".
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
if( условие 0a && условие 0b )
инструкция 0
else if( условие 1a | | условие 1b )
инструкция 1
...
else инструкция n
может быть описано следующим образом:
... как указано ниже / ... применяется следующее:
- Если все из следующих условий истинны, инструкция 0:
- условие 0a
- условие 0b
-- Иначе, если истинными являются одно или более из следующих условий, определение 1:
- условие 1a
- условие 1b
- ...
- Иначе, инструкция n
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
if( условие 0 )
инструкция 0
if( условие 1 )
инструкция 1
может быть описано следующим образом:
При условии 0, инструкция 0
При условии 1, инструкция 1.
Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, т.е. обработки или кодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при видеокодировании. В общем, только блоки 244 внешнего предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование для обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, внутреннего предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования 270 и энтропийного декодирования 304.
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.
В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs)воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.
Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор", используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации способов, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, способы могут быть полностью реализованы в одной или более схемах или логических элементах.
Способы этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.
Настоящее раскрытие раскрывает следующие дополнительные аспекты.
Первый аспект способа кодирования, реализуемого устройством декодирования или устройством кодирования, содержащий: выбор ядра вторичного преобразования для вторичного преобразования текущего блока на основе индекса режима внутреннего предсказания текущего блока, когда текущий блок не предсказывается с использованием режима внутреннего предсказания на основе матрицы, MIP.
Второй аспект способа согласно первому аспекту, в котором способ дополнительно содержит: отключение вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима MIP.
Третий аспект способа согласно второму аспекту, в котором отключение вторичного преобразования текущего блока содержит: установку значения информации указания вторичного преобразования для текущего блока в значение по умолчанию.
Четвертый аспект способа согласно любому из аспектов с первого по третий, в котором то, предсказывается ли текущий блок с использованием режима MIP или нет, указывается в соответствии со значением информации указания MIP.
Пятый аспект способа кодирования, реализуемого устройством декодирования или устройством кодирования, содержащий: получение индекса режима внутреннего предсказания текущего блока в соответствии с внутренним предсказанием на основе матрицы, MIP, индексом режима текущего блока и размером текущего блока; выбор ядра вторичного преобразования для вторичного преобразования текущего блока на основе индекса режима внутреннего предсказания текущего блока.
Шестой аспект способа согласно пятому аспекту, в котором индекс режима внутреннего предсказания текущего блока получается согласно отношению отображения среди индекса режима MIP, размера текущего блока, отношение отображения указывается в соответствии с заранее определенным Таблица.
Седьмой аспект способа кодирования, реализуемого устройством декодирования или устройством кодирования, содержит: использование ядра вторичного преобразования для вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием внутреннего предсказания на основе матрицы, MIP, режим.
Восьмой аспект способа согласно седьмому аспекту, в котором ядро вторичного преобразования является одним из ядер вторичного преобразования, которые используются для не-MIP режима.
Девятый аспект способа согласно седьмому аспекту, в котором ядро вторичного преобразования отличается от любого из ядер вторичного преобразования, которые используются для не-MIP режима.
Десятый аспект кодера (20), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по девятый.
Одиннадцатый аспект декодера (30), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по девятый.
Двенадцатый аспект компьютерного программного продукта, содержащий программный код для выполнения способа согласно любому из аспектов с первого по девятый.
Тринадцатый аспект декодера, содержащий: один или более процессоров; и не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из аспектов с первого по девятый.
Тринадцатый аспект кодера, содержащий: один или более процессоров; и не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа согласно любому из аспектов с первого по девятый.
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Определяют режим внутреннего предсказания текущего блока. Выбирают вторичное преобразование текущего блока на основе режима внутреннего предсказания, определенного для текущего блока. Когда режим внутреннего предсказания меньше 0, набор ядер неразделимого вторичного преобразования устанавливается равным 1. Когда режим внутреннего предсказания равен 0 или 1, набор ядер неразделимого вторичного преобразования устанавливается равным 0. Когда режим внутреннего предсказания больше или равен 2 и меньше или равен 12, набор ядер неразделимого вторичного преобразования устанавливается равным 1. Когда режим внутреннего предсказания больше или равен 13 и меньше или равен 23, набор ядер неразделимого вторичного преобразования устанавливается равным 2. Когда режим внутреннего предсказания больше или равен 24 и меньше или равен 44, набор ядер неразделимого вторичного преобразования устанавливается равным 3. Когда режим внутреннего предсказания больше или равен 45 и меньше или равен 55, набор ядер неразделимого вторичного преобразования устанавливается равным 2. 7 н. и 24 з.п. ф-лы, 20 ил., 8 табл.
1. Способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий:
определение режима внутреннего предсказания текущего блока; и
определение выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока:
когда режим внутреннего предсказания меньше 0, набор ядер неразделимого вторичного преобразования устанавливается равным 1;
когда режим внутреннего предсказания равен 0 или 1, набор ядер неразделимого вторичного преобразования устанавливается равным 0;
когда режим внутреннего предсказания больше или равен 2 и меньше или равен 12, набор ядер неразделимого вторичного преобразования устанавливается равным 1;
когда режим внутреннего предсказания больше или равен 13 и меньше или равен 23, набор ядер неразделимого вторичного преобразования устанавливается равным 2;
когда режим внутреннего предсказания больше или равен 24 и меньше или равен 44, набор ядер неразделимого вторичного преобразования устанавливается равным 3;
когда режим внутреннего предсказания больше или равен 45 и меньше или равен 55, набор ядер неразделимого вторичного преобразования устанавливается равным 2;
когда режим внутреннего предсказания больше или равен 56, набор ядер неразделимого вторичного преобразования устанавливается равным 1.
2. Способ по п. 1, в котором определение выбора ядра вторичного преобразования для вторичного преобразования текущего блока основано на индексе режима внутреннего предсказания текущего блока.
3. Способ по п. 2, в котором в случае, если текущий блок не предсказывается с использованием режима MIP, внутреннего предсказания на основе матрицы, выбирается ядро вторичного преобразования для вторичного преобразования текущего блока.
4. Способ по п. 2 или 3, дополнительно содержащий:
отключение вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима MIP.
5. Способ по п. 4, в котором отключение вторичного преобразования текущего блока содержит:
установку значения информации указания вторичного преобразования для текущего блока в значение по умолчанию.
6. Способ по любому из пп. 3-5, в котором то, предсказывается ли текущий блок с использованием режима MIP или нет, указывается в соответствии со значением информации указания MIP.
7. Способ по любому из пп. 3-6, в котором в случае, если текущий блок не предсказывается с использованием режима MIP, вторичное преобразование выбирается в соответствии со следующей таблицей
при этом:
sps_lfnst_enabled_flag, равный 1, указывает, что lfnst_idx может присутствовать в синтаксисе единицы внутреннего кодирования; при этом sps_lfnst_enabled_fag, равный 0, указывает, что lfnst_idx не присутствует в синтаксисе единицы внутреннего кодирования;
intra_mip_flag[ x0 ][ y0 ], равное 1, указывает, что тип внутреннего предсказания для выборок яркости является внутренним предсказанием на основе матрицы, intra_mip_flag[ x0 ][ y0 ], равное 0, указывает, что тип внутреннего предсказания для выборок яркости не является внутренним предсказанием на основе матрицы; при этом, когда intra_mip_flag[ x0 ][ y0 ] отсутствует, предполагается, что он равен 0;
lfnst_idx указывает, используется ли и какое из двух ядер низкочастотного неразделимого преобразования используется в выбранном наборе преобразований, lfnst_idx, равное 0, указывает, что низкочастотное неразделимое преобразование не используется в текущей единице кодирования; при этом, когда lfnst_idx отсутствует, предполагается, что он равен 0;
transform_skip_flag[ x0 ][ y0 ][ cIdx ] указывает, применяется ли преобразование к соответствующему блоку преобразования или нет.
8. Способ по п. 1 или 2, содержащий:
предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований содержит два преобразования;
выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из четырех наборов ядер преобразований, который должен быть применен к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом:
если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, или с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований;
в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
9. Способ по п. 1 или 2, содержащий: предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований содержит два преобразования;
предоставление пятого набора ядер преобразований, имеющего индекс 4 набора ядер преобразований,
при этом пятый набор ядер преобразований имеет те же размеры, что и наборы ядер преобразований, имеющие индекс 0-3 набора ядер преобразований;
при этом пятый набор ядер преобразований обучается заново на основе того же способа машинного обучения и вводимого обучающего набора для режима MIP;
выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из пяти наборов ядер преобразований, который должен применяться к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом:
если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований;
если текущий внутренний блок предсказывается с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 4 набора ядер преобразований;
в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
10. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп. 1-9, когда он реализован устройством кодирования.
11. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-9, когда он реализован устройством декодирования.
12. Декодер (30), содержащий:
один или более процессоров; и
не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-9, когда реализуется устройством декодирования.
13. Кодер (20), содержащий:
один или более процессоров; и
не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа по любому из пп. 1-9, когда реализуется устройством кодирования.
14. Декодер (30), содержащий:
блок определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока; и
блок выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока:
когда режим внутреннего предсказания меньше 0, набор ядер неразделимого вторичного преобразования устанавливается равным 1;
когда режим внутреннего предсказания равен 0 или 1, набор ядер неразделимого вторичного преобразования устанавливается равным 0;
когда режим внутреннего предсказания больше или равен 2 и меньше или равен 12, набор ядер неразделимого вторичного преобразования устанавливается равным 1;
когда режим внутреннего предсказания больше или равен 13 и меньше или равен 23, набор ядер неразделимого вторичного преобразования устанавливается равным 2;
когда режим внутреннего предсказания больше или равен 24 и меньше или равен 44, набор ядер неразделимого вторичного преобразования устанавливается равным 3;
когда режим внутреннего предсказания больше или равен 45 и меньше или равен 55, набор ядер неразделимого вторичного преобразования устанавливается равным 2;
когда режим внутреннего предсказания больше или равен 56, набор ядер неразделимого вторичного преобразования устанавливается равным 1.
15. Декодер (30) по п. 14, в котором определение выбора ядра вторичного преобразования для вторичного преобразования текущего блока основано на индексе режима внутреннего предсказания текущего блока.
16. Декодер (30) по п. 15, в котором в случае, если текущий блок не предсказывается с использованием режима MIP, внутреннего предсказания на основе матрицы, выбирается ядро вторичного преобразования для вторичного преобразования текущего блока.
17. Декодер (30) по п. 15 или 16, причем декодер (30) дополнительно содержит:
отключение вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима MIP.
18. Декодер (30) по п. 17, в котором отключение вторичного преобразования текущего блока содержит:
установку значения информации указания вторичного преобразования для текущего блока в значение по умолчанию.
19. Декодер (30) по любому из пп. 16-18, в котором то, предсказывается ли текущий блок с использованием режима MIP или нет, указывается в соответствии со значением информации указания MIP.
20. Декодер (30) по любому из пп. 16-19, в котором в случае, если текущий блок не предсказывается с использованием режима MIP, вторичное преобразование выбирается согласно следующей таблице
transform_skip_flag[ x0 ][ y0 ][ 0 ] = = 0 ) &&
( treeType = = DUAL_TREE_LUMA | |
( transform_skip_flag[ x0 ][ y0 ][ 1 ] = = 0 &&
transform_skip_flag[ x0 ][ y0 ][ 2 ] = = 0 ) )
CuPredMode[ chType ][ x0 ][ y0 ] = = MODE_INTRA && lfnstNotTsFlag = = 1 &&
( treeType = = DUAL_TREE_CHROMA | | !intra_mip_flag[ x0 ][ y0 ] | |
Min( lfnstWidth, lfnstHeight ) >= 16 ) &&
Max( cbWidth, cbHeight ) <= MaxTbSizeY) {
LfnstZeroOutSigCoeffFlag = = 1 )
при этом:
sps_lfnst_enabled_flag, равный 1, указывает, что lfnst_idx может присутствовать в синтаксисе единицы внутреннего кодирования; при этом sps_lfnst_enabled_fag, равный 0, указывает, что lfnst_idx не присутствует в синтаксисе единицы внутреннего кодирования;
intra_mip_flag[ x0 ][ y0 ], равное 1, указывает, что тип внутреннего предсказания для выборок яркости является внутренним предсказанием на основе матрицы, intra_mip_flag[ x0 ][ y0 ], равное 0, указывает, что тип внутреннего предсказания для выборок яркости не является внутренним предсказанием на основе матрицы; при этом, когда intra_mip_flag[ x0 ][ y0 ] отсутствует, предполагается, что он равен 0;
lfnst_idx указывает, используется ли и какое из двух ядер низкочастотного неразделимого преобразования используется в выбранном наборе преобразований, lfnst_idx, равное 0, указывает, что низкочастотное неразделимое преобразование не используется в текущей единице кодирования; при этом, когда lfnst_idx отсутствует, предполагается, что он равен 0;
transform_skip_flag[ x0 ][ y0 ][ cIdx ] указывает, применяется ли преобразование к соответствующему блоку преобразования или нет.
21. Декодер (30) по п. 14 или 15, содержащий:
предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований содержит два преобразования;
выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из четырех наборов ядер преобразований, который должен быть применен к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом:
если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, или с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований;
в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
22. Декодер (30) по п. 14 или 15, содержащий:
предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований содержит два преобразования;
предоставление пятого набора ядер преобразований, имеющего индекс 4 набора ядер преобразований,
при этом пятый набор ядер преобразований имеет те же размеры, что и наборы ядер преобразований, имеющие индекс 0-3 набора ядер преобразований;
при этом пятый набор ядер преобразований обучается заново на основе того же способа машинного обучения и вводимого обучающего набора для режима MIP;
выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из пяти наборов ядер преобразований, который должен применяться к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом:
если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований;
если текущий внутренний блок предсказывается с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 4 набора ядер преобразований;
в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
23. Кодер (20), содержащий:
блок определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока; и
блок выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока:
когда режим внутреннего предсказания меньше 0, набор ядер неразделимого вторичного преобразования устанавливается равным 1;
когда режим внутреннего предсказания равен 0 или 1, набор ядер неразделимого вторичного преобразования устанавливается равным 0;
когда режим внутреннего предсказания больше или равен 2 и меньше или равен 12, набор ядер неразделимого вторичного преобразования устанавливается равным 1;
когда режим внутреннего предсказания больше или равен 13 и меньше или равен 23, набор ядер неразделимого вторичного преобразования устанавливается равным 2;
когда режим внутреннего предсказания больше или равен 24 и меньше или равен 44, набор ядер неразделимого вторичного преобразования устанавливается равным 3;
когда режим внутреннего предсказания больше или равен 45 и меньше или равен 55, набор ядер неразделимого вторичного преобразования устанавливается равным 2;
когда режим внутреннего предсказания больше или равен 56, набор ядер неразделимого вторичного преобразования устанавливается равным 1.
24. Кодер (20) по п. 23, в котором определение выбора ядра вторичного преобразования для вторичного преобразования текущего блока основано на индексе режима внутреннего предсказания текущего блока.
25. Кодер (20) по п. 24, в котором в случае, если текущий блок не предсказывается с использованием режима MIP, внутреннего предсказания на основе матрицы, выбирается ядро вторичного преобразования для вторичного преобразования текущего блока.
26. Кодер (20) по п. 24 или 25, причем кодер (20) дополнительно содержит:
отключение вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима MIP.
27. Кодер (20) по п. 26, в котором отключение вторичного преобразования текущего блока содержит:
установку значения информации указания вторичного преобразования для текущего блока в значение по умолчанию.
28. Кодер (20) по любому из пп. 26, 27, в котором то, предсказывается ли текущий блок с использованием режима MIP или нет, указывается в соответствии со значением информации указания MIP.
29. Кодер (20) по любому из пп. 25-28, в котором в случае, если текущий блок не предсказывается с использованием режима MIP, вторичное преобразование выбирается согласно следующей таблице
transform_skip_flag[ x0 ][ y0 ][ 0 ] = = 0 ) &&
( treeType = = DUAL_TREE_LUMA | |
( transform_skip_flag[ x0 ][ y0 ][ 1 ] = = 0 &&
transform_skip_flag[ x0 ][ y0 ][ 2 ] = = 0 ) )
CuPredMode[ chType ][ x0 ][ y0 ] = = MODE_INTRA && lfnstNotTsFlag = = 1 &&
( treeType = = DUAL_TREE_CHROMA | | !intra_mip_flag[ x0 ][ y0 ] | |
Min( lfnstWidth, lfnstHeight ) >= 16 ) &&
Max( cbWidth, cbHeight ) <= MaxTbSizeY) {
LfnstZeroOutSigCoeffFlag = = 1 )
при этом:
sps_lfnst_enabled_flag, равный 1, указывает, что lfnst_idx может присутствовать в синтаксисе единицы внутреннего кодирования; при этом sps_lfnst_enabled_fag, равный 0, указывает, что lfnst_idx не присутствует в синтаксисе единицы внутреннего кодирования;
intra_mip_flag[ x0 ][ y0 ], равное 1, указывает, что тип внутреннего предсказания для выборок яркости является внутренним предсказанием на основе матрицы, intra_mip_flag[ x0 ][ y0 ], равное 0, указывает, что тип внутреннего предсказания для выборок яркости не является внутренним предсказанием на основе матрицы; при этом, когда intra_mip_flag[ x0 ][ y0 ] отсутствует, предполагается, что он равен 0;
lfnst_idx указывает, используется ли и какое из двух ядер низкочастотного неразделимого преобразования используется в выбранном наборе преобразований, lfnst_idx, равное 0, указывает, что низкочастотное неразделимое преобразование не используется в текущей единице кодирования; при этом, когда lfnst_idx отсутствует, предполагается, что он равен 0;
transform_skip_flag[ x0 ][ y0 ][ cIdx ] указывает, применяется ли преобразование к соответствующему блоку преобразования или нет.
30. Кодер (20) по п. 23 или 24, содержащий:
предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований содержит два преобразования;
выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из четырех наборов ядер преобразований, который должен быть применен к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом:
если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, или с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований;
в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
31. Кодер (20) по п. 23 или 24, содержащий:
предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований содержит два преобразования;
предоставление пятого набора ядер преобразований, имеющего индекс 4 набора ядер преобразований,
при этом пятый набор ядер преобразований имеет те же размеры, что и наборы ядер преобразований, имеющие индекс 0-3 набора ядер преобразований;
при этом пятый набор ядер преобразований обучается заново на основе того же способа машинного обучения и вводимого обучающего набора для режима MIP;
выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из пяти наборов ядер преобразований, который должен применяться к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом:
если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований;
если текущий внутренний блок предсказывается с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 4 набора ядер преобразований;
в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы:
CHEN J | |||
et al | |||
Кипятильник для воды | 1921 |
|
SU5A1 |
JANG H | |||
et al | |||
"Adaptive NSST Kernel Size Selection", JVET-E0047-v3, 5th Meeting, Geneva, 2017 | |||
ZHAO X | |||
et al | |||
"TU-level non-separable secondary transform", JVET-B0059, 5th Meeting, San Diego, 2016 | |||
WO 2017191782 A1, 09.11.2017 |
Авторы
Даты
2024-06-21—Публикация
2020-04-15—Подача