Способ и устройство для кодирования видеоданных
METHOD AND APPARATUS FOR ENCODING VIDEO DATA

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИ
[0001] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента США №16/878,390 "Способ и устройство для кодирования видеоданных", поданной 19 мая 2020 года, по которой испрашивался приоритет согласно предварительной заявке на выдачу патента США №62/860,149 "Управление посредством синтаксиса высокого уровня при включении неявного выбора преобразования", поданной 11 июня 2019 года. Содержание предшествующих заявок полностью включено в настоящее описание путем ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В настоящей заявке описаны варианты осуществления изобретения, в целом относящиеся к кодированию видеоданных.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0003] Описание уровня техники приведено здесь для представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.
[0004] Кодирование и декодирование видеоданных может осуществляться с использованием внешнего предсказания изображения с компенсацией движения. Цифровое видео без сжатия может включать последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.
[0005] Одной целью кодирования и декодирования видеоданных может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так что реконструированный сигнал можно использовать для намеченного применения. Сжатие с потерями широко применяется для видеоданных. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.
[0006] Кодер и декодер видеоданных могут использовать методы на основе нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.
[0007] Технологии видеокодеков могут включать методы, известные как внутреннее кодирование. При внутреннем кодировании значения отсчетов представлены без ссылки на отсчеты или другие данные из ранее реконструированных опорных изображений. В некоторых видеокодеках изображение пространственно разбивается на блоки отсчетов. Когда все блоки отсчетов кодируются в режиме внутреннего кодирования, это изображение является изображением с внутренним кодированием. Изображения с внутренним кодированием и их производные, такие как изображения обновления независимого декодера, могут использоваться для сброса состояния декодера и, следовательно, могут использоваться в качестве первого изображения в кодированном битовом потоке видеоданных и видеосеансе или в качестве неподвижного изображения. Отсчеты блока с внутренним кодированием могут подвергаться преобразованию, а коэффициенты преобразования могут квантоваться перед энтропийным кодированием. Внутреннее предсказание может быть методом, который минимизирует значения отсчетов в области до преобразования. В некоторых случаях, чем меньше значение DC после преобразования и чем меньше коэффициенты АС, тем меньше битов требуется при заданном размере шага квантования для представления блока после энтропийного кодирования.
[0008] Традиционное внутреннее кодирование, например, известное из технологий кодирования поколения MPEG-2, не использует внутреннее предсказание. Однако некоторые новые технологии сжатия видеоданных включают методы, которые используют предсказание, например, из данных окружающих отсчетов и/или метаданных, полученных во время кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования блоков данных. Такие методы в дальнейшем называются методами "внутреннего предсказания". Следует отметить, что по меньшей мере в некоторых случаях внутреннее предсказание использует только опорные данные из текущего реконструируемого изображения, а не из опорных изображений.
[0009] Существует много различных форм внутреннего предсказания. Когда в данной технологии кодирования видеоданных может использоваться более одного из таких методов, применяемый метод может использоваться в режиме внутреннего предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, которые могут кодироваться индивидуально или включаться в кодовое слово режима. Кодовое слово, используемое для данной комбинации режима/подрежима/параметра, может повлиять на повышение эффективности кодирования за счет внутреннего предсказания, как и технология энтропийного кодирования, используемая для преобразования кодовых слов в битовый поток.
[0010] Режим внутреннего предсказания был введен в Н.264, усовершенствован в Н.265 и дополнительно усовершенствован в новых технологиях кодирования, таких как совместная модель исследования (JEM, joint exploration model), универсальное кодирование видеоданных (VVC, versatile video coding) и набор эталонов (BMS, benchmark set). Блок предсказателя может быть сформирован с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения соседних отсчетов копируются в блок предсказания в соответствии с направлением. Ссылка на используемое направление может кодироваться в битовом потоке или сама может быть предсказана.
[0011] Компенсация движения может быть методом сжатия с потерями и может относиться к методам, в которых блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения) после пространственного сдвига в направлении, указанном вектором движения (MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В некоторых случаях опорное изображение может быть таким же, как реконструируемое в настоящий момент изображение. Векторы движения могут иметь два измерения X и Υ или три измерения, при этом третье измерение указывает на используемое опорное изображение (последнее, косвенно, может быть измерением времени).
[0012] В некоторых методах сжатия видеоданных вектор движения, применимый к определенной области данных отсчетов, может быть предсказан на основе других векторов движения, например, на основе тех, которые связаны с другой областью данных отсчетов, соседней с реконструируемой областью, и предшествуют этому вектору движения в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования вектора движения, что устраняет избыточность и увеличивает степень сжатия. Предсказание вектора движения может работать эффективно, например, потому что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим один вектор движения, перемещаются в сходном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием сходного вектора движения, полученного из векторов движения соседней области. Это приводит к тому, что вектор движения, найденный для данной области, является сходным вектору движения, предсказанному на основе окружающих векторов движения, или совпадает с ним и, в свою очередь, может быть представлен после энтропийного кодирования меньшим количеством битов, чем в случае непосредственного кодирования вектора движения. В некоторых случаях предсказание вектора движения может быть примером сжатия без потерь сигнала (а именно, векторов движения), полученного из исходного сигнала (а именно, потока отсчетов). В других случаях само предсказание векторов движения может быть с потерями, например, из-за ошиоок округления при вычислении предсказателя на основе нескольких окружающих векторов движения.
[0013] Различные механизмы предсказания векторов движения описаны в стандарте H.265/HEVC (Рекомендация МСЭ-Т Н.265, "Высокоэффективное кодирование видеоданных", декабрь 2016 г.). Из множества механизмов предсказания векторов движения, которые предлагает стандарт Н.265, здесь описывается метод, далее называемый "пространственным слиянием".
[0014] Как показано на фиг. 1, текущий блок (101) содержит отсчеты, обнаруженные кодером в процессе поиска движения как предсказуемые на основе предыдущего блока того же размера, который пространственно-сдвинут. Вместо непосредственного кодирования вектора движения, этот вектор движения может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, на основе самого последнего (в порядке декодирования) опорного изображения с использованием вектора движения, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1 и В0, B1, В2 (от 102 до 106, соответственно). В стандарте Н.265 предсказание векторов движения может использовать предсказатели на основе того же опорного изображения, которое используется для соседнего блока.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0015] Аспекты изобретения предоставляют первый способ декодирования видеоданных в видеодекодере. Способ может включать прием первого синтаксического элемента высокого уровня (HLS, high level syntax), указывающего на то, включен или отключен явный выбор множества преобразований (MTS, multiple transform selection) для блока с внутренним кодированием, и прием второго элемента HLS, указывающего на то, включен или отключен явный MTS для блока с внешним кодированием. Первый и второй элементы HLS управляют одним и тем же набором блоков кодирования, которые включают упомянутый блок с внутренним кодированием и упомянутый блок с внешним кодированием. Неявный MTS может быть включен для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что явный MTS включен для блока с внешним кодированием.
[0016] Вариант осуществления способа может также включать применение неявного MTS для блока с внутренним кодированием. Тип преобразования для обработки блока с внутренним кодированием может быть определен в соответствии с размером блока с внутренним кодированием. В различных примерах первый или второй элемент HLS может представлять собой один из следующих элементов: синтаксический элемент набора параметров видео (VPS, video parameter set), синтаксический элемент набора параметров последовательности (SPS, sequence parameter set), синтаксический элемент набора параметров изображения (PPS, picture parameter set), синтаксический элемент заголовка слайса, синтаксический элемент заголовка тайла или синтаксический элемент заголовка группы тайлов. В варианте осуществления изобретения блок с внутренним кодированием не кодируют в режиме внутреннего кодирования с субразделением (ISP, intra sub-partitioning). В варианте осуществления изобретения способ может также включать прием третьего элемента HLS, указывающего на то, что MTS включен для каждого из блоков с внутренним и внешним кодированием.
[0017] Аспекты изобретения предоставляют второй способ декодирования видеоданных в видеодекодере. Второй способ может включать прием первого элемента HLS, указывающего на то, включен или отключен MTS для блока с внутренним кодированием, и прием второго элемента HLS, указывающего на то, отключено или включено неразделяемое вторичное преобразование (NSST, non-separable secondary transform) или внутреннее предсказание на основе матрицы (MIP, matrix-based intra prediction) для блока с внутренним кодированием. Неявный MTS может быть включен для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что NSST или MIP отключено для блока с внутренним кодированием.
[0018] Изобретение также предоставляет третий способ декодирования видеоданных в видеодекодере. Третий способ может включать прием блока с внутренним кодированием, связанного с первым синтаксическим элементом уровня блока, указывающим на то, применяется ли MTS, и вторым синтаксическим элементом уровня блока, указывающим на то, применяется ли NSST. Неявный MTS может быть включен для блока с внутренним кодированием, когда первый синтаксический элемент уровня блока указывает на то, что MTS не применяется, а второй синтаксический элемента уровня блока указывает на то, что NSST не применяется.
[0019] Отметим, что хотя настоящее описание относится к NSST, предлагаемые способы и системы могут применяться к вариантам NSST, таким как преобразование уменьшенного размера (RST, reduced size transform) и низкочастотное неразделяемое вторичное преобразование (LFNST, low-frequency non-separable secondary transform). Таким образом, NSST, RST и/или LFNST могут использоваться взаимозаменяемо в настоящем описании.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0020] Другие признаки, принципы и различные преимущества настоящего изобретения будут понятны из последующего подробного описания и прилагаемых чертежей.
[0021] Фиг. 1 - схематическая иллюстрация текущего блока и окружающих его кандидатов для пространственного слияния в одном примере осуществления изобретения.
[0022] Фиг. 2 схематическая иллюстрация упрощенной структурной схемы системы (200) связи в соответствии с вариантом осуществления изобретения.
[0023] Фиг. 3 - схематическая иллюстрация упрощенной структурной схемы системы (300) связи в соответствии с вариантом осуществления изобретения.
[0024] Фиг. 4 схематическая иллюстрация упрощенной структурной схемы декодера в соответствии с вариантом осуществления изобретения.
[0025] Фиг. 5 - схематическая иллюстрация упрощенной структурной схемы кодера в соответствии с вариантом осуществления изобретения.
[0026] Фиг. 6 показывает структурную схему кодера в соответствии с другим вариантом осуществления изобретения.
[0027] Фиг. 7 показывает структурную схему декодера в соответствии с другим вариантом осуществления изобретения.
[0028] Фиг. 8A-8D показывают примеры матрицы ядра преобразования для 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразований DCT-2, соответственно, согласно варианту осуществления изобретения.
[0029] Фиг. 9A-9D показывают типы, размеры и позиции субблоков, поддерживаемые в преобразовании субблоков (SBT, sub-block transform) согласно варианту осуществления изобретения.
[0030] Фиг. 10 показывает количество субразделений в зависимости от размера блока в режиме внутреннего кодирования с субразделением (ISP) в соответствии с вариантом осуществления изобретения.
[0031] Фиг. 11 показывает пример, в котором блок разделен на два субраздела в режиме кодирования ISP.
[0032] Фиг. 12 показывает пример, в котором блок разделен на четыре субраздела в режиме кодирования ISP.
[0033] Фиг. 13А-13Е показывают матрицу 64×64 ядра преобразования для 64-точечного преобразования DCT-2 согласно варианту осуществления изобретения.
[0034] На фиг.14 показаны базисные функции преобразования для преобразований DST/DCT согласно варианту осуществления изобретения.
[0035] Фиг. 15 показывает таблицу, иллюстрирующую соответствие между значением mts_idx и соответствующими горизонтальными или вертикальными преобразованиями согласно варианту осуществления изобретения.
[0036] Фиг. 16A-16D показывают матрицы ядра преобразования типа DST-7 согласно варианту осуществления изобретения.
[0037] Фиг. 17A-17D показывают матрицы ядра преобразования типа DCT-8 согласно варианту осуществления изобретения.
[0038] Фиг. 18 показывает пример управления использованием выбора множества преобразований (MTS) с помощью синтаксических элементов набора параметров последовательности (SPS).
[0039] Фиг. 19 показывает таблицу отображения между режимами внутреннего предсказания и наборами преобразований в соответствии с вариантом осуществления изобретения.
[0040] Фиг. 20-21 показывают два альтернативных процесса (2000) и (2100) кодирования с преобразованием для RST8×8 с использованием ядер преобразования 16×64 и ядер преобразования 16×48, соответственно, согласно варианту осуществления изобретения.
[0041] Фиг. 22 показывает пример таблицы (2200) синтаксиса уровня CU, где синтаксический элемент lfnst_idx, указывающий на выбор ядра низкочастотного неразделяемого вторичного преобразования (LFNST), сигнализируется в конце синтаксиса уровня CU.
[0042] Фиг. 23 показывает процесс (2301) сокращенного преобразования и процесс (2302) сокращенного обратного преобразования согласно варианту осуществления изобретения.
[0043] Фиг. 24А показывает все верхние левые 8×8 коэффициентов (заштрихованные субблоки) блока (2410) остатка, используемого в качестве входных данных для вычисления вторичного преобразования в RST8×8.
[0044] Фиг. 24В показывает коэффициенты трех верхних левых субблоков 4x4 (заштрихованные субблоки) блока (2410) остатка, используемого в качестве входных данных для вычисления вторичного преобразования в RST8×8.
[0045] Фиг. 25 показывает таблицу для выбора набора преобразований на основе режима внутреннего предсказания согласно варианту осуществления изобретения.
[0046] Фиг. 26 показывает пример процесса (2600) режима внутреннего предсказания на основе матрицы (MIP).
[0047] Фиг. 27 показывает таблицу синтаксиса уровня CU, где флаги, сигнализирующие режимы внутреннего предсказания на основе матрицы (MIP), показаны в рамке (2701) согласно варианту осуществления изобретения.
[0048] Фиг. 28А-28В в совокупности показывают текст (2800), определяющий процесс кодирования с преобразованием для выполнения явного или неявного выбора преобразования для текущего блока на основе соответствующих синтаксических элементов, полученных из битового потока.
[0049] Фиг. 29 показывает модификации (2900) текста (2800), которые соответствуют схеме включения неявного преобразования, где могут совместно использоваться неявное преобразование для блоков остатка с внутренним кодированием и явное преобразование для блоков остатка с внешним кодированием.
[0050] Фиг. 30 показывает модификации (3000) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда неразделяемое вторичное преобразование (NSST) отключено.
[0051] Фиг. 31 показывает модификации (3100) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда MIP отключено.
[0052] Фиг. 32 показывает модификации (3200) текста (2800), которые соответствуют сценарию, в котором как MTS, так и NSST не применяются к текущему блоку.
[0053] Фиг. 33 показывает модификации (3300) текста (2800), которые соответствуют сценарию, в котором ничто из MTS, NSST или MIP не применяется для текущего блока.
[0054] Фиг. 34-36 показывают блок-схемы способов (3400), (3500) и (3600) кодирования с преобразованием согласно некоторым вариантам осуществления изобретения.
[0055] Фиг. 37 схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[0056] 1. Кодер и декодер видеоданных
[0057] На фиг. 2 показана упрощенная структурная схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)) для передачи в другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в виде одного или более битовых потоков кодированных видеоданных. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и их отображения согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.
[0058] В другом примере, система (200) связи включает в себя вторую пару оконечных устройств (230) и (240), которые осуществляют двунаправленную передачу кодированных видеоданных, возникающих, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, например, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.
[0059] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Примеры сетей включают телекоммуникационные сети, локальные сети, глобальные сети и/или интернет.Для настоящего рассмотрения архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.
[0060] На фиг. 3 показано размещение видеокодера и видеодекодера в окружении потоковой передачи, в качестве примера применения настоящего изобретения. Настоящее изобретение может в равной степени использоваться и в других применениях обработки видеоданных, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.
[0061] Система потоковой передачи может содержать подсистему (313) захвата, которая может включать источник (301) видеоданных, например, цифровую камеру, создающую, например, поток (302) видеоизображений, не подвергнутых сжатию. Например, поток (302) видеоизображений включает отсчеты, полученные цифровой камерой. Поток (302) видеоизображений, показанный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированных видеоданных), может обрабатываться электронным устройством (320), которое содержит видеокодер (303), подключенный к источнику (301) видеоданных. Видеокодер (303) может включать оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов настоящего изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или битовый поток (304) кодированных видеоданных), показанные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут храниться на потоковом сервере (305) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например клиентские подсистемы (306) и (308) на фиг. 3, могут осуществлять доступ к потоковому серверу (305) для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может содержать видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, который может визуализироваться на дисплее (312) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (304), (307) и (309) (например, битовые потоки видеоданных) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видеоданных. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. Например, разрабатывается стандарт кодирования видеоданных под официальным названием "Универсальное кодирование видеоданных" (VVC, Versatile Video Coding). Настоящее изобретение может использоваться в контексте VVC.
[0062] Заметим, что электронные устройства (320) и (330) могут содержать другие компоненты (не показаны). Например, электронное устройство (320) может содержать видеодекодер (не показан), а электронное устройство (330) также может содержать видеокодер (не показан).
[0063] На фиг. 4 показана структурная схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может содержать приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0064] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410), в том же или другом варианте осуществления изобретения, по одной кодированной видеопоследовательности за раз, причем декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться на соответствующие использующие их объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, между приемником (431) и энтропийным декодером/анализатором (420) (далее "анализатором (420)") может быть подключена буферная память (415). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других она может не входить в состав видеодекодера (410) (не показано). В прочих вариантах может иметься буферная память вне видеодекодера (410) (не показано), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления временем воспроизведения. Когда приемник (431) принимает данные от устройства хранения/перенаправления с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, в Интернете, буферная память (415) может потребоваться, может быть сравнительно большой, может иметь преимущественно адаптивный размер и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).
[0065] Видеодекодер (410) может содержать анализатор (420) для реконструкции символов (421) из кодированной видеопоследовательности. Категории этих символов включают информацию, используемую для управления работой видеодекодера (410) и, возможно, информацию для управления устройством визуализации, например устройством (412) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Информация управления для устройств(а) визуализации может представлять собой сообщения дополнительной информации улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации о возможности использования видео (VUI, Video Usability Information) (не показаны). Анализатор (420) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видеоданных и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (GOP, Group of Pictures), изображения, тайлы, слайсы, макроблоки, пакеты кодирования (CU, Coding Unit), блоки, пакеты преобразования (TU, Transform Unit), пакеты предсказания (PU, Prediction Unit) и т.д. Анализатор (420) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[0066] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).
[0067] Для реконструкции символов (421) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: изображения с внутренним и внешним кодированием, блоки с внутренним и внешним кодированием) и других факторов. Какие модули и как используются, может определяться информацией управления подгруппами, полученной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и модулями для простоты в дальнейшем не показан.
[0068] Помимо ранее упомянутых функциональных блоков, видеодекодер (410) может принципиально разделяться на несколько функциональных модулей, как описано ниже. В практической реализации в условиях коммерческих ограничений многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания настоящего изобретения уместно принципиальное разделение на перечисленные ниже функциональные модули.
[0069] Первым модулем является модуль (451) масштабирования/обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).
[0070] В ряде случаев, выходные отсчеты блока (451) масштабирования/обратного преобразования могут относиться к блоку с внутренним кодированием; то есть к блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) внутреннего предсказания изображения. В ряде случаев модуль (452) внутреннего предсказания изображения формирует блок такого же размера и формы, как у блока, подлежащего реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сформированную модулем (452) внутреннего предсказания, в информацию выходных отсчетов, предоставленную модулем (451) масштабирования / обратного преобразования.
[0071] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к блоку с внешним кодированием, возможно, с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае называемому отсчетами остатка или сигналом остатка) для генерации информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает отсчеты для предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты Χ, Υ и компоненты опорного изображения. Компенсация движения также может включать интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.
[0072] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видеоданных могут включать технологии контурного фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также называемую битовым потоком кодированных видеоданных) и доступных модулю (456) контурного фильтра в качестве символов (421) от анализатора (420), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.
[0073] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем внешнем предсказании изображения.
[0074] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано и идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и может повторно выделяться свежий буфер текущего изображения до начала реконструкции следующего кодированного изображения.
[0075] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видеоданных, например, по стандарту Рекомендации МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или используемым стандартом сжатия видеоданных, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видеоданных, так и профилей, задокументированных в технологии или стандарте сжатия видеоданных. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видеоданных. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видеоданных. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.
[0076] Согласно варианту осуществления изобретения, приемник (431) может принимать дополнительные (избыточные) данные с кодированными видеоданными. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, временные уровни улучшения, пространственные уровни улучшения или уровни улучшения отношения "сигнал/шум" (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.
[0077] На фиг. 5 показана структурная схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) содержит передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0078] Видеокодер (503) может принимать отсчеты видеоданных от источника (501) видеоданных (который не входит в состав электронного устройства (520) в примере, показанном на фиг. 5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеоданных входит в состав электронного устройства (520).
[0079] Источник (501) видеоданных может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифровых видеоданных любой подходящей битовой глубины (например: 8 битов, 10 битов, 12 битов,...), любого цветового пространства (например, ВТ.601 Y CrCB, RGB,...) и любой подходящей структуры дискретизации (например, Υ CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеоданных может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (501) видеоданных может быть камера, которая захватывает информацию локального изображения в виде видеопоследовательности. Видеоданные могут предоставляться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Последующее описание посвящено отсчетам.
[0080] Согласно варианту осуществления изобретения, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления изобретения контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать параметры, связанные с регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое в методах оптимизации скорости-искажения, и т.д.), размер изображения, организацию групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (550) может иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для конкретной конструкции системы.
[0081] В некоторых вариантах осуществления изобретения видеокодер (503) выполнен с возможностью работать в контуре кодирования. В качестве очень упрощенного описания, например, контур кодирования может включать кодер (530) источника (например, отвечающий за создание символов, например, потока символов на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер
(533) реконструирует символы для создания данных отсчетов аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированных видеоданных происходит без потерь в технологиях сжатия видеоданных, рассматриваемых в данном описании). Реконструированный поток отсчетов (данные отсчетов) поступают в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, которые не зависят от положения (локального или удаленного) декодера, содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, часть предсказания кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.
[0082] "Локальный" декодер (533) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (410), подробно описанный выше со ссылкой на фиг. 4. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).
[0083] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа / энтропийного декодирования, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине настоящее изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодирования. Лишь в некоторых областях требуется более подробное описание, которое приведено ниже.
[0084] Согласно некоторым примерам, в ходе работы кодер (530) источника может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основе одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, механизм (532) кодирования кодирует разности между блоками пикселей входного изображения и блоками пикселей опорного изображения(й), которое(ые) может(ут) выбираться в качестве ссылки(ок) предсказания на входное изображение.
[0085] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может обеспечивать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены удаленным видеодекодером (в отсутствие ошибок передачи).
[0086] Предсказатель (535) может осуществлять поиски предсказания для механизма (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных блоков пикселей) или конкретные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе "блоки отсчетов χ блоки пикселей" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.
[0087] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установление параметров, а также параметров подгруппы, используемых для кодирования видеоданных.
[0088] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сформированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно, например, технологиям кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.
[0089] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную(ые) энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, с кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).
[0090] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения.
[0091] Изображение с внутренним кодированием (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника для предсказания. Некоторые видеокодеки допускают разные типы изображений с внутренним кодированием, включая, например, изображения в формате независимого обновления декодера (IDR, Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.
[0092] Изображение с предсказанием (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[0093] Изображение с двунаправленным предсказанием (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множеством предсказаний могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одного блока.
[0094] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться с предсказанием со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (с пространственным предсказанием или внутренним предсказанием). Блоки пикселей Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[0095] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Поэтому кодированные видеоданные могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видеоданных.
[0096] Согласно варианту осуществления изобретения, передатчик (540) может передавать дополнительные данные с кодированными видеоданными. Кодер (530) источника может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.
[0097] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а внешнее предсказание изображения использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое называется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.
[0098] В некоторых вариантах осуществления изобретения, может использоваться метод двойного предсказания во внешнем предсказании изображения. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться с помощью комбинации первого опорного блока и второго опорного блока.
[0099] Дополнительно, способ режима слияния может использоваться во внешнем предсказании изображения для повышения эффективности кодирования.
[0100] Согласно некоторым вариантам осуществления изобретения предсказания, например, внешнее предсказание изображения и внутреннее предсказание изображения осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на пакеты дерева кодирования (CTU, coding tree unit) для сжатия, пакеты CTU в изображении имеют одинаковый размер, например 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае пакет CTU включает три блока дерева кодирования (СТВ, coding tree blocks), а именно, один блок СТВ яркости и два блока СТВ цветности. Каждый пакет CTU может рекурсивно делиться на основе квадродерева на один или более пакетов кодирования (CU). Например, пакет CTU размером 64×64 пикселя может делиться на один пакет CU размером 64×64 пикселя или 4 пакета CU размером 32×32 пикселя или 16 пакетов CU размером 16×16 пикселей. Например, каждый пакет CU анализируется для определения типа предсказания для этого пакета CU, например, типа внешнего предсказания или типа внутреннего предсказания. Пакет CU делится на один или более пакетов предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждый пакет PU включает блок предсказания (РВ, prediction block) яркости и два блока РВ предсказания цветности. Согласно варианту осуществления изобретения, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. В качестве примера блока предсказания, блок предсказания яркости включает матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.
[0101] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.
[0102] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в режиме внутреннего предсказания, режиме внешнего предсказания или режиме двойного предсказания с использованием, например, оптимизации "скорость-искажения". Когда блок обработки подлежит кодированию в режиме внутреннего предсказания, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение, а когда блок обработки подлежит кодированию в режиме внешнего предсказания или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования режим слияния может быть подрежимом внешнего предсказания изображения, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) содержит другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.
[0103] В примере, приведенном на фиг. 6, видеокодер (603) содержит кодер (630) внешнего кодирования, кодер (622) внутреннего кодирования, вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом так, как показано на фиг. 6.
[0104] Кодер (630) внешнего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), создания информации внешнего предсказания (например, описания избыточной информации согласно методу внешнего кодирования, векторов движения, информации режима слияния) и вычисления результатов внешнего предсказания (например, блока предсказания) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.
[0105] Кодер (622) внутреннего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, формирования квантованных коэффициентов после преобразования и в ряде случаев также информации внутреннего предсказания (например, информации о направлении внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, кодер (622) внутреннего кодирования также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основе информации внутреннего предсказания и опорных блоков в том же изображении.
[0106] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является режимом внутреннего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата режима внутреннего кодирования для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток, а когда режим является режимом внешнего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.
[0107] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из кодера (622) внутреннего кодирования или кодера (630) внешнего кодирования. Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для формирования коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и формирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления изобретения видеокодер (603) также содержит декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и формирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться кодером (622) внутреннего кодирования и кодером (630) внешнего кодирования. Например, кодер (630) внешнего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, а кодер (622) внутреннего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для формирования декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.
[0108] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока для включения кодированного блока. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Следует отметить, что, согласно изобретению, при кодировании блока в подрежиме слияния для любого из режима внешнего кодирования и режима двойного предсказания, информация остатка отсутствует.
[0109] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для формирования реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.
[0110] В примере, приведенном на фиг. 7, видеодекодер (710) содержит энтропийный декодер (771), декодер (780) внешнего декодирования, декодер (773) остатка, модуль (774) реконструкции и декодер (772) внутреннего декодирования, соединенные друг с другом так, как показано на фиг. 7.
[0111] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать, например, режим кодирования блока (например, режим внутреннего кодирования, режим внешнего кодирования, режим двойного предсказания, причем последние два в подрежиме слияния или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания декодером (772) внутреннего декодирования или декодером (780) внешнего декодирования, соответственно, информацию остатка в виде, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внешнего или двойного предсказания, информация внешнего предсказания поступает на декодер (780) внешнего декодирования, а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на декодер (772) внутреннего декодирования. Информация остатка может подвергаться обратному квантованию и поступать на декодер (773) остатка.
[0112] Декодер (780) внешнего декодирования выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основе информации внешнего предсказания.
[0113] Декодер (772) внутреннего декодирования выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основе информации внутреннего предсказания.
[0114] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (для включения параметра квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).
[0115] Модуль (774) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что могут осуществляться другие подходящие операции, например, операция устранения блочности и т.п., для повышения визуального качества.
[0116] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любой подходящей технологии. Согласно варианту осуществления изобретения, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления изобретения видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые исполняют программные инструкции.
[0117] II. Способы кодирования с преобразованием и связанные с ними способы
[0118] 1. Примеры первичного преобразования DCT-2
[0119] В некоторых вариантах осуществления изобретения в качестве первичных преобразований используются 4-точечные, 8-точечные, 16-точечные и 32-точечные преобразования DCT-2. Фиг. 8A-8D показывают матрицы ядер 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразований DCT-2, соответственно. Элементы этих матриц ядер преобразований могут быть представлены с использованием 8-битных целых чисел, и, таким образом, эти матрицы ядер преобразований называются 8-битными ядрами преобразований. Как показано, матрица ядра преобразования меньшего преобразования DCT-2 является частью большего преобразования DCT-2.
[0120] Матрицы ядра преобразования DCT-2 демонстрируют характеристики симметрии/антисимметрии. Соответственно, может поддерживаться реализация так называемой "частичной бабочки" для уменьшения количества операций (умножений, сложений/вычитаний, сдвигов). С использованием реализации частичной бабочки могут быть получены идентичные результаты умножения матриц в сравнении с тем, когда реализация частичной бабочки не используется.
[0121] 2. Примеры кодирования с преобразованием субблоков
[0122] 2.1 Преобразование субблоков (SBT, sub-block transform)
[0123] В некоторых вариантах осуществления изобретения используется преобразование субблоков (SBT), также называемое пространственно-изменяющимся преобразованием (SVT, spatially varying transform). Преобразование SBT применяется к остаткам внешнего предсказания в некоторых вариантах осуществления изобретения. Например, блок кодирования может быть разделен на субблоки, и только часть субблоков обрабатывается в блоке остатка. Для оставшейся части субблоков предполагается нулевой остаток. Следовательно, блок остатка меньше, чем блок кодирования, и размер преобразования в SBT меньше, чем размер блока кодирования. Для области, которая не покрыта блоком остатка, обработка преобразования не выполняется.
[0124] Фиг. 9A-9D показывает типы субблоков (SVT-H, SVT-V) (например, разделенных вертикально или горизонтально), размеры и позиции (например, левая половина, левая четверть, правая половина, правая четверть, верхняя половина, верхняя четверть, нижняя половина, нижняя четверть), которые поддерживаются в SBT. Заштрихованные области, помеченные буквой "А", являются блоками остатка, которые должны кодироваться с преобразованием, а другие области предполагаются с нулевым остатком без преобразования.
[0125] 2.2 Режим внутреннего кодирования с субразделением (ISP)
[0126] В некоторых вариантах осуществления изобретения используется режим внутреннего кодирования с субразделением (ISP). В режиме кодирования ISP, блок с внутренним предсказанием яркости может быть разделен по вертикали или по горизонтали на 2 или 4 субраздела. Количество субразделов может зависеть от размера блока. Фиг. 10 показывает количество субразделов в зависимости от размера блока. Фиг. 11 показывает сценарий, в котором блок разделен на два субраздела. На фиг. 12 показан сценарий, в котором блок разделен на четыре субраздела. В примере все субразделы удовлетворяют условию наличия не менее 16 отсчетов. В примере ISP не применяется к компонентам цветности.
[0127] В примере для каждого из субразделов, полученных из блока кодирования, формируется сигнал остатка посредством энтропийного декодирования соответствующих коэффициентов, отправленных из кодера, а затем их деквантования и обратного преобразования. Затем первый из субразделов предсказывается посредством внутреннего предсказания для формирования сигнала предсказания. Сигнал предсказания добавляется к соответствующему сигналу остатка первого субраздела для получения соответствующих реконструированных отсчетов. После этого, значения реконструированных отсчетов первого субраздела могут быть доступны для формирования предсказания второго из субразделов. Этот процесс может повторяться от субраздела к субразделу до тех пор, пока не будут реконструированы все субразделы из блока кодирования. В одном примере для всех субразделов используется один и тот же режим внутреннего кодирования.
[0128] В варианте осуществления изобретения режим кодирования ISP тестируется только с режимами внутреннего кодирования, которые являются частью списка наиболее вероятных режимов (МРМ, most probable mode). Соответственно, если для блока используется ISP, то можно сделать вывод, что флаг МРМ равен единице. Кроме того, когда ISP используется для определенного блока, соответствующий список МРМ будет изменен, чтобы исключить режим DC и отдать приоритет горизонтальным режимам внутреннего кодирования для горизонтального разделения ISP и вертикальным режимам внутреннего кодирования для вертикального разделения.
[0129] В режиме кодирования ISP каждый субраздел можно рассматривать как субпакет преобразования, поскольку преобразование и реконструкция выполняются отдельно для каждого субраздела.
[0130] 3. Кодирование с преобразованием с помощью расширенных преобразований DCT-2 и выбора множества преобразований (MTS)
[0131] В некоторых вариантах осуществления изобретения, когда и высота, и ширина блока кодирования меньше или равны 64 отсчетам, размер преобразования всегда совпадает с размером блока кодирования. Когда высота или ширина блока кодирования больше 64 отсчетов, при выполнении преобразования или внутреннего предсказания блок кодирования далее разделяется на несколько субблоков, причем ширина и высота каждого субблока меньше или равны 64, и обработка преобразования выполняется для каждого субблока.
[0132] 3.1 Кодирование с преобразованием с помощью расширенных преобразований DCT-2
[0133] В некоторых вариантах осуществления изобретения, в дополнение к 4-точечному, 8-точечному, 16-точечному и 32-точечному преобразованиям DCT-2, описанным выше, может использоваться 2-точечное и 64-точечное преобразования DCT-2. Фиг. 13А-13Е показывают матрицу 64x64 ядра преобразования для 64-точечного преобразования DCT-2.
[0134] 3.2 Явно сигнализируемое преобразование
[0135] В некоторых вариантах осуществления изобретения, в дополнение к кодированию с преобразованиями DCT-2 и 4×4 DST-7, может использоваться выбор множества преобразований (MTS) (также известный как расширенное множество преобразований (ЕМТ, enhanced multiple transform) или адаптивное множество преобразований (АМТ, adaptive multiple transform)) для кодирования остатка как блоков с внешним кодированием, так и блоков с внутренним кодированием. MTS использует множество выбранных преобразований из семейств дискретного косинусного преобразования (DCT) / дискретного синусного преобразования (DST), помимо преобразований DCT-2 и 4×4 DST-7. Выбор может выполняться в кодере и явно сигнализироваться из кодера в декодер. Например, выбранные преобразования включают преобразования DST-7 или DCT-8. Фиг. 14 показывает базисные функции преобразования для DST/DCT. В некоторых вариантах осуществления изобретения для матриц ядра преобразования DST/DCT, применяемых в MTS, используется 8-битное представление.
[0136] В некоторых вариантах осуществления изобретения MTS может применяться для блоков кодирования с шириной и высотой, которые меньше или равны 32 отсчетам. Управлять тем, применять MTS или нет, можно с помощью флага, обозначенного mtsflag. Например, когда флаг mtsflag равен 0, только преобразование DCT-2 применяется для кодирования блока остатка. Когда флаг mts_flag равен 1, что указывает на применение MTS, можно использовать выбранные преобразования. Например, индекс, обозначенный mts_idx, может также сигнализироваться с использованием 2 бинов для задания горизонтального и вертикального преобразования, которые должны использоваться.
[0137] Фиг. 15 показывает таблицу (1500), иллюстрирующую соответствие между значением mtsidx и горизонтальными или вертикальными преобразованиями. Строка (1501) с mts_idx, имеющим значение - 1, соответствует сценарию, в котором флаг mts_flag равен 0 (что указывает на то, что MTS не применяется), а преобразование DCT-2 используется. Строки (1502)-(1505) с mts idx, имеющим значение 0, 1, 2 или 3, соответствуют сценарию, в котором флаг mts_flag равен 1 (что указывает на применение MTS). В двух правых столбцах таблицы (1500) 0 представляет тип преобразования DCT-2, 1 представляет тип преобразования DST-7, а 2 представляет тип преобразования DCT-8.
[0138] Фиг. 16A-16D показывают матрицы ядра преобразования типа DST-7. На фиг. 17A-17D показаны матрицы ядра преобразования типа DCT-8.
[0139] В некоторых вариантах осуществления изобретения MTS можно включать или отключать с помощью синтаксических элементов высокого уровня (HLS). Каждый из элементов HLS может представлять собой синтаксический элемент набора параметров видео (VPS), синтаксический элемент набора параметров последовательности (SPS), синтаксический элемент набора параметров изображения (PPS), синтаксический элемент заголовка слайса, синтаксический элемент заголовка тайла или синтаксический элемент заголовка группы тайлов и т.д. Фиг. 18 показывает пример управления MTS с использованием синтаксических элементов SPS. Как показано, синтаксический элемент SPS sps_mts_enabled_flag может сигнализироваться для указания, включен ли MTS для видеопоследовательности. Когда MTS включен, два синтаксических элемента sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag могут сигнализироваться, чтобы указать, включен ли MTS для кодирования блоков с внутренним или внешним предсказанием, соответственно.
[0140] В варианте осуществления изобретения неявный MTS применяется в случае, если вышеупомянутый MTS на основе сигнализации (называемый явным MTS) не используется. При неявном MTS выбор преобразования может быть выполнен в соответствии с шириной и высотой блока, а не на основе сигнализации. Например, при неявном MTS преобразование DST-7 может быть выбрано для более короткой стороны блока преобразования, а преобразование DCT-2 может быть выбрано для более длинной стороны блока преобразования.
[0141] 3.3 Сценарии, где применяется неявный выбор преобразования
[0142] В различных вариантах осуществления изобретения для определенных сценариев преобразования DST-7 и/или DCT-8 могут использоваться без явной сигнализации. Например, преобразования DST-7 и/или DCT-8 могут использоваться неявно на основе информации, доступной как для кодера, так и для соответствующего декодера. Эти сценарии включают:
[0143] 3.3.1 Внутреннее кодирование с субразделением (ISP)
[0144] Для блока остатка, кодированного с помощью режима ISP, горизонтальное преобразование выбирается как DST-7, пока ширина блока остатка больше или равна 4 и меньше или равна 16, а вертикальное преобразование выбирается как DST-7, пока высота блока остатка больше или равна 4 и меньше или равна 16.
[0145] 3.3.2 Преобразование субблоков (SBT)
[0146] В режиме SBT для субпакета преобразования, расположенного в левой половине (или четверти) или правой половине (или четверти) текущего пакета CU, горизонтальное преобразование может представлять собой преобразование DCT-8 или преобразование DST-7, соответственно. В противном случае (субпакет преобразования имеет такую же ширину, что и текущий пакет CU), может использоваться преобразование DCT-2. Для субпакета преобразования, расположенного в верхней половине (или четверти) или нижней половине (или четверти) текущего пакета CU, вертикальное преобразование может представлять собой преобразование DCT-8 или преобразование DST-7, соответственно. В противном случае (субпакет преобразования имеет ту же высоту, что и текущий пакет CU) может использоваться преобразование DCT-2.
[0147] 3.3.3 MTS отключен посредством элементов HLS
[0148] Например, когда sps_mts_enabled_flag сигнализируется как истинный, но как sps_explicit_mts_intra_enabled_flag, так и sps_explicit_mts_inter_enabled_flag сигнализируются как "ложь", для остатков внутреннего предсказания горизонтальное преобразование может быть выбрано как DST-7 до тех пор, пока соответствующая ширина блока больше или равна 4 и меньше или равна 16, а вертикальное преобразование может быть выбрано как DST-7, пока соответствующая высота блока больше или равна 4 и меньше или равна 16.
[0149] 4. Неразделяемое вторичное преобразование (NSST)
[0150] 4.1 Первоначальная схема NSST
[0151] В некоторых вариантах осуществления изобретения может применяться зависящее от режима неразделяемое вторичное преобразование (NSST) между прямым преобразованием ядра и квантованием (в кодере) и между деквантованием и обратным преобразованием ядра (в соответствующем декодере). Чтобы сохранить низкую сложность, в некоторых вариантах осуществления изобретения NSST может применяться только к низкочастотным коэффициентам после первичного преобразования. Если и ширина (W), и высота (Н) блока коэффициентов преобразования больше или равны 8, то неразделяемое вторичное преобразование 8×8 может быть применено к верхней левой области блока 8×8 коэффициентов преобразования. В противном случае, если либо W, либо Η блока коэффициентов преобразования равно 4, может применяться неразделяемое вторичное преобразование 4×4, а неразделяемое преобразование 4x4 выполняется в верхней левой области min(8, W) × min(8, Η) блока коэффициентов преобразования. Вышеупомянутое правило выбора преобразования применяется как для компонентов яркости, так и для компонентов цветности.
[0152] Реализация неразделяемого преобразования с умножением матриц описана ниже с использованием входного блока 4×4 в качестве примера. Чтобы применить неразделяемое преобразование, входной блок X размером 4×4
представлен как вектор
[0153] Неразделяемое преобразование вычисляется как
где  указывает вектор коэффициентов преобразования, а Τ представляет собой матрицу 16×16 преобразования Т. Вектор  коэффициентов 16×1 впоследствии реорганизуется в блок 4×4 с использованием порядка сканирования для этого блока (горизонтальный, вертикальный или диагональный). Коэффициенты с меньшим индексом будут размещены с меньшим индексом сканирования в блоке коэффициентов 4×4. В примере преобразование HyGT (hypercube-givens) с реализацией бабочки используется вместо умножения матриц для уменьшения сложности неразделяемого преобразования.
[0154] В примере NSST, может быть всего 35×3 неразделяемых вторичных преобразований для размера блока как 4×4, так и 8×8, где 35 количество наборов преобразований, каждый из которых соответствует режиму внутреннего предсказания, а 3 - количество кандидатов NSST для каждого режима внутреннего предсказания. Отображение из режима внутреннего предсказания в набор преобразований задано в таблице (1900), показанной на фиг. 19. Например, набор преобразований, применяемый к коэффициентам преобразования яркости/цветности, может быть определен соответствующими режимами внутреннего предсказания яркости/цветности согласно таблице (1900). Для режимов внутреннего предсказания свыше 34 (например, диагональное направление предсказания) блок коэффициентов преобразования транспонируется до/после вторичного преобразования в кодере/декодере.
[0155] Для каждого набора преобразований выбранный кандидат неразделяемого вторичного преобразования также определяется явно сигнализированным индексом NSST уровня CU. Индекс сигнализируется в битовом потоке один раз для каждого внутреннего CU после коэффициентов преобразования с использованием усеченной унарной бинаризации. Усеченное значение равно 2 в случае планарного режима или режима DC и 3 в случае режима углового внутреннего предсказания. Этот индекс NSST сигнализируется только тогда, когда в CU имеется более одного ненулевого коэффициента. Если значение не сигнализируется, оно по умолчанию равно нулю. Нулевое значение этого синтаксического элемента указывает на то, что вторичное преобразование не применяется для текущего CU, а значения 1-3 указывают, какое вторичное преобразование из набора следует применить.
[0156] Преобразование NSST может не применяться для блока, кодированного в режиме пропуска преобразования. Когда индекс NSST сигнализируется для CU и не равен нулю, NSST не используется для блока компонента, который кодируется в режиме пропуска преобразования в CU. Когда CU с блоками всех компонентов кодируется в режиме пропуска преобразования или количество ненулевых коэффициентов блоков СВ режима без пропуска преобразования меньше 2, индекс NSST не сигнализируется для CU.
[0157] 4.2 Преобразование уменьшенного размера (RST, reduced size transform)
[0158] В некоторых вариантах осуществления изобретения используется вариант NSST, называемый преобразованием уменьшенного размера (RST) или низкочастотным неразделяемым вторичным преобразованием (LFNST, low-frequency non-separable secondary transform). Преобразование RST использует схему преобразования с обнулением. Для энтропийного кодирования индекса NSST проверяется, является ли режим внутреннего предсказания планарным или DC.
[0159] В примере применяются 4 набора преобразований, и каждый набор преобразований включает три ядра преобразования RST. Ядра преобразования RST могут иметь размер 16×48 (или 16×64) (применяется для блока коэффициентов преобразования с высотой и шириной, которые больше или равны 8) или 16×16 (применяется для блока коэффициентов преобразования с высотой или шириной, равной 4). Для удобства преобразование 16×48 (или 16×64) обозначается как RST8×8, а преобразование 16×16 обозначается как RST4×4.
[0160] Для RST8×8, два альтернативных процесса (2000) и (2100) преобразования с использованием ядер 16×64 преобразования и ядер 16×48 преобразования показаны на фиг. 20 и фиг. 21, соответственно. Процесс, в котором используются ядра 16×48 преобразования, принят в проекте 5 VVC (VVC Draft 5).
[0161] В процессе (2000) на фиг. 20, например, на стороне кодера может сначала выполняться прямое первичное преобразование (2010) для блока остатка, за ним следует прямое вторичное преобразование (2012) коэффициентов, сформированных из прямого первичного преобразования (2010). В прямом вторичном преобразовании (2012) 64 коэффициента субблоков 4×4 A/B/C/D в верхнем левом углу блока коэффициентов (2013) представляют в виде вектора длиной 64 и умножают на матрицу преобразования размером 16×64 в соответствии с уравнением (3), в результате чего получают вектор длиной 16. Элементами вектора длиной 16 снова заполняют левый верхний левый субблок А 4×4 блока коэффициентов (2013). Коэффициенты в субблоках B/C/D могут принимать нулевые значения. Полученные в результате коэффициенты после прямого вторичного преобразования 2012 затем квантуются на этапе (2014) и энтропийно кодируются для формирования кодированных битов в битовом потоке (2016).
[0162] Кодированные биты могут приниматься на стороне декодера и энтропийно декодироваться с последующим деквантованием (2024) для формирования блока (2023) коэффициентов. Обратное вторичное преобразование (2022) может выполняться для 16 коэффициентов в верхнем левом субблоке Ε размером 4×4 для получения 64 коэффициентов, которыми снова заполняют субблоки 4×4 B/F/G/H. После этого, коэффициенты в блоке (2023) после обратного вторичного преобразования (2022) могут быть обработаны с помощью обратного первичного преобразования (2020) для получения восстановленного блока остатка.
[0163] Процесс (2100) в примере на фиг. 21 аналогичен процессу (2000), за исключением того, что во время прямого вторичного преобразования (2012) обрабатывается меньше, а именно 48, коэффициентов. В частности, 48 коэффициентов в субблоках А/В/С обрабатываются с меньшей матрицей преобразования размером 16×48. Использование меньшей матрицы преобразования может уменьшить размер памяти для хранения матрицы преобразования и соответственно сложность вычислений.
[0164] Фиг. 22 показывает пример таблицы (2200) синтаксиса уровня CU, где синтаксический элемент lfnst_idx, указывающий на выбор ядра LFNST, сигнализируется в конце синтаксиса уровня CU.
[0165] 4.3 Примеры вычисления RST
[0166] Основная идея сокращенного преобразования (RT, Reduced Transform) состоит в отображении N-мерного вектора в R-мерный вектор другого пространства, где R/N (R<N) - коэффициент уменьшения.
[0167] Матрица RST представляет собой матрицу R×N, показанную ниже:
где R строк преобразования являются R базисными элементами N-мерного пространства. Матрица обратного преобразования для RT является транспонированной матрицей прямого преобразования.
т
[0168] Фиг. 23 показывает процесс (2301) сокращенного преобразования и процесс (2302) сокращенного обратного преобразования. Матрица Τ представляет собой матрицу преобразования RST, имеющую размер R×N, а матрица Т представляет собой транспонированную матрицу Т, имеющую размер N×R.
[0169] В преобразовании RST8x8 используется коэффициент уменьшения, равный 4 (размер 1/4). Например, вместо размера 64×64, который представляет собой обычный размер матрицы неразделяемого преобразования 8×8, используется прямая матрица 16×64. Обратная матрица RST размером 64×16 используется на стороне декодера для формирования коэффициентов ядра (первичного) преобразования в верхних левых областях 8×8. Прямое преобразование RST8×8 использует матрицы 16×64 (или 8×64 для блока 8×8), так что образуются ненулевые коэффициенты только в верхней левой области 4×4 внутри данной области 8×8. Другими словами, если применяется преобразование RST, то область 8×8, за исключением верхней левой области 4×4, будет иметь только нулевые коэффициенты. Для преобразования RST4×4 может применяться прямое умножение матриц 16×16 (или 8×16 для блока 4×4).
[0170] Кроме того, для преобразования RST8×8, чтобы дополнительно уменьшить размер матрицы преобразования, вместо всех верхних левых 8×8 коэффициентов (заштрихованные субблоки на фиг. 24А) блока (2410) остатка в качестве входных данных для вычисления вторичного преобразования коэффициенты трех верхних левых субблоков 4×4 (заштрихованные субблоки на фиг. 24В) блока (2410) остатка используют в качестве входных данных для вычисления вторичного преобразования.
[0171] В примере, обратное преобразование RST применяется, когда удовлетворяются следующие два условия: (i) соответствующий размер блока больше или равен данному пороговому значению (W>=4 && Н>=4), и (ii) флаг пропуска преобразования равен нулю. Например, если ширина (W) и высота (Н) блока коэффициентов преобразования больше 4, то преобразование RST8×8 применяется к верхней левой области 8×8 блока коэффициентов преобразования. В противном случае преобразование RST4×4 применяется к верхней левой области размером min(8, W) × min(8, Η) блока коэффициентов преобразования.
[0172] В примере, когда индекс RST равен 0, преобразование RST не применяется. В противном случае преобразование RST применяется, и в примере выбирается ядро с индексом RST. В примере, преобразование RST применяется для CU внутреннего предсказания как в слайсах внутреннего предсказания, так и в слайсах внешнего предсказания, и для яркости, и для цветности. Если включено двойное дерево, индексы RST для яркости и цветности сигнализируются по отдельности. Для слайса с внешним кодированием (двойное дерево отключено) один индекс RST сигнализируется и используется как для яркости, так и для цветности. Когда выбран режим ISP, преобразование RST отключено, и индекс RST не сигнализируется.
[0173] 4.4 Пример выбора матриц преобразования RST
[0174] В одном примере матрица преобразования RST может быть выбрана из четырех наборов преобразований, каждый из которых состоит из двух преобразований. Какой набор преобразований применяется, можно определить на основе применяемого режима внутреннего предсказания следующим образом. В примере матрица RST может быть выбрана из четырех наборов преобразований, каждый из которых состоит из двух преобразований. Какой набор преобразований применяется, можно определить на основе применяемого режима внутреннего предсказания следующим образом. Когда указан один из трех режимов линейной модели перекрестных компонентов (CCLM, cross component linear model), можно выбрать набор 0 преобразований. В противном случае выбор набора преобразований может быть выполнен согласно таблице (2500), показанной на фиг. 25. Индекс для доступа к таблице (2500), обозначенный IntraPredMode, может находиться в диапазоне [-14, 83], который представляет собой преобразованный индекс режима, используемый, например, для широкоугольного внутреннего предсказания.
[0175] 5. Режим внутреннего предсказания на основе матрицы (MIP, Matrix-Based Intra Prediction)
[0176] В некоторых вариантах осуществления изобретения используется режим внутреннего предсказания на основе матрицы (MIP). Фиг. 26 показывает пример процесса (2600) режима MIP. Для предсказания отсчетов прямоугольного блока (2610) шириной W и высотой Η, MIP использует одну строку из Η реконструированных соседних граничных отсчетов слева от блока (2610) и одну строку из W реконструированных соседних граничных отсчетов над блоком (2610) в качестве входных данных. Если реконструированные отсчеты недоступны, реконструированные отсчеты могут быть сформированы так же, как и при обычном внутреннем предсказании.
[0177] Формирование сигналов предсказания может быть основано на следующих трех этапах (2601)-(2603). На этапе (2601) из граничных отсчетов четыре отсчета в случае W=H=4 и восемь отсчетов во всех других случаях извлекают посредством усреднения.
red
red
k
k
[0178] На этапе (2602) выполняют умножение матрицы на вектор Ak'bdry с последующим добавлением смещения bk с усредненными отсчетами bdry в качестве входных данных. В результате получают сокращенный сигнал предсказания на субдискретизированном наборе (2621) отсчетов в исходном блоке. Матрица А и смещение b могут быть выбраны на основе индекса к режима MIP.
[0179] На этапе (2603) сигнал предсказания в оставшихся позициях (2622) формируют из сигнала предсказания в субдискретизированном наборе (2621) посредством линейной интерполяции, которая представляет собой одноэтапную линейную интерполяцию в каждом направлении.
k
k
0
1;
2
0
1
2
[0180] Матрицы A и векторы b смещения, необходимые для формирования сигнала предсказания, могут быть взяты из трех наборов S, S S матриц. Набор S состоит из 18 матриц  i ∈ {0, …, 17), каждая из которых имеет 16 строк и 4 столбца, и 18 векторов смещения  i ∈ [0, …, 17} размером 16. Матрицы и векторы смещения этого набора используются для блоков размером 4×4. Набор S состоит из 10 матриц  i ∈ [0, …, 9), каждая из которых имеет 16 строк и 8 столбцов, и 10 векторов смещения  i ∈ [0, …, 9), каждый размером 16. Матрицы и векторы смещения этого набора используются для блоков размером 4×8, 8×4 и 8×8. Наконец, набор S состоит из 6 матриц  i ∈ [0, …, 5), каждая из которых имеет 64 строки и 8 столбцов, и 6 векторов смещения  i ∈ [0, …, 5} размером 64. Матрицы и векторы смещения этого набора или часть этих матриц и векторов смещения используются для всех других форм блоков.
1
[0181] Как показано, для блока 8×8 (2610) предсказание MIP использует четыре средних значения по каждой оси границы. Полученные восемь входных отсчетов попадают в умножение матрицы на вектор. Матрицы взяты из набора S. Это дает 16 отсчетов (2621) на нечетных позициях блока предсказания. Таким образом, всего выполняется (8⋅16)/(8⋅8)=2 умножения на отсчет. После добавления смещения эти отсчеты интерполируются по вертикали с использованием сокращенных отсчетов верхней границы. Горизонтальная интерполяция выполняется с использованием исходных отсчетов левой границы. В этом случае процесс интерполяции не требует никаких умножений.
[0182] 5.1 Сигнализация режима MIP
[0183] В некоторых вариантах осуществления изобретения для каждого пакета кодирования (CU) в режиме внутреннего предсказания в битовом потоке может передаваться флаг, указывающий, применяется ли режим MIP для соответствующего пакета предсказания (PU) или нет. Если режим MIP применяется, индекс predmode режима MIP сигнализируется с использованием списка МРМ, включающего 3 режима МРМ.
idx
Angular
[0184] Получение режимов МРМ может осуществляться с использованием режимов внутреннего кодирования верхнего и левого PU следующим образом. Имеются три фиксированных таблицы отображения map_angular_to_mip, idx ∈ {0,1,2}, причем каждая таблица связывает каждый традиционный режим внутреннего предсказания predmode с конкретным режимом MIP, как показано в следующей формуле.
где map_angular_to_mip - это фиксированная таблица соответствия. Индекс таблицы отображения определяется на основе ширины W и высоты Η пакета PU, и всего доступно три индекса, как описано ниже,
которые указывают, из какого из трех наборов должны быть взяты параметры ΜΙΡ выше.
[0185] В некоторых примерах, чтобы сформировать список МРМ для текущего блока, который кодируется в режиме ΜΙΡ, сначала получают указанный выше режим ΜΙΡ, а именно  и левый режим ΜΙΡ, а именно
[0186] Значение  может быть получено следующим образом:
above
above
- Если верхний PU, PU, доступен и принадлежит тому же CTU, где находится текущий PU, и PU кодируется с помощью MIP с использованием режима MIP,
above
above
- Если верхний PU, PU, доступен и принадлежит тому же CTU, где находится текущий PU, и PU кодируется с использованием обычного режима внутреннего предсказания
- В противном случае
что означает, что этот режим недоступен.
[0187] Значение  получают тем же способом, что и  но без проверки, принадлежит ли левый PU тому же CTU, где находится текущий PU.
idx
idx(PU)
[0188] Наконец, с учетом полученных  и трех заранее заданных фиксированных списка МРМ по умолчанию list, idx ∈ [0,1,2], каждый из которых содержит три различных режима MIP, создается список МРМ. Список МРМ создается на основе заданного списка по умолчанию list и  путем замены -1 значениями по умолчанию, а также удаления повторяющихся режимов MIP.
[0189] В качестве примера фиг. 27 показывает таблицу синтаксиса уровня CU, где флаги, сигнализирующие режимы MIP, показаны в рамке (2701).
[0190] 5.2 Получение списка МРМ для обычных режимов внутреннего предсказания
idx
MIP
[0191] В некоторых вариантах осуществления изобретения режимы MIP согласованы с кодированием на основе МРМ традиционных режимов внутреннего предсказания следующим образом. Процессы получения списка МРМ яркости и цветности для обычных режимов внутреннего предсказания используют отдельные фиксированные таблицы map_mip_to_angular, idx ∈ {0,1,2}, которые сопоставляют predmode режима MIP с одним из обычных режимов внутреннего предсказания,
MIP
Angu]ar
где map_mip_to_angular - это фиксированная таблица соответствия. Для получения списка МРМ яркости всякий раз, когда соседний блок яркости кодируется с помощью режима MIP predmode, этот блок обрабатывается, как если бы он использовал традиционный режим внутреннего предсказания predmode. Для получения списка МРМ цветности всякий раз, когда текущий блок яркости использует режим MIP, то же отображение используется для преобразования режима MIP в обычный режим внутреннего предсказания.
[0192] III. Включение неявного выбора преобразования на основе синтаксических элементов высокого уровня или синтаксических элементов уровня блока
[0193] В некоторых вариантах осуществления изобретения могут использоваться две схемы кодирования с преобразованием - неявное преобразование (или называемое неявным выбором преобразования) и явное преобразование (или называемое явным выбором преобразования).
[0194] При неявном преобразовании группа преобразований, не являющихся DCT-2, (например, DST-1, DCT-5, DST-7, DCT-8, DST-4, DCT-4) может быть выбрана без сигнализации индекса преобразования. Например, группа преобразований, не являющихся DCT-2, может быть выбрана с использованием уже кодированной информации, которая доступна как для кодера, так и для соответствующего декодера. Уже кодированная информация может включать, помимо прочего, режим внутреннего предсказания (например, планарный режим, режим DC, угловые режимы), размер блока, ширину блока, высоту блока, соотношение сторон блока, размер области блока, режим внутреннего кодирования (например, используется ли множество опорных линий (MRL), ISP, MIP), позиции выбранных кандидатов на пространственное слияние (например, верхний кандидат на слияние, левый кандидат на слияние), режим внешнего предсказания (например, комбинация внешнего предсказания в зависимости от позиции (inter-PDPC, inter position dependent prediction combination), режим комбинированного внешнего и внутреннего предсказания (СIIР, combined inter intra prediction)).
[0195] Напротив, при явном преобразовании одно преобразование может быть выбрано из группы возможных типов преобразований (например, DCT-2, DST-1, DCT-5, DST-7, DCT-8, DST-4, DCT-4) с индексом, сигнализируемым для указания, какой тип преобразования выбран.
[0196] 1. Включение неявного преобразования, когда явный MTS отключен
[0197] В некоторых вариантах осуществления изобретения, как описано в разделе II.3.2, для блока остатка с внутренним предсказанием, который не кодируется ISP, неявный выбор преобразования может быть включен, когда явный MTS отключен для блоков остатка как с внутренним, так и с внешним предсказанием, как указано синтаксическими элементами высокого уровня (HLS). Например, когда оба синтаксических элемента SPS sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag равны 0, декодер может решить включить неявный выбор преобразования для изображений или блоков, связанных с синтаксическими элементами SPS.
[0198] В качестве примера фиг. 28А-28В в совокупности показывают текст (2800), определяющий процесс кодирования с преобразованием для выполнения явного или неявного выбора преобразования для текущего блока на основе соответствующих синтаксических элементов, принятых из битового потока. Текст (2800) может использоваться как часть стандарта кодирования видеоданных. Два раздела (2801) и (2802) показаны на фиг. 28А, и один раздел (2803) и две таблицы (2804) и (2805) показаны на фиг. 28В.
[0199] В разделе (2801) описаны входные и выходные данные процесса кодирования с преобразованием. В частности, местоположение, размер, цветовая составляющая, коэффициенты преобразования с деквантованием текущего блока являются входными данными, а отсчеты остатка после обработки обратного преобразования с использованием выбранных преобразований являются выходными данными.
[0200] В разделе (2802) описано получение переменной, обозначенной implicitMtsEnabled. Переменная указывает, включен ли неявный выбор. Как описано, если синтаксический элемент SPS, sps_mts_enabled_flag, равен 1 (что указывает на то, что MTS включен для изображений или блоков, связанных с этим синтаксическим элементом SPS), значение implicitMtsEnabled равно 1, когда выполняется одно из трех следующих условий: (i) для кодирования текущего блока используется ISP; (ii) SBT включено, и обе стороны текущего блока меньше или равны 32, что указывает на использование SBT; или (iii) оба значения sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag равны 0 (что указывает на то, что явный MTS отключен как для блоков с внутренним кодированием, так и для блоков с внешним кодированием), и текущий блок является блоком с внутренним кодированием. В противном случае значение implicitMtsEnabled устанавливается равным 0, что указывает на то, что неявный выбор преобразования отключен для текущего блока.
[0201] Как описано в разделе (2802), согласно условию (i), для блока с внутренним предсказанием, кодированного в режиме ISP, неявное преобразование может быть включено для кодирования этого блока с внутренним предсказанием. Согласно условию (iii), для блока с внутренним предсказанием, не кодированного в режиме ISP, когда явный MTS отключен как для блоков с внутренним предсказанием, так и для блоков с внешним предсказанием, может быть включено неявное преобразование для кодирования блока с внутренним предсказанием, не кодированного в режиме ISP.
[0202] В разделе (2803) вертикальные и горизонтальные преобразования определяются в соответствии с переменной implicitMtsEnabled, входными данными для процесса и соответствующими синтаксическими элементами. Например, когда значения sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag равны 0, текущему блоку (то есть блоку компонента яркости и с внутренним предсказанием) может быть задано ядро горизонтального преобразования (обозначенное trTypeHor) и ядро вертикального преобразования (обозначенное trTypeVer) согласно выражениям (3-1) и (3-2), соответственно.
[0203] В таблицах (2804) и (2805) числа 1 и 2 для указания горизонтального или вертикального типов ядра преобразования указывают преобразование DST-7 и преобразование DCT-8, соответственно, в то время как число 0 указывает преобразование DCT-2. В некоторых примерах преобразования DST-4 могут использоваться вместо преобразований DST-7.
[0204] В примерах на фиг. 28А-28В для блоков, управляемых элементами HLS sps_explicit_mts_intra_enabled_flag и sps_explicit_mts _nter_enabled_flag, явный MTS для блоков с внешним кодированием и неявное преобразование для блоков с внутренним кодированием (не кодированных ISP) не могут использоваться совместно. Однако неявный выбор преобразования в блоке остатка внутреннего предсказания не обязательно должен зависеть от элемента HLS (например, sps_explicit_mts_inter_enabled_flag), управляющего включением MTS для остатков внешнего предсказания. Таким образом, в некоторых вариантах осуществления изобретения для блока с внутренним кодированием, который не предсказывается в режиме ISP, возможность применения неявного преобразования зависит от того, может ли MTS применяться для остатка внутреннего предсказания (например, значение sps_explicit_mts_intra_enabled_flag), но не зависит от того, может ли MTS применяться для остатка внешнего предсказания (значение sps_explicit_mts_inter_enabled_flag). С таким механизмом управления разрешается одновременно включать использование MTS с внешним кодированием (явного MTS, применяемого для блока остатка с внешним предсказанием) и неявного преобразования (для остатков внутреннего предсказания).
[0205] Например, первый и второй элементы HLS могут быть приняты в декодере. Первый и второй элементы HLS управляют одним и тем же набором изображений или областей (например, видеопоследовательностью, изображением, слайсом, тайлом и т.п.), которые могут включать блоки остатка с внутренним кодированием и блоки остатка с внешним кодированием. Первый элемент HLS указывает, включен или отключен явный MTS для соответствующих блоков остатка с внутренним кодированием, а второй элемент HLS указывает, включен или отключен явный MTS для соответствующих блоков остатка с внешним кодированием. Что касается термина "MTS с внешним кодированием", явный MTS, применяемый для блока остатка с внутренним кодированием, может называться MTS с внутренним кодированием.
[0206] Когда первый элемент HLS указывает на то, что явный MTS отключен для блоков остатка с внутренним кодированием, декодер может соответственно решить включить неявное преобразование (или неявный MTS) для блоков с внутренним кодированием, без учета значения второго элемента HLS. Например, второй элемент HLS может иметь значение 0 или 1, что не влияет на включение неявного преобразования для блока остатка с внутренним кодированием.
[0207] В качестве примера на фиг. 29 показаны модификации (2900) текста (2800), которые соответствуют схеме включения неявного преобразования, где могут совместно использоваться неявное преобразование для блоков остатка с внутренним кодированием и явное преобразование для блоков остатка с внешним кодированием. В модификациях (2900) удаленный текст отмечен зачеркиванием, а добавленный текст - подчеркиванием. Как показано, условие для значения sps_explicit_mts_inter_enabled_flag, равного 0, было удалено.
[0208] 2. Отключение неявного преобразования, когда включены другие инструменты кодирования
[0209] В некоторых вариантах осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием (который не предсказывается в режиме ISP) зависит от того, включен ли конкретный инструмент кодирования, как указано посредством элемента HLS.
[0210] 2.1 Когда включено NSST
[0211] В варианте осуществления изобретения неявное преобразование может быть отключено для блока с внутренним кодированием (который не предсказывается в режиме ISP), когда элемент HLS указывает на то, что NSST включено. Например, как описано в разделе II.4.1, матрица Τ преобразования используется в уравнении (3) для обработки вторичного преобразования. Матрица Τ преобразования может включать постоянные элементы и может быть сформирована с допущением определенной статистики целевых блоков коэффициентов, таких как блоки коэффициентов, полученные в результате явного выбора преобразования. Таким образом, блок коэффициентов, полученный в результате неявного выбора преобразования, может не совпадать с NSST с точки зрения статистики соответствующих коэффициентов. Например, применение NSST к результатам неявного преобразования может не улучшить производительность кодирования. По этой причине может быть желательно отключение неявного преобразования при включенном NSST.
[0212] В этом описании термин NSST может использоваться для обозначения семейства схем кодирования с неразделяемым вторичным преобразованием, таких как первоначальная схема NSST, RST, LFNST и т.п.
[0213] Например, декодер может принимать два элемента HLS: один элемент HLS (например, sps_explicit_mts_intra_enabled_flag) указывает на то, что явный MTS отключен, в то время как другой элемент HLS (например, sps_lfnst_enabled_flag) указывает на то, что NSST включено. Соответственно, декодер может решить не включать неявное преобразование для блоков с внутренним кодированием, управляемых этими двумя элементами HLS. Напротив, если один элемент HLS указывает на то, что явный MTS отключен, а другой элемент HLS указывает на то, что NSST также отключено, декодер может решить включить неявное преобразование для соответствующих блоков с внутренним кодированием.
[0214] В качестве примера на фиг. 30 показаны модификации (3000) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда NSST отключено. Как показано, к условию (iii) добавлено дополнительное ограничение "значение sps_lfnst_enabled_flag равно 0" для получения переменной implicitMtsEnabled.
[0215] 2.2 Когда включено MIP
[0216] Подобно сценарию, в котором включено NSST, в некоторых вариантах осуществления изобретения неявное преобразование отключено для блока с внутренним кодированием (который не предсказывается в режиме ISP), когда элемент HLS указывает на то, что включено MIP. Например, применение режима внутреннего кодирования MIP для блока может привести к тому, что блок остатка будет иметь статистику, отличную от блоков остатка, кодированных с помощью обычных режимов внутреннего кодирования. Таким образом, блок остатка, кодированный с помощью MIP, может не совпадать с неявным преобразованием, которое может предполагать статистику остатка, полученную в результате обычных режимов внутреннего кодирования. Следовательно, отключение неявного преобразования может быть желательным, когда MIP включено.
[0217] Например, декодер может принимать два элемента HLS: один элемент HLS (например, sps_explicit_mts_intra_enabled_flag) указывает на то, что явный MTS отключен, в то время как другой элемент HLS (например, sps_mip_enabled_flag) указывает на то, что MIP включено. Соответственно, декодер может решить не включать неявное преобразование для блоков с внутренним кодированием, управляемых этими двумя элементами HLS. Напротив, если как явный MTS, так и MIP отключены, как указано двумя элементами HLS, декодер может решить включить неявное преобразование для соответствующих блоков с внутренним кодированием.
[0218] В качестве примера на фиг. 31 показаны модификации (3100) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда MIP отключено. Как показано, к условию (iii) добавлено дополнительное ограничение "значение sps_mip_enabled_flag равно 0" для получения переменной implicitMtsEnabled.
[0219] 3. Включение неявного преобразования на основе указаний синтаксических элементов уровня блока
[0220] В некоторых вариантах осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием (который не предсказывается в режиме ISP) зависит от того, применяется ли MTS, NSST или MIP для блока с внутренним кодированием, как указано синтаксическими элементами уровня блока.
[0221] 3.1 Когда MTS и NSST не применяются
[0222] В варианте осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием зависит от того, не применяются ли MTS и NSST для блока с внутренним кодированием, как указано синтаксическими элементами уровня блока.
[0223] Например, декодер может принимать первый и второй синтаксические элементы уровня CU (или уровня блока), связанные с текущим блоком, который является блоком с внутренним кодированием и не предсказывается в режиме ISP. Текущий блок может быть расположен в позиции с координатами [х0] [у0] внутри изображения.
[0224] Первый синтаксический элемент уровня CU (например, tu_mts_idx [х0] [у0]) может указывать на то, что преобразования DCT-2 могут использоваться для текущего блока вместо преобразований, используемых в MTS (например, DST-7, DCT-8, DCT-4 и т.п.). Например, в таблице (2804), кoгда tu_mts_idx[x0][y0] имеет значение 0, переменные trTypeHor и trTypeVer имеют значение 0, что указывает на то, что горизонтальное и вертикальное преобразования являются преобразованиями DCT-2, а преобразования DST-7 или DCT-8 не применяются. Второй синтаксический элемент уровня CU (например, Ifnst_idx[x0][y0]) может указывать на то, что NSST не применяется к текущему блоку. На основе вышеупомянутых первого и второго синтаксических элементов уровня CU декодер может решить включить неявный MTS для текущего блока.
[0225] Напротив, если первый и второй синтаксические элементы уровня CU указывают на то, что применяется MTS (tu_mts _idx[x0][y0] имеет значение 1, 2, 3 или 4), или применяется NSST (lfnst_idx[x0][y0] имеет ненулевое значение), декодер может решить отключить неявный MTS.
[0226] В качестве примера на фиг. 32 показаны модификации (3200) текста (2800), которые соответствуют сценарию, в котором ни MTS, ни NSST не применяются к текущему блоку. Как показано, исходное условие (iii) в тексте (2800) заменено условием, что два синтаксических элемента уровня CU tu_mts_idx[х0][у0] и lfnst_idx[х0][у0] равны 0.
[0227] 3.2 Когда MTS, NSST и MIP не применяются
[0228] В варианте осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием зависит от того, не применяются ли MTS, NSST и MIP для блока с внутренним кодированием, как указано синтаксическими элементами уровня блока. По сравнению с разделом III.3.1, дополнительно рассматривается еще один инструмент кодирования - MIP.
[0229] Например, декодер может принимать первый, второй и третий синтаксические элементы уровня CU (или уровня блока), связанные с текущим блоком, который кодирован с помощью внутреннего кодирования и не предсказан в режиме ISP. Текущий блок может быть расположен в позиции с координатами [х0 [у0] внутри изображения.
[0230] Первый синтаксический элемент уровня CU (например, tu__mts_idx[x0][y0]) может указывать на то, что преобразования DCT-2 могут использоваться для текущего блока вместо преобразований, используемых в MTS. Второй синтаксический элемент уровня CU (например, lfhst_idx[x0][y0]) может указывать на то, что NSST не применяется к текущему блоку. Третий синтаксический элемент уровня CU (например, tu_mip_flag) может указывать на то, что предсказание MIP не применяется для текущего блока. На основе вышеупомянутых трех синтаксических элементов уровня CU декодер может решить включить неявный MTS для текущего блока.
[0231] Напротив, если указанные выше три синтаксических элемента уровня CU указывают на то, что применяется MTS (tu_mts_idx[x0][y0] имеет значение 1, 2, 3 или 4), применяется NSST (lfnst_idx[x0][y0] имеет ненулевое значение) или применяется MIP (tu_mip_flag имеет значение 1), декодер может решить отключить неявный MTS.
[0232] В качестве примера на фиг. 33 показаны модификации (3300) текста (2800), которые соответствуют сценарию, в котором ничто из MTS, NSST или MIP не применяется для текущего блока. Как показано, исходное условие (iii) в тексте (2800) заменено условием, что все три синтаксических элемента уровня CU tu_mts_idx[х0][у0], intra_mip_flag[х0][у0] и lfnst_idx [х0][у0] равны 0.
[0233] 4. Примеры способов кодирования с преобразованием
[0234] Фиг. 34-36 показывают блок-схемы способов (3400), (3500) и (3600) кодирования с преобразованием согласно некоторым вариантам осуществления изобретения. Способы (3400), (3500) и (3600) могут использоваться при обработке обратного преобразования в декодере для формирования блока остатка для восстанавливаемого блока. В различных вариантах осуществления изобретения способы (3400), (3500) и (3600) могут выполняться схемами обработки, такими как схемы обработки в оконечных устройствах (210), (220), (230) и (240), схема обработки, которая выполняет функции видеодекодера (310), схема обработки, которая выполняет функции видеодекодера (410), и т.п. В некоторых вариантах осуществления изобретения способы (3400), (3500) и (3600) могут быть реализованы в программных инструкциях, так что при исполнении программных инструкций схема обработки выполняет способы (3400), (3500) и (3600).
[0235] 4.1 Способ (3400): Включение неявного преобразования, когда явный MTS отключен
[0236] Способ (3400) начинается на этапе (S3401) и переходит к этапу (S3410).
[0237] На этапе (S3410) в декодере принимают первый элемент HLS. Первый элемент HLS может указывать, отключен ли явный MTS для блока с внутренним кодированием. Например, блок с внутренним кодированием находится в процессе реконструкции и, таким образом, может упоминаться как текущий блок. Первый элемент HLS может быть связан с набором блоков кодирования, которые включают текущий блок.
[0238] На этапе (S3420) в декодере принимают второй элемент HLS. Второй элемент HLS может указывать, включен ли явный MTS для блока с внешним кодированием. Например, второй элемент HLS может быть связан с тем же набором блоков кодирования, что и первый элемент HLS. Как текущий блок, так и блок с внешним кодированием включены в набор блоков кодирования.
[0239] На этапе (S3430) декодер может решить включить неявный MTS для текущего блока, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что явный MTS включен для блока с внешним кодированием. Способ (3400) может перейти к этапу (S3499) и завершиться на этапе (S3499).
[0240] 4.2 Способ (3500): Отключение неявного преобразования, когда включены другие инструменты кодирования
[0241] Способ (3500) начинается на этапе (S3501) и переходит к этапу (S3510).
[0242] На этапе (S3510) в декодере принимают первый элемент HLS. Первый элемент HLS может указывать, включен ли явный MTS для блока с внутренним кодированием. Блок с внутренним кодированием может быть реконструируемым в настоящий момент блоком. Первый элемент HLS управляет набором блоков кодирования, включающим упомянутый блок с внутренним кодированием.
[0243] На этапе (S3520) в декодере принимают второй элемент HLS. Второй элемент HLS может указывать, отключено ли NSST или MIP для блока с внутренним кодированием. Например, второй элемент HLS может управлять тем же набором блоков кодирования, что и первый элемент HLS.
[0244] На этапе (S3530) декодер может определить, включить ли неявный MTS для обработки блока с внутренним кодированием на основе первого и второго элементов HLS. Например, декодер может решить включить неявный MTS для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что NSST или MIP отключено для блока с внутренним кодированием. В качестве альтернативы, декодер может решить отключить неявный MTS для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, но второй элемент HLS указывает на то, что NSST или MIP включено для блока с внутренним кодированием. Способ (3500) может перейти к этапу (S3599) и завершиться на этапе (S3599).
[0245] 4.3 Способ (3600): Включение неявного преобразования на основе указаний синтаксических элементов уровня блока
[0246] Способ (3600) начинается на этапе (S3601) и переходит к этапу (S3610).
[0247] На этапе (S3610) в декодере принимают блок с внутренним кодированием. Блок с внутренним кодированием может быть связан с первым синтаксическим элементом уровня блока, указывающим, применяется ли MTS, и вторым синтаксическим элементом уровня блока, указывающим, применяется ли NSST. Например, блок с внутренним кодированием принадлежит CU, который включает синтаксические элементы уровня CU, включая первый и второй синтаксические элементы уровня блока.
[0248] На этапе (S3620) декодер может определить, включить ли неявный MTS для блока с внутренним кодированием, на основе первого и второго синтаксических элементов уровня блока. Например, декодер может решить включить неявный MTS для блока с внутренним кодированием, когда первый синтаксический элемент уровня блока указывает на то, что MTS не применяется, а второй синтаксический элемент уровня блока указывает на то, что NSST не применяется. В качестве альтернативы, декодер может решить отключить неявный MTS для блока с внутренним кодированием, когда первый синтаксический элемент уровня блока указывает на то, что MTS не применяется, но второй синтаксический элемент уровня блока указывает на то, что применяется NSST. Способ (3600) может перейти к этапу (S3699) и завершиться на этапе (S3699).
[0249] IV. Компьютерная система
[0250] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 37 показана компьютерная система, пригодная для осуществления некоторых вариантов осуществления изобретения.
[0251] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.
[0252] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0253] Компоненты компьютерной системы, показанные на фиг. 37, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы.
[0254] Компьютерная система может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).
[0255] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура (3701), мышь (3702), сенсорная панель (3703), сенсорный экран (3710), информационная перчатка (не показана), джойстик (3705), микрофон (3706), сканер (3707) и камера (3708).
[0256] Компьютерная система также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (3710), информационной перчатки (не показана) или джойстика (3705), а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики (3709), наушники (не показаны)), устройства визуального вывода (например, экраны (3710), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голографические дисплеи, дымовые баки (не показаны) и принтеры (не показаны).
[0257] Компьютерная система также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD/DVD ROM/RW (3720) с носителями (3721) CD/DVD и т.п., карты (3722) флэш-памяти, сменный жесткий диск или твердотельный диск (3723), традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.
[0258] Специалисты в данной области техники также должны понимать, что термин "машиночитаемые носители", используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.
[0259] Компьютерная система также может включать интерфейс (3754) к одной или более сетям (3755) связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (3749) (например, USB-порты компьютерной системы); другие обычно встраиваются в ядро компьютерной системы путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.
[0260] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (3740) компьютерной системы.
[0261] Ядро (3740) может включать один или более центральных процессоров (CPU) (3741), графические процессоры (GPU) (3742), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (3743), аппаратные ускорители (3744) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (3745), оперативной памятью (3746), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п.(3747), могут соединяться посредством системной шины (3748). В некоторых компьютерных системах системная шина (3748) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (3748) ядра, либо через периферийную шину (3749). Архитектуры периферийной шины включают PCI, USB и т.п.
[0262] Устройства CPU (3741), GPU (3742), FPGA (3743) и ускорители (3744) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM (3745) или RAM (3746). Временные данные также могут храниться в памяти RAM (3746), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (3747) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU (3741), GPU (3742), хранилищем (3747) данных большой емкости, памятью ROM (3745), RAM (3746) и т.п.
[0263] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.
[0264] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру, и, в частности, ядро (3740) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра (3740), например, внутренним хранилищем (3747) данных большой емкости или ROM (3745). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (3740). Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (3740) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные способы или конкретные части описанных здесь конкретных способов, включая задание структур данных, хранящихся в памяти RAM (3746), и модификацию таких структур данных согласно способам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (3744)), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных способов или конкретных частей описанных здесь конкретных способов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IС, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
Приложение А: Сокращения
АМТ: адаптивное множество преобразований
ASIC: специализированная интегральная схема
BMS: набор эталонов
CANBus: шина сети контроллеров
CCLM: линейная модель перекрестных компонентов
CD: компакт-диск
СОТ: составное ортонормированное преобразование
CPU: центральный процессор
CRT: электронно-лучевая трубка
СТВ: блок дерева кодирования
CTU: пакет дерева кодирования
CU: пакет кодирования
DVD: цифровой видеодиск
ЕМТ: расширенное множество преобразований
FPGA: программируемая пользователем вентильная матрица
GOP: группа изображений
GPU: графический процессор
GSM: глобальная система мобильной связи
HDR: расширенный динамический диапазон
HEVC: высокоэффективное кодирование видеоданных
HLS: синтаксис высокого уровня
HRD: гипотетический эталонный декодер
IBC: копия блока с внутренним кодированием
IС: интегральная схема
IDT: тождественное преобразование
ISP: внутреннее кодирование с субразделением
JEM: модель совместного исследования
JVET: объединенная команда исследования видео
KLT: преобразование Карунена-Лоэва
LAN: локальная сеть
LCD: жидкокристаллический дисплей
LFNST: низкочастотное неразделяемое вторичное преобразование
LTE: долгосрочное развитие
MIP: режим внутреннего предсказания на основе матрицы
MRL (или MRLP): предсказание с множеством опорных линий
MTS: выбор множества преобразований
MV: вектор движения
NSST: неразделяемое вторичное преобразование
OLED: органический светодиод
РВ: блок предсказания
PCI: соединение периферийных компонентов
PLD: программируемое логическое устройство
PPS: набор параметров изображения
PU: пакет предсказания
RAM: оперативная память
ROM: постоянная память
RST: преобразование уменьшенного размера
SBT: преобразование субблоков
SDR: стандартный динамический диапазон
SEI: дополнительная информация улучшения
SNR: отношение "сигнал-шум"
SPS: набор параметров последовательности
SSD: твердотельный накопитель
SVT: пространственно-изменяющееся преобразование
TSM: режим пропуска преобразования
TU: пакет преобразования
USB: универсальная последовательная шина
VPS: набор параметров видео
VUI: информация о возможности использования видео
VVC: универсальное кодирование видеоданных.
[0265] Хотя здесь были описаны некоторые варианты осуществления изобретения, возможны изменения, перестановки и различные эквивалентные замены в пределах объема изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.