Способ, устройство и система для кодирования и декодирования преобразованного блока выборок видео
METHOD, APPARATUS AND SYSTEM FOR ENCODING AND DECODING A CONVERTED BLOCK OF VIDEO SAMPLES

Область техники
[0001] Настоящее изобретение относится, в общем, к обработке цифрового сигнала видео и, в частности, к способу, устройству и системе для кодирования и декодирования преобразованного блока выборок видео. Настоящее изобретение также относится к компьютерному программному продукту, включающему в себя считываемый компьютером носитель, на котором записана компьютерная программа для кодирования и декодирования преобразованного блока выборок видео.
предшествующий Уровень техники
[0002] В настоящее время существует много приложений для кодирования видео, включая приложения для передачи и хранения данных видео. Также были разработаны многие стандарты кодирования видео, а другие разрабатываются в настоящее время. Недавние разработки в стандартизации кодирования видео привели к образованию группы, называемой «Joint Video Experts Team» (Объединенная группа экспертов по видео) (JVET). Объединенная группа экспертов по видео (JVET) включает в себя членов Study Group (Исследовательской группы) 16, Question 6 (SG16/Q6) Сектора стандартизации в области телекоммуникации (ITU-T) Международного союза по телекоммуникациям (ITU), известной как «Video Coding Experts Group» (Группа экспертов по кодированию видео) (VCEG), и членов Международных организаций по стандартизации/Объединенного технического комитета 1 Международной электротехнической комиссии/Подкомитета 29/Рабочей группы 11 (ISO/IEC JTC1/SC29/WG11), также известной как «Moving Picture Experts Group» (Группа экспертов по движущимся изображениям), MPEG.
[0003] Объединенная группа экспертов по видео (JVET) издала Call for Proposals (вызов для предложений) (CfP), ответы анализировались на ее 10-й встрече в Сан-Диего, США. Представленные ответы продемонстрировали способность сжатия видео, значительно превосходящую способность современного стандарта сжатия видео уровня техники, то есть: «high efficiency video coding» (высокоэффективного кодирования видео) (HEVC). На основе этих превосходящих рабочих характеристик, было принято решение начать проект для разработки нового стандарта сжатия видео, который должен быть назван «versatile video coding» (многоцелевое кодирование видео) (VVC). Ожидается, что VVC будет решать проблему текущих потребностей во все более высоких рабочих характеристиках сжатия, особенно при увеличении возможностей форматов видео (например, с более высоким разрешением и более высокой частотой кадров), и в увеличении потребностей рынка для доставки услуг по WAN, где затраты на ширину полосы являются относительно высокими. В то же самое время, VVC должно быть реализуемым в современных процессах на кремниевой основе и предлагать приемлемый компромисс между достигаемыми рабочими характеристиками и стоимостью реализации (например, с точки зрения площади кремния, нагрузки процессора CPU, использования памяти и ширины полосы).
[0004] Данные видео включают в себя последовательность кадров данных изображения, каждый из которых включает в себя один или более цветовых каналов. Обычно имеется один первичный цветовой канал и два вторичных цветовых канала. Первичный цветовой канал обычно называют каналом «яркости», а вторичный(е) цветовой(ые) канал(ы) обычно называют «каналами цветности». Хотя данные видео обычно отображаются в цветовом пространстве RGB (красный-зеленый-синий), цветовое пространство имеет высокую степень корреляции между тремя соответствующими компонентами. Представление данных видео, наблюдаемое кодером или декодером, часто использует цветовое пространство, такое как YCbCr. YCbCr концентрирует яркость в Y (первичном) канале и цветность в Cb и Cr (вторичных) каналах. Кроме того, каналы Cb и Cr могут быть дискретизированы с более низкой частотой по сравнению с каналом яркости, например, половинной по горизонтали и половинной по вертикали, - известно как «4:2:0 формат цветности».
[0005] VVC является кодеком на «блочной основе», в котором кадры делятся на блоки, и блоки обрабатываются в конкретном порядке. Для каждого блока генерируется предсказание содержимого блока и формируется представление разности (или ‘остатка’ в пространственной области) между предсказанием и фактическим содержимым блока, наблюдаемым как ввод в кодер. Разность может быть закодирована как последовательность остаточных коэффициентов, полученная в результате применения прямого первичного преобразования, такого как дискретное косинусное преобразование (DCT) или другое преобразование, к блоку остаточных значений. Это первичное преобразование применяется к блоку остаточных выборок раздельно, т.е. двумерное преобразование выполняется в два прохода, причем сначала строки преобразуются посредством применения одномерного преобразования к каждой строке, и затем осуществляется преобразование этого результата посредством применения одномерного преобразования к каждому столбцу для формирования блока остаточных коэффициентов, что, по существу, декоррелирует остаточные выборки. Кроме того, множество преобразований доступно для использования в этой обработке строк и столбцов, требуя сигнализации для указания того, какое из них должно использоваться. Хотя вариант для использования различных преобразований в блоке дает преимущество сжатия, оно немного уменьшается из-за необходимости кодировать индексы для выбора того, какое преобразование должно использоваться по горизонтали и вертикали. Эффективное кодирование этой сигнализации выгодно, чтобы воздействовать на эти непроизводительные издержки сигнализации.
Краткое описание Сущности изобретения
[0006] Задачей настоящего изобретения является, по существу, преодоление или по меньшей мере смягчение одного или более недостатков существующих конфигураций.
[0007] Аспект настоящего раскрытия обеспечивает способ декодирования блока преобразования в кадре изображения, из битового потока, причем способ содержит: декодирование одиночной усеченной унарной бинаризации из битового потока, причем одиночная усеченная унарная бинаризация используется для горизонтального преобразования и вертикального преобразования блока преобразования кадра изображения; определение типа горизонтального и вертикального преобразования на основе декодированной одиночной усеченной унарной бинаризации; и декодирование блока преобразования в кадре изображения путем применения определенного типа горизонтального и вертикального преобразования к блоку преобразования изображения.
[0008] Другой аспект настоящего раскрытия предусматривает долговременный считываемый компьютером носитель, содержащий компьютерные прикладные программы, причем программы исполняются компьютерным устройством, чтобы побуждать компьютер выполнять способ декодирования блока преобразования в кадре изображения, из битового потока, причем способ содержит: декодирование одиночной усеченной унарной бинаризации из битового потока, причем одиночная усеченная унарная бинаризация используется для горизонтального преобразования и вертикального преобразования блока преобразования кадра изображения; определение типа горизонтального и вертикального преобразования на основе декодированной одиночной усеченной унарной бинаризации; и декодирование блока преобразования в кадре изображения путем применения определенного типа горизонтального и вертикального преобразования к блоку преобразования изображения.
[0009] Также раскрыты другие аспекты.
Краткое описание чертежей
[0010] Далее, по меньшей мере один вариант осуществления настоящего изобретения будет описан со ссылкой на следующие чертежи и приложения, на которых:
[0011] Фиг. 1 представляет собой блок-схему, показывающую систему кодирования и декодирования видео.
[0012] Фиг. 2А и 2В образуют блок-схему компьютерной системы общего назначения, в которой может быть практически осуществлена одна или обе из системы кодирования и декодирования видео согласно фиг. 1.
[0013] Фиг. 3 представляет собой блок-схему, показывающую функциональные модули кодера видео.
[0014] Фиг. 4 представляет собой блок-схему, показывающую функциональные модули декодера видео.
[0015] Фиг. 5 представляет собой диаграмму, показывающую доступные разбиения блока в один или более блоков в древовидной структуре многоцелевого кодирования видео.
[0016] Фиг. 6 представляет собой схематичную иллюстрацию потока данных для достижения разрешенных делений блока в один или более блоков в древовидной структуре многоцелевого кодирования видео.
[0017] Фиг. 7 представляет собой примерное разбиение единицы дерева кодирования (CTU) на некоторое количество единиц кодирования (CU).
[0018] Фиг. 8А представляет собой диаграмму, показывающую режимы интра-предсказания.
[0019] Фиг. 8В представляет собой таблицу, показывающую отображение из набора преобразований в конкретное преобразование в соответствии с индексом преобразования.
[0020] Фиг. 8C представляет собой таблицу, показывающую отображение из режимов интра-предсказания в наборы преобразований для блока преобразования в горизонтальном направлении и вертикальном направлении.
[0021] Фиг. 9 представляет собой блок-схему, показывающую модуль обратного преобразования кодера видео согласно фиг. 3 или декодера видео согласно фиг. 4.
[0022] Фиг. 10А представляет собой диаграмму, иллюстрирующую взаимосвязь между усеченным унарным синтаксическим элементом и индексами преобразования для индексирования преобразования по горизонтали и вертикали.
[0023] Фиг. 10В представляет собой диаграмму, показывающую альтернативную взаимосвязь между усеченным унарным синтаксическим элементом и индексами преобразования для индексирования преобразования по горизонтали и вертикали.
[0024] Фиг. 11 представляет собой блок-схему последовательности операций способа выполнения первичного преобразования в соответствии с явным выбором преобразования для кодирования блока преобразования остаточных коэффициентов в битовый поток.
[0025] Фиг. 12 представляет собой блок-схему последовательности операций способа декодирования блока преобразования остаточных коэффициентов из битового потока посредством первичного обратного преобразования в соответствии с явным выбором преобразования.
Подробное описание, включая наилучший режим
[0026] Когда в любом одном или более из приложенных чертежей делается ссылка на этапы и/или признаки, которые имеют одинаковые ссылочные позиции, эти этапы и/или признаки имеют для целей этого описания одну и ту же функцию(и) или операцию(и), если только не имеется противоположного намерения.
[0027] Фиг. 1 представляет собой блок-схему, показывающую функциональные модули системы 100 кодирования и декодирования видео. Система 100 может использовать способы сканирования коэффициентов для повышения эффективности сжатия и/или достижения уменьшенной стоимости реализации. Система 100 включает в себя устройство 110 источника и устройство 130 места назначения. Канал 120 связи используется для передачи кодированной информации видео от устройства 110 источника к устройству 130 места назначения. В некоторых конфигурациях, устройство 110 источника и устройство 130 места назначения могут одно или оба содержать соответствующие мобильные телефоны или смартфоны, и в этом случае канал 120 связи является беспроводным каналом. В других конфигурациях, устройство 110 источника и устройство 130 места назначения могут содержать оборудование видеоконференции, в этом случае канал 120 связи обычно является проводным каналом, таким как Интернет-соединение. Кроме того, устройство 110 источника и устройство 130 места назначения могут содержать любое из широкого диапазона устройств, включая устройства, поддерживающие эфирное телевизионное вещание, приложения кабельного телевидения, Интернет-приложения видео (включая потоковую передачу) и приложения, в которых кодированные данные видео захвачены на некотором считываемом компьютером носителе данных, таком как накопители на жестких дисках, в файловом сервере.
[0028] Как показано на фиг. 1, устройство 110 источника включает в себя источник 112 видео, кодер 114 видео и передатчик 116. Источник 112 видео обычно содержит источник данных кадров захваченного видео (показанный как 113), такой как датчик формирования изображения, предварительно захваченную последовательность видео, хранящуюся на долговременном носителе записи, или видео, передаваемое от удаленного датчика формирования изображения. Источник 112 видео может также быть выходом платы компьютерной графики, например, отображающим вывод видео операционной системы и различных приложений, исполняющихся на компьютерном устройстве, например планшетном компьютере. Примеры устройств 110 источника, которые могут включать в себя датчик формирования изображения в качестве источника 112 видео, включают в себя смартфоны, записывающие видеокамеры, профессиональные видеокамеры и сетевые видеокамеры. Кодер 114 видео преобразует (или «кодирует») захваченные данные кадра (указаны стрелкой 113) из источника 112 видео в битовый поток (указан стрелкой 115), как описано далее со ссылкой на фиг. 3. Битовый поток 115 передается передатчиком 116 по каналу 120 связи как кодированные данные видео (или «кодированная информация видео»). Также возможно, что битовый поток 115 хранится в долговременном устройстве 122 хранения, таком как флэш-память или накопитель на жестком диске, пока не будет передаваться по каналу 120 связи, или вместо передачи по каналу 120 связи.
[0029] Устройство 130 места назначения включает в себя приемник 132, декодер 134 видео и устройство 136 отображения. Приемник 132 принимает кодированные данные видео из канала 120 связи и передает принятые данные видео в декодер 134 видео как битовый поток (указан стрелкой 133). Декодер 134 видео затем выводит декодированные данные кадра (указаны стрелкой 135) на устройство 136 отображения. Примеры устройства 136 отображения включают в себя электронно-лучевую трубку, жидкокристаллический дисплей, такой как в смартфонах, планшетных компьютерах, компьютерных мониторах или автономных телевизорах. Также возможно, что функциональность каждого из устройства 110 источника и устройства 130 места назначения воплощена в одном устройстве, примеры которого включают в себя мобильные телефоны и планшетные компьютеры.
[0030] Несмотря на вышеупомянутые примерные устройства, каждое из устройства 110 источника и устройства 130 места назначения может быть сконфигурировано в компьютерной системе общего назначения, как правило, посредством комбинации аппаратных средств и программных компонентов. На фиг. 2А показана такая компьютерная система 200, которая включает в себя: компьютерный модуль 201; устройства ввода, такие как клавиатура 202, указательное устройство 203 в виде мыши, сканер 226, камеру 227, которая может быть сконфигурирована как источник 112 видео, и микрофон 280; и устройства вывода, включающие в себя принтер 215, устройство 214 отображения, которое может быть сконфигурировано как устройство 136 отображения, и динамики 217. Устройство 216 внешнего приемопередатчика модулятора-демодулятора (модема) может использоваться компьютерным модулем 201 для коммуникации с сетью 220 связи через соединение 221. Сеть 220 связи, которая может представлять канал 120 связи, может представлять собой глобальную сеть (WAN), такую как Интернет, сеть сотовой связи или частную WAN. Если соединение 221 представляет собой телефонную линию, модем 216 может представлять собой традиционный модем коммутируемой сети (c набором телефонного номера). Альтернативно, если соединение 221 является соединением с высокой пропускной способностью (например, кабельным или оптическим), модем 216 может быть широкополосным модемом. Беспроводной модем может также использоваться для беспроводного соединения с сетью 220 связи. Устройство 216 приемопередатчика может обеспечивать функциональные возможности передатчика 116 и приемника 132, и канал 120 связи может быть воплощен в соединении 221.
ТМ
ТМ
[0031] Компьютерный модуль 201 обычно включает в себя по меньшей мере один процессор 205 и блок 206 памяти. Например, блок 206 памяти может иметь полупроводниковую память с произвольным доступом (RAM) и полупроводниковую постоянную память (ROM). Компьютерный модуль 201 также включает в себя ряд интерфейсов ввода/вывода (I/O), включающих в себя: интерфейс 207 аудио-видео, который соединен с видеодисплеем 214, динамиками 217 и микрофоном 280; интерфейс I/O 213, который соединен с клавиатурой 202, мышью 203, сканером 226, камерой 227 и, опционально, джойстиком или другим устройством взаимодействия с человеком (не показано); и интерфейс 208 для внешнего модема 216 и принтера 215. Сигнал от интерфейса 207 аудио-видео к монитору 214 компьютера обычно является выходом платы компьютерной графики. В некоторых реализациях, модем 216 может быть встроен в компьютерный модуль 201, например, в интерфейсе 208. Компьютерный модуль 201 также имеет локальный сетевой интерфейс 211, который позволяет подключить компьютерную систему 200 через соединение 223 к локальной сети 222 связи, известной как локальная сеть (LAN). Как показано на фиг. 2А, локальная сеть 222 связи может также соединяться с глобальной сетью 220 через соединение 224, которое обычно включает в себя так называемое устройство «брандмауэра» или устройство с подобной функциональностью. Интерфейс 211 локальной сети может содержать схемную карту Ethernet, беспроводное устройство Bluetooth или беспроводное устройство IEEE 802.11; однако множество других типов интерфейсов может быть осуществлено на практике для интерфейса 211. Локальный сетевой интерфейс 211 может также обеспечивать функциональность передатчика 116 и приемника 132, и канал 120 связи также может быть реализован в локальной сети 222 связи.
ТМ
[0032] Интерфейсы I/O 208 и 213 могут обеспечивать одно или оба из последовательного и параллельного соединения, причем первое обычно реализуется в соответствии со стандартами универсальной последовательной шины (USB) и имеет соответствующие USB-разъемы (не показаны). Обеспечены устройства 209 хранения, которые обычно включают в себя накопитель на жестком диске (HDD) 210. Другие устройства хранения, такие как накопитель на гибких дисках и накопитель на магнитной ленте (не показаны), также могут использоваться. Накопитель 212 на оптическом диске обычно предназначен для того, чтобы действовать в качестве энергонезависимого источника данных. Портативные устройства памяти, такие как оптические диски (например, CD-ROM, DVD, Blu-ray Disc), USB-RAM, портативные, внешние жесткие диски и гибкие диски, например, могут использоваться в качестве соответствующих источников данных для компьютерной системы 200. Как правило, любое из HDD 210, накопителя 212 на оптическом диске, сетей 220 и 222 также может быть сконфигурировано, чтобы действовать в качестве источника 112 видео или в качестве места назначения для декодированных данных видео, которые должны быть сохранены для воспроизведения через дисплей 214. Устройство 110 источника и устройство 130 места назначения системы 100 или устройство 110 источника и устройство 130 места назначения системы 100 могут быть реализованы в компьютерной системе 200.
TM
[0033] Компоненты 205-213 компьютерного модуля 201 обычно осуществляют связь через взаимосвязанную шину 204 и способом, который приводит к обычному режиму работы компьютерной системы 200, известному специалистам в данной области техники. Например, процессор 205 соединен с системной шиной 204 с использованием соединения 218. Аналогично, память 206 и накопитель 212 на оптических дисках соединены с системной шиной 204 посредством соединений 219. Примеры компьютеров, на которых могут быть осуществлены описанные устройства, включают в себя IBM-PC и совместимые устройства, Sun SPARCstation, Apple Mac или аналогичные компьютерные системы.
[0034] Если необходимо или желательно, кодер 114 видео и декодер 134 видео, а также способы, описанные ниже, могут быть реализованы с использованием компьютерной системы 200, в которой кодер 114 видео, декодер 134 видео и способы, которые будут описаны, могут быть реализованы в виде одной или нескольких прикладных программ 233 программного обеспечения, исполняемых в компьютерной системе 200. В частности, кодер 114 видео, декодер 134 видео и этапы описанных способов выполняются инструкциями 231 (см. фиг. 2В) в программном обеспечении 233, которые выполняются в компьютерной системе 200. Программные инструкции 231 могут быть сформированы как один или более модулей кода, каждый для выполнения одной или более конкретных задач. Программное обеспечение также может быть разделено на две отдельные части, в которых первая часть и соответствующие модули кода выполняют описанные способы, а вторая часть и соответствующие модули кода управляют пользовательским интерфейсом между первой частью и пользователем.
[0035] Программное обеспечение может храниться в считываемом компьютером носителе, включая, например, устройства хранения, описанные ниже. Программное обеспечение загружается в компьютерную систему 200 со считываемого компьютером носителя и затем исполняется компьютерной системой 200. Считываемый компьютером носитель, имеющий такое программное обеспечение или компьютерную программу, записанную на считываемом компьютером носителе, представляет собой компьютерный программный продукт. Использование компьютерного программного продукта в компьютерной системе 200 предпочтительно обеспечивает выгодное устройство для реализации кодера 114 видео, декодера 134 видео и описанных способов.
[0036] Программное обеспечение 233 обычно хранится на HDD 210 или в памяти 206. Программное обеспечение загружается в компьютерную систему 200 со считываемого компьютером носителя и исполняется компьютерной системой 200. Таким образом, например, программное обеспечение 233 может храниться на носителе 225 хранения на оптически считываемом диске (например, CD-ROM), который считывается накопителем 212 на оптическом диске.
TM
[0037] В некоторых случаях, прикладные программы 233 могут предоставляться пользователю закодированными на одном или нескольких CD-ROM 225 и считываться соответствующим накопителем 212 или альтернативно могут считываться пользователем из сетей 220 или 222. Кроме того, программное обеспечение также может загружаться в компьютерную систему 200 с других считываемых компьютером носителей. Считываемый компьютером носитель хранения относится к любому долговременному (непереходному) осязаемому носителю хранения, который предоставляет записанные инструкции и/или данные в компьютерную систему 200 для исполнения и/или обработки. Примеры таких носителей хранения включают в себя гибкие диски, магнитную ленту, CD-ROM, DVD, Blu-ray Disc, накопитель на жестком диске, ROM или интегральную схему, USB-память, магнитооптический диск или считываемую компьютером карту, такую как карта PCMCIA и тому подобное, независимо от того, являются ли такие устройства внутренними или внешними для компьютерного модуля 201. Примеры переходных или неосязаемых считываемых компьютером носителей (сред) передачи, которые могут также участвовать в предоставлении программного обеспечения, прикладных программ, инструкций и/или данных видео или закодированных данных видео в компьютерный модуль 401, включают в себя радио или инфракрасные каналы передачи, а также сетевое соединение с другим компьютером или сетевым устройством и Интернет или интранет, включая передачи электронной почты и информацию, записанную на веб-сайтах, и т.п.
[0038] Вторая часть прикладных программ 233 и соответствующие модули кода, упомянутые выше, могут исполняться, чтобы реализовывать один или более графических пользовательских интерфейсов (GUI), которые должны воспроизводиться или иным образом представляться на дисплее 214. Посредством манипулирования, как правило, клавиатурой 202 и мышью 203, пользователь компьютерной системы 200 и приложения может манипулировать интерфейсом функционально адаптируемым образом для обеспечения управляющих команд и/или ввода в приложения, ассоциированные с GUI. Также могут быть реализованы другие формы функционально адаптируемых пользовательских интерфейсов, такие как аудио-интерфейс, использующий речевые подсказки, выводимые через динамики 217, и пользовательские речевые команды, вводимые через микрофон 280.
[0039] На фиг. 2B представлена подробная блок-схема процессора 205 и памяти 234. Память 234 представляет собой логическое агрегирование всех модулей памяти (включая HDD 209 и полупроводниковую память 206), доступ к которым может быть осуществлен посредством компьютерного модуля 201 на фиг. 2A.
[0040] Когда компьютерный модуль 201 первоначально включается, исполняется программа 250 самотестирования при включении (POST). Программа POST 250 обычно хранится в ROM 249 полупроводниковой памяти 206 на фиг. 2A. Аппаратное устройство, такое как ROM 249, хранящее программное обеспечение, иногда называют встроенным программным обеспечением (прошивкой). Программа 250 POST проверяет аппаратные средства в компьютерном модуле 201 для обеспечения надлежащего функционирования и обычно проверяет процессор 205, память 234 (206, 206) и программный модуль 251 базовой системы ввода-вывода (BIOS), также обычно сохраненный в ROM 249, на корректную работу. После того как программа 250 POST успешно исполнена, BIOS 251 активирует накопитель 210 на жестком диске, показанный на фиг. 2A. Активация накопителя 210 на жестком диске вызывает выполнение программы 252 загрузчика начальной загрузки, которая находится в накопителе 210 на жестком диске, для исполнения посредством процессора 205. Это загружает операционную систему 253 в память RAM 206, после чего операционная система 253 начинает работу. Операционная система 253 представляет собой приложение системного уровня, исполняемое процессором 205, для выполнения различных функций высокого уровня, включая управление процессором, управление памятью, управление устройством, управление хранением, интерфейс прикладного программного обеспечения и общий пользовательский интерфейс.
[0041] Операционная система 253 управляет памятью 234 (209, 206), чтобы гарантировать, что каждый процесс или приложение, исполняющееся на компьютерном модуле 201, имеет достаточную память, чтобы выполнять без конфликта с памятью, выделенной для другого процесса. Кроме того, различные типы памяти, имеющиеся в компьютерной системе 200 согласно фиг. 2, должны использоваться надлежащим образом, чтобы каждый процесс мог выполняться эффективно. Соответственно, агрегированная память 234 не предназначена для иллюстрации того, каким образом выделяются конкретные сегменты памяти (если не указано иное), а скорее для обеспечения общего вида памяти, доступной компьютерной системе 200, и того, как она используется.
[0042] Как показано на фиг. 2В, процессор 205 включает в себя ряд функциональных модулей, включая блок 239 управления, арифметико-логический блок (ALU) 240 и локальную или внутреннюю память 248, иногда называемую кэш-памятью. Кэш-память 248 обычно включает в себя ряд регистров 244-246 хранения в секции регистров. Одна или несколько внутренних шин 241 функционально соединяют эти функциональные модули. Процессор 205 обычно также имеет один или более интерфейсов 242 для обмена данными с внешними устройствами через системную шину 204 с использованием соединения 218. Память 234 соединена с шиной 204 с использованием соединения 219.
[0043] Прикладная программа 233 включает в себя последовательность инструкций 231, которые могут включать в себя инструкции условного ветвления и цикла. Программа 233 может также включать в себя данные 232, которые используются при исполнении программы 233. Инструкции 231 и данные 232 хранятся в ячейках 228, 229, 230 и 235, 236, 237 памяти, соответственно. В зависимости от относительного размера инструкций 231 и ячеек 228-230 памяти, конкретная инструкция может быть сохранена в одной ячейке памяти, как изображено инструкцией, показанной в ячейке 230 памяти. Альтернативно, инструкция может быть сегментирована на некоторое количество частей, каждая из которых сохранена в отдельной ячейке памяти, как изображено сегментами инструкции, показанными в ячейках 228 и 229 памяти.
[0044] В общем случае, процессор 205 получает набор инструкций, которые исполняются в нем. Процессор 205 ожидает следующего ввода, на который процессор 205 реагирует путем исполнения другого набора инструкций. Каждый ввод может быть предоставлен из одного или более из ряда источников, включая данные, генерируемые одним или более из устройств 202, 203 ввода, данные, принятые от внешнего источника по одной из сетей 220, 202, данные, извлеченные из одного из устройств 206, 209 хранения, или данные, извлеченные из носителя 225 хранения, вставленного в соответствующее считывающее устройство 212, как показано на фиг. 2. Исполнение набора инструкций в некоторых случаях может привести к выводу данных. Исполнение также может включать в себя сохранение данных или переменных в памяти 234.
[0045] Кодер 114 видео, декодер 134 видео и описанные способы могут использовать входные переменные 254, которые сохраняются в памяти 234 в соответствующих ячейках 255, 256, 257 памяти. Кодер 114 видео, декодер 134 видео и описанные способы формируют выходные переменные 261, которые сохраняются в памяти 234 в соответствующих ячейках 262, 1263, 264 памяти. Промежуточные переменные 258 могут храниться в ячейках 259, 260, 266 и 267 памяти.
[0046] Обращаясь к процессору 205 на фиг. 2B, регистры 244, 245, 246, арифметико-логический блок (ALU) 240 и блок 239 управления работают совместно для выполнения последовательностей микроопераций, необходимых для выполнения циклов «выборки, декодирования и исполнения» для каждой инструкции в наборе инструкций, составляющем программу 233. Каждый цикл выборки, декодирования и исполнения включает в себя:
(а) операцию выборки, которая выбирает или считывает инструкцию 231 из ячейки 228, 229, 230 памяти;
(b) операцию декодирования, в которой блок 239 управления определяет, какая команда была выбрана; и
(с) операцию исполнения, в которой блок 239 управления и/или ALU 240 исполняют команду.
[0047] После этого может быть выполнен следующий цикл выборки, декодирования и исполнения для следующей инструкции. Аналогично, может выполняться цикл сохранения, посредством которого блок 239 управления сохраняет или записывает значение в ячейку 232 памяти.
[0048] Каждый этап или подпроцесс в способе согласно фиг. 12 и 13, которые будут описаны, ассоциирован с одним или более сегментами программы 233 и обычно выполняется секцией 244, 245, 247 регистров, ALU 240 и блоком 239 управления в процессоре 205, работающими совместно для выполнения циклов выборки, декодирования и исполнения для каждой инструкции в наборе инструкций для отмеченных сегментов программы 233.
[0049] Фиг. 3 представляет собой блок-схему, показывающую функциональные модули кодера 114 видео. Фиг. 4 представляет собой блок-схему, показывающую функциональные модули декодера 134 видео. В общем случае, данные проходят между функциональными модулями в кодере 114 видео и декодере 134 видео в группах выборок или коэффициентов, таких как разбиения блоков на подблоки фиксированного размера или как матрицы. Кодер 114 видео и декодер 134 видео могут быть реализованы с использованием компьютерной системы 200 общего назначения, как показано на фиг. 2А и 2В, где различные функциональные модули могут быть реализованы специализированными аппаратными средствами в компьютерной системе 200, посредством программного обеспечения, исполняемого в компьютерной системе 200, такого как один или несколько программных модулей прикладной программы 233 программного обеспечения, находящихся в накопителе 205 на жестком диске и управляемых при их исполнении процессором 205. Альтернативно, кодер 114 видео и декодер 134 видео могут быть реализованы посредством комбинации специализированных аппаратных средств и программного обеспечения, исполняемого в компьютерной системе 200. Кодер 114 видео, декодер 134 видео и описанные способы могут альтернативно быть реализованы в специализированных аппаратных средствах, таких как одна или более интегральных схем, выполняющих функции или подфункции описанных способов. Такие специализированные аппаратные средства могут включать в себя графические процессоры (GPU), цифровые сигнальные процессоры (DSP), специализированные стандартные продукты (ASSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA) или один или более микропроцессоров и ассоциированные памяти. В частности, кодер 114 видео содержит модули 322-386, и декодер 134 видео содержит модули 420-496, каждый из которых может быть реализован как один или более программных модулей прикладной программы 233 программного обеспечения.
[0050] Хотя кодер 114 видео, показанный на фиг. 3, представляет собой пример конвейера кодирования видео многоцелевого кодирования видео (VVC), другие кодеки видео также могут использоваться для выполнения этапов обработки, описанных в данном документе. Кодер 114 видео принимает данные 113 захваченных кадров, такие как последовательность кадров, причем каждый кадр включает в себя один или несколько цветовых каналов. Разделитель 310 на блоки сначала делит данные 113 кадра на области, обычно упоминаемые как ‘единицы дерева кодирования’ (CTU), обычно квадратные по форме и сконфигурированные так, что используется конкретный размер для CTU. Размер единиц дерева кодирования может составлять, например, 64×64, 128×128 или 256×256 выборок яркости. Разделитель 310 на блоки дополнительно делит каждую СТU на одну или более единиц кодирования (CU), причем CU имеет множество размеров, которые могут включать в себя как квадратные, так и неквадратные форматные соотношения. Таким образом, текущий блок 312, «единица кодирования» (CU), выводится из разделителя 310 на блоки, продвигаясь в соответствии с итерацией по одному или более блокам CTU. Однако концепция CU не ограничена разбиением на блоки, обеспечиваемым разделителем 310 на блоки. Декодер 134 видео может также формировать CU, которые, вследствие использования методов сжатия с потерями, обычно являются аппроксимацией блоков с разделителя 310 на блоки. Кроме того, кодер 114 видео формирует CU, имеющие ту же аппроксимацию, что и наблюдаемая в декодере 134 видео, обеспечивая точное знание данных выборки, доступных для способов предсказания блоков в декодере 134 видео. Опции для разделения CТU на CU дополнительно описаны ниже со ссылкой на фиг 5 и 6.
[0051] Единицы дерева кодирования (CTU), полученные в результате первого разделения данных 113 кадра, могут сканироваться в порядке растрового сканирования и группироваться в одну или более «вырезок». Поскольку данные 113 кадра обычно включают в себя множество цветовых каналов, CTU и CU ассоциируются с выборками из всех цветовых каналов, которые перекрываются с областью блоков, определяемой из операции разделителя 310 на блоки. Можно сказать, что CU содержит один или более блоков кодирования (CB), причем каждый CB занимает ту же самую область блока, что и CU, но ассоциирован с каждым одним из цветовых каналов данных 113 кадра. Ввиду потенциально отличающейся частоты дискретизации каналов цветности по сравнению с каналом яркости, размеры CB для каналов цветности могут отличаться от размеров CB для каналов яркости. При использовании формата цветности 4:2:0, CB каналов цветности CU имеют размеры половины ширины и высоты CB для канала яркости CU.
[0052] В итерации по всем CU, полученным из разделителя 310 на блоки, кодер 114 видео формирует «единицу предсказания» (PU), указанную стрелкой 320, для каждого блока, например, блока 312. PU 320 представляет собой предсказание содержимого ассоциированной CU 312. Модуль 322 вычитания формирует разность, указанную как 324 (или «остаток», ссылаясь на разность в пространственной области), между PU 320 и CU 312. Разность 324 представляет собой разность размеров блоков между соответствующими выборками в PU 320 и CU 312. Разность 324 преобразуется, квантуется и представляется как единица преобразования (TU), указанная стрелкой 333. PU обычно выбирается как «наилучшая» одна из нескольких возможных PU-кандидатов. PU-кандидат представляет собой PU, являющуюся результатом одного из режимов предсказания, доступных для кодера 114 видео. Каждая PU-кандидат приводит к соответствующей единице преобразования. Единица 336 преобразования представляет собой квантованное и преобразованное представление разности 324. При комбинировании с предсказанной PU в декодере 114, единица 336 преобразования уменьшает разность между декодированными CU и исходными блоками 312 ценой дополнительной сигнализации в битовом потоке.
[0053] Каждая PU-кандидат, таким образом, имеет ассоциированную стоимость (скорость) кодирования и ассоциированную разность (или «искажение»). Скорость (стоимость) кодирования обычно измеряется в битах. Искажение кодирования блока обычно оценивается как разность в значениях выборок, например, как сумма абсолютных разностей (SAD) или сумма квадратов разностей (SSD). Оценка, полученная из каждой PU-кандидата, определяется селектором 386 режима с использованием разности 324 для определения режима интра-предсказания (представлено стрелкой 388). Оценка стоимостей кодирования, ассоциированных с каждым режимом предсказания-кандидатом и соответствующим остаточным кодированием, может выполняться при значительно более низкой стоимости, чем энтропийное кодирование остатка. Соответственно, ряд режимов-кандидатов может быть оценен для определения оптимального режима в смысле скорости-искажения.
[0054] Определение оптимального режима обычно достигается с использованием вариации оптимизации Лагранжа. Выбор режима 388 интра-предсказания обычно включает в себя определение стоимости кодирования для остаточных данных в результате применения конкретного режима интра-предсказания. Стоимость кодирования может быть аппроксимирована с использованием «суммы преобразованных разностей», причем относительно простое преобразование, такое как преобразование Адамара, используется для получения оцененной преобразованной остаточной стоимости. Для реализаций с использованием относительно простых преобразований, обеспечиваемые стоимости, являющиеся результатом упрощенного способа оценки, монотонно связаны с действительными стоимостями, которые в противном случае определялись бы из полной оценки, упрощенный способ оценки может использоваться, чтобы принимать то же самое решение (т.е. режим интра-предсказания) с уменьшением сложности в кодере 114 видео. Для допущения возможности не-монотонности в соотношении между оцененными и действительными стоимостями, которая может являться результатом дополнительных решений о режиме, доступных для кодирования остаточных данных, может использоваться упрощенный способ оценки, чтобы генерировать список лучших кандидатов. Список лучших кандидатов может быть в произвольном числе. Более сложный поиск может выполняться с использованием лучших кандидатов для установления вариантов выбора оптимального режима для кодирования остаточных данных для каждого из кандидатов, позволяя осуществлять окончательный выбор режима интра-предсказания вместе с другими решениями о режиме.
[0055] Другие решения о режиме включают в себя способность пропускать первичное и вторичное преобразования, известную как «пропуск преобразования». Пропуск преобразований подходит для остаточных данных, в которых отсутствует адекватная корреляция для уменьшенной стоимости кодирования посредством выражения как базовых функций преобразования. Определенные типы содержимого, такие как относительно простая генерируемая компьютером графика, могут проявлять сходное поведение.
[0056] Другое решение о режиме, ассоциированное с модулем 386 селектора режима, представляет собой выбор индекса явного множественного преобразования (представленного стрелкой 390). Индекс 390 явного множественного преобразования имеет четыре возможных значения. Эти четыре возможных значения представляют собой комбинацию двух индексов (показанных в столбцах 1046 и 1048 на фиг. 10A), где каждый индекс находится в диапазоне от нуля до одного. Первый индекс относится к индексу H горизонтального преобразования, и второй индекс относится к индексу V вертикального преобразования. Индекс H горизонтального преобразования также известен как выбор горизонтального преобразования, и индекс V вертикального преобразования известен как выбор вертикального преобразования. Выбор и кодирование индекса 390 явного множественного преобразования описаны со ссылкой на фиг. 10.
[0057] Оптимизация Лагранжа или аналогичная обработка оптимизации может применяться как к выбору оптимального разбиения CTU на CU (посредством разделителя 310 на блоки), а также к выбору лучшего режима предсказания из множества возможностей. Посредством применения процесса оптимизации Лагранжа режимов-кандидатов в модуле 386 селектора режима, режим интра-предсказания с наиболее низким измерением стоимости выбирается в качестве лучшего режима. Лучший режим представляет собой выбранный режим 388 интра-предсказания и также кодируется в битовом потоке 115 энтропийным кодером 338. Выбор режима 388 интра-предсказания операцией модуля 386 селектора режима распространяется на операцию разделителя 310 на блоки. Например, кандидаты для выбора режима 388 интра-предсказания могут включать в себя режимы, применимые к данному блоку, и дополнительно режимы, применимые к множеству меньших блоков, которые совокупно совместно расположены с данным блоком. В таких случаях, процесс выбора кандидатов неявно также является процессом определения лучшего иерархического разложения CTU на CU.
[0058] Энтропийный кодер 338 поддерживает как кодирование переменной длины синтаксических элементов, так и арифметическое кодирование синтаксических элементов. Арифметическое кодирование поддерживается с использованием процесса контекстно-адаптивного двоичного арифметического кодирования. Арифметически кодированные синтаксические элементы состоят из последовательностей из одного или нескольких «бинов». Бины, подобно битам, имеют значение «0» или «1». Однако бины не кодируются в битовом потоке 115 как дискретные биты. Бины имеют ассоциированное вероятное значение и ассоциированную вероятность, известные как «контекст». Когда действительный бин, подлежащий кодированию, совпадает с вероятным значением, кодируется «наиболее вероятный символ» (MPS). Кодирование наиболее вероятного символа является относительно недорогим с точки зрения потребляемых битов. Когда действительный бин, подлежащий кодированию, не совпадает с вероятным значением, кодируется «наименее вероятный символ» (LPS). Кодирование наименее вероятного символа имеет относительно высокую стоимость с точки зрения потребляемых битов. Методы кодирования бинов обеспечивают возможность эффективного кодирования бинов, где вероятность «0» или «1» несимметричной (скошенной). Для синтаксического элемента с двумя возможными значениями (т.е. «флага»), один бин является адекватным. Для синтаксических элементов с множеством возможных значений, необходима последовательность бинов. Тогда, присутствие более поздних бинов в последовательности может определяться на основе значения более ранних бинов в последовательности. Дополнительно, каждый бин может быть ассоциирован с более чем одним контекстом, с выбором конкретного контекста, в зависимости от более ранних бинов в синтаксическом элементе, значений бинов соседних синтаксических элементов (т.е. синтаксических элементов из соседних блоков) и тому подобного. Каждый раз, когда бин кодируется, контекст обновляется, чтобы адаптироваться к новому значению бина. Как таковая, схема двоичного арифметического кодирования считается адаптивной.
[0059] Также кодером 114 поддерживаются бины, которые не имеют контекста («бины обхода»). Бины обхода кодируются в предположении равновероятного распределения между «0» и «1». Отсутствие контекста экономит память и уменьшает сложность, и, таким образом, бины обхода используются, где распределение значений для конкретного бина не скошено. Один пример энтропийного кодера, применяющего контекст и адаптацию, известен в технике как CABAC (контекстно-адаптивный двоичный арифметический кодер), и множество вариантов этого кодера применялись в кодировании видео.
[0060] Энтропийный кодер 338 кодирует режим 388 интра-предсказания с использованием комбинации контекстно- кодированных и (опционально) кодированных с обходом бинов. Обычно, список «наиболее вероятных режимов» генерируется в кодере 114 видео. Список наиболее вероятных режимов обычно имеет фиксированную длину, такую как три или шесть режимов, и может включать в себя режимы, встречающиеся в более ранних блоках. Контекстно-кодированный бин кодирует флаг, указывающий, является ли режим интра-предсказания одним из наиболее вероятных режимов. Если режим 388 интра-предсказания является одним из наиболее вероятных режимов, дополнительно кодируется сигнализация, указывающая, какой наиболее вероятный режим соответствует режиму 388 интра-предсказания, например, с использованием усеченной унарной строки бинов. В противном случае, режим 388 интра-предсказания кодируется как «оставшийся режим», с использованием альтернативного синтаксиса, такого как код фиксированной длины, для выражения режимов интра-предсказания, отличных от режимов интра-предсказания, представленных в списке наиболее вероятных режимов.
[0061] Энтропийный кодер 338 также кодирует индекс 390 явного множественного преобразования для конкретных единиц кодирования или блоков преобразования, как описано со ссылкой на фиг. 10. В частности, индекс 390 явного множественного преобразования включает в себя индекс V вертикального преобразования и индекс H горизонтального преобразования. Как индекс V вертикального преобразования, так и индекс H горизонтального преобразования выбираются селектором 386 режима (как описано выше). На основе комбинации индекса V вертикального преобразования и индекса H горизонтального преобразования (см. фиг. 10A), энтропийный кодер 338 кодирует соответствующую строку бинов (показано в столбце 1042 на фиг. 10A), в битовый поток 115.
[0062] Модуль 384 мультиплексора выводит PU 320 в соответствии с определенным лучшим режимом 388 интра-предсказания, выбирая из проверенных режимов предсказания- кандидатов. Режимам предсказания-кандидатам не требуется включать в себя каждый потенциальный режим предсказания, поддерживаемый кодером 114 видео. Режимы предсказания в широком смысле делятся на две категории. Первая категория представляет собой «внутрикадровое предсказание» (или «интра-предсказание»). Во внутрикадровом предсказании, предсказание для блока формируется с использованием других выборок, взятых из текущего кадра. Вторая категория представляет собой «межкадровое предсказание» (или «интер-предсказание»). Во внутрикадровом предсказании, предсказание для блока формируется с использованием выборок из кадра, предшествующему текущему кадру в порядке кодирования кадров в битовом потоке (который может отличаться от порядка кадров при захвате или отображении). В каждой категории (т.е. интра- и интер-предсказании), разные методы могут применяться для генерации PU. Например, интра-предсказание может использовать значения из смежных строк и столбцов ранее восстановленных выборок, в комбинации с направлением для генерации PU в соответствии с предписанным процессом фильтрации. Альтернативно, PU может быть описана с использованием малого числа параметров. Способы интер-предсказания могут отличаться по количеству параметров движения и их точности. Параметры движения обычно содержат смещение опорного кадра плюс перенос для одного или двух опорных кадров, но могут включать в себя больше кадров, особые кадры или комплексные аффинные параметры, такие как масштабирование и вращение. К тому же, предопределенный процесс уточнения движения может применяться для генерации плотных оценок движения на основе блоков опорной выборки.
[0063] После определения и выбора лучшей PU 320 и вычитания PU 320 из блока исходной выборки в вычитателе 322, остаток с наиболее низкой стоимостью 324 кодирования получают и подвергают сжатию с потерями. Процесс сжатия с потерями содержит этапы преобразования, квантования и энтропийного кодирования. Модуль 326 преобразования применяет первое преобразование к разности 324, преобразуя разность 324 в частотную область и формируя промежуточные коэффициенты преобразования, представленные стрелкой 328. Первое преобразование является обычно разделимым и преобразует набор строк и затем набор столбцов каждого блока. Преобразование каждого набора строк и столбцов выполняется путем применения повторяющихся одномерных преобразований в каждой строке и столбце блока. Преобразование перекрывает весь блок.
[0064] В частности, режим 388 интра-предсказания и индекс 390 явного множественного преобразования используются, чтобы выбирать горизонтальное одномерное преобразование и вертикальное одномерное преобразование, которые совокупно образуют первичное преобразование, выполняемое модулем 326 преобразования. Каждое из горизонтального одномерного преобразования и вертикального одномерного преобразования является разделимым преобразованием. Горизонтальное одномерное преобразование и вертикальное одномерное преобразование выполняются по всему блоку преобразования, по существу декоррелируя выборки остатка.
[0065] Доступные типы преобразования для модуля 326 преобразования включают в себя DST-VII, DST-VIII, DCT-VIII, DST-I и DCT-V. Из этого набора преобразований, определяются три «набора преобразований» 842, как описано со ссылкой на фиг. 8B. Для каждого направления в горизонтальном или вертикальном направлении, набор 842 преобразований выбирается в соответствии с режимом 388 интра-предсказания, как описано со ссылкой на фиг. 8C. Из каждого набора 842 преобразований, выбирается и применяется один тип преобразования, как описано со ссылкой на фиг. 11. Промежуточные коэффициенты 328 преобразования передаются на модуль 330 вторичного преобразования.
[0066] Модуль 330 вторичного преобразования работает на поднаборе промежуточных коэффициентов 328 преобразования, таких как промежуточные коэффициенты преобразования, занимающие верхнюю левую область 4×4 или 8×8 всего блока. Другие коэффициенты преобразования в промежуточных коэффициентах 328 преобразования проходят через модуль 330 неизменными. Модуль 330 вторичного преобразования применяет одно из множества преобразований на поднаборе промежуточных коэффициентов 328 преобразования, чтобы получить коэффициенты преобразования, представленные стрелкой 332. Модуль 330 вторичного преобразования применяет прямое вторичное преобразование, выбираемое аналогично преобразованию модуля 344 обратного вторичного преобразования. Преобразования, доступные для модуля 330 вторичного преобразования, обычно являются неразделимыми и, таким образом, не могут выполняться в двух стадиях (т.е. строках и столбцах), как в случае для модуля 326 преобразования. Вследствие более высокой сложности вторичного преобразования и предшествующей декорреляции первичного преобразования, достаточно выполнить вторичное преобразование только на верхней-левой области блока преобразования. Преобразование, выполняемое модулем 330 вторичного преобразования, может выбираться в зависимости, по меньшей мере частично, от режима предсказания. Дополнительно, кодер 114 видео может учитывать выбор примененного преобразования в модуле 330 как проверку дополнительных кандидатов для выбора на основе оценки стоимости по критерию скорость/искажение.
[0067] Коэффициенты 332 преобразования передаются на модуль 334 квантования. В модуле 334, квантование в соответствии с «параметром квантования» выполняется для формирования остаточных коэффициентов, представленных стрелкой 336. Параметр квантования является постоянным для данного блока преобразования и, таким образом, приводит к равномерному масштабированию для формирования остаточных коэффициентов для блока преобразования. Неравномерное масштабирование также возможно путем применения «матрицы квантования», причем масштабирующий коэффициент, применяемый для каждого остаточного коэффициента, выводится из комбинации параметра квантования и соответствующей записи в матрице масштабирования, обычно имеющей размер, равный размеру блока преобразования. Матрица квантования является затратной для сигнализации, поэтому она кодируется лишь нечасто (если кодируется вообще) в битовом потоке 115. Кодирование матрицы квантования требует преобразования двумерной матрицы масштабирующих коэффициентов в список масштабирующих коэффициентов, подлежащих энтропийному кодированию в битовый поток 115. Существующий порядок Z сканирования может повторно использоваться для этой цели, избегая непроизводительных издержек, ассоциированных с поддержкой дополнительного шаблона сканирования для нечасто выполняемой операции кодирования матрицы квантования. Остаточные коэффициенты 336 подаются на энтропийный кодер 338 для кодирования в битовом потоке 115. Обычно, остаточные коэффициенты блока преобразования сканируются для формирования упорядоченного списка значений, в соответствии с шаблоном сканирования. Шаблон сканирования обычно сканирует блок преобразования как последовательность ‘подблоков’ 4×4, обеспечивая регулярную операцию сканирования с гранулярностью наборов 4×4 остаточных коэффициентов, при этом компоновка подблоков зависит от размера блока преобразования. Дополнительно, режим предсказания и соответствующее разбиение на блоки также кодируются в битовом потоке 115. Как описано выше, кодер 114 видео требует доступа к представлению кадра, соответствующего представлению кадра, наблюдаемому декодером 134 видео. Таким образом, остаточные коэффициенты 336 также обратно квантуются модулем 340 деквантования для формирования коэффициентов обратного преобразования, представленных стрелкой 342. Коэффициенты 342 обратного преобразования передаются через модуль 344 обратного вторичного преобразования. Модуль 344 обратного вторичного преобразования применяет выбранное вторичное преобразование для формирования промежуточных коэффициентов обратного преобразования, как представлено стрелкой 346. Промежуточные коэффициенты 346 обратного преобразования подаются на модуль 348 обратного преобразования, для формирования остаточных выборок, представленных стрелкой 350, единицы преобразования. Модуль 352 суммирования суммирует остаточные выборки 350 и PU 320 для формирования восстановленных выборок (указанных стрелкой 354) CU. Восстановленные выборки 354 передаются на кэш 356 опорных выборок и модуль 368 контурных фильтров. Кэш 356 опорных выборок, обычно реализуемый с использованием статической RAM на ASIC (таким образом, избегая затратного доступа к внекристальной памяти), обеспечивает минимальное хранилище выборок, необходимое для удовлетворения зависимостей для генерации блоков внутрикадрового предсказания для последующих CU в кадре. Минимальные зависимости обычно включают в себя «линейный буфер» выборок вдоль нижней строки CTU, для использования следующей строкой CTU, и буферизацию столбца, степень которой устанавливается высотой CTU. Кэш 356 опорных выборок подает опорные выборки (представлены стрелкой 358) на фильтр 360 опорных выборок. Фильтр 360 выборок применяет операцию сглаживания для формирования отфильтрованных опорных выборок (указаны стрелкой 362). Отфильтрованные опорные выборки 362 используются модулем 364 внутрикадрового предсказания для формирования интра-предсказанного блока выборок, представленного стрелкой 366. Для каждого режима-кандидата внутрикадрового предсказания, модуль 364 формирует блок выборок, т.е. 366.
[0068] Модуль 368 контурных фильтров применяет несколько стадий фильтрации к восстановленным выборкам 354. Стадии фильтрации включают в себя «фильтр устранения блочности» (DBF), который применяет сглаживание, выровненное с границами CU, чтобы уменьшить артефакты, являющиеся результатом прерывностей. Другая стадия фильтрации, представленная в модуле 368 контурных фильтров, представляет собой «адаптивный контурный фильтр» (ALF), который применяет адаптивный фильтр Винера, чтобы дополнительно уменьшить искажение. Дополнительная доступная стадия фильтрации в модуле 368 контурных фильтров представляет собой фильтр «адаптивного смещения выборки» (SAO). Фильтр SAO работает путем сначала классификации восстановленных выборок на одну или несколько категорий и, в соответствии с распределенной категорией, применения смещения на уровне выборки. Отфильтрованные выборки 370 выводятся из модуля 368 контурных фильтров. Отфильтрованные выборки 370 сохраняются в буфере 372 кадров. Буфер 372 кадров обычно имеет емкость для хранения нескольких (например, до 16) картинок и, таким образом, сохранен в памяти 206. Как таковой, доступ к буферу 372 кадров является затратным в терминах ширины полосы памяти. Буфер 372 кадров предоставляет опорные кадры (представленные стрелкой 374) на модуль 376 оценки движения и модуль 380 компенсации движения.
[0069] Модуль 376 оценки движения оценивает количество «векторов движения» (указаны как 378), каждый представляет собой декартово пространственное смещение из местоположения настоящей CU, с опорой на блок в одном из опорных кадров в буфере 372 кадров. Отфильтрованный блок опорных выборок (представлены как 382) формируется для каждого вектора движения. Отфильтрованные опорные выборки 382 образуют дополнительные режимы-кандидаты, доступные для потенциального выбора селектором 386 режима. Более того, для данной CU, PU 320 может быть сформирована с использованием одного опорного блока («одиночное предсказание») или может быть сформирована с использованием двух опорных блоков («двойное предсказание»). Для выбранного вектора движения, модуль 380 компенсации движения формирует PU 320 в соответствии с процессом фильтрации, поддерживающим суб-пиксельную точность в векторах движения. Как таковой, модуль 376 оценки движения (который работает на множестве векторов движения-кандидатов) предположительно может выполнять упрощенный процесс фильтрации по сравнению с процессом фильтрации модуля 380 компенсации движения (который работает только на выбранном кандидате) для достижения уменьшенной вычислительной сложности.
[0070] Хотя кодер 114 видео согласно фиг. 3 описан со ссылкой на многоцелевое кодирование видео (VVC), другие стандарты или реализации кодирования видео могут также применять стадии обработки модулей 310-386. Данные 113 кадра (и битовый поток 115) могут также считываться (или записываться) из/в память 206, накопитель 210 на жестком диске, CD-ROM, Blu-ray diskTM или другой считываемый компьютером носитель хранения. Дополнительно, данные 113 кадра (и битовый поток 115) могут приниматься (или передаваться) от/на внешний источник, такой как сервер, соединенный с сетью 220 связи, или радиочастотный приемник.
[0071] Декодер 134 видео показан на фиг. 4. Хотя декодер 134 видео согласно фиг. 4 представляет собой пример конвейера кодирования видео многоцелевого кодирования видео (VVC), другие кодеки видео могут также использоваться, чтобы выполнять стадии обработки, описанные здесь. Как видно на фиг. 4, битовый поток 133 вводится в декодер 134 видео. Битовый поток 133 может считываться из памяти 206, накопителя 210 на жестком диске, CD-ROM, Blu-ray diskTM или другого долговременного считываемого компьютером носителя хранения. Альтернативно, битовый поток 133 может приниматься от внешнего источника, такого как сервер, соединенный с сетью 220 связи, или радиочастотного приемника. Битовый поток 133 содержит закодированные синтаксические элементы, представляющие данные захваченного кадра, подлежащего декодированию.
[0072] Битовый поток 133 вводится в модуль 420 энтропийного декодера. Модуль 420 энтропийного декодера извлекает синтаксические элементы из битового потока 133 и передает значения синтаксических элементов на другие модули в декодере 134 видео. Модуль 420 энтропийного декодера применяет алгоритм CABAC, чтобы декодировать синтаксические элементы из битового потока 133. Декодированные синтаксические элементы используются, чтобы восстанавливать параметры в декодере 134 видео. Параметры включают в себя остаточные коэффициенты (представлены стрелкой 424) и информацию выбора режима, такую как режим 458 интра-предсказания и индекс 454 явного множественного преобразования. Информация выбора режима также включает в себя информацию, такую как векторы движения и разбиение каждой CTU на одну или несколько CU. Параметры используются, чтобы генерировать PU, обычно в комбинации с данными выборки из ранее декодированных CU.
[0073] Битовый поток 133 также содержит строку бинов из столбца 1042 строк бинов (см. фиг. 10A). Модуль 420 энтропийного декодера извлекает строку бинов и формирует индекс набора вертикальных преобразований (из столбца 1046 индексов набора вертикальных преобразований) и индекс набора горизонтальных преобразований (из столбца 1048 индексов набора горизонтальных преобразований).
[0074] Остаточные коэффициенты 424 вводятся в модуль 428 деквантования. Модуль 428 деквантования выполняет обратное масштабирование на остаточных коэффициентах 424 для создания восстановленных промежуточных коэффициентов преобразования (представлены стрелкой 432) в соответствии с параметром квантования. Если использование матрицы неоднородного обратного квантования указано в битовом потоке 133, декодер 134 видео считывает матрицу квантования из битового потока 133 как последовательность масштабирующих коэффициентов и упорядочивает масштабирующие коэффициенты в матрицу в соответствии с порядком Z сканирования, используемым для кодирования остаточных коэффициентов. Затем, обратное масштабирование использует матрицу квантования в комбинации с параметром квантования для создания восстановленных промежуточных коэффициентов преобразования. Использование порядка Z сканирования для остаточных коэффициентов, чтобы также сканировать масштабирующие коэффициенты матрицы квантования, позволяет избежать наличия дополнительного шаблона сканирования и ассоциированной памяти и дополнительной сложности для сканирования, которое выполняется нечасто. Восстановленные промежуточные коэффициенты 432 преобразования переносятся на модуль 436 обратного вторичного преобразования. Модуль 436 обратного вторичного преобразования выполняет «вторичное обратное преобразование», чтобы сформировать восстановленные коэффициенты преобразования, представленные стрелкой 440. Вторичное преобразование выполняется в соответствии с определенным размером блока преобразования. Восстановленные коэффициенты 440 преобразования переносятся на модуль 444 обратного преобразования, как описано со ссылкой на фиг. 9. Модуль 444 преобразует коэффициенты из частотной области обратно в пространственную область. Блок преобразования по существу основан на значениях значимых остаточных коэффициентов и незначимых остаточных коэффициентах. Результатом операции модуля 444 является блок остаточных выборок, представленный стрелкой 448. Остаточные выборки 448 равны по размеру соответствующей CU. Остаточные выборки 448 подаются на модуль 450 суммирования. В модуле 450 суммирования остаточные выборки 448 суммируются с декодированной PU 452 для формирования блока восстановленных выборок, представленных стрелкой 456. Восстановленные выборки 456 подаются на кэш 460 восстановленных выборок и модуль 488 контурной фильтрации. Модуль 488 контурной фильтрации формирует восстановленные блоки выборок кадра, представленных как 492. Выборки 492 кадра записываются в буфер 496 кадра.
[0075] Кэш 460 восстановленных выборок работает аналогично кэшу 356 восстановленных выборок кодера 114 видео. Кэш 460 восстановленных выборок обеспечивает хранение для восстановленной выборки, необходимой для интра-предсказания последующих CU, без использования памяти 206 (например, путем использования вместо этого данных 232, которые обычно находятся в однокристальной памяти). Опорные выборки, представленные стрелкой 464, получают из кэша 460 восстановленных выборок и подают на фильтр 468 опорных выборок, чтобы сформировать отфильтрованные опорные выборки, указанные стрелкой 472. Отфильтрованные опорные выборки 472 подаются на модуль 476 внутрикадрового предсказания. Модуль 476 формирует блок интра-предсказанных выборок, представленных стрелкой 480, в соответствии с параметром 458 режима интра-предсказания, сигнализированным в битовом потоке 133 и декодированным энтропийным декодером 420.
[0076] Когда интра-предсказание указывается в битовом потоке 133 для текущей CU, интра-предсказанные выборки 480 формируют декодированную PU 452 посредством модуля 484 мультиплексора.
[0077] Когда интер-предсказание указывается в битовом потоке 133 для текущей CU, модуль 434 компенсации движения формирует блок интер-предсказанных выборок 438 с использованием вектора движения и индекса опорного кадра, чтобы выбирать и фильтровать блок выборок из буфера 496 кадров. Блок выборок 498 получают из ранее декодированного кадра, сохраненного в буфере 496 кадров. Для двойного предсказания, два блока выборок формируются и смешиваются вместе для формирования выборок для декодируемой PU 452. Буфер 496 кадров заполняются данными 492 отфильтрованного блока из модуля 488 контурной фильтрации. Как и для модуля 368 контурной фильтрации кодера 114 видео, модуль 488 контурной фильтрации применяет любую, по меньшей мере одну или все из операций фильтрации DBF, ALF и SAO. Модуль 368 контурной фильтрации формирует данные 492 отфильтрованного блока из восстановленных выборок 456.
[0078] Фиг. 5 представляет собой диаграмму, показывающую совокупность 500 доступных разбиений или разделений блока на один или несколько блоков в древовидной структуре многоцелевого кодирования видео. Разбиения, показанные в совокупности 500, доступны для разделителя 310 на блоки кодера 114, чтобы разбивать каждую CTU на одну или несколько CU в соответствии с оптимизацией Лагранжа, как описано со ссылкой на фиг. 3.
[0079] Хотя совокупность 500 показывает только разбиение квадратных блоков на другие, возможно неквадратные блоки, следует понимать, что схема 500 показывает потенциальные разбиения, но не ограничивает вмещающий блок квадратом. Если вмещающий блок является неквадратным, измерения блоков, являющихся результатом разбиения, масштабируются в соответствии с форматным соотношением вмещающего блока. Конкретное подразбиение CTU на одну или несколько CU разделителем 310 на блоки называется «деревом кодирования» CTU. В контексте настоящего раскрытия, листовой узел представляет собой узел, в котором завершается процесс подразбиения. Процесс подразбиения должен завершаться, когда область, соответствующая листовому узлу, равна минимальному размеру единицы кодирования. Листовые узлы, приводящие к единицам кодирования минимального размера, существуют на самом глубоком уровне разложения дерева кодирования. Процесс подразбиения может также завершаться перед самым глубоким уровнем разложения, что приводит к единицам кодирования, большим, чем минимальный размер единицы кодирования.
[0080] В листовых узлах дерева кодирования существуют CU без дополнительного подразбиения. Например, листовой узел 510 содержит одну CU. В нелистовых узлах дерева кодирования существует любое разделение на два или более дополнительных узлов, каждый из которых может содержать одну CU или содержать дополнительные разделения на меньшие области.
[0081] Разделение 512 квадродерева разбивает вмещающую область на четыре равных по размеру области, как показано на фиг. 5. По сравнению с HEVC, многоцелевое кодирование видео достигает дополнительной гибкости с добавлением горизонтального двоичного разделения 514 и вертикального двоичного разделения 516. Каждое из разделений 514 и 516 разбивает вмещающую область на две равных по размеру области. Разбиение осуществляется вдоль горизонтальной границы (514) или вертикальной границы (516) во вмещающем блоке.
[0082] Дополнительная гибкость достигается в многоцелевом кодировании видео с добавлением троичного горизонтального разделения 518 и троичного вертикального разделения 520. Троичные разделения 518 и 520 разбивают блок на три области, ограниченные горизонтально (518) или вертикально (520) вдоль ¼ и ¾ ширины или высоты вмещающей области. Комбинация квадродерева, двоичного дерева и троичного дерева упоминается как ‘QTBTTT’ или альтернативно мульти-дерево (MT).
[0083] По сравнению с HEVC, которое поддерживает только квадродерево и, таким образом, поддерживает только квадратные блоки, QTBTTT обеспечивает намного больше возможных размеров CU, особенно с учетом возможного рекурсивного применения разделений двоичного дерева и/или троичного дерева. Потенциал для размеров необычных (например, неквадратных) блоков может быть уменьшен путем ограничения опций разделения для исключения разделений, которые приведут к тому, то ширина или высота блока будет либо меньше, чем четыре выборки, либо не будет кратна четырем выборкам. В общем, ограничение применялось бы с учетом выборок яркости. Однако ограничение может также применяться отдельно к блокам для каналов цветности, что потенциально приведет к отличиям минимальных размеров блоков для яркости по отношению к цветности, например, для данных кадра в формате 4:2:0 цветности.
[0084] Фиг. 6 представляет собой схематичную иллюстрацию потока 600 данных структуры QTBTTT (или «дерева кодирования»), используемой в многоцелевом кодировании видео. Структура QTBTTT используется для каждой CTU для определения разбиения CTU на одну или несколько CU. Структура QTBTTT каждой CTU определяется разделителем 310 на блоки в кодере 114 видео и кодируется в битовый поток 115 или декодируется из битового потока 133 энтропийным декодером 420 в декодере 134 видео. Поток 600 данных дополнительно характеризует допустимые комбинации, доступные разделителю 310 на блоки для разбиения CTU на одну или несколько CU, в соответствии с разбиениями, показанными на фиг. 5.
[0085] Начиная с верхнего уровня иерархии, то есть в CTU, сначала выполняются ноль или более разбиений квадродерева. Конкретно, решение 610 о разделении квадродерева (QT) принимается разделителем 310 на блоки. Решение в 610, возвращающее символ «1», указывает решение разделить текущий узел на четыре подузла в соответствии с разделением 512 квадродерева. Результатом является генерация четырех новых узлов, таких как в 620, и для каждого нового узла возврат к решению 610 о разделении QT. Каждый новый узел рассматривается в порядке растра (или Z-сканирования). Альтернативно, если решение 610 о разделении QT указывает, что дополнительное разделение не должно выполняться (возвращает символ «0»), разбиение квадродерева прекращается и затем рассматриваются разделения мульти-дерева.
[0086] Сначала, решение 612 о разделении MT принимается разделителем 310 на блоки. В 612, указывается решение выполнить разделение MT. Возвращение символа «0» в решении 612 указывает, что дополнительное разделение узла на подузлы не должно выполняться. Если дополнительное разделение узла не должно выполняться, то узел представляет собой листовой узел дерева кодирования и соответствует единице кодирования (CU). Листовой узел выводится в 622. Альтернативно, если разделение 612 MT указывает решение выполнить разделение MT (возвращает символ «1»), разделитель 310 на блоки переходит к решению 614 о направлении.
[0087] Решение 614 о направлении указывает направление разделения MT как горизонтальное («H» или «0») или вертикальное («V» или «1»). Разделитель 310 на блоки переходит к решению 616, если решение 614 возвращает «0», указывая горизонтальное направление. Разделитель 310 на блоки переходит к решению 618, если решение 614 возвращает «1», указывая вертикальное направление.
[0088] В каждом из решений 616 и 618, количество разбиений для разделения MT указывается как два (двоичное разделение или узел «BT») или три (троичное разделение или «TT») в разделении BT/TT. То есть решение 616 о разделении BT/TT принимается разделителем 310 на блоки, когда указанное направление из 614 является горизонтальным, и решение 618 о разделении BT/TT принимается разделителем 310 на блоки, когда указанное направление из 614 является вертикальным.
[0089] Решение 616 о разделении BT/TT указывает, является ли горизонтальное разделение двоичным разделением 514, указанным путем возврата «0», или троичным разделением 518, указанным путем возврата «1». Когда решение 616 о разделении BT/TT указывает двоичное разделение, на этапе 625 генерации узлов HBT CTU два узла генерируются разделителем 310 на блоки, в соответствии с двоичным горизонтальным разделением 514. Когда разделение 616 BT/TT указывает троичное разделение, на этапе 626 генерации узлов HTT CTU три узла генерируются разделителем 310 на блоки, в соответствии с троичным горизонтальным разделением 518.
[0090] Решение 618 о разделении BT/TT указывает, является ли вертикальное разделение двоичным разделением 516, указанным путем возврата «0», или троичным разделением 520, указанным путем возврата «1». Когда разделение 618 BT/TT указывает двоичное разделение, на этапе 627 генерации узлов VBT CTU два узла генерируется разделителем 310 на блоки, в соответствии с вертикальным двоичным разделением 516. Когда разделение 618 BT/TT указывает троичное разделение, на этапе 628 генерации узлов VTT CTU три узла генерируется разделителем 310 на блоки, в соответствии с вертикальным троичным разделением 520. Для каждого узла, получаемого из этапов 625-628, применяется рекурсия потока 600 данных назад к решению 612 о разделении MT, в порядке слева-направо или сверху-вниз, в зависимости от направления 614. Как следствие, разделения двоичного дерева и троичного дерева могут применяться, чтобы генерировать CU, имеющие множество размеров.
[0091] Фиг. 7A и 7B обеспечивают примерное разбиение 700 CTU 710 на некоторое количество единиц кодирования (CU). Примерная CU 712 показана на фиг. 7A. Фиг. 7A показывает пространственную компоновку CU в CTU 710. Примерное разбиение 700 также показано как дерево 720 кодирования на фиг. 7B.
[0092] В каждом нелистовом узле в CTU 710 на фиг. 7A, например, узлах 714, 716 и 718, содержащиеся узлы (которые могут дополнительно разбиваться или могут представлять собой CU) сканируются или проходятся в «порядке Z» для создания списков узлов, представленных как столбцы в дереве 720 кодирования. Для разделения квадродерева, сканирование в порядке Z приводит к порядку сверху слева направо, за которым следует снизу слева направо. Для горизонтального и вертикального разделений, сканирование (прохождение) порядка Z упрощается до сканирования сверху вниз и слева направо, соответственно. Дерево 720 кодирования на фиг. 7B перечисляет все узлы и CU в соответствии с применяемым порядком сканирования. Каждое разделение генерирует список из 2, 3 или 4 новых узлов на следующем уровне дерева, пока не будет достигнут листовой узел (CU).
[0093] После разложения изображения на CTU и дополнительно на CU разделителем 310 на блоки, и с использованием CU для генерации каждого остаточного блока (324), как описано со ссылкой на фиг. 3, остаточные блоки подвергаются прямому преобразованию и квантованию кодером 114. Результирующие блоки преобразования (TB) 336 затем сканируются для формирования последовательного списка остаточных коэффициентов, как часть операции модуля 338 энтропийного кодирования. Эквивалентный процесс выполняется в декодере 134 видео, чтобы получить блоки преобразования из битового потока 133.
[0094] Фиг. 8A показывает набор 800 режимов интра-предсказания для блока преобразования, который может быть указан с использованием режимов 388 и 458 интра-предсказания. На фиг. 8A, определены 67 режимов интра-предсказания. Режим 0 является «планарным» режимом интра-предсказания, режим 1 является режимом интра-предсказания «DC», и режимы 2-66 являются «угловыми» режимами интра-предсказания. Планарный режим интра-предсказания (режим 0) заполняет блок предсказания выборками в соответствии с плоскостью, т.е. имеющими смещение и градиент по горизонтали и по вертикали. Параметры плоскости получают из соседних опорных выборок, где доступно. Подобным же образом, режим интра-предсказания DC (режим 1) заполняет блок предсказания со смещением, также с использованием соседних опорных выборок (где доступны).
[0095] Угловые режимы интра-предсказания (режимы 2-66) заполняют блок путем формирования текстуры, выровненной по одному из 65 направлений или «углов». Для ясности, на фиг. 8A показан поднабор из 65 углов, представляющий режимы 2, 18, 34, 50 и 66. Для каждого режима, соседние опорные выборки используются, чтобы формировать текстуру, которая заполняет блок предсказания в направлении, указанном стрелкой для углового режима интра-предсказания. Дополнительные углы, не показанные явно на фиг. 8A, находятся в промежуточных положениях (т.е. режимы 3-17, 19-33, 35-49 и 51-65). Первая симметрия очевидна из фиг. 8A вдоль углового режима 34 и в диагональном направлении сверху-слева вниз направо блока предсказания. Из первой симметрии, режимы 2-34 показаны как соответствующие режимам 66-34, с переносом вдоль этой диагональной оси.
[0096] Фиг. 8B показывает отображение 840 из каждого из наборов 842 преобразований на конкретный тип преобразования в соответствии с индексом 844 преобразования. Три набора 842 преобразований определены и идентифицируются соответственными индексами наборов преобразований ноль, один или два. Каждый набор 842 преобразований включает в себя два типа преобразований, которые выбираются индексом 844 преобразования. В результате, отображение 840 позволяет выбирать данный тип преобразования на основе индекса набора преобразований из наборов 842 преобразований и индекса 844 преобразования. Выбранное преобразование является одномерным преобразованием. Отдельный выбор типа преобразования выполняется для горизонтального и вертикального направлений. Размер преобразования (количество точек) соответствует измерению блока преобразования. То есть, размер преобразования соответствует высоте блока преобразования при выборе вертикального преобразования, в то время как размер преобразования соответствует ширине блока преобразования при выборе горизонтального преобразования.
[0097] Фиг. 8C представляет собой таблицу, показывающую отображение 880 из режимов интра-предсказания на индекс набора преобразований наборов 842 преобразований для блока преобразования на основе того, расположен ли блок преобразования в горизонтальном направлении («H») или вертикальном направлении («V»). Для каждого режима интра-предсказания, один из индексов наборов преобразований, ассоциированных с тремя наборами 842 преобразований, выбирается для горизонтального направления H, и один из индексов наборов преобразований, ассоциированных с тремя наборами 842 преобразований, выбирается для вертикального направления V.
[0098] Например, режим 14 интра-предсказания отображается на индекс 0 набора преобразований для блока преобразования в вертикальном направлении, в то время как режим 14 интра-предсказания отображается на индекс 2 набора преобразований для блока преобразования в горизонтальном направлении. Как показано в отображении 840 на фиг. 8B, индекс 0 набора преобразований отображается на DST-VII или DCT-VIII, которое выбирается в зависимости от индекса 844 преобразования. Также в отображении 840 на фиг. 8B показано, что индекс 2 набора преобразований отображается на DST-VII или DCT-V, которое выбирается в зависимости от индекса 844 преобразования. Соответственно, для блока преобразования в вертикальном направлении, режим 14 интра-предсказания использует преобразование DST-VII или DCT-VIII, в зависимости от индекса 844 преобразования. Соответственно, для блока преобразования в горизонтальном направлении, режим 14 интра-предсказания использует преобразование DST-VII или DCT-V, в зависимости от индекса 844 преобразования. Индекс 844 преобразования основан на индексе 390 или 454 явного множественного преобразования. Как описано выше, индекс 390 явного множественного преобразования выбирается селектором режима 306, и индекс явного множественного преобразования 454 выводится энтропийным кодером 420 из битового потока 133.
[0099] Фиг. 9 является блок-схемой, показывающей модуль обратного преобразования 348 кодера 114 видео или модуля обратного преобразования 444 декодера 134 видео. Операции обоих модулей 348 и 444 идентичны, отражая необходимость в кодере 114 видео для моделирования обратного квантования и обратного преобразования остаточных коэффициентов, выполняемых в декодере 134 видео.
[0100] Каждый из модулей 348 и 444 обратного преобразования включает в себя модуль 910 таблицы наборов преобразований, модуль 920 извлечения индекса преобразования, модуль 940 селектора горизонтального преобразования, модуль 945 выбора вертикального преобразования, модуль 960 горизонтального преобразования и модуль 980 вертикального преобразования.
[0101] Модуль 910 таблицы наборов преобразований принимает режим 388 или 458 интра-предсказания. При реализации в качестве модуля 348 обратного преобразования, модуль 910 таблицы наборов преобразований принимает режим 388 интра-предсказания от селектора 386 режима (см. фиг. 3). При реализации в качестве модуля 444 обратного преобразования, модуль 910 таблицы наборов преобразований принимает режим 458 интра-предсказания от энтропийного кодера 420 (см. фиг. 4).
[0102] Модуль 910 таблицы наборов преобразований определяет индекс набора горизонтальных преобразований (представлен как стрелка 915) и индекс набора вертикальных преобразований (представлен стрелкой 917) из режима 388 или 458 интра-предсказания. Индекс 915 набора горизонтальных преобразований и индекс 917 набора вертикальных преобразований определяются в соответствии с отображением 880 (см. фиг. 8C).
[0103] Модуль 920 извлечения индекса преобразования принимает индекс 390 или 454 явного множественного преобразования. При реализации в качестве модуля 348 обратного преобразования, модуль 920 извлечения индекса преобразования принимает индекс 390 явного множественного преобразования от селектора 386 режима (см. фиг.3). При реализации в качестве модуля 444 обратного преобразования, модуль 920 извлечения индекса преобразования принимает индекс 454 явного множественного преобразования от энтропийного кодера 420 (см. фиг. 4).
[0104] Модуль 920 извлечения индекса преобразования извлекает индекс 920 горизонтального преобразования и индекс 925 вертикального преобразования из индекса 390 или 454 явного множественного преобразования. Индекс 920 горизонтального преобразования и индекс 925 вертикального преобразования находятся, каждый, в диапазоне от нуля до одного.
[0105] Модуль 940 селектора горизонтального преобразования принимает индекс 915 набора горизонтальных преобразований (из модуля 910 таблицы наборов преобразований) и индекс 920 горизонтального преобразования (из модуля 920 извлечения индекса преобразования). Модуль 940 селектора горизонтального преобразования формирует выбранное горизонтальное преобразование (представлено стрелкой 950) из индекса 915 набора горизонтальных преобразований и индекса 920 горизонтального преобразования в соответствии с отображением 840 (см. фиг. 8B). Индекс 915 набора горизонтальных преобразований используется для выбора одного из наборов 842 преобразований, и индекс 920 горизонтального преобразования используется для выбора одного из индекса 844 преобразования.
[0106] Модуль 945 селектора вертикального преобразования принимает индекс 917 набора вертикальных преобразований (из модуля 910 таблицы наборов преобразований) и индекс 925 вертикального преобразования (из модуля 920 извлечения индекса преобразования). Модуль 945 селектора вертикального преобразования формирует выбранное вертикальное преобразование 955 из индекса 917 набора вертикальных преобразований и индекса 925 вертикального преобразования в соответствии с отображением 840 (см. фиг. 8B). Индекс 917 набора вертикальных преобразований используется для выбора одного из наборов 842 преобразований, и индекс 925 вертикального преобразования используется для выбора одного из индекса 844 преобразования.
[0107] Модуль 960 горизонтального преобразования применяет выбранное горизонтальное преобразование 950 к промежуточным коэффициентам 346 обратного преобразования или восстановленным коэффициентам 440 преобразования. Промежуточные коэффициенты 346 обратного преобразования поступают из модуля 344 обратного вторичного преобразования (см. фиг. 3). Восстановленные коэффициенты 440 преобразования поступают из модуля 436 обратного вторичного преобразования (см. фиг. 4).
[0108] Коэффициенты 346 или 440 преобразования преобразуются в соответствии с выбранным горизонтальным преобразованием 950. То есть выбранное горизонтальное преобразование 950, имеющее набор одномерных преобразований, применяется к каждой строке матрицы коэффициентов 346 или 440 преобразования. Каждое одномерное преобразование охватывает ширину блока преобразования. Модуль 960 горизонтального преобразования выводит горизонтально преобразованные коэффициенты 970 преобразования в виде матрицы, имеющей равный размер, в качестве текущего блока преобразования. Коэффициенты 970 преобразования подаются в модуль 980 вертикального преобразования. Для простоты описания, коэффициенты 970 преобразования относятся к обоим горизонтально преобразованным коэффициентам 346 и 440 преобразования.
[0109] Модуль 980 вертикального преобразования применяет выбранные вертикальные преобразования 955, имеющие набор одномерных преобразований, к каждому столбцу горизонтально преобразованных коэффициентов 970 преобразования. Модуль 980 вертикального преобразования использует вертикальное выбранное преобразование 955 для формирования остаточных выборок 350 или 448 из соответствующих горизонтально преобразованных коэффициентов 346 или 440 преобразования.
[0110] На фиг. 10А представлена таблица 1000, показывающая соотношение между усеченным унарным синтаксическим элементом и индексами преобразования для выбора преобразования. Индексы преобразования представляют собой индекс Н горизонтального преобразования (показан в столбце 1048) и индекс V вертикального преобразования (показан в столбце 1046). Таблица 1000 включает в себя столбец 1042 строк бинов, столбец 1044 бинаризации, столбец 1046 индексов вертикального преобразования и столбец 1048 индексов горизонтального преобразования.
[0111] Столбец 1042 строк бинов имеет четыре возможных строки бинов, которые получены из усеченной унарной бинаризации с максимальным значением, равным трем (т.е. диапазон от нуля до трех). Для кодера 114, строки бинов, показанные в столбце 1042, представляют собой строки бинов, которые энтропийный кодер 338 кодирует в битовый поток 115. Строка бинов, подлежащая кодированию в битовый поток 115, выбирается на основе индекса H горизонтального преобразования и индекса V вертикального преобразования, которые были выбраны селектором 386 режима.
[0112] Для декодера 134, строки бинов, показанные в столбце 1042, представляют собой строки бинов, которые декодируются энтропийным декодером 420 из битового потока 133. Затем энтропийный декодер 420 выводит индекс Н горизонтального преобразования и индекс V вертикального преобразования на основе декодированной строки бинов.
[0113] Столбец 1044 бинаризации включает в себя состав для каждой строки бинов в столбце 1042 строк бинов. В этой номенклатуре, «Ctx0» и «Ctx1» относятся к двум отдельным содержимым CABAC, которые используются для кодирования соответствующих бинов в столбце 1042 строк бинов. Термин «Byp» относится к бину, кодированному с обходом, используемому для кодирования соответствующего бина в столбце 1042 строк бинов.
[0114] Столбец 1046 индексов вертикального преобразования содержит значение индекса (которое равно нулю или единице) для выбора преобразования из набора преобразований для вертикального 1D преобразования. Столбец 1048 индексов горизонтального преобразования содержит значение индекса (которое равно нулю или единице) для выбора преобразования из набора преобразований для горизонтальных 1D преобразований. В таблице 1000, самая короткая строка бинов назначается случаю вертикального и горизонтального индексов «0» и «1». Самая короткая строка бинов соответствует случаю, наиболее часто выбираемому селектором 380 режима. Затем вторая самая короткая строка бинов назначается случаю вертикального и горизонтального индексов «1» и «1». Это соответствует случаю, второму по частоте выбора селектором 386 режима. Тогда случаи комбинации значений индекса «01» и «10» для комбинации индекса вертикального преобразования и индекса горизонтального преобразования являются в равной степени маловероятными и назначаются самым длинным строкам бинов в столбце 1044. Кроме того, различение между этими двумя случаями выполняется с использованием бина, кодированного с обходом, отражающего приблизительно равную вероятность появления между этими двумя вариантами выбора посредством селектора 386 режима. Было обнаружено, что описанные статистические свойства являются в значительной степени инвариантными размеру преобразования, и, таким образом, наличие этих контекстов, выбираемых в соответствии с их положением в усеченной унарной строке бинов, является адекватным для захвата асимметричного распределения вероятностей значения бина.
[0115] Фиг. 10В представляет собой таблицу 1050, показывающую альтернативную взаимосвязь между усеченным унарным синтаксическим элементом и индексами преобразования для индексации горизонтального и вертикального преобразования с третьим бином усеченной унарной бинаризации, использующим контекстное кодирование, а не кодирование с обходом.
[0116] На фиг. 11 представлена блок-схема последовательности операций способа 1100 для выполнения первичного преобразования в соответствии с явным выбором преобразования для кодирования блока преобразования остаточных коэффициентов в битовый поток 115. Способ 1100 может быть реализован устройством, таким как сконфигурированная FPGA, ASIC или ASSP. Кроме того, способ 1100 может выполняться кодером 114 видео при исполнении процессором 205. По существу, способ 1100 может быть сохранен на считываемом компьютером носителе хранения и/или в памяти 206. Способ 1100 начинается процессором 205 на этапе 1110 определения режима интра-предсказания.
[0117] Способ 1100 начинается на этапе 1110 режима интра-предсказания. На этапе 1110 режима интра-предсказания, селектор 386 режима, при исполнении процессором 205, выбирает режим 388 интра-предсказания для единицы предсказания, ассоциированной с текущей единицей кодирования. Выбор обычно выполняется в два прохода. В первом проходе, проверяются все режимы интра-предсказания для блока предсказания яркости. Для каждого режима, остаточная стоимость аппроксимируется, например, с использованием «суммы абсолютных преобразованных разностей», например, посредством преобразования Адамара. Из этой проверки, получают список «наилучших» (с наименьшим искажением) режимов предсказания-кандидатов. Затем выполняется полная проверка остаточного кодирования на списке режимов предсказания-кандидатов. В результате полной проверки, один режим 388 интра- предсказания выбирается для текущей единицы кодирования. Режим 388 интра-предсказания кодируется в битовый поток 115 посредством энтропийного кодера 338. Управление в процессоре 205 затем переходит от этапа 1110 режима интра-предсказания к этапу 1120 определения набора преобразований.
[0118] На этапе 1120 определения набора преобразований, модуль 348 обратного преобразования, при исполнении процессором 205, использует определенный режим 388 интра-предсказания для определения индекса 915 набора горизонтальных преобразований (как описано выше со ссылкой на фиг. 9) и индекса 917 набора вертикальных преобразований (как описано выше со ссылкой на фиг. 9) в соответствии с отображением 880 (см. фиг. 8C). Из индекса 915 набора горизонтальных преобразований, определяется набор преобразований для горизонтального преобразования в соответствии с отображением 840. Из индекса 917 набора вертикальных преобразований, определяется набор преобразований для вертикального преобразования в соответствии с отображением 840.
[0119] Как описано в приведенном выше примере, если режимом 388 интра-предсказания является режим 14, то возможные преобразования для вертикального преобразования представляют собой DST-VII или DCT-VIII, а возможные преобразования для горизонтального преобразования представляют собой DST-VII или DCT-V.
[0120] Затем управление в процессоре 205 переходит от этапа 1120 определения набора преобразований к этапу 1130 проверки преобразований.
[0121] На этапе 1130 проверки преобразований, модуль 326 преобразования и модуль 348 обратного преобразования, при исполнении процессором 205, проверяют каждую комбинацию преобразований из набора преобразований для горизонтального преобразования и набора преобразований для вертикального преобразования с этапа 1120. В примере, когда режим 388 интра-предсказания является режимом 14, преобразования DST-VII и DCT-VIII проверяются для вертикального преобразования, и преобразования DST-VII или DCT-V проверяются для горизонтального преобразования.
[0122] Как описано выше, проверка выполняется модулем 326 преобразования и модулем 348 обратного преобразования. На конкретные преобразования в каждом наборе ссылаются с использованием индекса 920 горизонтального преобразования (для горизонтального преобразования) и индекса 925 вертикального преобразования (для вертикального преобразования). Каждая комбинация вертикального и горизонтального преобразований проверяется для определения искажения для кодирования остатка.
[0123] Во время проверок модуль 326 преобразования и модуль 348 обратного преобразования выполняют нормальные операции модулей. Следовательно, для всех операций обратного преобразования, выполняемых модулем 348 обратного преобразования, модуль 326 преобразования выполняет соответствующую операцию прямого преобразования. Процесс проверки может использовать способы аппроксимации для выполнения проверки с уменьшенной сложностью по сравнению с выполнением полного преобразования.
[0124] Затем управление в процессоре 205 переходит от этапа 1130 проверки наборов преобразований к этапу 1140 выбора преобразования.
[0125] На этапе 1140 выбора преобразования, выбирается комбинация вертикального и горизонтального преобразований, приводящих к наименьшему искажению для кодирования остатка. В примере, где режим 388 интра-предсказания является режимом 14, комбинацией, обеспечивающей наименьшее искажение, может быть DCT-VIII для вертикального преобразования и DST-VII для горизонтального преобразования. Затем управление в процессоре 205 переходит от этапа 1140 выбора преобразования к этапу 1150 применения горизонтального преобразования.
[0126] На этапе 1150 применения горизонтального преобразования, модуль 348 обратного преобразования выполняет горизонтальное преобразование. В частности, модуль 960 горизонтального преобразования выполняет выбранное горизонтальное преобразование 950. В примере, где режимом 388 интра-предсказания является режим 14, DST-VII используется для горизонтального преобразования. Затем управление в процессоре 205 переходит от этапа 1150 применения горизонтального преобразования к этапу 1160 применения вертикального преобразования.
[0127] На этапе 1160 применения вертикального преобразования, модуль 348 обратного преобразования выполняет вертикальное преобразование. В частности, модуль 980 вертикального преобразования выполняет выбранное вертикальное преобразование 955. В примере, где режимом 388 интра-предсказания является режим 14, DCT-VIII используется для вертикального преобразования. В результате этапа 1150 применения горизонтального преобразования и этапа 1160 применения вертикального преобразования, и после опционального применения вторичного преобразования (т.е. операции модуля 330) получают коэффициенты 332 преобразования. Затем управление в процессоре 205 переходит от этапа 1160 применения вертикального преобразования к этапу 1170 квантования остаточных коэффициентов.
[0128] На этапе 1170 квантования остаточных коэффициентов, модуль 334 квантователя, при исполнении процессором 205, квантует коэффициенты 332 преобразования для получения остаточных коэффициентов 336 в соответствии с параметром квантования. Затем управление в процессоре 205 переходит от этапа 1170 квантования остаточных коэффициентов к этапу 1180 кодирования остаточных коэффициентов.
[0129] На этапе 1180 кодирования остаточных коэффициентов, энтропийный кодер 338, при исполнении процессором 205, кодирует остаточные коэффициенты 336 в битовый поток 115. Остаточные коэффициенты 336 для данного блока преобразования кодируются путем сканирования двумерной матрицы коэффициентов в список. Сканирование обычно делит блок преобразования на один или более подблоков, каждый из которых имеет размер 4×4 (хотя возможны также и другие размеры). Наличие значимого коэффициента в каждом подблоке сигнализируется «флагом кодированного подблока» и, если присутствует по меньшей мере один значимый коэффициент, флагом одной значимости на остаточный коэффициент в подблоке. Флаги кодированного подблока и флаги значимости используют контекстно-кодированные бины. Дополнительные указания величины, такие как «флаги более чем один» и «флаги более чем два», также кодируются с использованием контекстно-кодированных бинов. Наконец, дополнительные указания величины обычно кодируются с использованием кодирования Голомба-Райса с бинами, кодированными с обходом. Стоимость в битах в кодировании остаточных коэффициентов 336 в значительной степени зависит от их величин. Как следствие выбора оптимальных индексов EMT, эти величины немного уменьшаются, что приводит к повышению эффективности сжатия. Бинаризация этих индексов, выполняемая на этапе 1190, дополнительно повышает эффективность сжатия. Затем управление в процессоре 205 переходит от этапа 1180 кодирования остаточных коэффициентов к этапу 1190 кодирования битовой строки EMT.
[0130] На этапе 1190 кодирования битовой строки EMT, энтропийный кодер 338, при исполнении процессором 205, кодирует индекс 920 горизонтального преобразования и индекс 925 вертикального преобразования в битовый поток 115 с использованием усеченной унарной бинаризации (максимальное значение три), моделирования контекста и отображения строк бинов на значения индекса, как описано со ссылкой на фиг. 10А. Так как наиболее часто выбираемая пара индексов («0» по горизонтали и «0» по вертикали) кодируется с использованием самой короткой строки бинов («0»), эффективность кодирования выше, чем в простом случае использования одного бина для каждого индекса. Вторая по частоте выбора пара индексов («1» по горизонтали и «1» по вертикали) кодируется с использованием второй самой короткой строки бинов, т.е. «1 0», и две примерно в равной степени маловероятные комбинации («1» и «0», «0» и «1») кодируются с использованием самых длинных строк бинов («1 1 0» и «1 1 1»). Третий бин использует кодирование с обходом, поскольку отсутствует статистическая асимметрия, доступная для применения с использованием контекстного кодирования. Затем способ 1100 заканчивается по окончании этапа 1190.
[0131]
[0132] На фиг. 12 представлена блок-схема последовательности операций способа 1200 для декодирования блока преобразования остаточных коэффициентов из битового потока 133. Декодирование способа 1200 выполняется посредством первичного обратного преобразования, выбранного в соответствии с явным выбором преобразования. Способ 1200 может быть реализован посредством устройства, такого как сконфигурированная FPGA, ASIC или ASSP. Кроме того, способ 1200 может выполняться посредством декодера 134 видео при исполнении процессором 205. По существу, способ 1200 может быть сохранен на считываемом компьютером носителе хранения и/или в памяти 206. Способ 1200 начинается процессором 205 на этапе 1210 декодирования режима интра-предсказания.
[0133] На этапе 1210 декодирования режима интра-предсказания, энтропийный декодер 420, при исполнении процессором 205, декодирует режим 458 интра-предсказания из битового потока 133. Энтропийный декодер 420 формирует список наиболее вероятных режимов, включая режимы, считающиеся наиболее вероятно выбранными селектором 380 режима. Контекстно-кодированный бин декодируется, чтобы указать использование либо одного из наиболее вероятных режимов, либо других режимов не в списке наиболее вероятных режимов («остальных режимов»). Затем дополнительные бины декодируются, чтобы идентифицировать, какой наиболее вероятный режим или какой остальной режим используется. Затем управление в процессоре 205 переходит от этапа 1210 декодирования режима интра-предсказания к этапу 1220 декодирования остаточных коэффициентов.
[0134] На этапе 1220 декодирования остаточных коэффициентов, энтропийный декодер 420, при исполнении процессором 205, декодирует список остаточных коэффициентов и компонует остаточные коэффициенты в матрицу для блока преобразования. Компоновка следует шаблону сканирования, который обычно группирует остаточные коэффициенты в подблоки 4×4. Список остаточных коэффициентов, как правило, сканируется в обратном направлении, который идет от «последнего» значимого остаточного коэффициента обратно в направлении верхнего-левого остаточного коэффициента (остаточного коэффициента «DC», хотя это может не соответствовать смещению блока для преобразований, не основанных на функции косинуса). Контекстно-кодированные бины декодируются для указания наличия значимых остаточных коэффициентов в каждом подблоке, и, если указано, дополнительные контекстно-кодированные бины декодируются для указания значимости каждого остаточного коэффициента в подблоке. Величина каждого остаточного коэффициента может быть дополнительно охарактеризована декодированием флагов «больше чем один» или «больше чем два». Наконец, для остаточных коэффициентов, величина которых не определяется предыдущими контекстно-кодированными бинами, «оставшаяся величина» декодируется с использованием кодирования Голомба-Райса с бинами, кодированными с обходом. В результате этого декодирования, остаточные коэффициенты 424 для блока преобразования декодируются из битового потока 133. Управление в процессоре 205 затем переходит от этапа 1220 декодирования остаточных коэффициентов к этапу 1230 обратного квантования остаточных коэффициентов.
[0135] На этапе 1230 обратного квантования, модуль 428 деквантователя, при исполнении процессором 205, формирует промежуточные коэффициенты 432 преобразования путем масштабирования остаточных коэффициентов 424 в соответствии с параметром квантования. Промежуточные коэффициенты 432 преобразования могут быть преобразованы посредством применения неразделимого вторичного преобразования, обычно применяемого только в верхней-левой области блока преобразования, для получения промежуточных коэффициентов 432 преобразования. Как следствие этой операции масштабирования, промежуточные коэффициенты 432 преобразования имеют приблизительно такую же величину, как и перед квантованием в кодере видео (т.е. коэффициенты 332 преобразования). Посредством опционального применения обратного неразделимого вторичного преобразования (т.е. модуля 436 обратного вторичного преобразования), восстановленные коэффициенты 440 преобразования получаются из промежуточных коэффициентов 432 преобразования. Затем управление в процессоре 205 переходит от этапа 1230 обратного квантования остаточных коэффициентов к этапу 1240 декодирования строки бинов EMT.
[0136] На этапе 1240 декодирования строки бинов EMT, энтропийный декодер 420, при исполнении процессором 205, декодирует усеченную унарную строку бинов из битового потока 133. Усеченная унарная строка бинов представляет собой одну из строк бинов, перечисленных в столбце 1042 на фиг. 10А. Как показано на фиг. 10A и описано выше, унарная строк бинов ограничена тремя бинами по длине (которые находятся в диапазоне от нуля до трех). Усеченная унарная строка бинов имеет длину от одного до трех бинов, причем первый бин является контекстно-кодированным, второй бин (если присутствует) является контекстно-кодированным другим контекстом, и третий бин (если присутствует) является кодированным с обходом. Эта бинаризация соответствует описанной со ссылкой на фиг. 10. Управление в процессоре 205 затем переходит от этапа 1240 декодирования строки бинов EMT к этапу 1250 определения индексов EMT.
[0137] На этапе 1250 определения индексов EMT, модуль 920 извлечения индекса преобразования в декодере 134 видео, при исполнении процессором 205, определяет индекс 920 горизонтального преобразования и индекс 925 вертикального преобразования в соответствии с таблицей 1000 на фиг. 10А. Затем управление в процессоре 205 переходит от этапа 1250 определения индексов EMT к этапу 1260 определения наборов преобразований.
[0138] На этапе 1260 определения наборов преобразований, модуль 444 обратного преобразования, при исполнении процессором 205, определяет, какой набор преобразований в отображении 840 должен использоваться для горизонтального и вертикального преобразования первичного обратного преобразования. В частности, при использовании режима 458 интра-предсказания, таблица 910 наборов преобразований используется для определения набора 915 горизонтальных преобразований и набора 917 вертикальных преобразований. Затем управление в процессоре 205 переходит от этапа 1260 определения наборов преобразований к этапу 1270 выбора преобразований.
[0139] На этапе 1270 выбора преобразований, модуль 444 обратного преобразования, при исполнении процессором 205, определяет горизонтальное преобразование 950 и вертикальное преобразование 955. Определение горизонтального преобразования 950 и вертикального преобразования 955 выполняется посредством селектора 940 горизонтального преобразования и селектора 945 вертикального преобразования соответственно. Модули принимают индекс 915 набора горизонтальных преобразований, индекс 917 набора вертикальных преобразований, индекс 920 горизонтального преобразования и индекс 925 вертикального преобразования в качестве вводов, как показано на фиг. 9, и формируют выбранное горизонтальное преобразование 950 и выбранное вертикальное преобразование 960, в соответствии с фиг. 8В. Затем управление в процессоре 205 переходит от этапа 1270 выбора преобразований к этапу 1280 применения горизонтального преобразования.
[0140] На этапе 1280 применения горизонтального преобразования, модуль 444 обратного преобразования, при исполнении процессором 205, применяет выбранное горизонтальное преобразование 950 с использованием модуля 960 горизонтального преобразования. Выбранное горизонтальное преобразование 950 применяется к каждой строке восстановленных коэффициентов 440 преобразования для формирования горизонтально преобразованных коэффициентов 970 преобразования. Горизонтально преобразованные коэффициенты 970 преобразования подаются в модуль 980 вертикального преобразования. Затем модуль 980 вертикального преобразования формирует остаточные выборки 448 посредством применения выбранного вертикального преобразования 955. Остаточные выборки 950 далее используются для суммирования с интра-предсказанной PU для получения восстановленных выборок, как описано со ссылкой на фиг. 4. Затем способ 1200 заканчивается.
[0141] В другой конфигурации способов 1100 и 1200, бинаризация усеченной унарной строки бинов модифицируется таким образом, что используется только один контекстно-кодированный бин. В частности, со ссылкой на фиг. 10А, первый бин бинаризации 1044 остается контекстно-кодированным, в то время как второй бин бинаризации 1044 использует кодированный с обходом бин вместо контекстного кодирования. Конфигурации, использующие только один контекстно-кодированный бин, экономят на стоимости реализации за счет небольшого ухудшения в эффективности сжатия. Однако конфигурации, использующие только один контекстно-кодированный бин, способны достигать несколько более высокой пропускной способности. Более высокая пропускная способность объясняется тем, что процесс CABAC в энтропийном кодере 338 и энтропийном декодере 420 способен обрабатывать кодированные с обходом бины с более высокой скоростью, чем контекстно-кодированные бины, по меньшей мере вследствие отсутствия обновления контекстного состояния.
[0142] Как упомянуто со ссылкой на фиг. 10A, вероятность выбора индекса H горизонтального преобразования и индекса V вертикального преобразования со значениями либо «0» и «1» соответственно, либо «1» и «0» соответственно, примерно равны. Как таковая, альтернативная бинаризация по отношению к той, которая показана на фиг. 10А, инвертирует использование третьего, кодированного с обходом, бина. Конфигурации, которые инвертируют использование третьего бина, имеют строку бинов «1 1 1», отображаемую на «0», «1» для соответствующих индексов вертикального и горизонтального преобразования, и строку бинов «1 1 0», отображаемую на «1», «0» для соответствующих индексов вертикального и горизонтального преобразований. Вследствие приблизительно равной вероятности между этими двумя вариантами выбора, достигается преимущество эквивалентного сжатия.
[0143] В результате бинаризации выбора явного множественного преобразования по горизонтали и вертикали, в частности, в том аспекте, что они совместно кодируются в соответствии с ожидаемой вероятностью выбора каждого значения индекса, эффективность кодирования улучшается по сравнению со случаем, когда каждый из независимых синтаксических элементов используется для горизонтальных и вертикальных индексов (например, один контекстно-кодированный бин на каждый).
Промышленная применимость
[0144] Описанные устройства применимы в области вычислений и обработки, в частности, для цифровой обработки сигналов для кодирования и декодирования сигналов, таких как сигналы видео и изображения, достигая высокой эффективности сжатия без чрезмерных затрат в отношении ширины полосы памяти за счет нелокализованного сканирования остаточных коэффициентов.
[0145] Выше описаны только некоторые варианты осуществления настоящего изобретения, и могут быть выполнены модификации и/или изменения без отклонения от объема и сущности изобретения, причем варианты осуществления являются иллюстративными, а не ограничивающими.
[0146] В контексте данной спецификации, слово «содержащий» означает «включающий в себя, главным образом, но не обязательно только» или «имеющий» или «включающий в себя», но не «состоящий только из». Вариации слова «содержащий», такие как «содержат» и «содержит», имеют соответственно измененные значения.