Область техники, к которой относится изобретение
Варианты осуществления настоящей заявки, в целом, относятся к области обработки изображений и, более конкретно, к межкадровому предсказанию.
Уровень техники
Видеокодирование (видеокодирование и декодирование) используется в широком диапазоне приложений цифрового видео, например, в широковещательном цифровом телевидении, видеопередаче через Интернет и сети мобильной связи, диалоговых приложениях, работающих в реальном времени, таких как видеочат, видеоконференция, диски DVD и Blu-ray, системы получения и редактирования контента и видеокамеры приложений обеспечения безопасности.
Объем видеоданных, необходимых для показа даже относительно короткого видео, может быть существенным, что в результате может приводить к трудностям, когда данные должны передаваться потоком или как-либо иначе должны быть переданы через сеть связи с ограниченной шириной полосы пропускания. Таким образом, видеоданные, прежде чем передаваться через современные сети связи, обычно сжимаются. Размер видео также может быть проблемой, когда видео хранится в запоминающем устройстве, потому что ресурсы памяти могут быть ограничены. Устройства видеосжатия часто используют программное обеспечение и/или аппаратные средства в источнике сигнала для кодирования видеоданных перед передачей или хранением, уменьшая, таким образом, объем данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются в месте назначения устройством видеораспаковки, которое декодирует видеоданные. При ограниченных сетевых ресурсах и постоянно растущем спросе на более высокое качество видео, желательны улучшенные способы сжатия и распаковки, которые повышают степень сжатия при минимальных или отсутствующих издержках качества изображения.
Раскрытие сущности изобретения
Варианты осуществления настоящей заявки обеспечивают устройства и способы кодирования и декодирования в соответствии с независимыми пунктами формулы изобретения.
При первом подходе настоящей заявки представляют способ предсказания двунаправленного оптического потока содержит этапы, на которых: получают начальную пару векторов движения для текущего блока, в котором начальная пара векторов движения содержит вектор движения вперед и вектор движения назад; получают блок прямого предсказания, соответствующий вектору движения вперед, и блока обратного предсказания, соответствующий вектору движения назад; вычисляют параметры градиента для текущей выборки в текущем блоке, основываясь на выборке прямого предсказания и на выборке обратного предсказания, соответствующих текущей выборке, где выборка прямого предсказания находится в блоке прямого предсказания и выборка обратного предсказания находится в блоке обратного предсказания; получают по меньшей мере два параметра выборки оптического потока для текущей выборки, основываясь на параметрах градиента, где параметры выборки оптического потока содержат первый параметр и второй параметр; получают параметры блока оптического потока на основе параметров выборки оптического потока в текущем блоке, один из параметров блока оптического потока получают посредством операции, содержащей перемножение значения первого параметра и значения функции знака второго параметра, и где функция знака является кусочной функцией по меньшей мере с тремя поддиапазонами; и получают значение предсказания текущего блока, основываясь на параметрах блока прямого предсказания, блока обратного предсказания, параметрах блока оптического потока и параметрах выборки оптического потока .
В возможной реализации функция знака имеет вид:
Знак (x) =
где T является неотрицательное вещественное число.
В возможной реализации T равно 0; соответственно, функция знака имеет вид:
Знак (x) =
В возможной реализации начальную пару векторов движения получают в соответствии с информацией о движении по меньшей мере одного пространственного и/или временного блока, соседствующего с текущим блоком.
В возможной реализации текущий блок является блоком кодирования или субблоком блока кодирования.
В возможной реализации параметры градиента содержат градиент по горизонтали вперед, градиент по горизонтали назад, градиент по вертикали вперед и градиент по горизонтали назад.
В возможной реализации градиент по горизонтали вперед является разностью правой выборки и левой выборки, смежных с выборкой прямого предсказания.
В возможной реализации градиент по горизонтали назад является разностью правой выборки и левой выборки, смежных с выборкой обратного предсказания.
В возможной реализации градиента по вертикали вперед является разностью нижней выборки и верхней выборки, смежных с выборкой прямого предсказания.
В возможной реализации градиент по вертикали назад является разностью нижней выборки и верхней выборки, смежных с выборкой обратного предсказания.
В возможной реализации параметры выборки оптического потока содержат разность выборок, средний градиент по горизонтали и средний градиент по вертикали.
В возможной реализации первый параметр является разностью выборок, средним градиентом по горизонтали или средним градиентом по вертикали.
В возможной реализации второй параметр является разностью выборок, средним градиентом по горизонтали или средним градиентом по вертикали, и второй параметр не равен первому параметру.
При втором подходе настоящей заявки устройство двунаправленного предсказания оптического потока, содержит: модуль получения, выполненный с возможностью получения начальной пары векторов движения для текущего блока, где начальная пара векторов движения содержит вектор движения вперед и вектор движения назад; модуль коррекции, выполненный с возможностью получения блока прямого предсказания, соответствующего вектору движения вперед, и блока обратного предсказания, соответствующего вектору движения назад; модуль градиента, выполненный с возможностью вычисления параметров градиента для текущей выборки в текущем блоке, основываясь на выборке прямого предсказания основе и выборке обратного предсказания, соответствующих текущей выборке, где выборка прямого предсказания находится в блоке прямого предсказания и выборка обратного предсказания находится в блоке обратного предсказания; вычислительный модуль, выполненный с возможностью получения по меньшей мере двух параметров выборки оптического потока, основываясь на параметрах градиента, в котором параметры выборки оптического потока содержат первый параметр и второй параметр; модуль обучения, выполненный с возможностью получения параметров блока оптического потока, основываясь на параметрах оптического потока выборок в текущем блоке, где один из параметров блока оптического потока получают операцией, содержащей умножение значения первого параметра и значения функции знака второго параметра, и в котором функция знака является кусочной функцией по меньшей мере с тремя поддиапазонами; и модуль предсказания, выполненный с возможностью получения значения предсказания текущего блока на основе параметров блока прямого предсказания, блока обратного предсказания, параметров блока оптического потока и параметров выборки оптического потока.
В возможной реализации функция знака имеет вид:
Знак (x) =
где T - неотрицательное вещественное число.
В возможной реализации T равно 0; соответственно, функция знака имеет вид:
Знак (x) =
В возможной реализации начальную пару векторов движения получают в соответствии с информацией о движении по меньшей мере одного пространственного и/или временного блока, соседнего с текущим блоком.
В возможной реализации текущий блок является блоком кодирования или субблоком блока кодирования.
В возможной реализации параметры градиента содержат градиент по горизонтали вперед, градиент по горизонтали назад и градиент по вертикали вперед и градиент по вертикали назад.
В возможной реализации градиент по горизонтали вперед является разностью правой выборки и левой выборки, смежных с выборкой прямого предсказания.
В возможной реализации градиент по горизонтали назад является разностью правой выборки и левой выборки, смежных с выборкой обратного предсказания.
В возможной реализации градиент по вертикали вперед является разностью нижней выборки и верхней выборки, смежных с выборкой прямого предсказания.
В возможной реализации градиент по вертикали назад является разностью нижней выборки и верхней выборки, смежных с выборкой обратного предсказания.
В возможной реализации параметры выборки оптического потока содержат разность выборок, средний градиент по горизонтали и средний градиент по вертикали.
В возможной реализации первый параметр является разностью выборок, средним градиентом по горизонтали или средним градиентом по вертикали.
В возможной реализации второй параметр является разностью выборок, средним градиентом по горизонтали или средним градиентом по вертикали и второй параметр не равен первому параметру.
При третьем подходе настоящей заявки устройство двунаправленного предсказания оптического потока содержит: один или более процессоров; и считываемый компьютером носитель запоминающего устройства длительного хранения, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором программирование, когда исполняется процессорами, конфигурирует устройство для выполнения способа, соответствующего любой из реализаций первого подхода настоящей заявки.
При четвертом подходе настоящей заявки представлен компьютерный программный продукт, содержащий управляющую программу для выполнения способа, соответствующего любой из реализаций первого подхода настоящей заявки.
При пятом подходе настоящей заявки декодер содержит: один или более процессоров; и считываемый компьютером носитель долговременного хранения, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором программирование, когда исполняется процессорами, конфигурирует декодер для выполнения способа, соответствующего любой из реализаций первого подхода настоящей заявки.
При шестом подходе настоящей заявки, кодер содержит: один или более процессоров; и считываемый компьютером носитель долговременного хранения, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором программирование, когда исполняется процессорами, конфигурирует кодер для выполнения способа, соответствующего любой из реализаций первого подхода настоящей заявки.
При седьмом подходе настоящей заявки битовый поток создается в соответствии с любой из реализаций первого подхода настоящей заявки.
Перечисленные выше и другие задачи решаются предметом независимых пунктов формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и чертежей.
Конкретные варианты осуществления представлены в общих чертах в приложенных независимых пунктах формулы изобретения требованиях с другими варианты осуществлениями в зависимых требованиях.
Подробности одного или более вариантов осуществления изложены ниже на приложенных чертежах и в описании. Другие признаки, задачи и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Краткое описание чертежей
В дальнейшем варианты осуществления заявки описываются более подробно со ссылкой на приложенные чертежи, на которых:
Фиг. 1A - блок-схема примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления заявки;
Фиг. 1B - блок-схема другого примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления заявки;
Фиг. 2 - блок-схема примера видеокодера, выполненного с возможностью реализации вариантов осуществления заявки;
Фиг. 3 - блок-схема примера структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления заявки;
Фиг. 4 - блок-схема примера устройства кодирования или устройства декодирования;
Фиг. 5 - блок-схема другого примера устройства кодирования или устройства декодирования;
Фиг. 6 - пример выходной функции с тремя значениями;
Фиг. 7 - пример выходной функции с 5 значениями;
Фиг. 8 - блок-схема процесса двунаправленного предсказания оптического потока согласно настоящей заявке;
Фиг. 9 - блок-схема другого примера процесса двунаправленного предсказания оптического потока согласно настоящей заявке;
Фиг. 10 - блок-схема примера устройства двунаправленного предсказания оптического потока согласно настоящей заявке;
Фиг. 11 - блок-схема другого примера устройства двунаправленного предсказания оптического потока согласно настоящей заявке;
Фиг. 12 - блок-схема примера устройства межкадрового предсказания, соответствующего настоящей заявке;
Фиг. 13 - блок-схема другого примера устройства межкадрового предсказания, соответствующего настоящей заявке.
В дальнейшем идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным функциям, если явно не определено иное.
Осуществление изобретения
В последующем описании ссылка делается на сопроводительные чертежи, которые являются частью раскрытия, и которые посредством иллюстрации показывают конкретные подходы вариантов осуществления заявки или конкретные подходы, в которых могут использоваться варианты осуществления настоящей заявки. Подразумевается, что варианты осуществления заявки могут использоваться при других подходах и содержать структурные или логические изменения, не отображенные на чертежах. Последующее подробное описание поэтому не должно рассматриваться в ограничивающем смысле и объем настоящей заявки определяется приложенной формулой изобретения.
Например, подразумевается, что раскрытие в связи с описанным способом может также сохраняться как действительное для соответствующего устройства или системы, выполненных с возможностью осуществления способа и наоборот. Например, если описываются один или множество конкретных этапов способа, соответствующее устройство может содержать один или множество блоков, например, функциональных блоков, для выполнения описанных одного или множества этапов способа (например, один блок выполняет один или множество этапов или множество блоков, из которых каждый выполняет один или более из множества этапов), даже если такие один или более блоков явно не описаны или не проиллюстрированы на чертежах. С другой стороны, например, если конкретное устройство описывается на основе одного или множества блоков, например, функциональных блоков, соответствующий способ может содержать один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап выполняет функциональные возможности одного или множества блоков или каждый из множества этапов выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов явно не описаны или не показаны на чертежах. Дополнительно подразумевается, что признаки различных примерных вариантов осуществления и/или подходов, описанных здесь, могут объединяться друг с другом, если иное конкретно не указано.
Видеокодирование обычно относится к обработке последовательности изображений, которые формируют видео или видеопоследовательность. Вместо термина “изображение”, как синонимы в области видеокодирования, может использоваться термин “кадр” или “картинка”. Видеокодирование (или, в общем, кодирование) содержит две части: видеокодирование и видеодекодирование. Видеокодирование выполняется на стороне источника сигнала, обычно содержит обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, требующихся для представления видеоизображений (для более эффективного запоминающего устройства и/или передачи). Видеодекодирование выполняется на стороне места назначения и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к “кодированию” видеоизображений (или, в общем, картинок) должны пониматься как относящиеся к “кодированию” или “декодированию” видеоизображений или соответствующих видеопоследовательностей. Сочетание части кодирования и части декодирования также упоминается как CODEC (Coding and Decoding, кодирование и декодирование, кодек).
В случае видеокодирования без потерь исходные видеоизображения могут быть восстановлены (реконструированы), т. е. восстановленные видеоизображения имеют то же самое качество, что и исходные видеоизображения (предполагая отсутствие потерь при передаче или другой потери данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например, посредством квантования, для уменьшения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, т. е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов видеокодирования принадлежат к группе “гибридных видеокодеков с потерями” (т. е. объединяют пространственное и временное предсказание в области выборок и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно делится на ряд неперекрывающихся блоков и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, т. е., кодируется на уровне блоков (видеоблоков), например, используя пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для формирования блока предсказания, вычитая блок предсказания из текущего блока (блока, обрабатываемого в настоящее время/который должен обрабатываться) для получения остаточного блока, преобразуя остаточный блок и квантуя остаточный блок в области преобразования для уменьшения объема данных, который должен передаваться (сжатие), тогда как в декодере, по сравнению с кодером, к кодированному или сжатому блоку для восстановления текущего блока для презентации применяется обратная обработка. Дополнительно, кодер копирует цикл обработки декодера таким образом, что он формирует идентичные предсказания (например, внутрикадровое и межкадровое предсказание) и/или восстановления для обработки, т. е., кодирует последующие блоки.
В последующих вариантах осуществления системы 10 видеокодирования, видеокодер 20 и видеодекодер 30 описываются на основе фиг. 1-3.
На фиг. 1A представлена блок-схема примера системы 10 кодирования, например, системы 10 видеокодирования (или, сокращенно, системы 10 кодирования), которая может использовать технологию настоящей заявки. Видеокодер 20 (или, сокращенно, кодер 20) и видеодекодер 30 (или, сокращенно, декодер 30) системы 10 видеокодирования представляют примеры устройств, которые могут быть выполнены с возможностью осуществления технологии в соответствии с различными примерами, описанными в настоящем приложении.
Как показано на фиг. 1A, система 10 кодирования содержит устройство 12 источника, выполненное с возможностью предоставления кодированных данных 21 изображения, например, устройству 14 назначения для декодирования кодированных данных 13 изображения.
Устройство 12 источника содержит кодер 20 и может дополнительно, т. е., как вариант, содержать источник 16 изображения, предпроцессор (или блок предварительной обработки) 18, например, предпроцессор 18 изображения и интерфейс связи или блок 22 связи.
Источник 16 изображения может содержать или быть любого рода устройством получения изображения, например, камерой для получения изображения реального мира и/или своего рода устройством формирования изображения, например, процессором компьютерной графики для формирования компьютерного изображения с анимацией или любого вида другим устройством для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, контента экрана, изображения виртуальной реальности (virtual reality, VR)), и/или любым их сочетанием (например, изображением аугментированной реальности (augmented reality, AR)). Источник изображения может быть любым видом памяти или запоминающим устройством, хранящим любое из вышеупомянутых изображений.
В отличии от предпроцессора 18 и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения могут также упоминаться как необработанное изображение или данные 17 необработанного изображения.
Предпроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая предпроцессором 18 может содержать, например, обрезку, преобразование цветового формата (например, из RGB в YCbCr), коррекцию цвета или снижение шумов. Следует понимать, что блок 18 предварительной обработки может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (более подробная информация будет описана ниже, например, основываясь на фиг. 2).
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи кодированных данных 21 изображения (или их любой дополнительно обработанной версии) по каналу 13 передачи к другому устройству, например, к устройству 14 назначения или к любому другому устройству для хранения или прямого восстановления.
Устройство 14 назначения содержит декодер 30 (например, видеодекодер 30), и может дополнительно, т. е., необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 последующей обработки) и дисплей 34.
Интерфейс 28 связи устройства 14 назначения выполнен с возможностью приема кодированных данных 21 изображения (или любой их дополнительно обработанной версии), например, непосредственно от устройства 12 источника или от любого другого источника, например, запоминающего устройства, например, запоминающего устройства кодированных данных изображения, и предоставления кодированных данных 21 изображения декодеру 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через канал прямой связи между устройством 12 источника и устройством 14 назначения, например, через прямое проводное или беспроводное соединение, или через любой вид сети, например, через проводную или беспроводную сеть, или любое их сочетание, или через любой вид частной сети и сети общего пользования или любой вид их сочетания.
Интерфейс 22 связи может быть выполнен, например, с возможностью пакетирования кодированных данных 21 изображения в соответствующий формат, например, пакеты, и/или обработки кодированных данных изображения с помощью любого вида кодирования передачи или обработки для передачи по каналу связи или по сети связи.
Интерфейс 28 связи, представляющий копию интерфейса 22 связи, может быть выполнен с возможностью, например, приема передаваемых данных и обработки данных передачи с помощью любого вида соответствующего декодирования передачи или обработки и/или распаковки для получения кодированных данных 21 изображения.
Оба интерфейса, интерфейс 22 связи и интерфейс 28 связи, могут быть выполнены как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей направление от устройства 12 источника к устройству 14 назначения, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например, посылки и приема сообщений, например, для установки соединения, подтверждения приема и обмена любой другой информацией, связанной с каналом связи и/или передачей данных, например, передачей кодированных данных изображения.
Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, основываясь на фиг. 3 или фиг. 5).
Постпроцессор 32 устройства 14 назначения выполнен с возможностью последующей обработки декодированных данных 31 изображения (также называемых восстановленными данными изображения), например, декодированного изображения 31, чтобы получить прошедшие последующую обработку данные 33 изображения, например, прошедшее последующую обработку изображение 33. Последующая обработка, выполняемая блоком 32 последующей обработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), коррекцию цвета, обрезку или вторичную выборку или любую другую обработку, например, для подготовки декодированных данных 31 изображения к отображению, например, на дисплее 34.
Дисплей 34 устройства 14 назначения выполнен с возможностью приема прошедших последующую обработку данных 33 изображения для отображения изображения, например, пользователю или наблюдателю. Дисплей 34 может быть или содержать любой вид дисплея для представления восстановленного изображения, например, интегрированным или внешним дисплеем или монитором. Дисплеи могут, например, быть жидкокристаллическими дисплеями (liquid crystal display, LCD), дисплеями на органических светодиодах (), organic light emitting diode, OLED), плазменными дисплеями, проекторами, микросветодиодными дисплеями, жидкокристаллическими кремниевыми (liquid crystal on silicon, LCoS), цифровым световым процессором (digital light processor, DLP) или любым другим видом дисплея.
Хотя на фиг. 1A устройство 12 источника и устройство 14 назначения показаны как отдельные устройства, варианты осуществления устройств могут также содержать оба устройства или обе технические возможности, устройства 12 источника или его соответствующие функциональные возможности и устройства назначения 14 или его соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности могут быть реализованы, используя одни и те же аппаратные средства и/или программное обеспечение или отдельные аппаратные средства и/или программное обеспечение или любое их сочетание.
Как должно быть очевидно специалистам в данной области техники на основе описания, существование и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей внутри устройства 12 источника и/или устройства 14 назначения, как показано на фиг. 1A, может варьироваться в зависимости от реального устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или кодер 20 и декодер 30 вместе могут быть реализованы схемой обработки, как показано на фиг. 1B, например, как один или более микропроцессоров, цифровых сигнальных процессоров (digital signal processor, DSP), специализированных прикладных интегральных схем (application-specific integrated circuit, ASIC), программируемых логических интегральных схем (field-programmable gate array, FPGA), дискретная логика, аппаратные средства, специализированное видеокодирование или любые их сочетания. Кодер 20 может быть реализован посредством схемы 46 обработки для осуществления различных модулей, как обсуждается в отношении кодера 20, показанного на фиг. 2, и/или любой другой системы кодера или подсистемы, описанных здесь. Декодер 30 может быть реализован схемой 46 обработки, чтобы осуществить различные модули, как обсуждалось в отношении декодера 30, показанного на фиг. 3 и/или любой другой системы декодера или подсистемы, описанных здесь. Схема обработки может быть выполнена с возможностью осуществления различных операций, как обсуждается далее. Как показано на фиг. 5, если технологии реализуются частично в программном обеспечении, устройство может хранить команды для программного обеспечения на подходящем, считываемом компьютером носителе долговременного хранения и может исполнять команды аппаратными средствами с помощью одного или более процессоров для выполнения технологий, соответствующих настоящему раскрытию. Видеокодер 20 и видеодекодер 30 могут быть интегрированы как часть объединенного кодера/декодера (CODEC) в едином устройстве, например, как показано на фиг. 1B.
Устройство 12 источника и устройство 14 назначения могут содержать любое устройство из широкого диапазона устройств, в том числе, любой вид переносных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, абонентские установки, телевизоры, дисплеи, цифровые медиаплееры, консоли видеоигр, устройства потоковой передачи видео (такие как серверы контент-услуг или серверы доставки контента), бытовой радиоприемник, широковещательный передатчика, и т.п. и могут использовать любого вида операционные системы. В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 видеокодирования, показанная на фиг. 1A, является просто примером и технологии настоящей заявки могут применяться к установкам видеокодирования (например, видеокодирования или видеодекодирования), которые не обязательно содержат какую-либо передачу данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются потоком по сети и т.п. Устройство видеокодирования может кодировать и хранить данные в памяти и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не связаны друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания варианты осуществления заявки описываются здесь, например, со ссылкой на высокоэффективное видеокодирование (High-Efficiency Video Coding, HEVC) или со ссылкой на программное обеспечение универсального видеокодирования (Versatile Video coding, VVC), стандарт видеокодирования следующего поколения, разработанный Объединенной группой сотрудничества по видеокодированию (Joint Collaboration Team on Video Coding, JCT-VC) Экспертной группы ITU-T по видеокодированию (Video Coding Experts Group, VCEG) ITU-T и Экспертной группой ISO/IEC по цифровой записи видео и звука (Motion Picture Experts Group, MPEG). Любой из специалистов в данной области техники должен понимать, что варианты осуществления заявки не ограничиваются HEVC или VVC.
Кодер и способ кодирования
На фиг. 2 показана блок-схема примера видеокодера 20, выполненного с возможностью реализации технологий настоящей заявки. В примере на фиг. 2 видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer, DPB) 230, блок 260 выбора режима, блок 270 статистического кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может содержать блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 деления. Блок 244 межкадрового предсказания может содержать блок оценки движения и блок компенсации движения (не показан). Видеокодер 20, как показано на фиг. 2, может также упоминаться как гибридный видеокодер или видеокодер, соответствующий гибридному видеокодеку.
Блок 204 вычисления остатка, блок 206 преобразования, блок 208 квантования, блок 260 выбора режима могут упоминаться как формирующие путь прямого прохождения сигнала кодера 20, тогда как блок 210 квантования, блок 212 обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут упоминаться как формирующие путь обратного прохождения сигнала видеокодера 20, где путь обратного прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (смотрите видеодекодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию “встроенного декодера” видеокодера 20.
Изображения и деление изображений (изображения и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через вход 201, изображения 17 (или данных 17 изображения), например, изображения последовательности изображений, формирующих видео или видеопоследовательность. Принятое изображение или данные изображения могут также быть предварительно обработанным изображением 19 (или предварительно обработанными данными 19 изображения). Для упрощения, нижеследующее описание относится к изображению 17. Изображение 17 может также упоминаться как текущее изображение или изображение, подлежащее кодированию (в частности, видеокодированию для различения текущего изображения от других изображений, например, ранее кодированных и/или декодированных изображений из той же самой видеопоследовательности, т. е., видеопоследовательности, которая также содержит текущее изображение).
(Цифровое) изображение является или может рассматриваться как двухмерный массив или матрица выборок со значениями интенсивности. Выборка в массиве может также упоминаться как пиксель (краткая форма элемента изображения) или элемент изображения. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, т. е., изображение может быть представлено или содержать три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий красный, зеленый и синий массив выборок. Однако при видеокодировании каждый пиксель обычно представлен в формате яркости и цветности или в цветовом пространстве, например, YCbCr, который содержит компонент яркости, обозначенный Y (иногда также вместо этого используется L), и два компонента цветности, обозначенные Cb и Cr. Яркость (или, сокращенно, luma) компонент Y представляет уровень яркости или интенсивность уровня серого (например, при полутоновом изображении), в то время как две компоненты цветности (или, сокращенно, chroma) Cb и Cr представляет компоненты информации о цвете или цветность. Соответственно, изображение в формате YCbCr содержит массив выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы или трансформированы в формат YCbCr и наоборот, этот процесс также известен как преобразование или трансформация цвета. Если изображение является монохромным, изображение может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок деления изображения (не показанный на фиг. 2), выполненный с возможностью деления изображения 17 на множество (обычно неперекрывающихся) блоков 203 изображения. Эти блоки могут также упоминаться как корневые блоки, макроблоки (H.264/AVC) или блоки (block) дерева кодирования (coding tree block, CTB) или блоки (unit) дерева кодирования (coding tree unit, CTU) (H.265/HEVC и VVC). Блок деления изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или поднаборами или группами изображений и деления каждого изображения на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема напрямую блока 203 изображения 17, например, одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения может также упоминаться как блок текущего изображения или блок изображения, подлежащий кодированию.
Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двухмерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости luma в случае монохромного изображения 17 или массив цветности chroma в случае цветного изображения) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 17) или любое другое количество и/или видов массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может быть массивом выборок, например, MxN (M столбцов и N строк) или массивом MxN коэффициентов преобразования.
Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть выполнены с возможностью поблочного кодирования изображения 17, например, кодирование и предсказание выполняются для каждого блока 203.
Варианты осуществления видеокодера 20, показанного на фиг. 2, дополнительно могут быть выполнены с возможностью деления и/или кодирования изображения, используя вырезки (также называемые видеовырезками), в которых изображение может быть разделено или кодировано, используя одну или более вырезок (обычно неперекрывающихся), и каждая вырезка может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, мозаики (H.265/HEVC и VVC) или плитки (VVC)).
Варианты осуществления видеокодера 20, показанного на фиг. 2, могут дополнительно быть выполнены с возможностью деления и/или кодирования изображения при помощи групп вырезок/мозаик (также называемых группами видеомозаик) и/или мозаик (также называемый видеомозаиками), в которых изображение может быть разделено или кодировало, используя одну или более (обычно неперекрывающихся) групп вырезок/мозаик, и каждая группа вырезок/мозаик может содержать, например, один или более блоков (например, CTU) или одну или более мозаик, где каждая мозаика может иметь, например, прямоугольную форму и может содержать один или более блоков (например, CTU), например, полных или дробных блоков.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также называемого остатком 205), основываясь на блоке 203 изображения и блок 265 предсказания (более подробная информация о блоке 265 предсказания представлена ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения повыборочно (попиксельно) для получения остаточного блока 205 в области выборок.
Преобразование
Блок 206 преобразования может быть выполнен с возможностью применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретного синусного преобразования (discrete sine transform, DST), на значениях выборок остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также упоминаться как остаточные коэффициенты преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным DCT-преобразованием, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Для сохранения нормы остаточного блока, которая обрабатывается прямыми и обратными преобразованиями, дополнительные масштабные коэффициенты применяются как часть процесса преобразования. Масштабные коэффициенты обычно выбираются на основе некоторых ограничений, таких как масштабные коэффициенты, являющиеся степенью два для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные масштабные коэффициенты определяются, например, для обратного преобразования, например, блоком 212 обратного преобразования (и соответствующим обратным преобразованием, например, блоком 312 обратного преобразования в видеодекодере 30), и соответствующие масштабные коэффициенты для прямого преобразования, например, блоком 206 преобразования в кодере 20, могут быть соответственно определены.
Варианты осуществления видеокодера 20 (соответственно, блок 206 преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, напрямую или кодированными или сжатыми через блок 270 статистического кодирования, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 могут также упоминаться, как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или со всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования во время квантования может округляться в меньшую сторону до m-битового коэффициента преобразования, где n больше, чем m. Степень квантования может изменяться путем корректировки параметра квантования (quantization parameter, QP). Например, для скалярного квантования может применяться различное масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шага квантования соответствуют более тонкому квантованию, тогда как большие размеры шага квантования соответствуют более грубому квантованию. Применяемый размер шага квантования может указываться параметром квантования (quantization parameter, QP). Параметр квантования может быть, например, индексом заданного набора применяемых размеров шага квантования. Например, маленькие параметры квантования могут соответствовать тонкому квантованию (малые размеры шага квантования), а большие параметры квантования могут соответствовать крупному грубому (большие размеры шага квантования) или наоборот. Квантование может содержать деление на размер шага квантования и соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования 210, может содержать умножение на размер шага квантования. Варианты осуществления, соответствующие некоторым стандартам, например, HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен, основываясь на параметре квантования с помощью аппроксимации с фиксированной точкой уравнения, содержащего деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и деквантования, чтобы восстанавливать норму остаточного блока, которая может модифицироваться благодаря масштабированию, используемому при аппроксимации с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. Альтернативно, специализированные таблицы квантования могут использоваться и сообщаться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, где потери увеличиваются с увеличением размера шага квантования.
Варианты осуществления видеокодера 20 (соответственно, блока 208 квантования ) могут быть выполнены с возможностью вывода параметров квантования (QP), например, непосредственно или кодированными через блок 270 статистического кодирования, так, чтобы, например, видеодекодер 30 мог принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 с коэффициентами квантования для получения деквантованных коэффициентов 211, например, применяя инверсию схемы квантования, применяемой блоком 208 квантования на основе или используя тот же самый размер шага квантования, что и блок 208 квантования. Коэффициенты 211 деквантования могут также упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя обычно они не идентичны коэффициентам преобразования из-за потерь на квантование – коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обратного преобразования выполнен с возможностью применения обратного преобразования для преобразования, применяемого блоком 206 преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусного преобразования (inverse discrete sine transform, DST), или другого обратного преобразования для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 может также упоминаться, как блок 213 преобразования.
Восстановление
Блок 214 восстановления (например, устройство сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования 213 (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например, путем сложения – выборка с выборкой – значений выборки восстановленного остаточного блока 213 с значениями выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или, сокращенно, “контурный фильтр” 220), выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в целом, отфильтровать восстановленные выборки образцы для получения отфильтрованных значений выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания пиксельных переходов или какого-либо иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптируемого к выборкам смещения (sample-adaptive offset, SAO) или один или более других фильтров, например, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр подавления шумов (noise suppression filter, NSF) или любое их сочетания. В примере блок 220 контурного фильтра может содержать деблокирующий фильтр, фильтр SAO и фильтр ALF. Порядок процесса фильтрации может быть таким как деблокирующий фильтр, SAO и ALF. В другом примере добавляется процесс, называемый преобразованием яркости с масштабированием цветности (luma mapping with chroma scaling, LMCS) (а именно, контурный переформирователь). Этот процесс выполняется перед деблокированием. В другом примере процесс деблокирующего фильтра также может быть применен к внутренним краям субблока, например, афинным краям субблоков, краям субблоков ATMVP, краям преобразования субблоков (sub-block transform, SBT) и краям внутрикадрового субделения (intra sub-partition, ISP). Хотя блок 220 контурного фильтра показан на фиг. 2 как находящийся в контурном фильтре, в других конфигурациях блок 220 контурного фильтра он может быть реализован как контурный фильтр сообщения. Фильтрованный блок 221 может также упоминаться, как фильтровано как отфильтрованный блок 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как параметры фильтра SAO или параметры фильтра ALF или параметры LMCS), например, непосредственно или кодированными посредством блока 270 статистического кодирования, так чтобы, например, декодер 30 мог принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированного изображения
Буфер 230 декодированного изображения (decoded picture buffer, DPB) 230 может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений, для кодирования видеоданных видеокодером 20. DPB 230 может быть образован любым из множества запоминающих устройств, таким как динамическая оперативная память (dynamic random access memory, DRAM), в том числе, синхронная DRAM (SDRAM), магнитостойкая RAM (MRAM), резистивная RAM (RRAM) или другие типы запоминающих устройств. Буфер 230 декодирования изображения (DPB) 230 может быть выполнен с возможностью хранения одного или более отфильтрованных блоков 221. Буфер 230 декодированного изображения может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221 одного и того же текущего изображения или других изображений, например, ранее восстановленных изображений, и может обеспечивать полностью ранее восстановленные, т. е., декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер 230 декодированного изображения (DPB) может быть также выполнен с возможностью хранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не отфильтрован блоком 220 контурного фильтра или никакая другая дополнительно обработанная версия восстановленных блоков или выборок.
Выбор режима (деление и предсказание)
Блок 260 выбора режима содержит блок 262 деления, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например, исходного блока 203 (текущего блока 203 текущего изображения 17) и восстановленных данных изображения, например, отфильтрованных и/или нефильтрованных восстановленных выборок или блоков одного и того же (текущего) изображения и/или из одного или более ранее декодированных изображений, например, из буфера 230 декодированных изображений или других буферов (например, строчного буфера, который не показан). Восстановленные данные изображения используются в качестве данных опорного изображения для предсказания, например, межкадрового предсказания или внутрикадрового предсказания, для получения блока 265 предсказания или предиктора 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора деления для текущего режима блока предсказания (в том числе, отсутствия деления) и режима предсказания (например, режим внутрикадрового или межкадрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления блока 205 остатка и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора режима деления и предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее соответствие, или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения) или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или которые рассматривают или балансирует то и другое. Блок 260 выбора режима может быть выполнен с возможностью определения режима деления и предсказания, основываясь на оптимизации соотношения "искажение-скорость" (rate distortion optimization, RDO), т.е. выбора режима предсказания, который обеспечивает минимальное соотношение "искажение-скорость". Термины “наилучший”, “минимальный”, “оптимальный” и т.д. в этом контексте не обязательно относятся к общему пониманию “наилучшего”, “минимального”, “оптимального” и т.д., а могут также относиться к выполнению критерия завершения или выбора, такому как значения, превышение порога или падение ниже порога или другие ограничения, потенциально ведущие к “субоптимальному выбору”, но уменьшающие сложность и время обработки.
Другими словами, блок 262 деления может быть выполнен с возможностью деления изображения из видеопоследовательности на последовательность блоков дерева кодирования (coding tree unit, CTU) и CTU 203 может дополнительно быть разделен на блоки меньшего размера или субблоки (которые снова формируют блоки), например, многократно используя деление квадродерева (quad-tree-partitioning, QT), двоичное деление (binary partitioning, BT) или деление тройного дерева (triple-tree-partitioning, TT) или любое их сочетание, и выполнять, например, предсказание для каждого из делений блока или субблока, где выбор режима содержит выбор древовидной структуры разделенного блока 203 и режимы предсказания применяются к каждому из делений блока или субблоку.
В дальнейшем, процесс деления (например, посредством блока 260 деления) и предсказания (посредством блока 244 межкадрового предсказания 244 и блока 254 внутрикадрового предсказания), выполняемый видеокодером 20 в качестве примера 20, будет объяснен более подробно.
Деление
Блок 262 деления может быть выполнен с возможностью деления изображения из видеопоследовательности в последовательности блоков дерева кодирования (coding tree unit, CTU), и блок 262 деления может делить (или разделять) блок 203 дерева кодирования (CTU) на меньшие части, например, меньшие блоки квадратной или прямоугольной формы размера. Для изображения, которое имеет три массива выборок, CTU состоит из блока N×N выборок яркости вместе с двумя соответствующими блоками выборок цветности. Максимальный допустимый размер блока яркости в CTU определяется как равный 128×128 при разработанном универсальном видеокодировании (VVC), но в будущем он может быть определен как значение, отличное от 128×128, например, 256×256. CTU изображения могут быть кластеризованы/сгруппированы как группы вырезок/мозаичных групп, мозаик или плиток. Мозаика покрывает прямоугольную область изображения и мозаика может быть разделена на одну или более плиток. Плитка состоит из множества строк CTU внутри мозаики. Мозаика, которая не делится на многочисленные плитки, может упоминаться как плитка. Однако плитка является истинным подмножеством мозаики и не упоминается как мозаика. Существуют два режима мозаичных групп, поддерживаемых в VVC, а именно, режим растрового сканирования вырезки/мозаичной группы и режим прямоугольной вырезки. В режиме растрового сканирования мозаичной группы группа вырезки/мозаики содержит последовательность мозаик при растровом сканировании мозаики изображения. В режиме прямоугольной вырезки вырезка содержит множество плиток изображения, которые все вместе формируют прямоугольную область изображения. Плитки внутри прямоугольной вырезки находятся в порядке растрового сканирования вырезки. Эти более мелкие блоки (который могут также упоминаться как субблоки) могут быть дополнительно разделены на более мелкие вырезки. Это также упоминается как деление дерева или иерархическое деление дерева, где корневой блок, например, на уровне 0 корневого дерева (иерархия-уровень 0, глубина 0) может рекурсивно разделяться, например, разделяться на два или более блоков следующего, более низкого уровня дерева, например, узлы на уровне 1 дерева (иерархия-уровень 1, глубина 1), где эти блоки могут быть снова разделены в два или более блоков следующего, более низкого уровня, например, уровня 2 дерева (иерархия-уровень 2, глубина 2), и т.д., пока деление не закончится, например, потому что критерий завершения выполнен, например, достигнуты максимальная глубина дерева или минимальный размер блока. Блоки, которые далее не делятся, также упоминаются как листовые блоки или вершины дерева. Деление с использованием дерева на две части упоминается как двоичное дерево (binary-tree, BT), деление с использованием дерева на три части упоминается как троичное дерево (ternary-tree, TT) и деление с использованием дерева на четыре части упоминается как квадродерево (quad-tree, QT).
Например, блок дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CТВ выборок цветности изображения, которые имеют три массива выборок или CTB выборок монохромного изображения или изображения, которое кодируется с помощью трех отдельных цветовых плоскостей и структур синтаксиса, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть блоком выборок NxN для некоторого значения N, так что разделение компонента на блоки CTB является делением. Блок кодирования (coding unit, CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с помощью трех отдельных цветовых плоскостей и структур синтаксиса, используемых для кодирования выборок. Соответственно, блок кодирования (coding block, CB) может быть блоком MxN выборок для некоторых значений M и N, так что разделение CTB на блоки кодирования является делением.
В вариантах осуществлениях, например, соответствующих HEVC, кодирование блок дерева кодирования (CTU) может быть разделено на блоки CU при помощи структуры квадродерева, обозначенной как дерево кодирования. Решение, кодировать ли область изображения, используя межкадровое (временное) или внутрикадровое (пространственное) предсказание, принимается на уровне CU. Каждый CU вершины дерева может быть дополнительно разделен на один, два или четыре блока PU, соответствующих типу разбиения PU. Внутри одного PU применяется один и тот же процесс предсказания и соответствующая информация передается декодеру на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения PU, CU вершины дерева может разделяться на блоки преобразования (transform unit, TU) согласно другой структуре дерева квадрантов, подобной дереву кодирования для CU.
В вариантах осуществлениях, например, в соответствии с последним стандартом видеокодирования, который в настоящее время находится в разработке, который упоминается как универсальное видеокодирование (Versatile Video Coding, VVC), объединенное дерево мультитипа со вставками дерева квадрантов, использующее структуру разбиений с сегментацией на двоичные и троичные разделения, используется для деления блока дерева кодирования. В структуре дерева кодирования внутри блока дерева кодирования CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала делится посредством четверичного дерева. Затем вершины четверичного дерева могут быть дополнительно разделены древовидной структурой мультитипа. Существует четыре типа разделения в древовидной структуре мультитипа: вертикальное двоичное разбиение (SPLIT_BT_VER), горизонтальное двоичное разбиение (SPLIT_BT_HOR), вертикальное троичное разбиение (SPLIT_TT_VER) и горизонтальное троичное разбиение (SPLIT_TT_HOR). Вершины дерева мультитипа называются блоками кодирования (coding unit, CU) и если CU не слишком большой для максимальной длины преобразования, эта сегментация используется для процесса предсказания и преобразования без дополнительного разделения. Это означает, что в большинстве случаев CU, PU и TU имеют один и тот же размер блока в квадродереве со вставленной структурой блоков кодирования дерева мультитипа. Исключение имеет место, когда максимальная поддерживаемая длина преобразования меньше, чем ширина или высота компонента цветности CU. Стандарт VVC разрабатывает уникальный механизм сигнализации информации о разделении на части раздела в дереве квадрантов с вложенной структурой дерева кодирования мультитипа. В механизме сигнализации блок дерева кодирования (CTU) обрабатывается как корень четверичного дерева и сначала делится структурой четверичного дерева. Каждая вершина четверичного дерева (когда она достаточно большая, чтобы позволить это) затем делится дополнительно структурой дерева мультитипа. В структуре дерева мультитипа первый флаг (mtt_split_cu_flag) сообщается, чтобы указать, делится ли далее узел; когда узел делится далее, второй флаг (mtt_split_cu_vertical_flag) сообщается для указания направления разбиения, и затем сообщается третий флаг (mtt_split_cu_binary_flag), чтобы указать, является ли разбиение двоичным разбиением или троичным разбиением. На основе значений mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag, режим разбиения дерева мультитипа (MttSplitMode) для блока CU может быть получен декодером, основываясь на заданном правиле или таблице. Следует заметить, что для определенной конструкции, например, конструкции конвейерной обработки с блоком яркости 64×64 и блоком цветности 32×32 в аппаратных декодерах VVC, разбиение TT запрещается, когда ширина или высота блока кодирования яркости больше 64, как показано на фиг. 6. Разбиение TT также запрещается, когда или ширина или высота блока кодирования цветности больше 32. Построение конвейерной обработки будет разделять изображение на виртуальные блоки конвейерных данных (Virtual pipeline data unit, VPDU), которые определяются на изображении как неперекрывающиеся блоки. В аппаратных декодерах последовательные VPDU обрабатываются на многочисленных этапах конвейерной обработки одновременно. Размер VPDU примерно пропорционален размеру буфера на большинстве этапов конвейерной обработки, поэтому важно поддерживать размер VPDU малым. В большинстве аппаратных декодеров размер VPDU мог бы быть установлен равным максимальному размеру блока преобразования (transform block, TB). Однако в VVC, деление троичного дерева (ternary tree, TT) и двоичного дерева (binary tree, BT) могут приводить к увеличению размеров VPDU.
Кроме того, следует заметить, что когда часть блока вершины дерева превышает нижнюю или правую границу изображения, блок вершины дерева вынужден разбиваться до тех пор, пока все выборки каждого кодированного CU не расположатся в границах изображения.
Как пример, инструмент Intra Sub-Partitions (ISP) может разделить блоки яркости с внутрикадровым предсказанием вертикально или горизонтально на 2 или 4 субблока в зависимости от размера блока.
В одном примере, блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания описанных здесь технологий разбиения.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заранее определенного) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено для VVC. Как пример, несколько стандартных угловых режимов внутрикадрового предсказания адаптивно заменяются широкоугольными режимами внутрикадрового предсказания для неквадратных блоков, например, как определено в VVC. Как другой пример, для предотвращения операций деления для предсказания DC, только более длинная сторона используется для вычисления среднего значения неквадратных блоков. И результаты внутрикадрового предсказания планарного режима могут быть дополнительно изменены посредством способа объединения внутрикадрового предсказания в зависимости от положения (position dependent intra prediction combination, PDPC).
Блок 254 внутрикадрового предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутрикадрового предсказания, соответствующего режиму внутрикадрового предсказания из набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, вообще говоря, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, вообще говоря, информации, указывающей выбранный режим внутрикадрового предсказания для блока) на блок 270 статистического кодирования в форме элементов 266 синтаксиса для включения в данные 21 кодированного изображения, так чтобы, например, видеодекодер 30 мог принять и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор режимов (или возможных режимов) межкадрового предсказания зависит от доступных опорных изображений (т.е., от предыдущих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров межкадрового предсказания, например, используется ли опорное изображение полностью или только частично, например, область окна поиска вокруг области текущего блока опорного изображения, для поиска наилучшего совпадающего опорного блока и/или например, применяется ли пиксельная интерполяция, например, половинная/полуэлементная, четвертьэлементная и/или 1/16-тиэлементная интерполяция.
Дополнительно к упомянутым выше режимам предсказания может применяться режим пропуска, прямой режим и/или другой режим межкадрового предсказания.
Например, при предсказании расширенного слияния список кандидатов на слияние в таком режиме создается, включая в него следующие пять типов кандидатов, по порядку: пространственный MVP из пространственных соседних CU, временный MVP из соседствующих CU, MVP, основанный на архиве, из таблицы FIFO, попарный средний MVP и нулевые MV. И улучшенный вектор движения на стороне декодера, основанный на двунаправленном соответствии (decoder side motion vector refinement, DMVR), может применяться для повышения точности MV в режиме слияния. Режим слияния с MVD (Merge mode with MVD, MMVD), который приходит из режима слияния с разностями векторов движения. Флаг MMVD сообщается сразу после посылки флага пропуска и флага слияния, чтобы указать, используется ли режим MMVD для CU. Может применяться схема адаптивного разрешения вектора движения (adaptive motion vector resolution, AMVR) уровня CU. AMVR позволяет MVD блока CU кодироваться с другой точностью. Зависящий от режима предсказания для текущего CU, MVDs текущего CU может выбираться адаптивно. Когда CU кодируется в режиме слияния, к текущему CU может применяться объединенный режим межкадрового/внутрикадрового предсказания (CIIP). Для получения предсказания CIIP выполняется взвешенное усреднение сигналов межкадрового и внутрикадрового предсказания. Компенсированное предсказание аффинного движения, поле аффинного движения блока описывается информацией о движении двух контрольных точек (с 4 параметрами) или трех векторов движения контрольных точек (с 6 параметрами). Временное предсказание вектора движения, основанное на субблоке, (subblock-based temporal motion vector prediction, SbTMVP), подобно временному предсказанию вектора движения (temporal motion vector prediction, TMVP) в HEVC, но предсказывает векторы движения суб-CU внутри текущего CU. Двунаправленный оптический поток (Bi-directional optical flow, BDOF), ранее называвшийся BIO, является более простой версией, которая требует намного меньшего объема вычислений, особенно с точки зрения количества умножений и размера множителя. В триангулярном режиме деления в таком режиме CU разбивается равномерно в два треугольной формы участка с помощью диагонального разбиения или антидиагонального разбиения. Кроме того, режим двоичного предсказания расширяется сверх простого усреднения для разрешения взвешенного усреднения двух сигналов предсказания.
Блок 244 межкадрового предсказания может содержать блок оценки движения (motion estimation, ME) и блок компенсации движения (motion compensation, MC) (оба не показаны в фиг. 2). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (блок 203 текущего изображения 203 текущего изображения 17) и декодированного изображение 231 или по меньшей мере одного или более ранее восстановленных блоков, например, восстановленных блоков одного или множества из других/отличающихся ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же или разных изображений из множества других изображений и предоставления блоку оценки движения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (с координатами x, y) опорного блока и позицией текущего блока как параметров межкадрового предсказания. Это смещение также называют вектором движения (motion vector, MV).
Блок компенсации движения выполнен с возможностью получения, например, приема параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или используя параметр межкадрового предсказания для получения блока 265 межкадрового предсказания. Компенсация движения, выполняемая блоком компенсации движения, может содержать выборку или формирование блока предсказания, основываясь на векторе движения/блока, определенном оценкой движения, возможно выполняя интерполяции до субпиксельной точности. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая количество возможных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущего изображения, блок компенсации движения может определить местоположение блока предсказания, на который направлен вектор движения, в одном из перечней опорных изображений.
Блок компенсации движения может также формировать элементы синтаксиса, связанные с блоками и видеовырезками для использования видеодекодером 30 при декодировании блоков изображения видеовырезки. Кроме того, или как альтернатива вырезкам и соответствующим элементам синтаксиса, могут быть сформированы или использованы мозаичные группы и/или мозаики и соответствующие элементы синтаксиса.
Статистическое кодирование
Блок 270 статистического кодирования выполнен с возможностью применения, например, алгоритма или схемы статистического кодирования (например, схемы кодирования с переменной длиной слова (variable length coding, VLC), контекстная адаптивная схема VLC (context adaptive VLC, CAVLC), схема арифметического кодирования, бинаризация, контекстное адаптивное двоичное арифметическое кодирование (context adaptive binary arithmetic coding, CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (syntax-based context-adaptive binary arithmetic coding, SBAC), статистическое кодирование с разделением интервала вероятности (probability interval partitioning entropy, PIPE) или другая методология или технология статистического кодирования) или обход (без сжатия) на квантованных коэффициентах 209, параметрах межкадрового предсказания, параметрах внутрикадрового предсказания, параметрах контурного фильтра и/или других элементах синтаксиса для получения кодированных данных 21 изображения, которые могут быть выведены через выход 272, например, в форме кодированного битового потока 21, так чтобы, например, видеодекодер 30 мог принимать и использовать параметры для декодирования. Кодированный битовый поток 21 может быть передан видеодекодеру 30 или быть запомнен в памяти для более поздней передачи или извлечения видеодекодером 30.
Для кодирования видеопотока могут использоваться и другие структурные изменения видеокодера 20. Например, кодер 20, основанный на отсутствии преобразования, может квантовать остаточный сигнал напрямую, без блока 206 преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
На фиг. 3 показан пример видеодекодера 30, выполненного с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например, кодированного кодером 20 для получения декодированного изображения 331. Кодированные данные изображения или битовый поток содержат информацию для декодирования кодированных данных изображения, например, данных, которые представляют блоки изображения кодированной видеовырезки (и/или мозаичных групп или мозаик) и связанные с ними элементы синтаксиса.
В примере на фиг. 3 декодер 30 содержит блок 304 статистического декодирования, блок 310 обратного квантования, блок 312 обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 декодированного изображения (decoded picture buffer, DBP), блок 360 применения режима, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может быть или содержать блок компенсации движения. Видеодекодер 30 в некоторых примерах может выполнять цикл декодирования, обычно обратный циклу кодирования, описанному в отношении видеокодера 100 на фиг. 2.
Как было объяснено со ссылкой на кодер 20, блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также упоминаются как формирующие “встроенный декодер” видеокодера 20. Соответственно, блок 310 обратного квантования может быть функционально идентичен блоку 110 обратного квантования, блок 312 обратного преобразования может быть функционально идентичен блоку 212 обратного преобразования, блок 314 восстановления может быть функционально идентичен блоку 214 восстановления, контурный фильтр 320 может быть функционально идентичен контурному фильтру 220, и буфер 330 декодированного изображения может быть функционально идентичен буферу 230 декодированного изображения. Поэтому объяснения, предоставленные для соответствующих блоков и функций видеокодера 20, применяются должным образом к соответствующим блокам и функциям видеодекодера 30.
Статистическое декодирование
Блок 304 статистического декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, вообще говоря, данных 21 кодированного изображения) и выполнения, например, статистического декодирования данных 21 кодированного изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг. 3), например, любого из всех параметров межкадрового предсказания (например, индекса опорного изображения и вектора движения), параметров внутрикадрового предсказания (например, режима внутрикадрового предсказания или индекса), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других элементов синтаксиса. Блок 304 статистического декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, описанным со ссылкой на блок 270 статистического кодирования кодера 20. Блок 304 статистического декодирования может быть дополнительно выполнен с возможностью представления блоку 360 применения режима параметров межкадрового предсказания, параметров внутрикадрового предсказания и/или других элементов синтаксиса, а также других параметров другим блокам декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне видеовырезки и/или на уровне видеоблока. Кроме того, или как альтернатива вырезкам и соответствующим элементам синтаксиса, могут приниматься и/или использоваться мозаичные группы и/или мозаики и соответствующие элементы синтаксиса.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (quantization parameter, QP) (или, вообще говоря, информации, связанной с обратным квантованием) и квантованные коэффициенты из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования) и применения, основываясь на параметрах квантования, обратного квантования на декодированных квантованных коэффициентах 309 для получения деквантованных коэффициентов 311, которые могут также упоминаться, как коэффициенты 311 преобразования. Процесс обратного квантования может содержать использование параметра квантования, определенных видеокодером 20 для каждого видеоблока в видеовырезке (или мозаике или мозаичной группе) для определения степени квантования и, аналогично, степени обратного квантования, которая должна применяться.
Обратное преобразование
Блок 312 обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также упоминаемых как коэффициенты 311 трансформации, и применения преобразования к деквантованным коэффициентам 311 для получения восстановленных остаточных блоков 213 в области выборок. Восстановленные остаточные блоки могут также упоминаться как блоки 313 трансформации. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально подобным процессом обратного преобразования. Блок 312 обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 статистического декодирования) для определения преобразования, которое должно применяться к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, устройство сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания для получения восстановленного блока 315 в области выборок, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (в цикле кодирования или после цикла кодирования) выполнен с возможностью фильтрации восстановленного блока 315, чтобы получить отфильтрованный блок 321, например, для сглаживания пиксельные переходов или какого-либо иного улучшения качества видео. Блок 320 контурного фильтра 320 может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр адаптивного к выборкам смещения (sample-adaptive offset, SAO) или один или более других фильтров, например, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр подавления шумов (noise suppression filter, NSF) или любое их сочетание. В примере блок 220 контурного фильтра может содержать деблокирующий фильтр, фильтр SAO и фильтр ALF. Порядок процесса фильтрации может быть таким как: деблокирующий фильтр, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (luma mapping with chroma scaling, LMCS) (а именно, адаптивный контурный переформирователь). Этот процесс выполняется перед разблокированием. В другом примере процесс деблокирующего фильтра может быть также применен к внутренним краям субблоков, например, афинным краям субблоков, краям субблоков ATMVP, краям преобразования субблоков (sub-block transform, SBT) и к краям внутрикадровой субвырезки (intra sub-partition, ISP). Хотя блок 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) или одну или более групп блоков (например, мозаики (H.265/HEVC и VVC) или плитки (VVC)).
Варианты осуществления видеодекодера 30 как показано на фиг. 3 могут быть выполнены с возможностью деления и/или декодирования изображения, используя вырезки/мозаичные группы (также называемые мозаичными видеогруппами) и/или мозаики (также называемые видеомозаиками), где изображение может быть разделено или декодировано, используя одну или более (обычно неперекрывающихся) вырезок/мозаичных групп, и каждая вырезка/мозаичная группа может содержать, например, один или более блоков (например, CTU) или одну или более мозаик, где каждая мозаика, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например, полных или дробных блоков.
Другие вариации видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30 без преобразования может обратно квантовать остаточный сигнал напрямую, без блока 312 обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обратного преобразования, объединенные в единый блок.
Следует понимать, что в кодере 20 и декодере 30, результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после фильтрации интерполяции получения вектора движения или контурной фильтрации следующая операция, такая как Clip или сдвиг может выполняться для результата процесса фильтрации интерполяции, получения вектора движения или контурной фильтрации.
Следует заметить, что дальнейшие операции могут применяться к полученным векторам движения текущего блока (в том числе, но не ограничиваясь только этим, к управлению векторами движения точки аффинного режима, векторами движения субблока в аффинном, планарном, ATMVP режимах, к временных векторам движения и так далее). Например, значение вектора движения ограничивается заданным диапазоном, соответствующим представляющему его биту. Если представляющий бит вектора движения является bitDepth, то диапазон равен -2*(bitDepth - 1) ~ 2* (bitDepth -1)-1, где “*” означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон равен -32768 ~ 32767; если bitDepth установлена равной 18, диапазон равен -131072~131071. Например, значение полученного вектора движения (например, MV для четырех субблоков 4x4 в одном блоке 8x8) ограничивается таким образом, что максимальная разность между целочисленными частями четырех субблоков MV 4x4 не превышает N пикселей, например, не более 1 пикселя. Здесь предоставлены два способа ограничения вектора движения, соответствующего bitDepth.
На фиг. 4 схематично показано устройство 400 видеокодирования, соответствующее варианту осуществления раскрытия. Устройство 400 видеокодирования, как описано здесь, пригодно для реализации раскрытых вариантов осуществления. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30, показанный на фиг. 1A, или кодером, таким как видеокодер 20, показанный на фиг. 1A.
Устройство 400 видеокодирования содержит порты 410 ввода (или входные порты 410) и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (central processing unit, CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и порты 450 вывода (или выходные порты 450) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования может также содержать компоненты оптоэлектрические (optical-to-electrical, OE) компоненты и электрооптические (electrical-to-optical, EO) компоненты, связанные с входными портами 410, блоками 420 приемника, блоками 440 передатчика 440 и выходными портами 450 для ввода или вывода оптических или электрических сигналов.
Процессор 430 реализуется аппаратными средствами и программным обеспечением. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 осуществляет связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует процессы, подготавливает или обеспечивают различные операции кодирования. Введение в состав модуля 470 кодирования поэтому обеспечивает существенное улучшение функциональности устройства 400 видеокодирования и производит преобразование устройства 400 видеокодирования в другое состояние. Альтернативно, модуль 470 кодирования реализуется как команды, хранящиеся в памяти 460 и исполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных дисков и может использоваться в качестве устройства хранения данных переполнения, чтобы хранить программы, когда такие программы выбраны для исполнения, и сохранять команды и данные, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (read-only memory, ROM), оперативной памятью ( random access memory, RAM), троичной ассоциативной памятью (ternary content-addressable memory, TCAM) и/или статической оперативной памятью (static random-access memory, SRAM).
На фиг. 5 показана упрощенная блок-схема устройства 500, которое может использоваться в качестве устройства 12 источника и устройства 14 назначения или того и другого, показанных на фиг. 1, в соответствии с примером варианта осуществления.
Процессор 502 в устройстве 500 может быть центральным процессором. Альтернативно, процессор 502 может быть любым другим типом устройства или многочисленными устройствами, способными управлять или обрабатывать информацию, существующую на текущий момент или полученную в дальнейшем. Хотя раскрытые реализации могут быть осуществлены с помощью единого процессора как показано на чертеже, например, процессор 502, с помощью нескольких процессоров могут быть достигнуты преимущества по скорости и эффективности.
Память 504 в устройстве 500 при реализации может быть устройством постоянной памяти (ROM) или устройством оперативной памяти (RAM). В качестве памяти 504 может использоваться любой другой подходящий тип устройства хранения данных. Память 504 может содержать код и данные 506, к которым получает доступ процессор 502, используя шину 512. Память 504 может дополнительно содержать операционную систему 508 и прикладные программы 510, причем прикладные программы 510 содержат по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут содержать приложения 1-N, которые дополнительно содержат приложение видеокодирования, выполняющее описанные здесь способы.
Устройство 500 может также содержать одно или более устройств вывода, таких как дисплей 518. Дисплей 518 в одном примере может быть сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, который может действовать для принятия сенсорных исходных данных. Дисплей 518 может быть связан с процессором 502 через шину 512.
Хотя на чертеже шина изображена как единственная, шина 512 устройства 500 может состоять из нескольких шин. Дополнительно, внешняя память 514 может быть напрямую связана с другими компонентами устройства 500 или может быть доступна через сеть и может содержать единый интегрированный блок, такой как карта памяти или многочисленные блоки, такие как несколько карт памяти. Устройство 500 может, таким образом, быть реализовано с большим разнообразием конфигураций.
Некоторые технологии, которые могли бы быть реализованы с помощью текущего решения настоящей заявки, представляются следующим образом. Заметим, что описание технологий обращается к документам JVET-P2001-v14 и JVET-P2002-v2, которые могут быть загружены с веб-сайта http://phenix.int-evry.fr/jvet/. Конкретная реализация может иметь различные варианты, основанные на технологиях, представленных JVET-P2001-v14 и JVET-P2002-v2, которые не ограничиваются настоящей заявкой.
Улучшение оптического потока посредством двунаправленного предсказания
Улучшение оптического потока посредством двунаправленного предсказания (Bi-prediction) является процессом повышения точности посредством двойного предсказания без явно сообщаемой информации в битовом потоке, отличной от информации, которая обычно сообщается для однонаправленного предсказания.
При двунаправленном предсказании два межкадровых предсказания получают в соответствии с двумя векторами движения, после чего предсказания объединяются, применяя взвешенное усреднение. Объединенное предсказание может давать в результате уменьшенную остаточную энергию, так как шум квантования в двух опорных патчах (Prediction1, Prediction2) удаляется, тем самым повышая эффективность кодирования по сравнению с однонаправленным предсказанием. Взвешенное объединение при двунаправленном предсказании может выполняться согласно уравнению:
Bi-prediction = Prediction1 * W1 + Prediction2 * W2 + K,
где W1 и W2 являются весовыми коэффициентами, которые могут сообщаться или задаваться заранее. K - аддитивный коэффициент, который также может сообщаться или задаваться. Как пример, двунаправленное предсказание может быть получено, используя
Bi-prediction = (Prediction1 + Prediction2)/2,
где W1 и W2 устанавливаются равными 0,5 и K устанавливается равным 0.
Цель улучшения оптического потока состоит в том, чтобы повысить точность двойного предсказания. Оптический поток является шаблоном явного движения объектов изображения между двумя последовательными кадрами, вызванным перемещением объекта или камеры. Процесс улучшения оптического потока повышает точность двунаправленного предсказания путем применения уравнения оптического потока.
Рассмотрим пиксель I(x, y, t) в первом кадре (x и y соответствуют пространственным координатам, t соответствует временному измерению). Он движется на расстояние (vx, vy) в следующем кадре, взятом после времени dt. Так как эти пиксели являются одинаковыми и их интенсивность не меняется, уравнение оптического потока имеет вид:
I(x,y,t) = I(x+vx, y+vy, t+dt)
I(x,y,t) определяет интенсивность (значение выборки ) пикселя в координатах (x, y, t).
Предполагая небольшие перемещения и что члены высшего порядка в расширении ряда Тейлора могут быть проигнорированы, уравнения оптического потока могут также быть записаны в виде:
= 0
где и - горизонтальные и вертикальные пространственные градиенты выборки в позиции (x, y) и - частичная временная производная в позиции (x, y).
Улучшение оптического потока использует приведенный выше принцип для повышения качества двунаправленного предсказания.
Улучшение оптического потока обычно содержит этапы, на которых:
1. Вычисляют градиенты выборок;
2. Вычисляют разность между первым предсказанием и вторым предсказанием;
3. Вычисляют перемещение пикселей или группы пикселей, которое минимизирует ошибку между двумя опорными патчами, полученными, используя уравнение оптического потока:
где I(0) соответствует значению выборки в первом предсказании, I(1 -значением выборки во втором предсказании, vx, и vy - перемещения, вычисленные в направлении –x и –y, и ∂I(0)/ ∂x и ∂I(0)/ ∂y - градиенты в направлениях x и y. и - расстояния до опорных изображений, где первое предсказание и второе предсказание получены. Некоторые подходы минимизируют сумму квадратичных ошибок, тогда как другие подходы минимизируют сумму абсолютных ошибок. Патч выборок вокруг заданной позиции (x, y) используют для решения проблемы минимизации.
4. Используют конкретную реализацию уравнения оптического потока, такую, как указано ниже:
где predBIO определяет модифицированное предсказание, который является выходом процесса улучшения оптического потока.
Градиенты выборок могут быть получены следующей формулой
∂I (x, y, t) / ∂x = я (x + 1, y, t) - я (x - 1, y, t)
∂I (x, y, t) / ∂y = я (x, y + 1, t) - я (x, y - 1, t)
В некоторых варианты осуществлениях, чтобы уменьшить сложность оценки перемещения для каждого пикселя, перемещение оценивается для группы пикселей. В некоторых примерах для вычисления улучшенного двунаправленного предсказания для блока выборок яркости 4x4 перемещения оцениваются с помощью значений выборок блока выборок яркости 8x8 с помощью блока выборок 4x4 в его центре.
Входом процесса улучшения оптического потока являются выборки предсказания от двух опорных изображений, и выход процесса улучшения оптического потока является объединенным предсказанием (predBIO), который вычисляется согласно уравнению оптического потока.
В некоторых варианты осуществлениях оптический поток () определяют, используя следующие уравнения для исключения умножений, содержащих более высокие члены битовой глубины. Выборки, используемые для оценки (т. е., промежуток i-j), являются набором предсказанных выборок из каждой ссылки в окружении текущей выборки или текущего блока выборок, для которого оценивается оптический поток. В примере, для текущего блока выборок 4x4 используются блоки 6x6 предсказанных выборок в каждой ссылке с блоком выборок 4x4 блок выборок в его центре.
В конкретном примере представлен процесс предсказания двунаправленного оптического потока.
Входными данными этого процесса являются:
– две переменные nCbW и nCbH, указывающие ширину и высоту текущего блока кодирования,
– два массива predSamplesL0 и predSamplesL1 предсказания яркости (nCbW + 2) x (nCbH + 2),
– флаги использования перечня предсказаний predFlagL0 и predFlagL1,
– справочные индексы refIdxL0 и refIdxL1,
– флаги использования двунаправленного оптического потока bdofUtilizationFlag[xIdx][yIdx] с xIdx = 0.. (nCbW>> 2) − 1, yIdx = 0.. (nCbH>> 2) − 1.
Выходом этого процесса является массив pbSamples (nCbW) x (nCbH), значений предсказания выборок яркости.
Переменные bitDepth, shift1, shift2, shift3, shift4, offset4 и mvRefineThres получают следующим образом:
– Переменная bitDepth устанавливается равной BitDepthY.
– Переменная shift1 устанавливается равной Max (2, 14 − bitDepth).
– Переменная shift2 устанавливается равной Max (8, bitDepth − 4).
– Переменная shift3 устанавливается равной Max (5, bitDepth − 7).
– Переменная shift4 устанавливается равной Max (3, 15 − bitDepth), и переменная offset4 устанавливается равной 1 <<(shift4 − 1).
– Переменная mvRefineThres устанавливается равной Max (2, 1 <<(13 − bitDepth)).
Для xIdx = 0.. (nCbW>> 2) − 1 и yIdx = 0.. (nCbH>> 2) − 1, применяется следующее:
– Переменная xSb устанавливается равной (xIdx <<2) + 1, и ySb устанавливается равной (yIdx <<2) + 1.
– Если bdofUtilizationFlag[xSbIdx][yIdx] равно FALSE для x = xSb − 1.. xSb + 2, y = ySb − 1.. ySb + 2, значения выборки предсказания текущего субблока получают следующим образом:
pbSamples[x][y] = Clip3 (0, (2bitDepth) − 1, (predSamplesL0 [x + 1] [y + 1] + offset2 + predSamplesL1 [x + 1] [y + 1])>> shift2)
– В противном случае, (bdofUtilizationFlag[xSbIdx][yIdx] равно TRUE), значения выборки предсказания текущего субблока получают следующим образом:
– Для x =xSb − 1.. xSb + 4, y = ySb − 1.. ySb + 4, нижеследующие этапы применяют в следующим порядке:
1. Местоположения (hx, vy) для каждого из соответствующих местоположений (x, y) выборки внутри массивов выборок предсказания получают следующим образом:
hx = Clip3(1, nCbW, x)
vy = Clip3(1, nCbH, y)
2. Переменные gradientHL0 [x] [y], gradientVL0[x][y], gradientHL1[x][y] и gradientVL1[x][y] получают следующим образом:
gradientHL0[ x ][ y ] = (predSamplesL0[ hx + 1 ][vy] − predSampleL0[ hx − 1 ][ vy ] ) >> shift1
gradientVL0[ x ][ y ] = (predSampleL0[ hx ][ vy + 1 ] − predSampleL0[ hx ][vy − 1 ] ) >> shift1
gradientHL1[ x ][ y ] = (predSamplesL1[ hx + 1 ][vy] − predSampleL1[ hx − 1 ][ vy ]) >> shift1
gradientVL1[ x ][ y ] = (predSampleL1[ hx ][ vy + 1 ] − predSampleL1[ hx ][vy − 1 ]) >> shift1
3. Переменные temp[ x ][ y ], tempH[ x ][ y ] и tempV[ x ][ y ] получают следующим образом:
diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) − (predSamplesL1[ hx ][ vy ] >> shift2)
tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3
tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3
- Переменные sGx2, sGy2, sGxGy, sGxdI и sGydI получают следующим образом:
sGx2 = ΣiΣj ( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) with i, j = −1..4
sGy2 = ΣiΣj(tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) with i, j = −1..4
sGxGy = ΣiΣj(tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) with i, j −1..4
sGxdI = ΣiΣj( − tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) with i, j = −1..4
sGydI = ΣiΣj( − tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) with i, j = −1..4
- Смещение текущего субблока при горизонтальном и вертикальном движении получают как:
vx = sGx2 > 0 ? Clip3( −mvRefineThres, mvRefineThres,
−( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) ) : 0
vy = sGy2 > 0 ? Clip3( −mvRefineThres, mvRefineThres, ((sGydI << 3) −
( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1 ) >> Floor( Log2( sGx2 ))) : 0
- Для x =xSb − 1..xSb + 2, y = ySb − 1..ySb + 2, значения выборок предсказания текущего субблока получают следующим образом:
bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] − gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 )
+ Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] − gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) − 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset4 + predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset ) >> shift4)
Традиционные способы оценки оптического потока пытаются минимизировать сумму квадратичных значений ошибки между двумя предсказанными патчами, используя уравнение оптического потока. Эти способы требуют вычисления квадратичных значений для суммы градиентов выборок и умножения разности выборок на сумму градиентов выборок. Это умножение увеличивает битовую глубину результата умножения и повышает вычислительную сложность и накопитель для улучшения, основанного на оптическом потоке с двунаправленным предсказанием. Альтернативный способ оценки оптического потока избавляет от необходимости любого умножения посредством:
(a) использования суммы абсолютных значений суммы градиентов в этих двух ссылках вместо суммы квадратичных значений;
(b) замены умножения разностей выборок суммой градиентов выборок умножением разностей выборок на значение функции знака суммы градиентов выборок; последнее может выполняться без умножения путем сложения или вычитания разностей выборок накопленным значением, основываясь на знаке суммы градиентов выборок.
Однако, этот способ страдает снижением эффективности сжатия по сравнению со способом, который минимизирует сумму квадратичных ошибок. Следовательно, существует потребность в способе, который может уменьшить это снижение эффективности сжатия при сохранении вычислительных упрощений, предлагаемых таким способом.
Варианты осуществления настоящей заявки изменяют способ вычисления знака суммы горизонтальных градиентов выборок и суммы вертикальных градиентов выборок. Традиционная оценка знака sign(x) отражает значение 1 для положительных значений x, значение -1 для отрицательных величин x и значения 0, когда x равен 0. В настоящей заявке используется заданное пороговое значение T, которое зависит от битовой глубины суммы градиентов выборок. Sign(x) изменяется для отражения значения 1 для значений x, больших, чем T, значение -1 для значений x, меньших, чем –T, и значение 0 для остальных случаев. Способ оценки оптического потока при таком изменении продолжает быть свободным от умножения.
Альтернативные варианты осуществления настоящей заявки сначала могут квантовать сумму горизонтальных градиентов и сумму вертикальных градиентов до уменьшенного значения битовой глубины (например, путем смещения значения вправо на заданное количество битовых позиций). В дальнейшем заданное пороговое значение может также быть соответственно квантовано, прежде чем получить выходное значение sign(x).
В некоторых вариантах осуществления настоящая заявка может заменять sign(x) выходом, который имеет более 3 уровней. В одном примере количество выходных уровней равняется 5. Заданное второе пороговое значение T’ используется таким образом, что выходное значение для суммы градиентов, большее, чем T’, будет равно 2, а меньшее, чем –T’, будет равно -2. Умножения все же еще можно избежать, используя арифметический сдвиг влево на 1 бит для разностей выборок.
Варианты осуществления заявки повышают эффективность кодирования путем подавления разностей выборок, связанных с выборками, которые имеют значение градиентов выборок, попадающее между –T и T. Аспект низкой вычислительной сложности способа без умножения сохраняется.
Согласно первому примерному варианту осуществления заявки, этапы двунаправленного предсказания текущего блока кодирования являются следующими:
Этап 0: Получают пару векторов движения для текущего блока кодирования;
В некоторых выполнимых реализациях два вектора движения получают в качестве входных. Начальные векторы движения могут быть определены на основе информации индикации в битовом потоке. Например, индекс может сообщаться в битовом потоке, индекс указывает положение в перечне возможных векторов движения. В другом примере индекс предиктора вектора движения и значение разности векторов движения могут быть сообщены в битовом потоке. В другом примере эти векторы движения могут быть получены как вектор движения улучшения, используя улучшение векторов движения, начинающееся с начальной пары векторов движения, которые указываются в битовом потоке.
В другом примере индикации опорного изображения могут быть получены из битового потока для указания опорного изображения, с которым связан заданный вектор движения в полученной паре векторов движения.
Этап 1: Получают блок из первых предсказанных выборок на промежуточной битовой глубине из двух опорных изображений, используя пару векторов движения;
В некоторых выполнимых реализациях первое однонаправленное предсказание получают в каждом опорном кадре, соответствующем полученной паре векторов движения и фильтру интерполяции с K-полюсами. Более конкретно, предсказание получает восстановленные опорные значения выборок, когда вектор движения соответствует целочисленному положению выборки. Если вектор движения имеет ненулевую горизонтальную составляющую и нулевую вертикальную составляющую, он выполняет горизонтальную интерполяцию с K полюсами для получения предсказанных значений выборки. Если вектор движения имеет ненулевую вертикальную составляющую и нулевую горизонтальную составляющую, он выполняет вертикальную интерполяцию с K полюсами для получения предсказанных значений выборки. Если вектор движения имеет ненулевые значения как для горизонтальных, так и для вертикальных составляющих, двумерная делимая интерполяция с K фильтрами выполняется с помощью горизонтальной интерполяцией, выполняемой первой, в сопровождении вертикальной интерполяции для получения предсказанных значений выборки.
Этап 2: Вычисляют оптический поток, используя разность выборок между соответствующими первыми предсказанными выборками в каждой ссылке, горизонтальные градиенты выборок в каждой ссылке и вертикальные градиенты выборок в каждой ссылке, используя уравнение оптического потока.
Вычисление оптического потока использует функцию, которая берет либо сумму горизонтальных градиентов выборок через две ссылки, либо сумму вертикальных градиентов выборок через две ссылки в качестве входных данных и возвращает одно из N возможных значений в качестве выходных данных, где N - нечетное положительное значение, которое больше или равно 3. Полученное в результате значение функции основано на знаке входного значения и сравнении абсолютного значения входных данных с первым заданным порогом T.
В некоторых выполнимых реализациях оптический поток оценивается для каждого субблока в заданном текущем блоке кодирования, используя первый набор выборок предсказания, полученный на этапе 1 для каждой ссылки.
В одном примере, принимая, что выборки предсказания для первой опорной ссылки представляются как I(0) и выборки предсказания для второй опорной ссылки представляются как I(1), горизонтальные и вертикальные градиенты выборок в каждой ссылке (упоминаются здесь далее как Gx0, Gy0 в первой ссылке и Gx1, Gy1 во второй ссылке), которые вычисляются для набора позиций в текущем субблоке кодирования. Горизонтальный градиент выборок в позиции (x, y) вычисляют, беря разность между значением выборок вправо от этой позиции и значением выборок влево от этой позиции. Вертикальный градиент выборок в позиции (x, y) вычисляют, беря разность между значением выборок ниже этой позиции и значением выборок выше этой позиции. Оптический поток тогда оценивают следующим образом:
Функция f(x) принимает сумму горизонтального градиента или сумму вертикального градиента в качестве входа и создает выходные данные, который принимают одно из возможных значений N, где N имеет положительное, нечетное целочисленное значение, большее или равное 3. Выходное значение зависит от входного значения и первого заданного порога T. В одном примере N принимает значение 3. Выходное значение является одним из 3 возможных значений -1, 0, и 1. Это определяется следующим образом:
Альтернативно, это может быть записано как:
;
В противном случае, .
На фиг. 6 представлено соотношение между входным значением (который является суммой соответствующих градиентов выборок между двумя ссылками в горизонтальном или вертикальном направлении) и выходным значением, которое принимает одно из 3 возможных значений на основе первого заданного порога T. Вывод может просматриваться как тип квантования или деления динамического диапазона входа на 3 части на основе первого заданного порога T таким образом, что функция принимает одно из возможных выходных значений для каждой части деления.
Первый заданный порог T определяется, используя битовую глубину суммы градиентов выборок. В некоторых примерах сумма градиентов выборок принимает значение, зависящее от битовой глубины выборок для выборок предсказания. В другом примере сумма градиентов выборок корректируется (например, смещается вправо или влево в наборе битов) на основе битовой глубины выборок и желаемой битовой глубины, так чтобы она стала желаемой битовой глубиной. В одном примере, когда входная битовая глубина составляет 10 битов, T принимает значение 3.
Хотя уравнения для s3 и s4 показывают умножение для каждого члена суммы, следует понимать, что суммирование может быть реализовано без умножения путем традиционного сложения или вычитания разности выборок для заданного сочетания (i, j) в накопителе, когда выходное значение ненулевое. А именно, разность выборок добавляется, когда выходное значение равно 1, и разность выборок вычитается, когда выходное значение равно -1.
В другом примере, f(x) может создавать выходной результат, который может принимать одно из N=5 возможных значений, а именно, -2, -1, 0, 1, 2, как показано на фиг. 7. Второй заданный порог T’ на чертеже зависит от динамического диапазона входных данных и желаемого количества уровней на выходе.
В данном примере динамический диапазон входных данных делится в 4 равные части. Другими словами, если вход является 10-разрядным значением со знаком, динамический диапазон может быть между -512 и 511. Он делится в диапазоны (-512; -257), (-256; -1), (0; 255) и (256; 512). Следовательно, второй заданный порог T’ в этом примере равен 256. Выходное значение для исходных данных в диапазоне (-512; -257) равно -2. Диапазон (-256; -1) делится на (-256; -T-1) и (-T; -1). Выходное значение для исходных данных в диапазоне (-256; –T -1) равно -1. Диапазон (0; 255) делится на диапазон (0; T) и (T+1; 255). Выходное значение для входных данных в диапазоне (-T; T) равно 0. Выходное значение для входных данных в диапазоне (T+1; 255) равно 1. Выходное значение для входных данных в диапазоне (256; 511) равно 2. Таким образом, выходное значение может принимать 5 возможных значений -2, -1, 0, 1 и 2.
Этап 3: Получают конечные межкадрово предсказанные выборки для текущего блока кодирования, используя первые предсказанные выборки в каждой ссылке, вычисленный оптический поток и горизонтальные и вертикальные значения градиента выборок в каждой ссылке.
На фиг. 8 представлен процесс обработки для текущей заявки. Блок 810 соответствует этапу 0, на котором пару MV получают относительно пары опорных изображений для текущего блока кодирования. Блок 820 соответствует этапу 1, на котором первое предсказание получают в каждой ссылке с помощью полученной пары MV и восстановленных опорных выборок яркости для пары ссылок. Блок 830 соответствует этапу 2, на котором вычисляют оптический поток на основе первых предсказаний, полученных в каждой ссылке. Вычисление оптического потока зависит от разности выборок и суммы градиентов выборок в горизонтальном и вертикальном направлениях. Вычисление оптического потока использует функцию, которая принимает значение суммы градиентов выборок в горизонтальном или вертикальном направлении и создает выходное значение, которое зависит от знака входного значения и первого заданного порога для создания выходного значения. Выходное значение может принять одно из N возможных значений, где N – небольшое, положительное, нечетное целое число, которое принимает значения, большее или равное 3. Блок 840 соответствует этапу 3, где выборки двойного предсказания для текущего блока кодирования получают, основываясь на первых выборках предсказания и вычисленном оптическом потоке.
На фиг. 9 показан другой процесс обработки для текущей заявки.
S901: получают начальную пару векторов движения двунаправленного предсказания для текущего блока.
Начальная пара векторов движения может быть получена любым традиционным способом двойного предсказания, например, в режиме слияния, режиме усовершенствованного предсказания векторов движения (AMVP), аффинном режиме Affine и так далее. Обычно начальную пару векторов движения получают согласно информации о движении по меньшей мере одного пространственного и/или временного блока, соседнего с текущим блоком. Текущий блок может быть блоком кодирования или субблоком блока кодирования.
S902: Получают блок прямого предсказания и блока обратного предсказания с помощью начальной пары вектора движения.
Понятно, что для каждой выборки в текущем блоке выборка прямого предсказания и выборка обратного предсказания, соответствующие упомянутой выборке, определяются в блоке прямого предсказания и в блоке обратного предсказания, соответственно.
S903: Вычисляют параметры градиента для выборки в текущем блоке на основе соответствующих выборки прямого предсказания и выборки обратного предсказания.
Например, параметры градиента могут содержать прямой горизонтальный градиент, обратный горизонтальный градиент, обратный горизонтальный градиент и обратный горизонтальный градиент.
Принимая выборку равной pbSamples[x][y], выборкой прямого предсказания является predSamplesL0[x][y] и выборкой обратного предсказания является predSamplesL1[x][y].
Прямой горизонтальный градиент:
gradientHL0[x][y] = predSamplesL0[x+1][y] − predSamplesL0[x−1][y];
Прямой вертикальный градиент:
gradientVL0[x][y] = predSamplesL0[x][y+1] − predSamplesL0[x][y−1];
Обратный горизонтальный градиент:
gradientHL1[x][y] = predSamplesL1[x+1][y] − predSamplesL1[x−1][y];
Обратный вертикальный градиент:
gradientVL1[x][y] = predSamplesL1[x][y+1] − predSamplesL1[x][y−1];
S904: Получают параметры выборки оптического потока для выборки на основе параметров градиента.
Например, параметры выборки оптического потока могут содержать разность выборок, горизонтальный средний градиент и вертикальный средний градиент.
Разность выборок:
diff[x][y] = predSamplesL0[x][y] − predSamplesL1[x][y];
Горизонтальный средний градиент:
TempH[x][y] = (gradientHL0[x][y] + gradientHL1[x][y])/2;
Вертикальный средний градиент:
TempV[x][y] = (gradientVL0[x][y] + gradientVL1[x][y])/2.
S905: Получают параметры блока оптического потока, основываясь, по меньшей мере, на части параметров выборки оптического потока для выборок в текущем блоке.
По меньшей мере один из параметров блока оптического потока получают умножением между первым параметром выборки оптического потока и выходным значением функции знака второго параметра выборки оптического потока.
В данном примере функция знака:
Sign (x) =
В другом примере T равно 0, соответственно, функция знака:
Sign( x ) =
В примере функция знака:
Sign( x ) =
И в этом примере понятно, что умножение 2 может быть заменено операцией сдвига влево на 1 бит и, таким образом, умножения можно также избежать.
Например, принимая текущий блок как блок 4x4, координату верхней выборки текущего блока равной (xSb, ySb), параметры блока оптического потока могут содержать:
sGx2 = ΣiΣj Abs( tempH[ xSb + i ][ ySb + j ] ) with i, j = −1..4
sGy2 = ΣiΣj Abs( tempV[ xSb + i ][ ySb + j ] ) with i, j = −1..4
sGxGy = ΣiΣj( Sign( tempV[ xSb + i ][ ySb + j ] ) * tempH[ xSb + i ][ ySb + j ] ) with i, j = −1..4
sGxGym = sGxGy >> 12
sGxGys = sGxGy & ( ( 1 << 12 ) − 1 )
sGxdI = ΣiΣj( − Sign( tempH[ xSb + i ][ ySb + j ] ) * diff[ xSb + i ][ ySb + j ] ) with i, j = −1..4
sGydI = ΣiΣj( − Sign( tempV[ xSb + i ][ ySb + j ] ) * diff[ xSb + i ][ ySb + j ] ) with i, j = −1..4
S906: Получают значение предсказания текущего блока, основываясь на параметрах блока прямого предсказания, блока обратного предсказания, параметрах блока оптического потока и параметрах выборки оптического потока.
В соответствии с вариантом осуществления, показанным на фиг. 9, приводится другой конкретный пример.
Исходные данные для этого процесса:
– две переменные nCbW и nCbH, указывающие ширину и высоту текущего блока кодирования,
– два массива predSamplesL0 и predSamplesL1 выборок предсказания яркости (nCbW + 2) x (nCbH + 2),
– флаги predFlagL0 и predFlagL1 использования перечней предсказания,
– справочные индексы refIdxL0 и refIdxL1,
– флаг sbBdofFlag использования двунаправленного оптического потока.
Выходным результатом этого процесса массив pbSamples (nCbW) x (nCbH) значений выборок предсказания яркости.
Переменные shift1, shift2, shift3, shift4, offset4, и mvRefineThres получают следующим образом:
– Переменная shift1 устанавливается равной 6.
– Переменная shift2 устанавливается равной 4.
– Переменная shift3 устанавливается равной 1.
– Переменная shift4 устанавливается равной Max (3, 15 − BitDepth), и переменная offset4 устанавливается равной 1 <<(shift4 − 1).
– Переменная mvRefineThres устанавливается равной 1 <<5.
Для xIdx = 0.. (nCbW>> 2) − 1 и yIdx = 0.. (nCbH>> 2) − 1, применяют следующее:
– Переменная xSb устанавливается равной (xIdx <<2) + 1, и ySb устанавливается равной (yIdx <<2) + 1.
– Если sbBdofFlag равен FALSE для x = xSb − 1.. xSb + 2, y = ySb − 1.. ySb + 2, значения выборок предсказания текущего субблока получают следующим образом:
pbSamples[x][y] = Clip3 (0, (2BitDepth) − 1, (predSamplesL0 [x + 1] [y + 1] + offset4 + predSamplesL1 [x + 1] [y + 1])>> shift4)
– В противном случае, sbBdofFlag равно TRUE, значения выборок предсказания текущего субблока получают следующим образом:
– Для x =xSb − 1.. xSb + 4, y = ySb − 1.. ySb + 4 по порядку выполняют следующие этапы:
4. Местоположения ( hx, vy ) для каждого из соответствующих местоположений (x, y) выборки внутри массивов выборок предсказания получают следующим образом:
hx = Clip3( 1, nCbW, x )
vy = Clip3( 1, nCbH, y )hx = Clip3 (1, nCbW, x)
5. Переменные gradientHL0 [x] [y], gradientVL0[x][y], gradientHL1[x][y] и gradientVL1[x][y] получают следующим образом:
gradientHL0[x][y] = (predSamplesL0 [hx + 1] [vy]>> shift1) −
(predSamplesL0 [hx − 1] [vy])>> shift1) gradientVL0[x][y] = (predSamplesL0[hx] [vy + 1]>> shift1) −
(predSamplesL0[hx] [vy − 1])>> shift1) gradientHL1[x][y] = (predSamplesL1 [hx + 1] [vy]>> shift1) −
(predSamplesL1 [hx − 1] [vy])>> shift1) gradientVL1[x][y] = (predSamplesL1[hx] [vy + 1]>> shift1) −
(predSamplesL1[hx] [vy − 1])>> shift1)
6. Переменные diff[ x ][ y ], tempH[x][y] и tempV[x][y] получают следующим образом:
diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) − (predSamplesL1[ hx ][ vy ] >> shift2)
tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3
tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3
– Переменные sGx2, sGy2, sGxGy, sGxdI и sGydI получают следующим образом:
diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) − ( predSamplesL1[hx][vy] >> shift2)
tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3
tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3
– Горизонтальное и вертикальное смещение движения текущего субблока получают следующим образом:
vx = sGx2 > 0 ? Clip3( −mvRefineThres + 1, mvRefineThres − 1, −( sGxdI << 2 ) >> Floor( Log2( sGx2 ) ) ) : 0
vy = sGy2 > 0 ? Clip3( −mvRefineThres + 1, mvRefineThres − 1, ( ( sGydI << 2 ) − (( vx * sGxGym) << 12 + vx * sGxGys) >> 1) >> Floor( Log2( sGy2))) : 0
– Для x =xSb − 1.. xSb + 2, y = ySb − 1.. ySb + 2, значения выборок предсказания текущего субблока получают следующим образом:
bdofOffset = vx * ( gradientHL0[ x + 1 ][ y + 1 ] − gradientHL1[ x + 1 ][ y + 1 ] ) + vy * (gradientVL0[ x + 1 ][ y + 1 ] − gradientVL1[ x + 1 ][y + 1])
pbSamples[ x ][ y ] = Clip3( 0, (2BitDepth) − 1, (predSamplesL0[ x + 1 ][ y + 1 ] + offset4 + predSamplesL1[x + 1][y +1] + bdofOffset) >> shift4)
В другом варианте осуществления на фиг. 10 показано устройство, соответствующее текущей заявке.
Устройство 1000 предсказания двунаправленного оптического потока содержит: модуль 1001 получения, выполненный с возможностью получения начальной пары векторов движения для текущего блока, в котором начальная пара векторов движения содержит вектор движения вперед и вектор движения назад; модуль 1002 исправления, выполненный с возможностью получения блока прямого предсказания, соответствующего вектору движения вперед, и блока обратного предсказания, соответствующего вектору движения назад; модуль 1003 градиента, выполненный с возможностью вычисления параметров градиента для текущей выборки в текущем блоке, основываясь на выборке прямого предсказания и выборке обратного предсказания, соответствующих текущей выборке, где выборка прямого предсказания находится в блоке прямого предсказания и выборка обратного предсказания находится в блоке обратного предсказания; вычислительный модуль 1004, выполненный с возможностью получения по меньшей мере двух параметров выборок оптического потока для текущей выборки на основе параметров градиента, где параметры выборки оптического потока содержат первый параметр и второй параметр; модуль 1005 обучения, выполненный с возможностью получения параметров блока оптического потока на основе параметров выборок оптического потока в текущем блоке, где один из параметров блока оптического потока получают посредством операции, содержащей перемножение значения первого параметра и значения функции знака второго параметра, где функция знака является кусочной функцией по меньшей мере с тремя поддиапазонами; и модуль 1006 предсказания, выполненный с возможностью получения значения предсказания текущего блока на основе параметров блока прямого предсказания, блока обратного предсказания, параметров блока оптического потока и параметров выборки оптического потока.
В возможной реализации функция знака имеет вид:
Sign( x ) =
где T - неотрицательное вещественное число.
В возможной реализации T равно 0; соответственно, функция знака:
Sign( x ) =
В возможной реализации начальную пару векторов движения получают в соответствии с информацией о движении по меньшей мере одного пространственного и/или временного блока, соседнего с текущим блоком.
В возможной реализации текущий блок является блоком кодирования или субблоком блока кодирования.
В возможной реализации параметры градиента содержат прямой горизонтальный градиент, обратный горизонтальный градиент, прямой вертикальный градиент и обратный вертикальный градиент.
В возможной реализации прямой горизонтальный градиент является разностью правой выборки и левой выборки, смежных с выборкой прямого предсказания.
В возможной реализации обратный горизонтальный градиент является разностью правой выборки и левой выборки, смежных с выборкой обратного предсказания.
В возможной реализации прямой вертикальный градиент является разностью нижней выборки и верхней выборки, смежных с выборкой прямого предсказания.
В возможной реализации обратный вертикальный градиент является разностью нижней выборки и верхней выборки, смежных с выборкой обратного предсказания.
В возможной реализации параметры выборки оптического потока содержат разность выборок, горизонтальный средний градиент и вертикальный средний градиент.
В возможной реализации первый параметр является разностью выборок, горизонтальным средним градиентом или вертикальным средним градиентом.
В возможной реализации второй параметр является разностью выборок, горизонтальным средним градиентом или вертикальным средним градиентом, и второй параметр не равен первому параметру.
В другом варианте осуществления на фиг. 11 показано другое устройство, соответствующее текущей заявке.
Устройство 1100 двунаправленного предсказания оптического потока содержит: один или более процессоров 1101 и считываемый компьютером носитель 1102 долговременного хранения данных, связанный с процессорами и хранящий программирование для его выполнения процессорами, где программирование, когда исполняется процессорами, конфигурирует устройство для выполнения любого из способов, показанных на фиг. 9.
В другом варианте осуществления настоящей заявки представлен компьютерный программный продукт, содержащий управляющую программу для выполнения любого из способов, показанных на фиг. 9.
Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.
На фиг. 12 представлена блок-схема, показывающая систему 3100 поддержки контента для реализации услуги распространения контента. Этот система 3100 поддержки контента содержит устройство 3102 получения изображения, оконечное устройство 3106 и, как вариант, содержит дисплей 3126. Устройство 3102 получения изображения осуществляет связь с оконечным устройством 3106 по каналу 3104 связи. Канал связи может содержать канал 13 связи, описанный выше. Канал 3104 связи содержит, но не ограничиваясь только этим, WI-FI, Ethernet, кабельный канал, беспроводной канал (3G/4G/5G), USB или любой вид их сочетания и т.п.
Устройство 3102 получения изображения формирует данные и может кодировать данные способом кодирования, показанным в вышеупомянутых вариантах осуществления. Альтернативно, устройство 3102 получения изображения может распределять данные серверу потоковой передачи (не показано на чертеже) и сервер кодирует данные и передает кодированные данные оконечному устройству 3106. Устройство 3102 получения изображения содержит, не ограничиваясь камерой, смартфон или Pad, компьютер или ноутбук, систему видеоконференции, PDA, устройство, монтируемое на транспортном средстве, или комбинацию любых из них и т.п. Например, устройство 3102 получения изображения может содержать устройство 12 источника, как описано выше. Когда данные содержат видео, видеокодер, 20 содержащийся в устройстве 3102 получения изображения может фактически выполнять процесс видеокодирования. Когда данные содержат аудио (т.е., речь), аудиокодер, содержащийся в устройстве 3102 получения изображения, может фактически выполнять процесс аудиокодирования. Для некоторых практических сценариев устройство 3102 получения изображения распределяет кодированные видеоданные и аудиоданные путем их мультиплексирования вместе. Для других практических сценариев, например, в системе видеоконференции, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 получения изображения отдельно распределяет оконечному устройству 3106 кодированные аудиоданные и кодированные видеоданные.
В системе 3100 поддержки контента оконечное устройство 310 принимает и воспроизводит кодированные данные. Оконечное устройство 3106 может быть устройством с возможностями приема и восстановления данных, таким как смартфон или Pad 3108, компьютер или ноутбук 3110, сетевой видеомагнитофон (network video recorder, NVR)/цифровой видеомагнитофон (digital video recorder, DVR) 3112, телевизор 3114, телевизионная приставка (set top box, STB) 3116, система 3118 видеоконференции, система 3120 видеонаблюдения, персональный цифровой секретарь (personal digital assistant, PDA) 3122, устройство 3124, смонтированное на транспортном средстве или сочетанием любых из них и т. п., способный декодировать вышеупомянутые кодированные данные. Например, оконечное устройство 3106 может содержать устройство 14 назначения, как описано выше. Когда кодированные данные содержат видео, видеодекодер, 30, присутствующий в оконечном устройстве, имеет приоритет для выполнения видеодекодирования. Когда кодированные данные содержат аудио, аудиодекодер, присутствующий в оконечном устройстве, имеет приоритет для выполнения процесса аудиодекодирования.
Для оконечного устройства с его дисплеем, например, смартфона или Pad 3108, компьютера или ноутбука 3110, сетевого видеомагнитофона (NVR)/цифрового видеомагнитофона (DVR) 3112, телевизора 3114, персонального цифрового секретаря (personal digital assistant, PDA) 3122 или устройства 3124, монтируемого на транспортном средстве, оконечное устройство может подавать декодируемые данные на свой дисплей. Для оконечного устройства, не имеющего дисплея, например, STB 3116, система 3118 видеоконференции или система 3120 видеонаблюдения, подключают внешний дисплей 3126, чтобы принимать и показывать декодированные данные.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
На фиг. 13 представлена структура примера оконечного устройства 3106. После того, как оконечное устройство 3106 принимает поток от устройства 3102 получения изображения, блок 3202 протокола анализирует протокол передачи потока. Протокол содержит, но не ограничиваясь только этим, протокол потоковой передачи в реальном времени (Real Time Streaming Protocol, RTSP), протокол передачи гипертекста (Hyper Text Transfer Protocol, HTTP), протокол живой потоковой передачи HTTP (HTTP Live streaming protocol, HLS), MPEG-DASH, транспортный протокол реального времени (Real-time Transport protocol, RTP), протокол обмена сообщениями в реальном времени (Real Time Messaging Protocol, RTMP) или любой вид их сочетания и т. п.
После того, как блок 3202 протокола обработает поток, формируется потоковый файл. Файл выводится на блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделить мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференции, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются видеодекодеру 3206 и аудиодекодеру 3208 без использования блока 3204 демультиплексирования.
Поток элементов (ES) видео, ES аудио и дополнительно подзаголовок формируются посредством процесса демультиплексирования. Видеодекодер 3206, который содержит видеодекодер 30, как объяснялось в вышеупомянутых вариантах осуществления, декодирует видео ES способом декодирования, показанным в вышеупомянутых вариантах осуществления, для формирования видеокадра и подает эти данные на блок 3212 синхронизации. Аудиодекодер 3208 декодирует ES аудио для формирования аудиокадра и подает эти данные на блок 3212 синхронизации. Альтернативно, видеокадр может быть сохранен в буфере (не показан на фиг. 13) перед его подачей на блок 3212 синхронизации. Точно также, аудио кадр может быть сохранен в буфере (не показан на фиг. 13) перед его подачей на блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и аудио кадр и предоставляет видео/аудио на видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видеоинформации и аудиоинформацию. Информация может кодироваться в синтаксисе, используя временные метки, относящиеся к предоставлению кодированных аудио- и видеоданных, и временные метки, относящиеся к подаче самого потока данных.
Если в поток включен подзаголовок, декодер 3210 подзаголовка декодирует подзаголовок и синхронизирует его с видеокадром и аудиокадром и подает видео/аудио/подзаголовок на дисплей 3216 видео/аудио/подзаголовка.
Настоящая заявка не ограничивается описанной выше системой и устройство кодирования изображения и/или устройство декодирования изображения в представленных выше вариантах осуществления могут быть включены в другую систему, например, в автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, подобны тем, которые используются в языке программирования "С". Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно и определяются дополнительные операции, такие как возведение в степень и деление вещественных значений. Договоренности о нумерации и подсчете обычно начинаются с 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
x | | y Булевский логический оператор "или" для x и y
! Булевский логический оператор "не"
x? y: z Если x является TRUE или не равен 0, оценивается до значения y; в противном случае, оценивается до значения z.
Операторы отношения
Нижеследующие операторы отношения определяются следующим образом:
> Больше, чем
> = Больше, чем или равно
< Меньше, чем
<= Меньше чем или равно
= = Равный
! = Не равный
Когда оператор отношения применяется к элементу синтаксиса или к переменной, которой было присвоено значение "na" (not applicable), значение "na" рассматривают как отличающееся значение для элемента синтаксиса или переменной. Значение "na" рассматривается как неравное любому другому значению.
Побитовые операторы
Нижеследующие побитовые операторы определяются следующим образом:
& Побитовое "и". При действиях над целочисленными аргументами действует над представлением с дополнением до двух целочисленного значения. При действии над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем дополнительного добавления значимых битов, равных 0.
| Поразрядное "или". При действиях над целочисленными аргументами, действует над представлением с дополнением до двух целочисленного значения. При действии над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем дополнительного добавления значимых битов, равных 0.
^\ Поразрядное "эксклюзивный или". При действиях над целочисленными аргументами, действует над представлением с дополнением до двух целочисленного значения. При действии над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем дополнительного добавления значимых битов, равных 0.
x>> y Арифметический сдвиг вправо целочисленного представления с дополнением до двух для x × y двоичных чисел. Эта функция определяется только для неотрицательных целочисленных значений y. Биты, смещенные в старшие значащие биты (most significant bit, MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.
x <<y Арифметический сдвиг влево целочисленного представления с дополнением до двух для x × y двоичных чисел. Эта функция определяется только для неотрицательных целочисленных значений y. Биты, смещенные в младшие значащие биты (least significant bit, 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 ) =
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,718 281 828...).
Log2(x) - логарифм x по основанию 2.
Log10(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.
Таблица: Операционный приоритет операций от самого высокого (наверху таблицы) к самому низкому (в конце таблицы)
Текстовое описание логических операций
В тексте оператор логических операций описывается как бы математически в следующей форме:
if( condition 0 )
statement 0
else if( condition 1 )
statement 1
...
else /* информационное замечание по остающемуся условию */
statement n
может быть описано следующим образом:
... as follows / ... the following applies:
– If condition 0, statement 0
– Otherwise, if condition 1, statement 1
– ...
– Otherwise (информационное замечание по остающемуся условию), statement n
Каждый оператор "If ... Otherwise, if ... Otherwise, ..." в тексте вводится с помощью "... as follows" или "... the following applies" непосредственно сопровождается "If ... ". Последним условием "If ... Otherwise, if ... Otherwise, ..." всегда являются операторы "Otherwise, ...". Interleaved "If ... Otherwise, if ... Otherwise, ...", которые могут идентифицироваться совпадением "... as follows" или "... the following applies" с окончанием "Otherwise, ...".
В тексте оператор логических операций описывается как бы математически в следующей форме:
if( condition 0a && condition 0b )
statement 0
else if( condition 1a | | condition 1b )
statement 1
...
else
statement n
может описываться следующим образом:
... as follows / ... the following applies:
– If all of the following conditions are true, statement 0:
– condition 0a
– condition 0b
– Otherwise, if one or more of the following conditions are true, statement 1:
– condition 1a
– condition 1b
– ...
– Otherwise, statement n
В тексте, операторе логических операций, как был бы описан математически в следующей форме:
if( condition 0 )
statement 0
if( condition 1 )
statement 1
может быть записано следующим образом:
When condition 0, statement 0
When condition 0, statement 1
Варианты осуществления, например, кодера 20 и декодер 30, и функции, описанные здесь, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы в аппаратных средствах, программном обеспечении, встроенном микропрограммном обеспечении или любом их сочетании. При реализации в программном обеспечении, функции могут сохраняться на считываемом компьютером носителе или передаваться через среду передачи как одна или более команд или код и исполняться процессором, основываясь на аппаратных средствах. Считываемые компьютером носители могут содержать считываемые компьютером носители запоминающего устройства, которые соответствуют физическому носителю, такому как носитель запоминающего устройства данных или среда передачи, содержащая любой носитель, который упрощает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемый компьютером носитель обычно может соответствовать (1) физическим считываемым компьютером носителям, который является носителями долгосрочного хранения или (2) среде связи, такой как сигнал или несущая волна. Носители для хранения данных могут быть любыми носителями, к которым могут получать доступ один или более компьютеров или один или более процессоров для извлечения команд, кода и/или структур данных для реализации технологий, описанных в настоящем раскрытии. Компьютерный программный продукт может содержать считываемый компьютером носитель.
Как пример, но не ограничение, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках, или другие магнитные устройства памяти, флэш-память или любой другой носитель, который мог бы использоваться для хранения желаемой управляющей программы в форме команд или структур данных, к которым мог бы получать доступ компьютер. Кроме того, любое соединение является должным образом считываемой компьютером средой. Например, если команды передаются с веб-сайта, сервера или от другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радиоизлучение и микроволновое излучение, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радиоизлучение и микроволновое излучение, включаются в определение носителя. Следует, однако, понимать, что считываемые компьютером носители и носители запоминающего устройства не содержат соединения, несущих волн, сигналов или других переходных сред, а вместо этого относятся к физическим носителям долгосрочного хранения. Определение диска, как оно используется здесь, содержит компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом и оптически с помощью лазеров. Их сочетания также должны содержаться в рамках считываемых компьютером носителей.
Команды могут исполняться одним или несколькими процессорами, такими как один или более цифровых сигнальных процессоров (digital signal processor, DSP), микропроцессоры общего назначения, специализированные прикладные интегральные схемы (application specific integrated circuit, ASIC), программируемые логические интегральные схемы (field programmable logic array, FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. Соответственно, термин “процессор”, как он используется здесь, может относиться к любой описанной выше структуре или к любой другой структуре, пригодной для реализации описанных здесь способов. Кроме того, при некоторых подходах функциональные возможности, описанные здесь, могут обеспечиваться в специализированных аппаратных средствах и/или программных модулях, выполненных с возможностью кодирования и декодирования или объединенных в совместный кодек. Кроме того, способы могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
Технологии настоящего раскрытия могут быть реализованы в большом разнообразии устройств, в том числе, в беспроводной гарнитуре, интегральной схеме (integrated circuit, IC) или наборе IC (например, чипсет). Различные компоненты, модули или блоки, описанные в этом раскрытии для подчеркивания функциональных подходов устройств, выполненных с возможностью осуществления раскрытых способов, не обязательно требуют реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в блоке аппаратных средств кодека или обеспечены набором взаимодействующих аппаратных блоков, содержащих один или более процессоров, как описано выше, в сочетании с соответствующим программным обеспечением и/или встроенным микропрограммным обеспечением.
Изобретение относится к области кодирования/декодирования видео и, более конкретно, к межкадровому предсказанию. Техническим результатом является повышение степени сжатия при минимальных или отсутствующих издержках качества изображения. Предложен способ двунаправленного предсказания оптического потока, содержащий этапы, на которых: получают начальную пару векторов движения для текущего блока, получают блок прямого и обратного предсказания, соответствующий вектору движения вперед, и блок обратного предсказания, соответствующие начальной паре векторов движения; вычисляют параметры градиента для текущей выборки в текущем блоке; получают по меньшей мере два параметра выборок оптического потока, содержащих первый параметр и второй параметр для текущей выборки, основываясь на параметрах градиента; получают параметры блока оптического потока, основываясь на параметрах выборок оптического потока в текущем блоке, где один из параметров блока оптического потока получают посредством операции перемножения значения первого параметра и значения функции знака второго параметра и где функция знака является кусочной функцией по меньшей мере с тремя поддиапазонами; и получают значение предсказания текущего блока. 4 н. и 15 з.п. ф-лы, 14 ил.
1. Способ предсказания двунаправленного оптического потока, содержащий этапы, на которых:
получают начальную пару векторов движения для текущего блока, где начальная пара векторов движения содержит вектор движения вперед и вектор движения обратно;
получают блок прямого предсказания, соответствующий вектору движения вперед, и блок обратного предсказания, соответствующий вектору движения обратно;
вычисляют параметры градиента, содержащие прямой горизонтальный градиент, обратный горизонтальный градиент, прямой вертикальный градиент и обратный вертикальный градиент, для текущей выборки в текущем блоке, основываясь на выборке прямого предсказания, и для выборки обратного предсказания, соответствующей текущей выборке, где выборка прямого предсказания является блоком прямого предсказания, а выборка обратного предсказания находится в блоке обратного предсказания;
получают по меньшей мере два параметра выборок оптического потока для текущей выборки, основываясь на параметрах градиента, причем параметры выборок оптического потока содержат первый параметр и второй параметр;
получают параметры блока оптического потока, основываясь на параметрах выборок оптического потока в текущем блоке, причем один из параметров блока оптического потока получают посредством операции перемножения значения первого параметра и значения функции знака второго параметра, при этом функция знака является кусочной функцией по меньшей мере с тремя поддиапазонами; и
получают значение предсказания текущего блока, основываясь на параметрах блока прямого предсказания, блока обратного предсказания, параметрах блока оптического потока и параметрах выборок оптического потока; причем
параметры выборок оптического потока содержат разность выборок, горизонтальный средний градиент и вертикальный средний градиент,
первый параметр является горизонтальным средним градиентом, а второй параметр является вертикальным средним градиентом; а
функция знака имеет вид:
Sign( x ) =
где T - неотрицательное вещественное число.
2. Способ по п. 1, где T равно 0; соответственно, функция знака имеет вид:
Sign( x ) =
3. Способ по п. 1 или 2, в котором начальную пару векторов движения получают согласно информации о движении по меньшей мере одного пространственного и/или временного блока, соседнего с текущим блоком.
4. Способ по любому из пп. 1-3, в котором текущий блок является блоком кодирования или субблоком блока кодирования.
5. Способ по п. 1, в котором прямой горизонтальный градиент является разностью правой выборки и левой выборки, смежной с выборкой прямого предсказания.
6. Способ по п. 1 или 5, в котором обратный горизонтальный градиент является разностью правой выборки и левой выборки, смежных с выборкой обратного предсказания.
7. Способ по любому из пп. 1, 5 и 6, в котором прямой вертикальный градиент является разностью нижней выборки и верхней выборки, смежных с выборкой прямого предсказания.
8. Способ по любому из пп. 1, 5, 6 и 7, в котором обратный вертикальный градиент является разностью нижней выборки и верхней выборки, смежных с выборкой обратного предсказания.
9. Способ по п. 1, в котором выборка прямого предсказания представлена посредством predSamplesL0[x][y], выборка обратного предсказания представлена посредством predSamplesL1[x][y], прямой горизонтальный градиент представлен посредством gradientHL0[x][y], обратный горизонтальный градиент представлен посредством gradientHL1[x][y], прямой вертикальный градиент представлен посредством gradientVL0[x][y], а обратный вертикальный градиент представлен посредством gradientVL1[x][y], при этом
разность выборок представлена посредством: diff[x][y] = predSamplesL0[x][y] − predSamplesL1[x][y];
горизонтальный средний градиент представлен посредством: TempH[x][y] = (gradientHL0[x][y] + gradientHL1[x][y])/2; а
вертикальный средний градиент представлен посредством: TempV[x][y] = (gradientVL0[x][y] + gradientVL1[x][y])/2.
10. Устройство двунаправленного предсказания оптического потока, содержащее:
модуль получения, выполненный с возможностью получения начальной пары векторов движения для текущего блока, причем начальная пара векторов движения содержит вектор движения вперед и вектор движения обратно;
модуль исправления, выполненный с возможностью получения блока прямого предсказания, соответствующего вектору движения вперед, и блока обратного предсказания, соответствующего вектору движения обратно;
модуль градиента, выполненный с возможностью вычисления параметров градиента, содержащих прямой горизонтальный градиент, обратный горизонтальный градиент, прямой вертикальный градиент и обратный вертикальный градиент, для текущей выборки в текущем блоке, основываясь на выборке прямого предсказания и выборке обратного предсказания, соответствующих текущей выборке, причем выборка прямого предсказания находится в блоке прямого предсказания, а выборка обратного предсказания находится в блоке обратного предсказания;
модуль вычисления, выполненный с возможностью получения по меньшей мере двух параметров выборки оптического потока для текущей выборки, основываясь на параметрах градиента, причем параметры выборки оптического потока содержат первый параметр и второй параметр;
модуль обучения, выполненный с возможностью получения параметров блока оптического потока на основе параметров выборок оптического потока для выборок в текущем блоке, причем один из параметров блока оптического потока получают посредством операции, содержащей перемножение значения первого параметра и значения функции знака второго параметра, при этом функция знака является кусочной функцией по меньшей мере с тремя субдиапазонами; и
модуль предсказания, выполненный с возможностью получения значения предсказания текущего блока, основываясь на параметрах блока прямого предсказания, блока обратного предсказания, блока оптического потока и параметрах выборок оптического потока; причем
параметры выборок оптического потока содержат разность выборок, горизонтальный средний градиент и вертикальный средний градиент,
первый параметр является горизонтальным средним градиентом, а второй параметр является вертикальным средним градиентом; а
функция знака имеет вид:
Sign( x ) =
где T - неотрицательное вещественное число.
11. Устройство по п. 10, в котором T равно 0; соответственно, функцией знака является
Sign( x ) =
12. Устройство по п. 10 или 11, в котором начальную пару векторов движения получают в соответствии с информацией о движении по меньшей мере одного пространственного и/или временного блока, соседнего с текущим блоком.
13. Устройство по любому из пп. 10-12, в котором текущий блок является блоком кодирования или субблоком блока кодирования.
14. Устройство по п. 10, в котором прямой горизонтальный градиент является разностью правой выборки и левой выборки, смежных с выборкой прямого предсказания.
15. Устройство по п. 10 или 14, в котором обратный горизонтальный градиент является разностью правой выборки и левой выборки, смежных с выборкой обратного предсказания.
16. Устройство по любому из пп. 10, 14 и 15, в котором прямой вертикальный градиент является разностью нижней выборки и верхней выборки, смежных с выборкой прямого предсказания.
17. Устройство по любому из пп. 10, 14, 15 и 16, где обратный вертикальный градиент является разностью нижней выборки и верхней выборки, смежных с обратным образцом предсказания.
18. Устройство двунаправленного предсказания оптического потока, содержащее:
один или более процессоров; и
машиночитаемый энергонезависимый носитель хранения, соединенный с процессорами и хранящий программирование, исполняемое процессорами, причем программирование, при исполнении процессорами, вызывает выполнение способа по любому из пп. 1-9.
19. Машиночитаемый энергонезависимый носитель данных, соединенный с процессорами и хранящий программу, вызывающую, при исполнении процессорами, выполнение способа по любому из пп. 1-9.
LI JINGYA et al, CE9-related: Simplification of BIO, Joint Video Exploration Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET-L0123-v2, 12th Meeting: Macao, 03-12 Oct | |||
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
LI JINGYA et al, CE9-related: simplification of BDOF, Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET-M0316, 13th |
Авторы
Даты
2023-12-07—Публикация
2020-02-28—Подача