СПОСОБ И УСТРОЙСТВО СИГНАЛИЗАЦИИ ВЫСОКОГО УРОВНЯ ДЛЯ ВЗВЕШЕННОГО ПРОГНОЗИРОВАНИЯ Российский патент 2024 года по МПК H04N19/50 H04N19/70 H04N19/13 

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

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

По данной заявке на патент испрашивается приоритет на основании международной заявки на патент № PCT/RU2019/000625, поданной 6 сентября 2019 г.

Область техники, к которой относится изобретение

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

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

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

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

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

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

Раскрытие изобретения

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

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

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

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

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

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

В шестой форме реализации четвертой формы реализации первого аспекта ограничение бинаризации содержит: (i) если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования, и флаг набора параметров последовательности для взвешенного двойного прогнозирования установлен на 0, кодирование измененного значения дельты POC для элемента списка опорных изображений, полученного из структуры списка опорных изображений, в котором измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt); или (ii) если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования и по меньшей мере один из флагов набора параметров последовательности для взвешенного двойного прогнозирования. прогнозирования, и флаг набора параметров последовательности для взвешенного однократного прогнозирования устанавливается в 0, кодирование измененного значения дельты POC для элемента списка опорных изображений, полученного из структуры списка опорных изображений, при этом измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt); (iii) если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования, и как флаг набора параметров последовательности для взвешенного двойного прогнозирования, так и флаг набора параметров последовательности для взвешенного однократного прогнозирования устанавливается в 0, кодирование измененного значение дельты POC для элемента списка опорных изображений, полученного из структуры списка опорных изображений, при этом измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt).

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

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

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

В первой форме реализации третьего аспекта как такового по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя по меньшей мере одно из флага набора параметров последовательности для взвешенного однократного прогнозирования и флага набора параметров последовательности для взвешенного двойного прогнозирования.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Во второй форме реализации одиннадцатого аспекта как такового или в первой форме реализации одиннадцатого аспекта по меньшей мере один параметр взвешенного прогнозирования HLS содержит флаг набора параметров последовательности для взвешенного однократного прогнозирования.

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

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

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

В шестой форме реализации четвертой формы реализации одиннадцатого аспекта ограничение на бинаризацию содержит: (i) если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования, и флаг набора параметров последовательности для взвешенного двойного прогнозирования установлен на 0, кодирование измененного значения дельты POC для элемента списка опорных изображений, полученного из структуры списка опорных изображений, причем измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt); или (ii) если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования, и по меньшей мере одно из флага набора параметров последовательности для взвешенного двойного прогнозирования. прогнозирования и флага набора параметров последовательности для взвешенного однократного прогнозирования установлен в 0, кодирование измененного значения дельты POC для элемента списка опорных изображений, полученного из структуры списка опорных изображений, при этом измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt); или (iii) если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования, и флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования установлен в 0, кодирование измененного значения дельты POC для элемента списка опорных изображений, полученного из структуры списка опорных изображений, при этом измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt).

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

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

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

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

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

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

Краткое описание чертежей

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

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

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

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

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

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

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

фиг. 6 - блок-схема алгоритма принятия решений на стороне кодера для взвешенного прогнозирования и оценки параметров;

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

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

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

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

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

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

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

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

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

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

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

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

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

Осуществление изобретения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изображения и разделение изображений (изображения и блоки)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Квантование

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

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

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

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

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

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

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

Реконструкция

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

Фильтрация

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

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

Буфер декодированных изображений

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

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

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

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

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

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

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

Разделение

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

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

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

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

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

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

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

Прогнозирование внутри изображения

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

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

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

Прогнозирование между изображениями

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Реконструкция

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

Фильтрация

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

Буфер декодированных изображений

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

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

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

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

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

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

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

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

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

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

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

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

ux= ( mvx+2bitDepth ) % 2bitDepth (1)

mvx=( ux >= 2bitDepth-1 ) ? (ux - 2bitDepth ) : ux (2)

uy= ( mvy+2bitDepth ) % 2bitDepth (3)

mvy=( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (4)

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

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

ux= ( mvpx+mvdx +2bitDepth ) % 2bitDepth (5)

mvx=( ux >= 2bitDepth-1 ) ? (ux - 2bitDepth ) : ux (6)

uy= ( mvpy+mvdy +2bitDepth ) % 2bitDepth (7)

mvy=( uy >= 2bitDepth-1 ) ? (uy - 2bitDepth ) : uy (8)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как указано в источнике J.M. Boyce “Weighted prediction in the H.264/MPEG AVC video coding standard”, IEEE International Symposium on Circuits and Systems, май 2004 г., Канада, стр. 789-792, взвешенное прогнозирование (WP) - это инструмент, который особенно полезен для кодирования изменений уровня освещения. Инструмент взвешенного прогнозирования (WP) был принят в основном и расширенном профилях стандарта кодирования видео H.264 для повышения эффективности кодирования за счет применения мультипликативного весового коэффициента и аддитивного смещения к прогнозированию с компенсацией движения для формирования взвешенного прогнозирования. В явном режиме весовой коэффициент и смещение могут быть закодированы в заголовке серии последовательных макроблоков для каждого допустимого индекса опорного изображения. В неявном режиме весовые коэффициенты не кодируются, а выводятся на основе расстояний подсчета относительного порядка изображения (POC) двух опорных изображений. Представлены экспериментальные результаты, измеряющие повышение эффективности кодирования с использованием WP. При кодировании последовательностей постепенного перехода в черное было достигнуто снижение битрейта до 67%.

Применительно к одиночному прогнозу, как в P-изображениях, WP похож на прогноз с утечкой, который ранее был предложен для устойчивости к ошибкам. Прогнозирование с утечкой становится частным случаем WP с коэффициентом масштабирования, ограниченным диапазоном 0 ≤ α ≤ 1. H.264 WP допускает отрицательные коэффициенты масштабирования и коэффициенты масштабирования больше единицы. Весовой коэффициент применяется попиксельно с использованием закодированного поля метки для эффективного сжатия покрытых и непокрытых областей. Ключевым отличием инструмента WP H.264 от предыдущих предложений, включающих взвешенное прогнозирование для эффективности сжатия, является ассоциация индекса эталонного изображения с параметрами весового коэффициента, что позволяет эффективно сигнализировать об этих параметрах в среде с несколькими эталонными изображениями. Как написано в источнике R. Zhang and G. Cote “accurate parameter estimation and efficient fade detection for weighted prediction in H.264 video compression”, 15th IEEE International Conference on Image Processing, октябрь 2008 г., Сан-Диего, Калифорния, США, стр. 2836-2839, процедуру применения WP в системе кодирования реального времени можно формализовать как последовательность шагов, показанную на рис. 6. Во-первых, некоторые статистические данные 611 формируются посредством видеоанализа 610. Статистические данные 611 в небольшом окне, от нескольких предыдущих изображений до текущего изображения, затем используются для обнаружения затухания. Каждому изображению назначается значение 631 состояния, указывающее, находится ли изображение в состоянии «НОРМАЛЬНОЕ» или в состоянии «ИЗМЕНЕНИЕ УРОВНЯ ОСВЕЩЕНИЯ». Такие значения состояния сохраняются для каждого изображения. При кодировании изображения, если имеется состояние «ИЗМЕНЕНИЕ УРОВНЯ ОСВЕЩЕНИЯ» либо в текущем изображении, либо в одном из его опорных изображений, WP будет использоваться для этой пары текущее-опорное изображение, и статистика текущего изображения и соответствующего опорного изображения обрабатывается на этапе 650 оценки параметров WP. Затем эти параметры передаются в механизм 660 кодирования. В противном случае выполняется обычное кодирование.

Как упоминалось в источнике A. Leontaris и A.M. Tourapis “Weighted prediction methods for improved motion compensation”, 16th IEEE International Conference on Image Processing (ICIP), ноябрь 2009 г., Каир, Египет, стр. 1029-1032, макроблок в H.264 разделен на разделы макроблока. Для каждого раздела макроблока выбирается опорное изображение из каждого из доступных списков опорных изображений (часто обозначаемых в спецификациях как RefPicList), списка 0 для P- или B-кодированных серий последовательных макроблоков или списка 1 опорных изображений для B-кодированных серий последовательных макроблоков. Используемые опорные изображения могут быть разными для каждого раздела. Используя эти опорные изображения, для каждого списка создается блок прогнозирования, т.е. P для прогнозирования по одному списку и PO и P1 для двойного прогнозирования с использованием информации о движении при необходимости с субпиксельной точностью. Блоки прогнозирования могут дополнительно обрабатываться в зависимости от доступности взвешенного прогнозирования для текущей серии последовательных макроблоков. Для P серий последовательных макроблоков параметры WP передаются в заголовке серии последовательных макроблоков. Для сегментов B есть два варианта. В явном WP параметры передаются в заголовке серии последовательных макроблоков, а в неявном WP параметры выводятся на основе числа счетчика порядка изображений (POC), которое сообщается в заголовке серии последовательных макроблоков. В данном документе мы сосредоточимся только на явном WP и на том, как этот способ можно использовать для улучшения характеристик компенсации движения. Обратите внимание, что в HEVC и VVC PB используется аналогично разделу макроблока в AVC.

Для P серий последовательных макроблоков или явного WP с одним списком в B сериях последовательных макроблоков блок прогнозирования рисуется из одного опорного изображения. Пусть p обозначает значение выборки в блоке прогнозирования P. Если взвешенное прогнозирование не используется, то окончательной выборкой прогнозирования между изображениями является f=p. В противном случае прогнозируемая выборка:

Термины wx и ox представляют собой параметры усиления и смещения WP для списка опорных изображений x. Термин logWD передается в битовом потоке и управляет математической точностью процесса взвешенного прогнозирования. Для logWD ≥ 1 приведенное выше выражение округляется от нуля. Аналогичным образом, для двойного прогнозирования рассматриваются два блока прогнозирования, по одному для каждого списка опорных изображений. Пусть p0 и p1 обозначают выборки в каждом из двух блоков прогнозирования P0 и P1. Если взвешенное прогнозирование не используется, прогнозирование выполняется следующим образом:

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

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

На высоком уровне в VVC о взвешенном прогнозировании сообщается в SPS, PPS и заголовке серии последовательных макроблоков. В SPS для этого используются следующие элементы синтаксиса:

Значение sps_weighted_pred_flag, равное 1, указывает, что взвешенное прогнозирование может применяться к P сериям последовательных макроблоков, относящимся к SPS. sps_weighted_pred_flag, равный 0, указывает, что взвешенное прогнозирование не применяется к P сериям последовательных макроблоков, относящимся к SPS;

sps_weighted_bipred_flag, равный 1, указывает, что явное взвешенное прогнозирование может быть применено к B сериям последовательных макроблоков, относящимся к SPS. Значение sps_weighted_bipred_flag, равное 0, указывает, что явное взвешенное прогнозирование не применяется к B сериям последовательных макроблоков, относящимся к SPS.

В PPS для этого используются следующие элементы синтаксиса:

Значение pps_weighted_pred_flag, равное 0, указывает, что взвешенное прогнозирование не применяется к P сериям последовательных макроблоков, относящимся к PPS. Значение pps_weighted_pred_flag, равное 1, указывает, что взвешенное прогнозирование применяется к P сериям последовательных макроблоков, относящимся к PPS. Когда sps_weighted_pred_flag равен 0, значение pps_weighted_pred_flag должно быть равно 0;

Значение pps_weighted_bipred_flag, равное 0, указывает, что явное взвешенное прогнозирование не применяется к B-сериям последовательных макроблоков, относящимся к PPS. Значение pps_weighted_bipred_flag, равное 1, указывает, что явное взвешенное прогнозирование применяется к B сериям последовательных макроблоков, относящимся к PPS. Когда sps_weighted_bipred_flag равен 0, значение pps_weighted_bipred_flag должно быть равно 0.

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

luma_log2_weight_denom - логарифм по основанию 2 знаменателя для всех весовых коэффициентов яркости. Значение luma_log2_weight_denom должно находиться в диапазоне от 0 до 7 включительно.

delta_chroma_log2_weight_denom - это разность логарифма по основанию 2 знаменателя для всех весовых коэффициентов цветности. Когда delta_chroma_log2_weight_denom отсутствует, предполагается, что он равен 0.

Переменная ChromaLog2WeightDenom получается равной luma_log2_weight_denom+delta_chroma_log2_weight_denom, и ее значение должно находиться в диапазоне от 0 до 7 включительно.

luma_weight_l0_flag[ i ], равное 1, указывает, что присутствуют весовые коэффициенты для компонента яркости прогнозирования списка 0 с использованием RefPicList[ 0 ][ i ]. luma_weight_l0_flag[ i ], равный 0, указывает, что эти весовые коэффициенты отсутствуют.

chroma_weight_l0_flag[ i ], равный 1, указывает, что присутствуют весовые коэффициенты для значений прогнозирования цветности списка 0 прогнозирования с использованием RefPicList[ 0 ][ i ]. chroma_weight_l0_flag[ i ], равный 0, указывает, что эти весовые коэффициенты отсутствуют. Когда chroma_weight_l0_flag[i] отсутствует, предполагается, что он равен 0.

delta_luma_weight_l0[ i ] - разница весового коэффициента, примененного к значению прогнозирования яркости для прогнозирования списка 0 с использованием RefPicList[ 0 ][ i ].

Переменная LumaWeightL0[i] получается равной (1 << luma_log2_weight_denom) + delta_luma_weight_l0[i]. Когда luma_weight_l0_flag[i] равно 1, значение delta_luma_weight_l0[i] должно находиться в диапазоне от -128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, LumaWeightL0[i] предполагается равным 2luma_log2_weight_denom.

luma_offset_l0[ i ] - аддитивное смещение, применяемое к значению прогнозирования яркости для прогнозирования списка 0 с использованием RefPicList[ 0 ][ i ]. Значение luma_offset_l0[ i ] должно находиться в диапазоне от -128 до 127 включительно. Когда luma_weight_l0_flag[i] равно 0, luma_offset_l0[i] считается равным 0.

delta_chroma_weight_l0[ i ][ j ] представляет собой разницу весового коэффициента, примененного к значениям прогнозирования цветности для прогнозирования списка 0 с использованием RefPicList[ 0 ][ i ] с j, равным 0 для Cb, и j, равным 1 для Cr.

Переменная ChromaWeightL0[i][j] получается равной (1 << ChromaLog2WeightDenom) + delta_chroma_weight_l0[i][j]. Когда chroma_weight_l0_flag[i] равно 1, значение delta_chroma_weight_l0[i][j] должно находиться в диапазоне от -128 до 127 включительно. Когда chroma_weight_l0_flag[ i ] равен 0, предполагается, что ChromaWeightL0[ i ][ j ] равен 2ChromaLog2WeightDenom.

delta_chroma_offset_l0[ i ][ j ] представляет собой разность аддитивного смещения, примененного к значениям прогнозирования цветности для прогнозирования списка 0 с использованием RefPicList[ 0 ][ i ] с j, равным 0 для Cb, и j, равным 1 для Cr.

Переменная ChromaOffsetL0[ i ][ j ] получается следующим образом:

ChromaOffsetL0[i][j]=Clip3(-128, 127, (128+delta_chroma_offset_l0[i][j] - ((128 * ChromaWeightL0[i][j]) >> ChromaLog2WeightDenom))

Значение delta_chroma_offset_l0[ i ][ j ] должно находиться в диапазоне от -4 * 128 до 4 * 127 включительно. Когда chroma_weight_l0_flag[i] равно 0, предполагается, что ChromaOffsetL0[i][j] равно 0.

luma_weight_l1_flag[i], chroma_weight_l1_flag[i], delta_luma_weight_l1[i], luma_offset_l1[i], delta_chroma_weight_l1[i][j] и delta_chroma_offset_l1[i][j] имеют ту же семантику, что и luma_weight_l0_flag[i], chroma_weight[i_l0_flag], delta_luma_weight_l0[i], luma_offset_l0[i], delta_chroma_weight_l0[i][j] и delta_chroma_offset_l0[i][j] соответственно, при этом l0, L0, list 0 и List0 заменены на l1, L1, list 1 и List1 соответственно.

Переменная sumWeightL0Flags получается равной сумме luma_weight_l0_flag[i] + 2 * chroma_weight_l0_flag[i], для i=0..NumRefIdxActive[0] - 1.

Если slice_type равен B, переменная sumWeightL1Flags получается равной сумме luma_weight_l1_flag[i] + 2 * chroma_weight_l1_flag[i], для i=0..NumRefIdxActive[1] - 1.

Требованием соответствия битового потока является то, что, когда slice_type равен P, sumWeightL0Flags должен быть меньше или равен 24, а когда slice_type равен B, сумма sumWeightL0Flags и sumWeightL1Flags должна быть меньше или равна 24.

Таблица 1. Синтаксис параметров взвешенного прогнозирования pred_weight_table () { Дескриптор luma_log2_weight_denom ue(v) if(ChromaArrayType!= 0) delta_chroma_log2_weight_denom се (в) for( i=0; i < NumRefIdxActive [ 0 ]; i ++ ) luma_weight_l0_flag[ я ] u(1) if(ChromaArrayType!= 0) for( i=0; i < NumRefIdxActive [ 0 ]; i ++ ) chroma_weight_l0_flag[ я ] u(1) for( я=0; я < NumRefIdxActive [ 0 ]; i ++ ) { if( luma_weight_l0_flag [ i ] ) { delta_luma_weight_l0luma_weight_l0[ i ] се (в) luma_offset_l0[ i ] се (в) } if( chroma_weight_l0_flag [ i ] ) for(j=0; j < 2; j++) { delta_chroma_weight_l0chroma_weight_l0[i][j] се (в) delta_chroma_offset_l0chroma_offset_l0[i][j] се (в) } } if( slice_type== B ) { for( i=0; я < NumRefIdxActive [ 1 ]; i ++ ) luma_weight_l1_flag[ я ] u(1) if(ChromaArrayType!= 0) for( i=0; я < NumRefIdxActive [ 1 ]; i ++ ) chroma_weight_l1_flag[ i ] u(1) for( i=0; я < NumRefIdxActive [ 1 ]; i ++ ) { if( luma_weight_l1_flag [ i ] ) { delta_luma_weight_l1luma_weight_l1[ i ] се (в) luma_offset_l1uma_offset_l1[ i ] се (в) } if( chroma_weight_l1_flag [ i ] ) for(j=0; j < 2; j++) { delta_chroma_weight_l1chroma_weight_l1[i][j] се (в) delta_chroma_offset_l1chroma_offset_l1[i][j] се (в) } } } }

В источнике JVET-O0244 (V. Seregin et al. “AHG17: On zero delta POC in reference picture structure,” 15th JVET meeting, Гетеборг, Швеция), указано, что в текущем проекте спецификации VVC опорные изображения сигнализируются в структуре опорного изображения (RPS), где abs_delta_poc_st представляет собой значение дельты POC, которое может быть равно 0. RPS может сигнализироваться в SPS и заголовке серии последовательных макроблоков. Эта функциональность необходима, чтобы сигнализировать о разных весовых коэффициентах для одного и того же эталонного изображения, и потенциально необходима, если поддерживается многоуровневая масштабируемость с одинаковыми значениями POC, используемыми на разных уровнях в единице доступа. Там утверждается, что повторяющиеся опорные изображения не нужны, когда взвешенное прогнозирование не разрешено. Среди прочего, в этом вкладе предлагается запретить нулевые значения дельты POC, когда взвешенное прогнозирование не включено.

Таблица 2. Синтаксис набора параметров последовательности RBSP (необработанная последовательность байтов полезной нагрузки) seq_parameter_set_rbsp () { Дескриптор sps_decoding_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sub_layers_minus1 u(3) sps_reserved_zero_5bits u(5) profile_tier_level (sps_max_sub_layers_minus1) gdr_enabled_flag u(1) sps_ ue(v) chroma_format_idc ue(v) if(chroma_format_idc== 3) separate_colour_plane_flag u(1) pic_width_max_in_luma_samples ue(v) pic_height_max_in_luma_samples ue(v) subpics_present_flag u(1) if(subpics_present_flag) { max_subpics_minus1 u(8) subpic_grid_col_width_minus1 u(v) subpic_grid_row_height_minus1 u(v) for(i=0; i < NumSubPicGridRows; i ++ ) for(j=0; j < NumSubPicGridCols; j++) subpic_grid_idx [ i ][ j ] u(v) for(i=0; я <= NumSubPics; i ++) { subpic_treated_as_pic_flag[ i ] u(1) loop_filter_across_subpic_enabled_flag[ i ] u(1) } } bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) min_qp_prime_ts_minus4 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) if(sps_max_sub_layers_minus1 > 0) sps_sub_layer_ordering_info_present_flag u(1) for( i=( sps_sub_layer_ordering_info_present_flag ? 0: sps_max_sub_layers_minus1); i <= sps_max_sub_layers_minus1; i++) { sps_max_dec_pic_buffering_minus1[ i ] ue(v) sps_max_num_reorder_pics[ я ] ue(v) sps_max_latency_increase_plus1[ i ] ue(v) } long_term_ref_pics_flag u(1) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1) for( я=0; я < !rpl1_same_as_rpl0_flag ? 2 : 1; i++) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j=0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct(i, j ) } if(ChromaArrayType!= 0) qtbtt_dual_tree_intra_flag u(1) log2_ctu_size_minus5 u(2) log2_min_luma_coding_block_size_minus2 ue(v) partition_constraints_override_enabled_flag u(1) sps_log2_diff_min_qt_min_cb_intra_slice_luma ue(v) sps_log2_diff_min_qt_min_cb_inter_slice ue(v) sps_max_mtt_hierarchy_depth_inter_slice ue(v) sps_max_mtt_hierarchy_depth_intra_slice_luma ue(v) if(sps_max_mtt_hierarchy_depth_intra_slice_luma!= 0) { sps_log2_diff_max_bt_min_qt_intra_slice_luma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_luma ue(v) } if(sps_max_mtt_hierarchy_depth_inter_slices!= 0) { sps_log2_diff_max_bt_min_qt_inter_slice ue(v) sps_log2_diff_max_tt_min_qt_inter_slice ue(v) } если (qtbtt_dual_tree_intra_flag) { sps_log2_diff_min_qt_min_cb_intra_slice_chroma ue(v) sps_max_mtt_hierarchy_depth_intra_slice_chroma ue(v) if(sps_max_mtt_hierarchy_depth_intra_slice_chroma!= 0) { sps_log2_diff_max_bt_min_qt_intra_slice_chroma ue(v) sps_log2_diff_max_tt_min_qt_intra_slice_chroma ue(v) } } sps_max_luma_transform_size_64_flag u(1) if(ChromaArrayType!= 0) { same_qp_table_for_chroma u(1) for( i=0; i < same_qp_table_for_chroma ? 1 : 3; i++) { num_points_in_qp_table_minus1[ я ] ue(v) for(j=0; j <= num_points_in_qp_table_minus1[i]; j++) { delta_qp_in_val_minus1[i][j] ue(v) delta_qp_out_val[i][j] ue(v) } } } sps_weighted_pred_flag u(1) sps_weighted_bipred_flag u(1) sps_sao_enabled_flag u(1) sps_alf_enabled_flag u(1) sps_transform_skip_enabled_flag u(1) if(sps_transform_skip_enabled_flag) sps_bdpcm_enabled_flag u(1) sps_joint_cbcr_enabled_flag u(1) sps_ref_wraparound_enabled_flag u(1) если (sps_ref_wraparound_enabled_flag) sps_ref_wraparound_offset_minus1 ue(v) sps_temporal_mvp_enabled_flag u(1) if(sps_temporal_mvp_enabled_flag) sps_sbtmvp_enabled_flag u(1) sps_amvr_enabled_flag u(1) sps_bdof_enabled_flag u(1) sps_smvdsmvd_enabled_flag u(1) sps_dmvr_enabled_flag u(1) if(sps_bdof_enabled_flag | | sps_dmvr_enabled_flag) sps_bdof_dmvr_slice_present_flag u(1) sps_mmvd_enabled_flag u(1) sps_isp_enabled_flag u(1) sps_mrl_enabled_flag u(1) sps_mip_enabled_flag u(1) if(ChromaArrayType!= 0) sps_cclm_enabled_flag u(1) if(sps_cclm_enabled_flag && chroma_format_idc == 1) sps_cclm_colocated_chroma_flag u(1) sps_mts_enabled_flag u(1) if(sps_mts_enabled_flag) { sps_explicit_mts_intra_enabled_flag u(1) sps_explicit_mts_inter_enabled_flag u(1) } sps_sbt_enabled_flag u(1) if(sps_sbt_enabled_flag) sps_sbt_max_size_64_flag u(1) sps_affineaffine_enabled_flag u(1) if(sps_affine_enabled_flag) { sps_affine_type_flag u(1) sps_affine_amvr_enabled_flag u(1) sps_affine_prof_enabled_flag u(1) } if( chroma_format_idc== 3 ) sps_palette_enabled_flag u(1) sps_bcw_enabled_flag u(1) sps_ibc_enabled_flag u(1) sps_ciip_enabled_flag u(1) if(sps_mmvd_enabled_flag) sps_fpel_mmvd_enabled_flag u(1) sps_triangletriangle_enabled_flag u(1) sps_lmcs_enabled_flag u(1) sps_lfnst_enabled_flag u(1) sps_ladf_enabled_flag u(1) if(sps_ladf_enabled_flag) { sps_num_ladf_intervals_minus2 u(2) sps_ladf_lowest_interval_qp_offset се (в) for(i=0; i < sps_num_ladf_intervals_minus2+1; i ++) { sps_ladf_qp_offset[ i ] се (в) sps_ladf_delta_threshold_minus1[ i ] ue(v) } } sps_scaling_list_enabled_flag u(1) hrd_parameters_present_flag u(1) if(general_hrd_parameters_present_flag) { num_units_in_tick u(32) time_scale u(32) sub_layer_cpb_parameters_present_flag u(1) if(sub_layer_cpb_parameters_present_flag) general_hrd_parameters (0, sps_max_sub_layers_minus1) else general_hrd_parameters (sps_max_sub_layers_minus1, sps_max_sub_layers_minus1) } vui_parameters_present_flag u(1) если (vui_parameters_present_flag) vui_parameters() sps_extension_flag u(1) if(sps_extension_flag) while (more_rbsp_data()) sps_extension_data_flag u(1) rbsp_trailing_bits () }

Таблица 3. Синтаксис структуры списка опорных изображений ref_pic_list_struct (listIdx, rplsIdx) { Дескриптор num_ref_entries[ listIdx ][ rplsIdx ] ue(v) if(long_term_ref_pics_flag ) ltrp_in_slice_header_flag[listIdx][rplsIdx] u(1) for( i=0, j=0; i < num_ref_entries[listIdx][rplsIdx]; i++) { if(inter_layer_ref_pics_present_flag ) inter_layer_ref_pic_flag[listIdx][rplsIdx][i] u(1) if(!inter_layer_ref_pics_flag[listIdx][rplsIdx][i]) { if(long_term_ref_pics_flag ) st_ref_pic_flag[listIdx][rplsIdx][i] u(1) if(st_ref_pic_flag[listIdx][rplsIdx][i]) { abs_delta_poc_st[listIdx][rplsIdx][i] ue(v) if( AbsDeltaPocSt [ listIdx ][ rplsIdx ][ i ] > 0 ) strp_entry_sign_flag[ listIdx][rplsIdx][i] u(1) } else if( !ltrp_in_slice_header_flag[ listIdx ][ rplsIdx ] ) rpls_poc_lsb_lt[listIdx][rplsIdx][j++] u(v) } else ilrp_idc[listIdx][rplsIdx][i] ue(v) } }

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

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

- В противном случае (присутствует в SPS) синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) определяет кандидата в список опорных изображений listIdx, а термин «текущее изображение» в семантике, указанной в оставшейся части этого пункта, относится к каждому изображению, которое: (1) имеет один или более фрагментов, содержащих ref_pic_list_idx[ listIdx ], равный индексу в списке синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ), включенных в SPS, и (2) находится в CVS, который относится к SPS.

num_ref_entries[ listIdx ][ rplsIdx ] указывает количество записей в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Значение num_ref_entries[ listIdx ][ rplsIdx ] должно находиться в диапазоне от 0 до sps_max_dec_pic_buffering_minus1+14 включительно.

Значение ltrp_in_slice_header_flag[listIdx][rplsIdx], равное 0, указывает, что младшие разряды POC записей LTRP в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx) присутствуют в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx). ltrp_in_slice_header_flag[listIdx][rplsIdx], равное 1, указывает, что младшие разряды POC записей LTRP в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx) отсутствуют в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx).

inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ], равный 1, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью ILRP. inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ], равный 0, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) не является записью ILRP. Если он отсутствует, предполагается, что значение inter_layer_ref_pic_flag[ listIdx ][ rplsIdx ][ i ] равно 0.

st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ], равный 1, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью STRP. st_ref_pic_flag[ listIdx ][ rplsIdx ][ i ], равный 0, указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) является записью LTRP. Когда inter_layer_ref_pic_flag[listIdx][rplsIdx][i] равен 0, а st_ref_pic_flag[listIdx][rplsIdx][i] отсутствует, значение st_ref_pic_flag[listIdx][rplsIdx][i] считается равным 1.

Переменная NumLtrpEntries[listIdx][rplsIdx] получается следующим образом:

for( i=0, NumLtrpEntries[listIdx][rplsIdx]=0; i < num_ref_entries[listIdx][rplsIdx]; i++) if(!inter_layer_ref_pic_flag[listIdx][rplsIdx][i] && !st_ref_pic_flag[listIdx][rplsIdx] [ i ] ) NumLtrpEntries[ listIdx ][ rplsIdx ]++

abs_delta_poc_st[listIdx][rplsIdx][i] указывает значение переменной AbsDeltaPocSt[listIdx][rplsIdx][i] следующим образом:

if( sps_weighted_pred_flag | | sps_weighted_bipred_flag ) AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ]=abs_delta_poc_st[ listIdx ][ rplsIdx ][ i ] else AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ]=abs_delta][ ips_dx_st[ listIdx ][ rplsIdx ][ i ]=abs_delta][ ips_poc_st[ список] + 1

Значение abs_delta_poc_st[listIdx][rplsIdx][i] должно быть в диапазоне от 0 до 215-1 включительно.

strp_entry_sign_flag[listIdx][rplsIdx][i] равное 1 указывает, что i-я запись в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx) имеет значение больше или равное 0. strp_entry_sign_flag[listIdx][rplsIdx][i] equal значение 0 указывает, что i-я запись в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) имеет значение меньше 0. Если он отсутствует, предполагается, что значение strp_entry_sign_flag[listIdx][rplsIdx][i] равно 1.

Список DeltaPocValSt[ listIdx ][ rplsIdx ] получается следующим образом:

for( i=0; i < num_ref_entries[listIdx][rplsIdx]; i++) if(!inter_layer_ref_pic_flag[ listIdx][rplsIdx][i] && st_ref_pic_flag[listIdx][rplsIdx][i]) DeltaPocValSt[listIdx][rplsIdx] [ i ]=( strp_entry_sign_flag [ listIdx ][ rplsIdx ][ i ] ) ? AbsDeltaPocSt[listIdx][rplsIdx][i]: 0 - AbsDeltaPocSt[listIdx][rplsIdx][i]

rpls_poc_lsb_lt[listIdx][rplsIdx][i] задает значение счетчика порядка изображений по модулю MaxPicOrderCntLsb изображения, к которому относится i-я запись в синтаксической структуре ref_pic_list_struct(listIdx, rplsIdx). Длина синтаксического элемента rpls_poc_lsb_lt[listIdx][rplsIdx][i] составляет log2_max_pic_order_cnt_lsb_minus4+4 бита.

ilrp_idc[ listIdx ][ rplsIdx ][ i ] указывает индекс в списке непосредственно зависимых уровней ILRP i-й записи в синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ) в списке непосредственно зависимых уровней. Значение ilrp_idc[listIdx][rplsIdx][i] должно находиться в диапазоне от 0 до GeneralLayerIdx[nuh_layer_id] - 1 включительно.

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

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

Таблица 4. Синтаксис RBSP набора параметров последовательности (1-й вариант осуществления) seq_parameter_set_rbsp () { Дескриптор sps_decoding_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sub_layers_minus1 u(3) sps_reserved_zero_5bits u(5) profile_tier_level (sps_max_sub_layers_minus1) gdr_enabled_flag u(1) sps_ ue(v) chroma_format_idc ue(v) if(chroma_format_idc== 3) separate_colour_plane_flag u(1) pic_width_max_in_luma_samples ue(v) pic_height_max_in_luma_samples ue(v) subpics_present_flag u(1) if(subpics_present_flag) { max_subpics_minus1 u(8) subpic_grid_col_width_minus1 u(v) subpic_grid_row_height_minus1 u(v) for(i=0; i < NumSubPicGridRows; i ++ ) for(j=0; j < NumSubPicGridCols; j++) subpic_grid_idx [ i ][ j ] u(v) for(i=0; я <= NumSubPics; i ++) { subpic_treated_as_pic_flag[ i ] u(1) loop_filter_across_subpic_enabled_flag[ i ] u(1) } } bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) min_qp_prime_ts_minus4 ue(v) sps_weighted_pred_flag u(1) sps_weighted_bipred_flag u(1) log2_max_pic_order_cnt_lsb_minus4 ue(v) if(sps_max_sub_layers_minus1 > 0) sps_sub_layer_ordering_info_present_flag u(1) for( i=( sps_sub_layer_ordering_info_present_flag ? 0: sps_max_sub_layers_minus1); i <= sps_max_sub_layers_minus1; i++) { sps_max_dec_pic_buffering_minus1[ i ] ue(v) sps_max_num_reorder_pics[ i ] ue(v) sps_max_latency_increase_plus1[ i ] ue(v) } long_term_ref_pics_flag u(1) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) rpl1_same_as_rpl0_flag u(1) for( i=0; i < !rpl1_same_as_rpl0_flag ? 2 : 1; i++) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j=0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j ) }

А значение дельты POC (переменная AbsDeltaPocSt) условно реконструируется на стороне декодера следующим образом:

abs_delta_poc_st[listIdx][rplsIdx][i] указывает значение переменной AbsDeltaPocSt[listIdx][rplsIdx][i] следующим образом:

if( sps_weighted_pred_flag | | sps_weighted_bipred_flag ) AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ]=abs_delta_poc_st[ listIdx ][ rplsIdx ][ i ] else AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ]=abs_delta][ ips_poc_st[ список+1

Блок-схема на фиг. 7 иллюстрирует описанный выше способ. На этапе 701 сигнализируются параметры взвешенного прогнозирования (в частности, sps_weighted_pred_flag и sps_weighted_bipred_flag). В зависимости от их значения сигнализация списка 702 опорных изображений выполняется по-разному. В частности, когда sps_weighted_pred_flag или sps_weighted_bipred_flag имеет значение true, AbsDeltaPocSt может иметь значение 0. В противном случае AbsDeltaPocSt реконструируется из битового потока с использованием увеличенного значения abs_delta_poc_st, что запрещает нулевые значения AbsDeltaPocSt.

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

Таблица 5. Синтаксис RBSP набора параметров последовательности (2-й вариант осуществления) seq_parameter_set_rbsp () { Дескриптор sps_decoding_parameter_set_id u(4) sps_video_parameter_set_id u(4) sps_max_sub_layers_minus1 u(3) sps_reserved_zero_5bits u(5) profile_tier_level (sps_max_sub_layers_minus1) gdr_enabled_flag u(1) sps_ ue(v) chroma_format_idc ue(v) if (chroma_format_idc== 3) separate_colour_plane_flag u(1) pic_width_max_in_luma_samples ue(v) pic_height_max_in_luma_samples ue(v) subpics_present_flag u(1) if (subpics_present_flag) { max_subpics_minus1 u(8) subpic_grid_col_width_minus1 u(v) subpic_grid_row_height_minus1 u(v) for(i=0; я < NumSubPicGridRows; i++ ) for(j=0; j < NumSubPicGridCols; j++) subpic_grid_idx [ i ][ j ] u(v) for(i=0; я <= NumSubPics; i++) { subpic_treated_as_pic_flag[ i ] u(1) loop_filter_across_subpic_enabled_flag[ i ] u(1) } } bit_depth_luma_minus8 ue(v) bit_depth_chroma_minus8 ue(v) min_qp_prime_ts_minus4 ue(v) log2_max_pic_order_cnt_lsb_minus4 ue(v) if(sps_max_sub_layers_minus1 > 0) sps_sub_layer_ordering_info_present_flag u(1) for( i=( sps_sub_layer_ordering_info_present_flag ? 0: sps_max_sub_layers_minus1); i <= sps_max_sub_layers_minus1; i++) { sps_max_dec_pic_buffering_minus1[ i ] ue(v) sps_max_num_reorder_pics[ i ] ue(v) sps_max_latency_increase_plus1[ i ] ue(v) } long_term_ref_pics_flag u(1) inter_layer_ref_pics_present_flag u(1) sps_idr_rpl_present_flag u(1) RestrictWPFlag=false rpl1_same_as_rpl0_flag u(1) for( i=0; i < !rpl1_same_as_rpl0_flag ? 2 : 1; i++) { num_ref_pic_lists_in_sps[ i ] ue(v) for( j=0; j < num_ref_pic_lists_in_sps[ i ]; j++) ref_pic_list_struct( i, j ) } if(!RestrictWPFlag) { sps_weighted_pred_flag u(1) sps_weighted_bipred_flag u(1) }

Таблица 6. Синтаксис ref_pic_list_struct (2-й вариант осуществления) ref_pic_list_struct (listIdx, rplsIdx) { Дескриптор num_ref_entries[ listIdx ][ rplsIdx ] ue(v) if(long_term_ref_pics_flag ) ltrp_in_slice_header_flag[listIdx][rplsIdx] u(1) for( i=0, j=0; i < num_ref_entries[listIdx][rplsIdx]; i++) { if(inter_layer_ref_pics_present_flag ) inter_layer_ref_pic_flag[listIdx][rplsIdx][i] u(1) if(!inter_layer_ref_pics_flag[listIdx][rplsIdx][i]) { if(long_term_ref_pics_flag ) st_ref_pic_flag[listIdx][rplsIdx][i] u(1) if(st_ref_pic_flag[listIdx][rplsIdx][i]) { abs_delta_poc_st[listIdx][rplsIdx][i] ue(v) if( AbsDeltaPocSt [ listIdx ][ rplsIdx ][ i ] > 0 ) strp_entry_sign_flag[ listIdx][rplsIdx][i] u(1) else RestrictWPFlag=true } else if( !ltrp_in_slice_header_flag[ listIdx ][ rplsIdx ] ) rpls_poc_lsb_lt[listIdx][rplsIdx][j++] u(v) } else ilrp_idc[listIdx][rplsIdx][i] ue(v) } }

Фиг. 8 иллюстрирует способ, раскрытый в этом варианте осуществления. В соответствии с порядком кодирования, определенным в таблице 5, список 801 опорных изображений передается перед сигнализацией параметров 803 взвешенного прогнозирования. Параметры 803 взвешенного прогнозирования сигнализируются только тогда, когда список опорных изображений содержит по меньшей мере один элемент с AbsDeltaPocSt, равным 0. Эта проверка выполняется на этапе 802 с помощью переменной RestrictWPFlag, инициализированной значением false и установленной на значение true, когда нулевое значение AbsDeltaPocSt возникает во время проверки каждого элемента списка контрольных изображений.

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

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

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

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

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

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

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

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

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

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

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

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

Фиг. 11 иллюстрирует способ кодирования согласно первому аспекту настоящего изобретения. Способ кодирования согласно первому аспекту содержит этапы:

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

1102. кодирования по меньшей мере одного параметра взвешенного прогнозирования HLS; и

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

Фиг. 12 иллюстрирует способ кодирования согласно второму аспекту настоящего изобретения. Способ кодирования согласно второму аспекту содержит этапы:

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

1202. кодирования определенных элементов синтаксиса в порядке кодирования с ограничением на бинаризацию элемента синтаксиса, который имеет более позднее положение в порядке кодирования; при этом, если по меньшей мере один параметр взвешенного прогнозирования HLS кодируется после структуры списка опорных изображений в порядке кодирования, ограничение на бинаризацию элементов синтаксиса содержит: кодирование по меньшей мере одного параметра взвешенного прогнозирования HLS только если список опорных изображений имеет по крайней мере один элемент со значением дельты POC, равным нулю.

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

1301. прием битового потока;

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

1303. выполнение прогнозирования на основе полученных элементов синтаксиса для получения блока прогнозирования;

1304. реконструкцию реконструированного блока на основе блока прогнозирования; и

1305. получение декодированного изображения на основе реконструированного блока.

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

1401. прием битового потока;

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

1403. выполнение прогнозирования на основе полученных элементов синтаксиса для получения блока прогнозирования;

1404. реконструкцию восстановленного блока на основе блока прогнозирования; и

1405. получение декодированного изображения на основе реконструированного блока.

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

Фиг. 16 иллюстрирует декодер согласно девятому аспекту настоящего изобретения. Декодер 1600 содержит приемное средство 1601 для приема битового потока; средство 1602 энтропийного декодирования для энтропийного декодирования битового потока для получения элементов синтаксиса, при этом элементы синтаксиса содержат структуру списка опорных изображений и по меньшей мере один параметр взвешенного прогнозирования синтаксиса высокого уровня (HLS), причем в элементах синтаксиса по меньшей мере один взвешенный HLS параметры прогнозирования энтропийно декодируются до структуры списка опорных изображений; средство 1603 прогнозирования для выполнения прогнозирования на основе полученных элементов синтаксиса для получения блока прогнозирования; средство 1604 реконструкции для реконструкции реконструированного блока на основе блока прогнозирования; и средство 1605 получения для получения декодированного изображения на основе реконструированного блока.

Фиг. 17 иллюстрирует кодер согласно десятому аспекту настоящего изобретения. Кодер 1700 содержит: один или более процессоров 1701; и постоянный машиночитаемый носитель 1702 данных, соединенный с процессорами 1701 и хранящий программу для выполнения процессорами 1701, при этом программа при выполнении процессорами 1701 конфигурирует кодер 1700 для выполнения способа в соответствии с первым аспектом, любой из первой - седьмой форм реализации первого аспекта, или второго аспекта.

Фиг. 18 иллюстрирует кодер согласно одиннадцатому аспекту настоящего изобретения. Кодер 1800 содержит: средство 1801 определения для определения кодируемых элементов синтаксиса, при этом элементы синтаксиса включают в себя структуру списка опорных изображений и по меньшей мере один параметр взвешенного прогнозирования синтаксиса высокого уровня (HLS); и средство 1802 кодирования для кодирования по меньшей мере одного параметра взвешенного прогнозирования HLS и для кодирования структуры списка опорных изображений после кодирования по меньшей мере одного параметра взвешенного прогнозирования HLS.

Настоящее раскрытие предусматривает следующие дополнительные примерные варианты осуществления:

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

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

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

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

3. Примерный вариант осуществления: Способ по примерному варианту осуществления 1 или 2, в котором по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования.

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

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

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

если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования, и флаг набора параметров последовательности для взвешенного двойного прогнозирования установлен в 0, сигнализацию измененного значения дельты POC для элемента списка опорных изображений, в котором измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt); или

если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования, и по меньшей мере одно из флага набора параметров последовательности для взвешенного двойного прогнозирования и флага набора параметров последовательности для взвешенного однократного прогнозирования установлено в 0, сигнализацию измененного значения дельты POC для элемента списка опорных изображений, при этом измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования ( AbsDeltaPocSt); или

если по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования, и флаг набора параметров последовательности для взвешенного двойного прогнозирования и флаг набора параметров последовательности для взвешенного однократного прогнозирования установлен в 0, сигнализацию измененного значения дельты POC для элемента списка опорных изображений, при этом измененное значение дельты POC (abs_delta_poc_st) меньше значения дельты POC, используемого в процессе кодирования (AbsDeltaPocSt).

6. Примерный вариант осуществления: Способ по примерному варианту осуществления 4 или 5, в котором измененное значение дельты POC меньше значения дельты POC, используемого в процессе кодирования, на 1.

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

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

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

прием битового потока;

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

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

реконструкцию реконструированного блока на основе блока прогнозирования; и

получение декодированного изображения на основе реконструированного блока.

9. Примерный вариант осуществления: Способ по примерному варианту осуществления 8, в котором по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя по меньшей мере одно из флага набора параметров последовательности для взвешенного однократного прогнозирования и флага набора параметров последовательности для взвешенного двойного прогнозирования.

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

прием битового потока;

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

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

реконструкцию реконструированного блока на основе блока прогнозирования; и

получение декодированного изображения на основе реконструированного блока.

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

12. Примерный вариант осуществления: Способ по примерному варианту осуществления 11, в котором, если значение предварительно установленного флага, соответствующего списку опорных изображений, имеет по меньшей мере один элемент со значением дельты POC, равным нулю, элементы синтаксиса включают в себя по меньшей мере один параметр взвешенного прогнозирования HLS; или

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

13. Примерный вариант осуществления: Способ по любому из примерных вариантов осуществления 10-12, в котором по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя по меньшей мере одно из флага набора параметров последовательности для взвешенного однократного прогнозирования и флага набора параметров последовательности для взвешенного двойного прогнозирования.

14. Примерный вариант осуществления: Способ по любому из примерных вариантов осуществления 10-13, в котором предварительно установленным флагом является RestrictWPFlag, как определено в описании.

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

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

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

18. Примерный вариант осуществления: Декодер, содержащий:

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

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

19. Примерный вариант осуществления: Кодер, содержащий:

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

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

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

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

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

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

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

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

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

x && y

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

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

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

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

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

> Больше

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

< Меньше

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

= == Равно

!=Не равно

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

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

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

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

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

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

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

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

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

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

= Assignment operator

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

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

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

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

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

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

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

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

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

Abs( x )=

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

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

Atan2( y, x )=

Ceil( x )

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

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

Clip3( x, y, z )=

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

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

GetCurrMsb( a, b, c, d )=

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

Log2( x )

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

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

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

Sqrt( x )=

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

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

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

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

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

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

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

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

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

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

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

if( condition 0 ) statement 0 else if( condition 1 ) statement 1 ... else /* информативный комментарий по оставшемуся условию */ statement n

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

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

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

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

- ...

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

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

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

if( condition 0a && condition 0b ) statement 0 else if( condition 1a | | condition 1b ) statement 1 ... else statement n

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

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

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

-

-

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

-

-

- ...

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

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

if( condition 0 ) statement 0 if( condition 1 ) statement 1

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

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

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

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

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

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

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

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

название год авторы номер документа
СПОСОБ И УСТРОЙСТВО ДЛЯ ОБРАБОТКИ ВИДЕОСИГНАЛА ПОСРЕДСТВОМ ИСПОЛЬЗОВАНИЯ ВНЕШНЕГО ПРОГНОЗИРОВАНИЯ 2020
  • Палури, Сеетхал
  • Ким, Сеунгхван
RU2769347C1
СПОСОБ И УСТРОЙСТВО ДЛЯ ОБРАБОТКИ ВИДЕОСИГНАЛА ПОСРЕДСТВОМ ИСПОЛЬЗОВАНИЯ ВНЕШНЕГО ПРОГНОЗИРОВАНИЯ 2020
  • Палури, Сеетхал
  • Ким, Сеунгхван
RU2793834C2
СПОСОБ И АППАРАТНЫЙ КОМПОНЕНТ СИГНАЛИЗАЦИИ ЧИСЛА КАНДИДАТОВ ДЛЯ РЕЖИМА СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Руфицкий, Василий Алексеевич
  • Алшина, Елена Александровна
RU2823267C1
СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Чэнь, Хуаньбан
  • Руфицкий, Василий Алексеевич
  • Ян, Хайтао
  • Алшина, Елена Александровна
RU2821011C1
УПРАВЛЕНИЕ ОПОРНЫМ ИЗОБРАЖЕНИЕМ ПРИ ВИДЕОКОДИРОВАНИИ 2019
  • Хендри, Фну
  • Ван, Е-Куй
RU2795700C2
РАСШИРЕНИЕ ЗАГОЛОВКА ВЫРЕЗКИ ДЛЯ ТРЕХМЕРНОГО ВИДЕО ДЛЯ ПРОГНОЗИРОВАНИЯ ЗАГОЛОВКОВ ВЫРЕЗОК 2012
  • Чэнь Ин
  • Ван Е-Куй
  • Карчевич Марта
RU2549168C1
СИГНАЛИЗАЦИЯ СИНТАКСИЧЕСКИХ ЭЛЕМЕНТОВ НА УРОВНЕ БЕЗ ИЗОБРАЖЕНИЙ НА УРОВНЕ ИЗОБРАЖЕНИЙ 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чэнь, Цзяньлэ
RU2826697C1
ПРОГНОЗИРОВАНИЕ ЗАГОЛОВКОВ ФРАГМЕНТОВ ДЛЯ КАРТ ГЛУБИНЫ В ТРЕХМЕРНЫХ ВИДЕОКОДЕКАХ 2012
  • Чэнь Ин
  • Карчевич Марта
RU2562419C1
КОДЕР, ДЕКОДЕР И СООТВЕТСТВУЮЩИЕ СПОСОБЫ 2020
  • Ма, Сян
  • Ян, Хайтао
RU2823668C1
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО 2020
  • Ван, Е-Куй
RU2822511C1

Иллюстрации к изобретению RU 2 822 506 C1

Реферат патента 2024 года СПОСОБ И УСТРОЙСТВО СИГНАЛИЗАЦИИ ВЫСОКОГО УРОВНЯ ДЛЯ ВЗВЕШЕННОГО ПРОГНОЗИРОВАНИЯ

Изобретение относится к области кодирования и в частности к передискретизации остаточного блока с адаптацией к форме для кодирования неподвижного изображения и видео. Технический результат заключается в повышении эффективности кодирования. Предложен способ кодирования, содержащий: определение элементов синтаксиса, подлежащих кодированию, при этом элементы синтаксиса включают в себя структуру списка опорных изображений и по меньшей мере один параметр взвешенного прогнозирования синтаксиса высокого уровня (HLS); кодирование по меньшей мере одного параметра взвешенного прогнозирования HLS; и кодирование структуры списка опорных изображений после кодирования по меньшей мере одного параметра взвешенного прогнозирования HLS. Элементы синтаксиса переупорядочиваются таким образом, что кодирование структуры списка опорных изображений может быть основано на значениях по меньшей мере одного параметра взвешенного прогнозирования HLS. 6 н. и 10 з.п. ф-лы, 19 ил., 6 табл.

Формула изобретения RU 2 822 506 C1

1. Способ кодирования, причём способ содержит этапы, на которых:

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

кодируют по меньшей мере один параметр взвешенного прогнозирования HLS; и

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

2. Способ по п. 1, в котором список опорных изображений, полученный из структуры списка опорных изображений, содержит опорные изображения, имеющие одинаковый параметр подсчета порядка изображений (РОС).

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

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

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

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

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

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

принимают битовый поток;

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

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

реконструируют реконструированный блок на основе блока прогнозирования; и

получают декодированное изображение на основе реконструированного блока.

8. Способ по п. 7, в котором по меньшей мере один параметр взвешенного прогнозирования HLS включает в себя по меньшей мере одно из флага набора параметров последовательности для взвешенного однократного прогнозирования и флага набора параметров последовательности для взвешенного двойного прогнозирования.

9. Способ по п. 7 или 8, в котором декодирование битового потока для получения элементов синтаксиса выполняется посредством энтропийного декодирования.

10. Способ по любому из пп. 7-9, в котором выполнение прогнозирования на основе полученных элементов синтаксиса для получения блока прогнозирования содержит этапы, на которых:

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

выполняют прогнозирование на основе значения дельты POC.

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

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

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

12. Способ по п. 10 или 11, в котором элементом синтаксиса в структуре списка опорных изображений является abs_delta_poc_st; причём значение дельты POC получается следующим образом:

if( sps_weighted_pred_flag | | sps_weighted_bipred_flag )

AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ]=abs_delta_poc_st[ listIdx ][ rplsIdx ][ i ]

else AbsDeltaPocSt[ listIdx ][ rplsIdx ][ i ]=abs_delta][ ips_poc_st[ list+1

причём AbsDeltaPocSt[listIdx][rplsIdx][i] является абсолютным значением дельты POC, abs_delta_poc_st[listIdx][rplsIdx][i] является элементом синтаксиса в структуре списка опорных изображений.

13. Декодер, содержащий:

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

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

14. Кодер, содержащий:

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

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

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

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

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

SEREGIN V
et al., AHG17: On zero delta POC in reference picture structure, Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-O0244, 15th Meeting: Gothenburg, 3-12 July 2019
BROSS B
et al., Versatile Video Coding (Draft 6), Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11,

RU 2 822 506 C1

Авторы

Филиппов, Алексей Константинович

Руфицкий, Василий Алексеевич

Алшина, Елена Александровна

Даты

2024-07-08Публикация

2020-09-07Подача