РАННЕЕ ПРЕКРАЩЕНИЕ УТОЧНЕНИЯ ОПТИЧЕСКОГО ПОТОКА Российский патент 2023 года по МПК H04N19/51 H04N19/52 

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

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

Настоящее изобретение относится к области обработки картинки и, в частности, к уточнению оптического потока.

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

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

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

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

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

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

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

Предоставляется способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования, содержащий:

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

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

вычисление первой стоимости сопоставления (например, состоящей из некоторой меры подобия (или неподобия) или содержащей ее; см. также подробное описание ниже) согласно первым предсказаниям;

определение, следует ли выполнять процесс уточнения оптического потока или нет, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие, равна ли вычисленная первая стоимость сопоставления пороговому значению или превышает его;

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

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

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

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

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

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

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

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

В ходе уточнения вектора движения может быть получено некоторое количество пар кандидатов для уточненных векторов движения, причем пары включают в себя пару исходных векторов движения. Например, пары кандидатов для уточненных векторов движения содержат пару исходных векторов движения (MV0, MV1) и пары (MV0 + (0,1), MV1 + (0, -1)), (MV0 + ( 1,0), MV1 + (-1,0)), (MV0 + (0, -1), MV1 + (0,1)), (MV0 + (-1,0), MV1 + (1,0 )), где (1, -1) обозначает вектор, который имеет смещение 1 в горизонтальном (или x) направлении и смещение -1 в вертикальном (или y) направлении. Для каждой из пар может быть определена стоимость сопоставления, соответствующая этой паре, и вышеупомянутая первая стоимость сопоставления может быть определена как наименьшая из стоимостей сопоставления, определенных для пар кандидатов для уточненных векторов движения. Согласно конкретным примерам, это может быть стоимость сопоставления, соответствующая паре исходных векторов движения (MV0, MV1) или (MV0, MV1) или (MV0’=MV0 + (0,1), MV1’= MV1 + (0,-1)) с уточненными векторами движения MV0’ и MV1’.

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

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

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

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

В общем, пороговое значение или другое пороговое значение может быть значением, которое вычисляется на основе битовой глубины первых предсказаний. Кроме того, пороговое значение может быть получено согласно количеству предсказанных выборок, которые используются для вычисления первой стоимости сопоставления согласно первым предсказаниям. Дополнительно, пороговое значение может быть получено в соответствии с размером (шириной и высотой в единицах числа пикселей) текущего блока. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота текущего блока. Например, K=2.

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

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

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

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

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

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

Это устройство, как описано выше, и с его вариантами, описанными ниже, обеспечивает те же преимущества, что и вышеописанные способы.

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

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

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

Устройство может дополнительно содержать блок уточненного вектора движения, сконфигурированный для получения уточненных векторов движения на основе исходных векторов движения и стоимости первого сопоставления;

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

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

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

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

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

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

Дополнительно, устройство может содержать блок вычисления порога, сконфигурированный для вычисления порогового значения или другого порога на основе битовой глубины первых предсказаний. Кроме того, устройство может дополнительно содержать блок вычисления порога, сконфигурированный для вычисления порога согласно количеству предсказанных выборок, которые используются для вычисления первой стоимости соответствия согласно первым предсказаниям, первым блоком вычисления стоимости сопоставления. Кроме того, устройство может дополнительно содержать блок вычисления порога, сконфигурированный для вычисления порога согласно размеру текущего блока. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота текущего блока. Например, K=2.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фиг. 11 иллюстрирует устройство для использования в кодере изображения и/или декодере изображения согласно варианту осуществления настоящего изобретения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 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, является лишь примером, а методы настоящей заявки могут применяться к настройкам кодировки видео (такого как кодирование видео или декодирование видео), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство кодирования видео может кодировать и сохранять данные в память, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.

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

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

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

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

Картинки и разделение картинок (картинки и блоки)

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

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

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

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

Подобно картинке 17, блок 203 картинки снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем картинка 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромной картинки 17 или массив яркости или цветности в случае цветной картинки) или три массива выборок (например, яркость и два массива цветности в случае цветной картинки 17) или любое другое количества и/или вид массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может быть, например, массивом дискретных выборок 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 обработки преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.

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

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

Квантование

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

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

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

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

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

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

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

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

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

Фильтрация

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

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

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

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

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

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

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

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

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

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

Разделение

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

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

Например, единица дерева кодировки (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, единица дерева кодировки (CTB) может быть блоком NxN выборок для некоторого значения N, так что деление компонента на CTB является разделением. Единица кодировки (CU) может быть или содержать блок кодировки выборок яркости, два соответствующих блока кодировки выборок цветности картинки, которая имеет три массива выборок, или блок кодировки выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодировки (CB) может быть блоком MxN выборок для некоторых значений 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 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (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 может быть реализовано в самых разнообразных конфигурациях.

Уточнение вектора движения (MVR)

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

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

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

Уточнение вектора движения является частью блока внешнего предсказания (244) на Фиг. 2 и 344 на Фиг. 3.

Уточнение вектора движения может быть выполнено в соответствии со следующими этапами:

Обычно исходные векторы движения могут быть определены на основе указания (индикации) в потоке битов. Например, в потоке битов может сигнализироваться индекс, который указывает позицию в списке кандидатных векторов движения. В другом примере индекс предиктора вектора движения и значение разности векторов движения могут сигнализироваться в потоке битов. Векторы движения, которые определяются на основе указания в потоке битов, определяются как исходные векторы движения. В случае двунаправленного предсказания, когда внешнее предсказание для текущего блока получается как взвешенная комбинация предсказанного блока выборок, которые определены в соответствии с двумя векторами движения, пусть исходный вектор движения в первой опорной картинке в списке L0 обозначен как MV0; и исходный вектор движения во втором опорном изображении в списке L1 обозначен как MV1.

Используя исходные векторы движения, определяются пары кандидатных векторов движения (MV) на уточнение. По меньшей мере, необходимо определить две пары кандидатов на уточнение. Обычно пары кандидатных векторов движения на уточнение определяются на основе исходной пары векторов движения (MV0, MV1). Кроме того, пары кандидатных MV определяются путем добавления небольших разностей векторов движения к MV0 и MV1. Например, пары кандидатных MV могут включать в себя следующее:

(MV0, MV1)

(MV0 + (0,1), MV1 + (0, -1))

(MV0 + (1,0), MV1 + (-1,0))

(MV0 + (0, -1), MV1 + (0,1))

(MV0 + (-1,0), MV1 + (1,0))

где (1, -1) обозначает вектор, который имеет смещение 1 в горизонтальном (или x) направлении и смещение -1 в вертикальном (или y) направлении.

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

Пары кандидатных векторов движения (MV) на уточнение образуют пространство поиска процесса уточнения вектора движения.

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

При уточнении вектора движения два блока предсказания, полученные с использованием соответствующего первого вектора движения и второго вектора движения пары кандидатных MV, сравниваются на основе метрики подобия для каждой из пар кандидатных MV на уточнение. В качестве уточненных векторов движения обычно выбирается пара кандидатных MV, дающая наибольшее подобие. Обозначенный как MV0’ и MV1’, уточненный вектор движения в первой опорной картинке в списке L0 и уточненный вектор движения во второй опорной картинке в списке L1 соответственно. Другими словами, предсказания получают, соответственно вектору движения списка L0 и вектору движения списка L1 пары кандидатных векторов движения, которые затем сравниваются на основе метрики подобия. Пара кандидатных векторов движения, которая имеет наивысшее ассоциированное подобие, выбирается как уточненная пара MV.

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

Вместо выбора позиции, которая максимизирует метрику подобия, другим методом является выбор позиции, которая минимизирует метрику неподобия. Мера сравнения неподобия может быть SAD (сумма абсолютных различий), MRSAD (средняя удаленная сумма абсолютных различий, SSE (сумма квадратов ошибок) и т. д. SAD между двумя блоками предсказания может быть получена с использованием пары кандидатных MV (CMV0, CMV1), SAD можно вычислить следующим образом:

где nCbH и nCbW - высота и ширина блоков предсказания, функция abs(a) указывает абсолютное значение аргумента a, predSAmplesL0 и predSAmplesL1 - выборки блоков предсказания, полученные в соответствии с парой кандидатных MV, которая обозначена как (CMV0, CMV1 ).

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

Один из примеров уточнения вектора движения поясняется в документе «JVET-M1001-v3, Versatile Video Coding (Draft 4)” of JVET (of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11), который находится в открытом доступе по адресу http://phenix.it-sudparis.eu/jvet/». Раздел «8.4.3 Decoder side motion vector refinement process» в документе иллюстрирует уточнение вектора движения.

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

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

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

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

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

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

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

Применение уточнения вектора движения для данного кодированного блока выборок может быть обусловлено некоторыми свойствами кодировки кодированного блока выборок. Некоторыми примерами таких свойств кодировки могут быть:

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

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

Уточнение оптического потока с двунаправленным предсказанием (BPOF)

Уточнение оптического потока с двунаправленным предсказанием - это процесс повышения точности двунаправленного предсказания блока без явной дополнительной сигнализации в потоке битов, кроме тех, которые указаны для двунаправленного предсказания. Это является частью блока (244) внешнего предсказания на Фиг. 2 и 344 на Фиг. 3.

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

Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,

где W1 и W2 - весовые коэффициенты, которые могут сигнализироваться в потоке битов или могут быть заранее определены на стороне кодера или на стороне декодера. K - аддитивный коэффициент, который также может быть сигнализирован в потоке битов или заранее определен на стороне кодера или на стороне декодера. Например, двунаправленное предсказание может быть получено с использованием

Bi-prediction = (Prediction1 + Prediction2)/2,

где W1 и W2 установлены на 1/2, а K установлено на 0.

Целью уточнения оптического потока является повышение точности двунаправленного предсказания. Оптический поток - это шаблон видимого движения объектов изображения между двумя последовательными кадрами. Оптический поток вызывается движением объекта или камеры. Процесс уточнения оптического потока повышает точность двунаправленного предсказания за счет применения уравнения оптического потока (решения уравнения оптического потока).

В примере пиксель I (x, y, t) расположен в первом кадре (x и y соответствуют пространственным координатам, t соответствуют временному измерению). Объект, представленный пикселем, перемещается на расстояние (dx, dy) в следующем кадре, снятом после времени dt. Поскольку эти пиксели одинаковы и интенсивность не меняется, уравнение оптического потока определяется следующим образом:

I (x, y, t) = = I (x+dx , y+dy , t+dt)

I (x, y, t) указывает интенсивность (значение выборки) пикселя в координатах (x, y, t).

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

= 0

где и - горизонтальный и вертикальный градиенты пространственной выборки в позиции (x, y), а - частная производная по времени в точке (x, y).

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

Реализация уточнения оптического потока обычно включает в себя следующие этапы:

1. Вычисление градиентов выборки;

2. Вычисление разницы между первым предсказанием и вторым предсказанием;

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

где I(0) соответствует значению выборки в первом предсказании, I(1) - значение выборки во втором предсказании, а ∂I(0)/ ∂x и ∂I(0)/ ∂y - градиенты в -x и -y направления. и обозначают расстояния до опорных картинок, на которых получают первое предсказание и второе предсказание. Вектор движения (vx, vy) получается путем процесса минимизации. Некоторые подходы минимизируют сумму квадратов ошибок, в то время как некоторые подходы минимизируют сумму абсолютных ошибок.

4. Использование реализации уравнения оптического потока, например, ниже:

Где predBIO указывает модифицированное предсказание, которое является результатом процесса уточнения оптического потока.

Примерные градиенты можно получить по следующей формуле

∂I (x, y, t) / ∂x=I (x+1, y, t) - - I (x - 1, y, t)

∂I (x, y, t) / ∂y=I (x, y+1, t) - - I (x, y - 1, t)

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

Входными данными процесса уточнения оптического потока являются выборки предсказания из двух опорных картинок, а выходными данными уточнения оптического потока является комбинированное предсказание (predBIO), которое вычисляется в соответствии с уравнением оптического потока.

Один пример уточнения оптического потока объяснен в разделе 8.4.7.4 «Bidirectional optical flow prediction process» документа JVET-M1001, Versatile Video Coding (Draft 4).

Термины «уточнение оптического потока», «уточнение оптического потока с двунаправленным предсказанием» и «уточнение двунаправленного оптического потока» используются в раскрытии как взаимозаменяемые, поскольку эти термины эквивалентны по своей природе.

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

Этап 0, получите исходные векторы движения, как в блоке 1010 на фиг. 8.

На этапе 1 применяется блок 1020 уточнения вектора движения, и получаются уточненные векторы блока 1030 движения.

На этапе 2 предсказания получают согласно векторам движения уточнения блока 1040. Полученные предсказания - это I(0) и I(1), которые являются входными данными процесса уточнения оптического потока.

Этап 3, процесс уточнения оптического потока применяется к предсказаниям, чтобы получить модифицированное предсказание. Модифицированное предсказание получается в соответствии с уравнением оптического низкого уровня и обозначается как predBIO.

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

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

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

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

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

Этап 0: получить исходные векторы движения на основе информации указания в потоке битов.

Этап 1: получить первые предсказания на основе исходных векторов движения и интерполяционного фильтра M-отводов.

Этап 2: получить сопоставимую стоимость в соответствии с первыми предсказаниями.

Этап 3: получить уточненный вектор движения в соответствии с исходными векторами движения и стоимостью сопоставления.

Этап 4: получить второе предсказание в соответствии с уточненным вектором движения и фильтром интерполяции K-отводов.

Этап 5: определить, выполнять ли процесс уточнения оптического потока, в соответствии со стоимостью сопоставления. В одном примере стоимость сопоставления сравнивается с порогом, и процесс уточнения оптического потока выполняется, когда значение стоимости сопоставления больше или равно пороговому значению. Этап 5 также может быть выполнен перед этапом 3 или этапом 4.

Этап 6: Когда определено, что необходимо выполнить процесс уточнения оптического потока, применяется уточнение оптического потока со вторым предсказанием в качестве входных данных и измененным вторым предсказанием в качестве выходных данных. Если определено отрицательно, уточнение оптического потока не применяется ко второму предсказанию. Другими словами, когда определено, что необходимо выполнить процесс уточнения оптического потока, окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и согласно процессу уточнения оптического потока. В противном случае окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и без применения процесса уточнения оптического потока.

Подробное объяснение этапов следующее:

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

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

Этап 1, этап 2 и этап 3 соответствуют процессу уточнения вектора движения, как объяснено в приведенных выше примерах. Исходные векторы движения уточняются согласно уточнению вектора движения. В одном примере стоимость сопоставления является мерой подобия, которая используется при уточнении вектора движения.

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

На этапе 1 первые предсказания, соответствующие каждой паре кандидатных векторов движения, получаются на основе фильтра интерполяции M-отводов. Например, одно предсказание, соответствующее MV0, может быть получено путем размещения прямоугольного блока в опорной картинке (картинке, которая уже закодирована в кодере или декодирована в декодере), при этом блок указывается посредством MV0. После этого к выборкам в блоке, указанном MV0, преимущественно применяется фильтр интерполяции. Чтобы обеспечить более точную оценку движения, разрешение опорной картинки может быть улучшено путем интерполяции выборок между пикселями. Дробная интерполяция пикселей может выполняться путем взвешенного усреднения ближайших пикселей. Здесь фильтр с M-отводами обычно может быть фильтром с 2, 4, 6 или 8 отводами (не ограничиваясь этими параметрами), что означает, что фильтр имеет M коэффициентов умножения. Предсказание, соответствующее MV1, может быть получено аналогичным образом, размещая прямоугольный блок в той же или другой опорной картинке. Размер прямоугольника пропорционален размеру текущего блока кодировки.

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

Согласно этапу 2 получается, по меньшей мере, одна стоимость сопоставления (например, мера подобия), соответствующая одной из пар векторов движения (MV) кандидата на уточнение. Чем выше подобие между двумя блоками предсказания, тем меньше стоимость сопоставления.

Указанная стоимость сопоставления используется при уточнении исходных векторов движения на этапе 3. Уточненный вектор движения выбирается согласно упомянутой стоимости сопоставления.

На этапе 4 второе предсказание получается согласно уточненному вектору движения и интерполяционному фильтру с K-отводами. В случае двух уточненных векторов движения (MV0’ и MV1’), что является случаем двунаправленного предсказания, получают два вторых предсказания.

Второе предсказание получается путем применения второго фильтра интерполяции (фильтр с K-отводами), который может быть или не быть идентичным первому фильтру интерполяции (фильтр с M-отводами). Второе предсказание получается аналогично первому предсказанию с применением второго интерполяционного фильтра и в соответствии с блоком, указанным MV0’ и MV1’ в опорной картинке.

На этапе 5 упомянутая стоимость сопоставления используется для определения того, выполнять ли процесс уточнения оптического потока или нет, в соответствии со следующим:

когда значение стоимости сопоставления меньше заранее определенного порога, уточнение оптического потока не применяется. Когда значение стоимости сопоставления больше или равно пороговому значению, выполняется процесс уточнения оптического потока. Если выполняется процесс уточнения оптического потока, выборки окончательного предсказания изменяются.

На этапе 6, согласно выходным данным этапа 5, если стоимость сопоставления больше r, равного упомянутому порогу, процесс уточнения оптического потока применяется ко вторым предсказаниям, вторые предсказания получаются согласно MV0’ и MV1’ (уточненные векторы движения). Окончательное предсказание для текущего блока кодировки получается путем выполнения процесса уточнения оптического потока над вторыми предсказаниями, вторые предсказания указываются посредством MV0’ и MV1’. Если стоимость сопоставления меньше указанного порога, окончательное предсказание получается согласно вторым предсказаниям, указанным MV0’ и MV1’, без применения уточнения оптического потока, что означает, что этап 6 не выполняется.

В одной реализации стоимость сопоставления на этапе 2 представляет собой стоимость сопоставления, соответствующую паре исходных векторов движения (которая является одной из пар кандидатных векторов движения на уточнение (MV)). Стоимость сопоставления может соответствовать паре MV0, MV1.

В другой реализации упомянутая стоимость сопоставления на этапе 2 является стоимостью сопоставления, равной наименьшей стоимости сопоставления среди пар кандидатных векторов движения (MV) на уточнение. Другими словами, получается стоимость сопоставления, соответствующая каждой паре кандидатных векторов движения на уточнение, и упомянутая стоимость сопоставления равна наименьшей стоимости сопоставления среди них. В одном примере упомянутая стоимость сопоставления является стоимостью сопоставления, соответствующей паре уточненных MV0’ и MV1’ векторов движения (поскольку выбрана пара уточненных векторов движения (MV0’, MV1’), поскольку она имеет наименьшую стоимость сопоставления.

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

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

(MV0, MV1)

(MV0 + (0,1), MV1 + (0, -1))

(MV0 + (1,0), MV1 + (-1,0))

MV0 и MV1 - это исходные векторы движения, MV0’ и MV1’ - уточненные векторы движения во всей заявке.

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

Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,

где W1 и W2 - весовые коэффициенты, W1 и W2 могут передаваться в потоке битов, или W1 и W2 могут быть заранее определены на стороне кодера или на стороне декодера. K - аддитивный коэффициент, который также может быть сигнализирован в потоке битов или заранее определен на стороне кодера или на стороне декодера. В примере, двунаправленное предсказание может быть получено с использованием

Bi-prediction = (Prediction1 + Prediction2)/2,

где W1 и W2 установлены на 1/2, а K установлено на 0. Prediction1 и prediction2 - вторые предсказания, которые получены с помощью K-отводной интерполяционной фильтрации, Prediction1 соответствует первому уточненному MV (MV0’), а Prediction2 соответствует второму уточненному MV (MV1’).

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

Порог может быть предопределенным значением, значение порога может зависеть от размера блока предсказания. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота блока предсказания.

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

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

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

Положение дробной выборки p коэффициенты интерполяционного фильтра fbL [p] [0] fbL [p] [1] 1 16 0 2 16 0 3 16 0 4 16 0 5 16 0 6 16 0 7 16 0 8 0 16 9 0 16 10 0 16 11 0 16 12 0 16 13 0 16 14 0 16 15 0 16

Позиция (p) дробной выборки может быть получена в соответствии с компонентами исходного или уточненного вектора движения. Например, если компонент -x вектора движения задается как MV0x, то позиция дробной выборки может быть получена как p=MV0x% 16, где «%» - это операция по модулю. Как правило, p=MV0x% K, где K представляет количество позиций дробной выборки между двумя позициями выборки. Фильтр интерполяции, приведенный в качестве примера выше, также может называться одноотводным фильтром, поскольку только один из отводов фильтра не равен нулю в каждый момент времени.

В одной реализации значение K равно 8. В других примерах значение M меньше 8.

В одной реализации значение M и значение K равны 8.

Исходный вектор движения получается в блоке 710, который является входом блока уточнения вектора движения. Пространство поиска строится вокруг исходного вектора движения блоком уточнения вектора движения (740). В одном примере пространство поиска состоит из пар кандидатных векторов движения, первого вектора движения из пары, соответствующей первой опорной картинке, и второго вектора движения из пары, соответствующей второй опорной картинке. Первые предсказания, соответствующие каждой паре кандидатных векторов движения, получаются на этапе 710 посредством применения фильтра интерполяции с M-отводами. Как часть уточнения вектора движения вычисляется стоимость сопоставления, соответствующая одной из пар векторов движения в пространстве поиска (720). Упомянутая стоимость сопоставления используется как часть двух процессов, первый процесс - это уточнение вектора движения (740), где стоимость сопоставления используется для решения, какая пара векторов движения выбрана в качестве пары уточненных векторов движения (750). Второй процесс - это решение о том, применяется ли уточнение оптического потока (770) или нет. После получения уточненного вектора движения второе предсказание для текущего блока получается посредством блока (760). Если стоимость сопоставления больше или равна пороговому значению, применяется уточнение оптического потока, и прогноз на этапе 760 модифицируется на этапе 770, чтобы получить модифицированное предсказание (780). Модифицированное предсказание обычно отличается по выборочным значениям от второго предсказания на этапе 760.

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

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

Этап 0: получить исходные векторы движения на основе информации указания в потоке битов.

Этап 1: получить первые предсказания на основе исходных векторов движения и интерполяционного фильтра с M-отводами.

Этап 2: получить N сопоставимых стоимостей согласно первым предсказаниям.

Этап 3: получить уточненный вектор движения в соответствии с исходными векторами движения и N стоимостей сопоставления на основе первой функции.

Этап 4: получить второе предсказание в соответствии с уточненным вектором движения и фильтром интерполяции с K-отводами.

Этап 5: определить, следует ли выполнять процесс уточнения оптического потока, в соответствии с N стоимостей сопоставления. Выведенная стоимость получается согласно N сопоставимых стоимостей и второй функции. В примере выведенная стоимость сравнивается с пороговым значением, и процесс уточнения оптического потока выполняется, когда значение выведенной стоимости больше или равно пороговому значению. Этап 5 также может быть выполнен перед этапом 3 или этапом 4.

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

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

Подробное объяснение этапов следующее:

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

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

Этап 1, этап 2 и этап 3 соответствуют процессу уточнения вектора движения, как объяснено в приведенных выше примерах. Исходные векторы движения уточняются согласно уточнению вектора движения. В одном примере стоимость сопоставления является мерой подобия, которая используется при уточнении вектора движения.

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

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

На этапе 2 определяется N стоимостей сопоставления, ассоциированных с N парами кандидатных векторов движения, в соответствии с первыми предсказаниями.

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

Указанные N стоимостей сопоставления используются при уточнении исходных векторов движения на этапе 3.

Уточненный вектор движения определяется в соответствии с первой функцией и N стоимостей сопоставления.

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

если (sad[3]+sad[5]) равно (sad[4]<<1), dmvOffset[0] устанавливается равным 0,

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

dmvOffset[0]=((sad[3]-sad[5])<<3)/(sad[3]+sad[5]-(sad[4]<< 1))

если (sad[1]+sad[7]) равно (sad[4]<<1), dmvOffset[1] устанавливается равным 0,

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

dmvOffset[1] = ((sad[1]-sad[7])<<3)/(sad[1]+sad[7]-(sad[4]<<1))

где dmvOffset [0] и dmvOffset [1] определяют разницу между исходным и уточненным векторами движения. В примере dmvOffset [0] и dmvOffset [1] определяют компоненты -x и -y разницы между уточненным и исходным векторами движения. sad [0] до sad [7] - это N стоимостей сопоставления, соответствующих N парам кандидатных векторов движения. Уточненный вектор движения получается добавлением dmvOffset к исходным векторам движения.

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

На этапе 4 второе предсказание получается согласно уточненному вектору движения и интерполяционному фильтру с K-отводами. В случае двух уточненных векторов движения (MV0’ и MV1’), что является случаем двунаправленного предсказания, получают два вторых предсказания.

Второе предсказание получается путем применения второго фильтра интерполяции (фильтр с K-отводами), который может быть или не быть идентичным первому фильтру интерполяции (фильтр с M-отводами). Второе предсказание получается аналогично первому предсказанию с применением второго интерполяционного фильтра и в соответствии с блоком, указанным MV0’ и MV1’ в опорной картинке.

На этапе 5 получается выведенная стоимость в соответствии со второй функцией и упомянутыми N согласованными стоимостями. Выведенная стоимость используется, чтобы определить, выполнять ли процесс уточнения оптического потока или нет. Когда значение упомянутой выведенной стоимости меньше заранее определенного порога, процесс уточнения оптического потока не выполняется. Когда значение выведенной стоимости больше или равно пороговому значению, выполняется процесс уточнения оптического потока. Если выполняется процесс уточнения оптического потока, выборки окончательного предсказания модифицируются.

На этапе 6, в соответствии с выходными данными этапа 5, если выведенная стоимость больше указанного порога, процесс уточнения оптического потока применяется ко вторым предсказаниям, вторые предсказания получаются согласно MV0’ и MV1’ (уточненные векторы движения). Окончательное предсказание для текущего блока кодировки получается путем выполнения процесса уточнения оптического потока над вторыми предсказаниями, вторые предсказания указываются посредством MV0’ и MV1’. Если стоимость сопоставления меньше указанного порога, окончательное предсказание получается в соответствии со вторыми предсказаниями, указанными MV0’ и MV1’, без применения уточнения оптического потока, что означает, что этап 6 не выполняется.

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

Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,

где W1 и W2 - весовые коэффициенты, W1 и W2 могут передаваться в потоке битов или могут быть заранее определены на стороне кодера или на стороне декодера. K - аддитивный коэффициент, который также может быть сигнализирован в потоке битов или заранее определен на стороне кодера или на стороне декодера. В примере, двунаправленное предсказание может быть получено с использованием

Bi-prediction = (Prediction1 + Prediction2)/2 ,

где W1 и W2 установлены на 1/2, а K установлено на 0. Prediction1 и prediction2 - вторые предсказания, которые получены с помощью интерполяционной фильтрации с К-отводами, Prediction1 соответствует первому уточненному MV (MV0’), а Prediction2 соответствует второму уточненному MV (MV1’).

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

Порог может быть предопределенным значением, значение порога зависит от размера блока предсказания. Например, порог может быть th=nCbW x nCbH x K, где K - значение больше нуля, nCbW и nCbH - ширина и высота блока предсказания.

Второй вариант осуществления дополнительно проиллюстрирован блок-схемой на фиг. 7.

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

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

Позиция дробной выборки p коэффициенты интерполяционного фильтра fbL [p] [0] fbL [p] [1] 1 16 0 2 16 0 3 16 0 4 16 0 5 16 0 6 16 0 7 16 0 8 0 16 9 0 16 10 0 16 11 0 16 12 0 16 13 0 16 14 0 16 15 0 16

Положение дробной выборки (p) может быть получено в соответствии с компонентами исходного или уточненного вектора движения. Например, если компонент -x вектора движения задается как MV0x, то положение дробной выборки может быть получено как p=MV0x% 16, где «%» - это операция по модулю. Как правило, p=MV0x% K, где K представляет количество позиций дробной выборки между двумя позициями выборки. Фильтр интерполяции, приведенный в качестве примера выше, также может называться одноотводным фильтром, поскольку только один из отводов фильтра не равен нулю в каждый момент времени.

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

Позиция дробной выборки p коэффициенты интерполяционного фильтра fbL [p] [0] fbL [p] [1] 1 15 1 2 14 2 3 13 3 4 12 4 5 11 5 6 10 6 7 9 7 8 8 8 9 7 9 10 6 10 11 5 11 12 4 12 13 3 13 14 2 14 15 1 15

В одной реализации значение K равно 8. В других примерах значение M меньше 8.

В одной реализации значение M и значение K равны 8.

В одной реализации вторая функция может быть функцией для линейного комбинирования N стоимостей сопоставления в соответствии с dmvOffset, где dmvOffset было получено на этапе 3. Линейная комбинация x и y будет любым выражением формы ax+by, где a и b - константы. В примере константы a и b могут быть определены на основе dmvOffset. Примеры для второй функции приведены ниже.

В одной реализации вторая функция может быть:

Sad [1] * A+Sad [2] * B+Sad [3] * C+Sad [4] * D, где A, B, C и D больше или равны нулю. В одном примере A, B, C и D могут быть числами от 0 до 1, и в сумме дают 1 (т. е. А+В+С+D=1). В другом примере A, B, C и D могут быть числами больше или равными 0 и которые в сумме дают заранее определенное фиксированное число P, P может быть равно 1,2, 4, 8, 16 и т. д.

A, B, C и D могут быть заранее заданными фиксированными числами.

A, B, C и D могут быть получены в соответствии с dmvOffset [0] и dmvOffset [1]. В примере A=dmvOffset [0], B=P1 - dmvOffset [0], C=dmvOffset [1], D=P2 - dmvOffset [1]. Где P1 и P2 могут быть равны 1, 4, 8,16 и т. д.

Вышеприведенное уравнение приводится в качестве примера. Уравнение представляет собой линейную комбинацию 4 сопоставимых стоимостей для получения выведенной стоимости. В уравнении используется dmvOffset, который может быть получен на этапе 3. dmvOffset представляет собой разницу между уточненным вектором движения и исходным вектором движения. В одной конкретной реализации dmvOffset определяется как разница между MV0 и MV0’. В частности, dmvOffset [0] может быть разницей между компонентом -x для MV0 и MV0’, тогда как dmvOffset [1] может быть разницей между -y компонентом для MV0 и MV0’.

В другой реализации вторая функция может быть:

Sad [1] * A+Sad [2] * B+Sad [3] * C, где A, B и C больше или равны нулю. В одном примере A, B и C могут быть числами от 0 до 1, а в сумме дают 1 (т. е. А+В+С=1). В другом примере A, B и C могут быть числами больше или равными 0 и которые в сумме дают заранее определенное фиксированное число P, P может быть равно 1, 2, 4, 8, 16 и т. д.

A, B и C могут быть заранее заданными фиксированными числами.

A, B и C могут быть получены в соответствии с dmvOffset [0] и dmvOffset [1]. В примере A=P - dmvOffset [0] - dmvOffset [1], B=dmvOffset [0], C=dmvOffset [1]. Где P может быть равно 1, 4, 8, 16 и т. д.

Вышеприведенное уравнение приводится в качестве примера. Уравнение представляет собой линейную комбинацию трех сопоставимых стоимостей для получения выведенной стоимости. В уравнении используется dmvOffset, который может быть получен на этапе 3. dmvOffset представляет собой разницу между уточненным вектором движения и исходным вектором движения. В одном примере dmvOffset определяется как разница между MV0 и MV0’. В частности, dmvOffset [0] может быть разницей между -x компонентом для MV0 и MV0’, тогда как dmvOffset [1] может быть разницей между -y компонентом для MV0 и MV0’.

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

Используя 5 оцененных значений стоимости неподобия (например, значения SAD) в уточненной паре MV и парах кандидатных MV, которые находятся на целочисленном расстоянии от уточненной пары MV, параметрическая функция поверхности ошибки

E(x,y) = A*(x - x0) 2 + B*(y - y0)2 + C

Подбирается, где (x0, y0) соответствует положению, в котором неподобие между двумя опорными патчами минимизировано, C - значение стоимости в (x0, y0), а A, B - коэффициенты модели. Эти 5 неизвестных могут быть решены точно, если доступны 5 значений стоимости. Другими словами, уравнение для E (x, y) делает предположение, что форма стоимостей сопоставления как функция пространственных позиций около позиции с минимальными стоимостями сопоставления имеет параболическую форму.

В одном варианте осуществления используются пары кандидатных MV слева, сверху, справа и снизу уточненной пары MV на расстоянии одного целого пикселя. В этом случае, учитывая оцененные значения E (x, y) в (x, y) позициях (0,0), (-1,0), (0, -1), (1,0) и (0,1) и параметрическое уравнение для E (x, y), 5 неизвестных A, B, C, x0, y0 могут быть решены следующим образом:

A = (E (-1,0) + E (1,0) - 2 * E (0,0)) / 2

В = (E (0, -1) + E (0,1) - 2 * E (0,0)) / 2

x0 = (E (-1,0) - E (1,0)) / (2 * (E (-1,0) + E (1,0) - 2 * E (0,0)))

y0 = (E (0, -1) - E (0,1)) / (2 * (E (0, -1) + E (0,1) - 2 * E (0,0)))

C=

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

В одной реализации вторая функция может быть следующей:

Где K - скаляр больше 0, а от sad [0] до sad [4] - N стоимости сопоставления.

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

Исходный вектор движения получается на этапе 925, который является входом блока уточнения вектора движения. Пространство поиска строится вокруг исходного вектора движения блоком (930) уточнения вектора движения. В одном примере пространство поиска состоит из пар кандидатных векторов движения, первого вектора движения из пары, соответствующей первой опорной картинке, и второго вектора движения из пары, соответствующей второй опорной картинке. Первые предсказания, соответствующие каждой паре кандидатных векторов движения, получаются на этапе 910 путем применения фильтра интерполяции M-отводов. Как часть уточнения вектора движения вычисляется стоимость сопоставления, соответствующая N парам векторов движения в пространстве поиска (915). Упомянутые N стоимостей сопоставления используются как часть двух процессов, первый процесс - это уточнение вектора движения (930), где стоимости сопоставления используются для вычисления уточненной пары векторов движения (935) в соответствии с функцией, которая принимает N стоимостей сопоставления как вход. Второй процесс - это решение о том, применяется ли уточнение оптического потока (950) или нет, где решение принимается этапом 945. После получения уточненного вектора движения второе предсказание для текущего блока получается посредством (940). Если стоимость сопоставления превышает пороговое значение, применяется уточнение оптического потока, и предсказание на этапе 940 модифицируется на этапе 950, чтобы получить модифицированное предсказание (955-960). Модифицированное предсказание обычно отличается по выборочным значениям от второго предсказания на этапе 940. Если стоимость сопоставления меньше порогового значения, уточнение оптического потока не применяется, и второе предсказание устанавливается как выходное (окончательное предсказание текущего блока).

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

Этап 0: получить пару исходных векторов движения на основе информации указания в потоке битов.

Этап 1: получить первый набор предсказанных выборок на основе пары исходных MV и интерполяционного фильтра с M-отводами.

Этап 2: получить первую стоимость сопоставления, соответствующую паре исходных MV, используя первый набор предсказанных выборок.

Этап 3: определить, подходит ли текущий блок кодировки для выполнения уточнения вектора движения.

Этап 4: Если текущий блок кодировки определен как имеющий право выполнять MVR на этапе 3,

Этап 4a: получить уточненную пару MV и стоимость сопоставления, соответствующую уточненной паре MV, в соответствии с парой исходных MV и стоимостью сопоставления, используя процесс уточнения вектора движения.

Этап 4b: получить второй набор предсказанных выборок согласно уточненной паре MV и интерполяционному фильтру с K-отводами.

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

Этап 5: В противном случае (если текущий блок кодировки определен как не имеющий права на выполнение MVR на этапе 3),

Этап 5a: получить второй набор предсказанных выборок в соответствии с парой исходных MV и интерполяционным фильтром с K-отводами.

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

Этап 6: Когда определено, что необходимо выполнить процесс уточнения оптического потока (либо на этапе 4c, либо на этапе 5b), применяется уточнение оптического потока со вторым предсказанием в качестве входных данных и измененным вторым предсказанием в качестве выходных данных. Если определено отрицательно, уточнение оптического потока не применяется ко второму предсказанию. Другими словами, когда определено, что необходимо выполнить процесс уточнения оптического потока, окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и согласно процессу уточнения оптического потока. В противном случае окончательное предсказание текущего блока кодировки получается согласно второму предсказанию и без применения процесса уточнения оптического потока.

Этот вариант осуществления дополнительно проиллюстрирован на блок-схеме на фиг.9. Блок 1110 принимает пару исходных MV для текущего блока кодировки для предсказания в позициях L0 и L1. Блок 1110 соответствует этапу 1, на котором первый набор предсказанных выборок получается с использованием пары исходных MV и восстановленных опорных выборок картинок L0 и L1. Блок 1120 соответствует этапу 2, на котором первая стоимость сопоставления (или метрика неподобия, такая как SAD) оценивается между первым набором предсказанных блоков выборок, соответствующих паре исходных MV (как описано в разделе фоновых MVR). Блок 1130 соответствует этапу 3, на котором проверяются условия соответствия текущего блока кодировки выполнению MVR. Блок 1140 соответствует этапу 4a, на котором, если выясняется, что текущий блок кодирования имеет право выполнять MVR, уточненная пара MV получается путем выполнения MVR (как описано в разделе фонового MVR) и второй стоимости сопоставления (или метрики неподобия), соответствующей уточненной паре MV. Блок 1150 соответствует этапу 4b, на котором второй набор предсказанных выборок получается с использованием фильтра интерполяции с K-отводами (в горизонтальном и вертикальном направлениях) с использованием уточненной пары MV. Блок 1160 соответствует этапу 4c, на котором проверяется, меньше ли вторая стоимость сопоставления заранее определенного порога, ниже которого уточнение на основе оптического потока с двунаправленным предсказанием и двунаправленное предсказание пропускаются. Блок 1180 соответствует этапу 5a, на котором текущий блок кодировки пропускает MVR и получает второй набор предсказанных выборок, используя фильтр интерполяции с K-отводами, используя пару исходных MV. Блок 1185 соответствует этапу 5b, на котором проверяется, меньше ли стоимость первого сопоставления заранее определенного порога, ниже которого пропускается BPOF. Блоки 1170 и 1195 соответствуют части этапа 6, в котором, если проверка на этапе 4c или этапе 5b указывает, что вторая или первая стоимость сопоставления соответственно меньше заранее определенного порога, ниже которого пропускается BPOF, усреднение взвешенного двунаправленного предсказания без BPOF выполняется с использованием второго набора предсказанных выборок. Блок 1175 соответствует части этапа 6, на котором, если проверка на этапе 4c или этапе 5b показывает, что вторая или первая стоимость сопоставления не меньше заранее определенного порога, ниже которого пропускается BPOF, получается оценка оптического потока и окончательное двунаправленное предсказание получается с использованием второго набора предсказанных выборок, градиентов второго набора предсказанных выборок и оцененного оптического потока.

Следует отметить, что при использовании первой или второй стоимости сопоставления, которые вычисляются для субблока выборок в текущем блоке кодировки, как требуется процессом уточнения вектора движения для определения раннего завершения процесса уточнения на основе оптического потока с двунаправленным предсказанием, решение пропустить или выполнить BPOF может варьироваться от одного субблока MVR к другому в пределах блока кодировки. BPOF должен применяться или пропускаться для всех блоков применения BPOF (например, уровня пикселей или уровня блока выборок 4×4) в пределах субблока на основе определения, выполненного на этапе -4c или этапе -5.

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

Заранее определенное пороговое значение обычно выбирается как пороговое значение для каждой выборки, которое зависит от битовой глубины первого предсказания или первого набора предсказанных выборок. Например, если первое значение выборки предсказания, полученное с использованием билинейной (2-отводной) интерполяции, ограничено битовой глубиной b, пороговое значение для каждой выборки вычисляется как k * 2 (b - 10), а число выборок, для которых вычисляется стоимость сопоставления, равно N, то предварительно определенное пороговое значение, с которым сравнивается стоимость сопоставления для текущего субблока, должно быть k * N * 2 (10-b). Примерные значения для k равны 2 (для разрядности 10), N - 8×16=128, а b равно 8. Поскольку стоимость сопоставления для данной пары кандидатных MV может быть вычислена с прореженным набором первых предсказанных выборок, значение N следует использовать соответственно. Например, если используются чередующиеся строки блока предсказанных выборок 8×16, N должно быть вычислено как 8×8=64.

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

Кроме того, условие для условного пропуска применения оптического потока определяется на основе параметров, которые вычисляются другим процессом (вычислением стоимостей сопоставления в ходе процесса уточнения вектора движения). Поскольку используются уже рассчитанные значения, никаких дополнительных вычислений проводить не нужно.

В частности, предоставляется способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования, как показано на рисунке 10. Способ содержит следующие этапы, которые могут выполняться в заданном порядке. Исходный вектор движения получается для текущего блока 1210. Текущий блок может быть текущим блоком кодировки. Первые предсказания для значения выборки в текущем блоке получаются на основе исходных векторов 1220 движения. Стоимость сопоставления вычисляется согласно первым предсказаниям 1230.

После получения первой стоимости сопоставления определяется, должен ли выполняться процесс уточнения оптического потока 1240 или нет, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие того, является ли вычисленная стоимость сопоставления (например, с точки зрения меры подобия; см. описание выше) равным или большим заранее определенного порогового значения. Процесс уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке выполняется на этапе 1250, когда определяется, что должен быть выполнен процесс уточнения оптического потока. Когда определено, что процесс уточнения оптического потока не должен выполняться, вычислительные стоимости могут быть сокращены за счет пропуска процесса уточнения оптического потока.

Этот способ может быть реализован в устройствах, описанных выше со ссылкой на Фигуры с 1a по 5.

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

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

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

переменная sbHeight, определяющая высоту текущего субблока кодировки в выборках яркости,

векторы движения яркости с точностью 1/16 дробной выборки mvL0 и mvL1,

выбранные массивы выборок опорных картинок яркости refPicL0L и refPicL1L.

Выходными данными этого процесса являются: дельта-векторы движения яркости dMvL0 и dMvL и переменная dmvrSad, определяющая минимальную сумму абсолютных разностей первых предсказаний (см. вычисление SAD, описанный выше).

Вектор движения dMvL0 дельта-яркости может быть выведен с помощью dMvL0 [0] + = 16 * intOffX и dMvL0 [1] + = 16 * intOffY, где intOffX и intOffY - целочисленные смещения выборок в направлениях x и y соответственно. Кроме того, вектор движения dMvL дельта-яркости может быть вычислен как dMvL1 [0] = -dMvL0 [0] и dMvL1 [1] = -dMvL0 [1].

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

Флаг может использоваться, чтобы сигнализировать, можно ли применить процесс предсказания выборки двунаправленного оптического потока. Например, может считаться необходимым условием для выполнения процесса предсказания выборки двунаправленного оптического потока, чтобы флаг был ИСТИНА. Однако это необходимое условие может не быть достаточным условием для выполнения процесса предсказания выборки двунаправленного оптического потока. Достаточным условием может быть то, что и флаг имеет значение ИСТИНА, и вышеописанная стоимость сопоставления равна или превышает предварительно определенный порог. Например, стоимость сопоставления может быть определена на основе переменной dmvrSad, определяющей минимальную сумму абсолютных различий первых предсказаний.

С другой стороны, это может считаться достаточным условием для того, чтобы не выполнять процесс предсказания выборки оптического потока, а выполнять процесс предсказания взвешенной выборки, если флаг равен ЛОЖЬ.

Кроме того, предоставляется устройство 1300 для использования в кодере изображения и/или декодере изображения, как показано на Фиг.11. Устройство 1300, согласно этому примерному варианту осуществления, содержит блок 1310 исходного вектора движения, который сконфигурирован для получения исходных векторов движения для текущего блока. Кроме того, устройство 1300 содержит блок 1320 предсказания, который сконфигурирован для получения первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения. Кроме того, устройство 1300 содержит блок 1330 вычисления стоимости сопоставления, который сконфигурирован для вычисления стоимости сопоставления согласно первым предсказаниям.

Устройство 1300 содержит блок 1340 определения процесса уточнения оптического потока, который сконфигурирован для определения, следует ли выполнять процесс уточнения оптического потока, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие того, является ли вычисленная стоимость сопоставления равна или превышает пороговое значение. Кроме того, устройство 1300 содержит блок 1350 выполнения процесса уточнения оптического потока, который сконфигурирован для выполнения процесса уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке, когда определено, что процесс уточнения оптического потока должен быть выполнен.

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

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

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

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

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

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

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

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

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

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

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

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

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

> Больше

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

< Меньше

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

= = Равно

!= Не равно

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

Битовые операторы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Abs( x ) =

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

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

Atan2(y, x) =

(где англ. otherwise – иначе)

Ceil( x ) наименьшее целое число больше или равно 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 - постоянная основания натурального логарифма 2.718281828…).

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

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

Min( x, y ) =

Max( x, y ) =

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

Sign( x ) =

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

Sqrt( x ) =

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

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

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

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

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

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

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

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

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

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

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

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

if( condition 0 )

statement 0

else if( condition 1 )

statement 1

else /* informative remark on remaining condition */
statement n

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

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

- если условие 0, определение 0

- Иначе, если условие 1, определение 1

- …

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

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

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

if( condition 0a && condition 0b )

statement 0

else if( condition 1a || condition 1b )

statement 1

else

statement n

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

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

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

- условие 0a

- условие 0b

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

- условие 1a

- условие 1b

- …

- иначе, определение n

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

if( condition 0 )

statement 0

if( condition 1 )

statement 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, где диски обычно воспроизводят данные магнитным образом, а диски воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.

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

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

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

название год авторы номер документа
СПОСОБ ВЫЧИСЛЕНИЯ ПОЗИЦИИ ОПОРНОЙ ВЫБОРКИ ЦЕЛОЧИСЛЕННОЙ СЕТКИ ДЛЯ ВЫЧИСЛЕНИЯ ГРАДИЕНТА ГРАНИЧНОЙ ВЫБОРКИ БЛОЧНОГО УРОВНЯ В ВЫЧИСЛЕНИИ ОПТИЧЕСКОГО ПОТОКА С ДВОЙНЫМ ПРЕДСКАЗАНИЕМ И КОРРЕКЦИИ С ДВОЙНЫМ ПРЕДСКАЗАНИЕМ 2020
  • Сетураман, Срирам
  • А, Джива Радж
  • Котеча, Сагар
RU2820638C2
СИСТЕМА И СПОСОБ ДЛЯ КОДИРОВКИ ВИДЕО 2020
  • Куо, Чэ-Вэй
  • Лим, Чонг Соон
  • Тео, Хан Боон
  • Ли, Цзин Я
  • Сунь, Хай Вэй
  • Ванг, Чу Тонг
  • Тома, Тадамаса
  • Ниси, Такахиро
  • Абе, Киёфуми
  • Като, Юсуке
RU2813135C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ ДЛЯ ВНУТРЕННЕГО ПРЕДСКАЗАНИЯ 2020
  • Ван, Бяо
  • Эсенлик, Семих
  • Котра, Ананд Меер
  • Гао, Хань
  • Чен, Цзянле
RU2800681C2
ИНТЕРПОЛЯЦИЯ ДЛЯ ВНЕШНЕГО ПРЕДСКАЗАНИЯ С УТОЧНЕНИЕМ 2019
  • Чжан, Кай
  • Чжан, Ли
  • Лю, Хунбинь
  • Ван, Юэ
RU2808586C2
СПОСОБ ПРОПУСКА УТОЧНЕНИЯ НА ОСНОВАНИИ ПОДОБИЯ ВСТАВКИ ПРИ УТОЧНЕНИИ ВЕКТОРА ДВИЖЕНИЯ НА СТОРОНЕ ДЕКОДЕРА НА ОСНОВАНИИ БИЛИНЕЙНОЙ ИНТЕРПОЛЯЦИИ 2019
  • Сетхураман, Срирам
  • А, Джива Радж
RU2786383C2
УТОЧНЕНИЕ ПРЕДСКАЗАНИЯ НА ОСНОВЕ ГРАДИЕНТА ДЛЯ КОДИРОВАНИЯ ВИДЕО 2020
  • Хуан, Хань
  • Чиэнь, Вэй-Цзюн
  • Карчевич, Марта
RU2817298C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ ВИДЕОПОСЛЕДОВАТЕЛЬНОСТИ И ОКОНЕЧНОЕ УСТРОЙСТВО 2018
  • Сетхураман, Срирам
  • А, Джива Радж
  • Котеча, Сагар
  • Ма, Сян
RU2770423C1
ПЕРЕДАЧА В СЛУЖЕБНЫХ СИГНАЛАХ ПРЕДИКТОРА ВЕКТОРА ДВИЖЕНИЯ НА ОСНОВЕ СУБЪЕДИНИЦ ПРЕДСКАЗАНИЯ 2019
  • Хуан, Хань
  • Чиэнь, Вэй-Цзюн
  • Серегин, Вадим
  • Карчевич, Марта
RU2783333C2
СПОСОБ И АППАРАТУРА ДЛЯ АФФИННОГО ВНЕШНЕГО ПРЕДСКАЗАНИЯ СУББЛОКОВ ЦВЕТНОСТИ 2020
  • Руфицкий Василий Алексеевич
  • Соловьев Тимофей Михайлович
  • Филиппов Алексей Константинович
  • Чен, Цзянле
RU2816202C2
ВЫВЕДЕНИЕ ВЕКТОРА ДВИЖЕНИЯ ПРИ ВИДЕОКОДИРОВАНИИ 2016
  • Ли, Сян
  • Чэнь, Ин
  • Чжан, Ли
  • Лю, Хонгбинь
  • Чэнь, Цзяньлэ
  • Карчевич, Марта
RU2742298C2

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

Реферат патента 2023 года РАННЕЕ ПРЕКРАЩЕНИЕ УТОЧНЕНИЯ ОПТИЧЕСКОГО ПОТОКА

Изобретение относится к области обработки картинки, в частности к уточнению оптического потока. Заявлен способ кодировки видео, реализованный в устройстве декодирования или устройстве кодирования, при этом способ содержит: получение исходных векторов движения для текущего блока; получение первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения; вычисление первой стоимости сопоставления согласно первым предсказаниям; определение, следует ли выполнять процесс уточнения оптического потока или нет, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно установленное условие содержит условие того, равна ли вычисленная первая стоимость сопоставления пороговому значению или превышает его; и выполнение процесса уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке, когда определено, что должен быть выполнен процесс уточнения оптического потока. Технический результат - повышение точности внешнего предсказания текущего блока картинки, подлежащей кодированию. 4 н. и 13 з.п. ф-лы, 11 ил.

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

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

получение исходных векторов движения для текущего блока;

получение первых предсказаний для значения выборки в текущем блоке на основе исходных векторов движения;

вычисление первой стоимости сопоставления согласно первым предсказаниям;

определение, следует ли выполнять процесс уточнения оптического потока или нет, согласно по меньшей мере одному предварительно заданному условию, причем по меньшей мере одно предварительно заданное условие содержит условие того, равна ли вычисленная первая стоимость сопоставления некоторому порогу или превышает его; и

выполнение процесса уточнения оптического потока для получения окончательного внешнего предсказания для значения выборки в текущем блоке, когда определено, что должен быть выполнен процесс уточнения оптического потока;

причем способ дополнительно содержит:

получение уточненных векторов движения на основе исходных векторов движения и первой стоимости сопоставления;

получение вторых предсказаний для значения выборки в текущем блоке согласно уточненным векторам движения; и

выполнение процесса уточнения оптического потока, содержащего выполнение уточнения оптического потока на основе вторых предсказаний.

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

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

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

5. Способ по п. 4, в котором первый фильтр интерполяции представляет собой фильтр билинейной интерполяции.

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

получение первых предсказаний для значения выборки в текущем блоке на основе по меньшей мере одной из пар кандидатов;

и при этом

вычисление первой стоимости сопоставления согласно первым предсказаниям содержит определение стоимости сопоставления для каждой из пар кандидатов на основе первых предсказаний и

определение наименьшей стоимости сопоставления из определенных стоимостей сопоставления в качестве первой стоимости сопоставления.

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

8. Способ по п. 6 или 7, в котором второй фильтр интерполяции представляет собой фильтр интерполяции с 6 или 8 отводами.

9. Способ по одному из пп. 6-8, отличающийся тем, что

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

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

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

12. Способ по одному из предшествующих пунктов, в котором пороговое значение получают в соответствии с размером текущего блока.

13. Способ по одному из предшествующих пунктов, в котором текущий блок является блоком кодировки или субблоком.

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

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

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

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

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

WO 2019010156 A1, 10.01.2019
US 2004076333 A1, 22.04.2004
WO 2017036414 A1, 09.03.2017
US 2016301848 A1, 13.10.2016
WO 2017133661 A1, 10.08.2017.

RU 2 808 608 C2

Авторы

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

Сетураман, Срирам

А, Джива Радж

Котеча, Сагар

Даты

2023-11-30Публикация

2020-02-21Подача