СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЯ НА ОСНОВЕ ПРЕОБРАЗОВАНИЯ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ
IMAGE ENCODING METHOD BASED ON TRANSFORMATION AND DEVICE FOR ITS IMPLEMENTATION

Область ТЕХНИКИ
[1] Настоящее раскрытие относится к методу кодирования изображения и, в частности, к способу и устройству для кодирования изображения на основе преобразования в системе кодирования изображения.
Связанная область техники
[2] В настоящее время, потребность в изображениях/видео высокого разрешения и высокого качества, таких как изображения/видео сверхвысокой четкости (UHD) 4K или 8K или выше, возросла в различных областях. Так как данные изображения/видео имеют высокое разрешение и высокое качество, передаваемое количество информации или количество битов увеличивается по сравнению с данными обычного изображения. Поэтому, когда данные изображения передаются с использованием носителей, таких как обычная проводная/беспроводная широкополосная линия, или данные изображения/видео сохраняются с использованием существующего носителя хранения, затраты на их передачу и затраты на хранение увеличиваю.
[3] К тому же, в настоящее время возрастают интерес и потребность в иммерсивных медиа, таких как контент или голограммы виртуальной реальности (VR) и искусственной реальности (AR) или тому подобное, возрастает трансляция изображения/видео, имеющих признаки изображения, отличные от признаков реального изображения, такого как игровое изображение.
[4] Соответственно, существует необходимость в высокоэффективной технологии сжатия изображения/видео для эффективного сжатия, передачи или хранения и воспроизведения информации изображений/видео высокого разрешения и высокого качества, имеющих различные признаки, как описано выше.
Краткое описание сущности изобретения
[5] Технический аспект настоящего раскрытия заключается в обеспечении способа и устройства для повышения эффективности кодирования изображения.
[6] Другой технический аспект настоящего раскрытия заключается в обеспечении способа и устройства для повышения эффективности кодирования индекса преобразования.
[7] Еще один технический аспект настоящего раскрытие заключается в обеспечении способа и устройства кодирования с использованием LFNST и MTS.
[8] Другой технический аспект настоящего раскрытие заключается в обеспечении способа и устройства кодирования изображения для сигнализации индекса LFNST и индекса MTS.
[9] В соответствии с вариантом осуществления настоящего раскрытия, обеспечен способ декодирования изображения, выполняемый устройством декодирования. Способ может включать в себя: выведение коэффициентов преобразования для текущего блока на основе остаточной информации; определение, присутствует ли значимый коэффициент во второй области иной, чем первая область сверху-слева текущего блока; получение, посредством синтаксического анализа, индекса MTS из битового потока, когда значимый коэффициент не присутствует во второй области, выведение остаточных выборок путем применения ядра MTS, выведенного на основе индекса MTS, к коэффициентам преобразования первой области.
[10] Первая область представляет собой верхнюю-левую область 16×16 текущего блока.
[11] Определение того, присутствует ли значимый коэффициент во второй области, содержит выведение значения переменной, указывающего, присутствует ли значимый коэффициент во второй области в процессе декодирования уровня кодирования остатка, значение переменной первоначально устанавливается в 1, а когда значимый коэффициент присутствует во второй области, значение переменной изменяется на 0, и индекс MTS не анализируется.
[12] Индекс MTS анализируется на уровне единицы кодирования.
[13] Способ декодирования изображения дополнительно содержит синтаксический анализ в отношении индекса LFNST, указывающего ядро LFNST, применяемое к текущему блоку, и индекс LFNST и индекс MTS сигнализируются на уровне единицы кодирования, и индекс MTS сигнализируется непосредственно после сигнализации индекса LFNST.
[14] Тремя типами текущего блока являются дуальное дерево яркости или одиночное дерево, и когда значение индекса LFNST равно 0, индекс MTS сигнализируется.
[15] В соответствии с другим вариантом осуществления настоящего раскрытия, обеспечен способ кодирования изображения, выполняемый устройством кодирования. Способ может включать в себя: выведение остаточных выборок для текущего блока на основе выборок предсказания; выведение коэффициентов преобразования для текущего блока на основе MTS для остаточных выборок; обнуление второй области текущего блока иной, чем первая область сверху-слева текущего блока; и кодирование остаточной информации, выведенной посредством квантования коэффициентов преобразования и индекса MTS, указывающего ядро MTS.
[16] В соответствии с еще одним другим вариантом осуществления настоящего раскрытия, может быть обеспечен цифровой носитель хранения, который хранит данные изображения, включающие в себя закодированную информацию изображения и битовый поток, генерируемый в соответствии со способом кодирования изображения, выполняемым устройством кодирования.
[17] В соответствии с другим вариантом осуществления настоящего раскрытия, может быть обеспечен цифровой носитель информации, который хранит данные изображения, включающие в себя закодированную информацию изображения и битовый поток, для предписания устройству декодирования выполнять способ декодирования изображения.
[18] В соответствии с настоящим раскрытием, можно повысить общую эффективность сжатия изображения/видео.
[19] В соответствии с настоящим раскрытием, можно повысить эффективность кодирования индекса преобразования.
[20] Технический аспект настоящего раскрытия может обеспечивать способ и устройство кодирования с использованием LFNST и MTS.
[21] Технический аспект настоящего раскрытия может обеспечивать способ и устройство для сигнализации индекса LFNST и индекса MTS.
[22] Результаты, которые могут быть получены с помощью конкретных примеров настоящего раскрытия, не ограничены результатами, перечисленными выше. Например, могут достигаться различные технические результаты, которые специалист в данной области техники сможет понять или получить на основе настоящего раскрытия. Соответственно, конкретные результаты настоящего раскрытия не ограничены теми, которые явно описаны в настоящем раскрытии и могут включать в себя различные результаты, которые можно понять или получить с помощью технических признаков настоящего раскрытия.
Краткое описание чертежей
[23] Фиг. 1 схематично иллюстрирует пример системы кодирования видео/изображения, в которой применимо настоящее раскрытие.
[24] Фиг. 2 является диаграммой, схематично иллюстрирующей конфигурацию устройства кодирования видео/изображения, в котором применимо настоящее раскрытие.
[25] Фиг. 3 является диаграммой, схематично иллюстрирующей конфигурацию устройства декодирования видео/изображения, в котором применимо настоящее раскрытие.
[26] Фиг. 4 схематично иллюстрирует схему множественного преобразования в соответствии с вариантом осуществления настоящего документа.
[27] Фиг. 5 схематично показывает интра-направленные режимы 65 направлений предсказания.
[28] Фиг. 6 является диаграммой для пояснения RST в соответствии с вариантом осуществления настоящего раскрытия.
[29] Фиг. 7 является диаграммой, иллюстрирующей последовательность компоновки выходных данных прямого первичного преобразования в одномерный вектор в соответствии с примером.
[30] Фиг. 8 является диаграммой, иллюстрирующей последовательность компоновки выходных данных прямого вторичного преобразования в двумерный блок в соответствии с примером.
[31] Фиг. 9 является диаграммой, иллюстрирующей широкоугольные режимы интра-предсказания в соответствии с вариантом осуществления настоящего документа.
[32] Фиг. 10 является диаграммой, иллюстрирующей форму блока, к которой применяется LFNST.
[33] Фиг. 11 является диаграммой, иллюстрирующей компоновку выходных данных прямого LFNST в соответствии с примером.
[34] Фиг. 12 является диаграммой, иллюстрирующей, что число выходных данных для прямого LFNST ограничено до максимум 16 в соответствии с примером.
[35] Фиг. 13 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 4×4 LFNST в соответствии с примером.
[36] Фиг. 14 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с примером.
[37] Фиг. 15 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с другим примером.
[38] Фиг. 16 является диаграммой, иллюстрирующей пример подблока, на который разделен один блок кодирования.
[39] Фиг. 17 является диаграммой, иллюстрирующей другой пример подблока, на который разделен один блок кодирования.
[40] Фиг. 18 является диаграммой, иллюстрирующей симметрию блока M×2 (M×1) и блока 2×M (1×M) в соответствии с примером.
[41] Фиг. 19 является диаграммой, иллюстрирующей пример транспонирования блока 2×M в соответствии с примером.
[42] Фиг. 20 показывает порядок сканирования для области 8×2 или 2×8 в соответствии с примером.
[43] Фиг. 21 является блок-схемой последовательности операций для пояснения способа декодирования изображения в соответствии с примером.
[44] Фиг. 22 является блок-схемой последовательности операций для пояснения способа кодирования изображения в соответствии с примером.
[45] Фиг. 23 иллюстрирует структуру системы стриминга контента, в которой применяется настоящее раскрытие.
Описание примерных вариантов осуществления
[46] Хотя настоящий документ допускает различные модификации и включает различные варианты осуществления, его конкретные варианты осуществления, показанные на чертежах в качестве примера, будут далее описаны детально. Однако это не подразумевает ограничения настоящего раскрытия конкретными вариантами осуществления, описанными здесь. Терминология, используемая здесь, предназначена только для описания конкретных вариантов осуществления, но не предназначена для ограничения технической идеи настоящего раскрытия. Формы единственного числа могут включать в себя формы множественного числа, если только контекст явно не указывает иное. Термины, такие как "включать в себя" и "иметь", предназначены указывать, что признаки, числа, этапы, операции, элементы, компоненты или их комбинации, используемые в следующем описании, существуют, и, таким образом, не должны пониматься так, что возможность существования или добавления одного или более других признаков, чисел, этапов, операций, элементов, компонентов или их комбинация заранее исключается.
[47] Между тем, каждый компонент на чертежах, описанный в настоящем документе, иллюстрируется независимо для удобства описания касательно различных характеристических функций, однако это не означает, что каждый компонент реализуется как отдельные аппаратные средства или программное обеспечение. Например, два или более из этих компонентов могут комбинироваться для образования одного компонента, и любой одиночный компонент может делиться на множество компонентов. Варианты осуществления, в которых компоненты комбинируются и/или разделяются, будут включены в объем патентных прав настоящего раскрытия, если они не отклоняются от сущности настоящего раскрытия.
[48] Далее, предпочтительные варианты осуществления настоящего раскрытия будут пояснены более подробно со ссылкой на прилагаемые чертежи. К тому же, одинаковые ссылочные позиции используются для одинаковых компонентов на чертежах, и повторные описания одинаковых компонентов будут опущены.
[49] Настоящий документ относится к кодированию видео/изображения. Например, способ/пример, раскрытый в настоящем документе, может относиться к стандарту VVC (многоцелевого кодирования видео) (ITU-T Rec. H.266), стандарту кодирования видео/изображения следующего поколения после VVC или к другим стандартам, относящимся к кодированию видео (например, стандарт HEVC (высокоэффективного кодирования видео) (ITU-T Rec. H.265), стандарт EVC (существенного кодирования видео) стандарт AVS2 и т.д.).
[50] В настоящем документе, могут быть обеспечены различные варианты осуществления, относящиеся к кодированию видео/изображения, и варианты осуществления могут также комбинироваться друг с другом и выполняться.
[51] В настоящем документе, видео может относиться к набору из серии изображений по времени. Картинка (снимок) обычно означает единицу, представляющую изображение в конкретной временной зоне, и вырезка (слайс) / мозаичный элемент представляет собой единицу, составляющую часть картинки. Вырезка/мозаичный элемент может включать в себя одну или более единиц дерева кодирования (CTU). Одна картинка может состоять из одной или более вырезок/мозаичных элементов. Одна картинка может состоять из одной или более групп мозаичных элементов. Одна группа мозаичных элементов может включать в себя один или более мозаичных элементов.
[52] Пиксел или пел может означать наименьшую единицу, составляющую одну картинку (или изображение). Также, ‘выборка’ (‘дискретный отсчет’) может использоваться как термин, соответствующий пикселу. Выборка может, в общем, представлять пиксел или значение пиксела и может представлять только пиксел/значение пиксела компонента яркости или только пиксел/значение пиксела компонента цветности. Альтернативно, выборка может относиться к значению пиксела в пространственной области, или когда это значение пиксела преобразуется в частотную область, она может относиться к коэффициенту преобразования в частотной области.
[53] Единица может представлять базовую единицу обработки изображения. Единица может включать в себя по меньшей мере одно из конкретной области и информации, относящейся к области. Одна единица может включать в себя один блок яркости и два блока цветности (например, cb, cr). Единица и такой термин как блок, область или тому подобное могут использоваться взаимозаменяемо соответственно обстоятельствам. В общем случае, блок M×N может включать в себя набор (или массив) выборок (или массивов выборок) или коэффициентов преобразования, состоящих из M столбцов и N строк.
[54] В этом документе, символы "/" или "," должны интерпретироваться как указывающие "и/или". Например, выражение "A/B" может означать "A и/или B". Дополнительно, "A, B" может означать "A и/или B". Кроме того, "А/В/С" может означать "по меньшей мере одно из А, В и/или С". Также, "А/В/С" может означать "по меньшей мере одно из А, В и/или С".
[55] Кроме того, в настоящем документе, термин "или" должен интерпретироваться как указывающий "и/или". Например, выражение "A или B" может включать 1) только A, 2) только B и/или 3) как A, так и B. Другими словами, термин "или" в настоящем документе должен интерпретироваться как указывающий "дополнительно или альтернативно".
[56] В настоящем раскрытии, "по меньшей мере одно из A и B" может означать "только A", "только B" или "как A, так и B". Также, в настоящем раскрытии, выражение "по меньшей мере одно из A или B" или "по меньшей мере одно из A и/или B" может интерпретироваться как "по меньшей мере одно из A и B".
[57] Кроме того, в настоящем раскрытии, по меньшей мере одно из A, B и C" может означать "только A", "только B", "только C" или "любая комбинация A, B и C". Также, "по меньшей мере одно из A, B или C" или "по меньшей мере одно из A, B и/или C" может означать "по меньшей мере одно из A, B и C".
[58] Кроме того, круглые скобки, используемые в настоящем раскрытии, могут означать "например". Конкретно, когда указано "предсказание (интра-предсказание)", это может означать, что "интра-предсказание" предлагается как пример "предсказания". Другими словами, "предсказание" в настоящем раскрытии не ограничено "интра-предсказанием", и "интра-предсказание" может предлагаться в качестве примера "предсказания". Также, когда указано "предсказание (т.е., интра-предсказание)", это также означает, что "интра-предсказание" предлагается как пример "предсказания".
[59] Технические признаки, отдельно описанные на одном чертеже в настоящем раскрытии, могут быть реализованы по отдельности или могут быть реализованы одновременно.
[60] Фиг. 1 схематично иллюстрирует пример системы кодирования видео/изображения, в которой применимо настоящее раскрытие.
[61] Со ссылкой на фиг. 1, система кодирования видео/изображения может включать в себя первое устройство (устройство-источник) и второе устройство (устройство приема). Устройство-источник может доставлять закодированную информацию или данные видео/изображения в форме файла или потоковой передачи (стриминга) на устройство приема через цифровой носитель хранения или сеть.
[62] Устройство-источник может включать в себя источник видео, устройство кодирования и передатчик. Устройство приема может включать в себя приемник, устройство декодирования и устройство рендеринга (визуализации). Устройство кодирования может называться устройством кодирования видео/изображения, и устройство декодирования может называться устройством декодирования видео/изображения. Передатчик может быть включен в устройство кодирования. Приемник может быть включен в устройство декодирования. Устройство визуализации может включать в себя дисплей, и дисплей может быть сконфигурирован как отдельное устройство или внешний компонент.
[63] Источник видео может получать видео/изображение через процесс захвата, синтеза или генерации видео/изображения. Источник видео может включать в себя устройство захвата видео/изображения и/или устройство генерации видео/изображения. Устройство захвата видео/изображения может включать в себя, например, одну или более камер, архивы видео/изображений, включающие в себя ранее захваченные видео/изображения, и тому подобное. Устройство генерации видео/изображения может включать в себя, например, компьютер, планшет и смартфон и может (электронным способом) генерировать видео/изображения. Например, виртуальное видео/изображение может генерироваться через компьютер или тому подобное. В этом случае, процесс захвата видео/изображения может быть заменен на процесс генерации связанных данных.
[64] Устройство кодирования может кодировать введенное видео/изображение. Устройство кодирования может выполнять последовательность процедур, таких как предсказание, преобразование и квантование для эффективности сжатия и кодирования. Закодированные данные (закодированная информация видео/изображения) могут выводиться в форме битового потока.
[65] Передатчик может передавать закодированную информацию или данные видео/изображения, выведенные в форме битового потока, на приемник устройства приема через цифровой носитель хранения или сеть в форме файла или потоковой передачи. Цифровой носитель хранения может включать в себя различные носители хранения, такие как USB, SD, CD, DVD, Blu-ray, HDD, SSD и тому подобное. Передатчик может включать в себя элемент для генерации медиа-файла посредством предопределенного формата файла и может включать в себя элемент для передачи через сеть вещания/связи. Приемник может принимать/извлекать битовый поток и передавать принятый/извлеченный битовый поток на устройство декодирования.
[66] Устройство декодирования может декодировать видео/изображение путем выполнения последовательности процедур, таких как деквантование, обратное преобразование и предсказание, соответствующих операции устройства кодирования.
[67] Устройство визуализации может визуализировать декодированное видео/изображение. Визуализированное видео/ изображение может воспроизводиться посредством дисплея.
[68] Фиг. 2 является диаграммой, схематично иллюстрирующей конфигурацию устройства кодирования видео/изображения, в котором могут применяться варианты осуществления настоящего документа. Далее, то, что упоминается как устройство кодирования видео, может включать в себя устройство кодирования изображения.
[69] Со ссылкой на фиг. 2, устройство 200 кодирования включает в себя модуль 210 разбиения изображения, предсказатель 220, процессор 230 остатка, энтропийный кодер 240, сумматор 250, фильтр 260 и память 270. Предсказатель 220 может включать в себя интер-предсказатель 221 и интра-предсказатель 222. Процессор 230 остатка может включать в себя преобразователь 232, квантователь 233, деквантователь 234 и обратный преобразователь 235. Процессор 230 остатка может дополнительно включать в себя вычитатель 231. Сумматор 250 может называться реконструктором или генератором восстановленного блока. Модуль 210 разбиения изображения, предсказатель 220, процессор 230 остатка, энтропийный кодер 240, сумматор 250 и фильтр 260, которые были описаны выше, могут быть образованы одним или более аппаратными компонентами (например, чипсетами или процессорами кодера) в соответствии с вариантом осуществления. К тому же, память 270 может включать в себя буфер декодированной картинки (DPB) или может быть сконфигурирована цифровым носителем хранения. Аппаратный компонент может дополнительно включать в себя память 270 как внутренний/внешний компонент.
[70] Модуль 210 разбиения изображения может разбивать входное изображение (или картинку или кадр), введенное в устройство 200 кодирования, на одну или более единиц обработки. Например, единица обработки может называться единицей кодирования (CU). В этом случае, начиная с единицы дерева кодирования (CTU) или наибольшей единицы кодирования (LCU), единица кодирования может рекурсивно разбиваться в соответствии со структурой квадродерева/двоичного дерева/троичного дерева (QTBTTT). Например, одна единица кодирования может разбиваться на множество единиц кодирования большей глубины на основе структуры квадродерева, структуры двоичного дерева и/или структуры троичного дерева. В этом случае, например, структура квадродерева может применяться первой, и структура двоичного дерева и/или структура троичного дерева может применяться позже. Альтернативно, структура двоичного дерева может применяться первой. Процедура кодирования в соответствии с настоящим раскрытием может выполняться на основе конечной единицы кодирования, которая больше не разбивается. В этом случае, наибольшая единица кодирования может использоваться непосредственно как конечная единица кодирования на основе эффективности кодирования в соответствии с характеристикой изображения. Альтернативно единица кодирования может рекурсивно разбиваться на единицы кодирования большей глубины, по мере необходимости, так что единица кодирования оптимального размера может использоваться как конечная единица кодирования. Здесь, процедура кодирования может включать в себя процедуру предсказания, преобразования и восстановления, которые будут описаны далее. В качестве примера, единица обработки может дополнительно включать в себя единицу предсказания (PU) или единицу преобразования (TU). В этом случае, единица предсказания и единица преобразования могут разделяться или разбиваться из вышеупомянутой конечной единицы кодирования. Единица предсказания может представлять собой единицу предсказания выборки, и единица преобразования может представлять собой единицу для выведения коэффициента преобразования и/или единицу для выведения остаточного сигнала из коэффициента преобразования.
[71] Единица может использоваться взаимозаменяемо с такими терминами, как блок, область или тому подобное, в соответствии с обстоятельствами. В общем случае, блок M×N может представлять набор выборок или коэффициентов преобразования, состоящих из M столбцов и N строк. Выборка может, в общем, представлять пиксел или значение пиксела, может представлять только пиксел/значение пиксела компонента яркости или представлять только пиксел/значение пиксела компонента цветности. Выборка может использоваться как термин, соответствующий одной картинке (или изображению) для пиксела или пела.
[72] Вычитатель 231 вычитает сигнал предсказания (предсказанный блок, массив выборок предсказания), выведенный из интер-предсказателя 221 или интра-предсказателя 222, из входного сигнала изображения (исходного блока, исходного массива выборок), чтобы сгенерировать остаточный сигнал (остаточный блок, остаточный массив выборок), и сгенерированный остаточный сигнал передается на преобразователь 232. Предсказатель может выполнять предсказание на целевом блоке обработке (далее называемом текущим блоком), и может генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Предсказатель может определять, применяется ли интра-предсказание или интер-предсказание на текущем блоке или на основе CU. Как обсуждается далее в описании каждого режима предсказания, предсказатель может генерировать различную информацию, относящуюся к предсказанию, такую как информация режима предсказания, и передавать сгенерированную информацию на энтропийный кодер 240. Информация о предсказании может кодироваться в энтропийном кодере 240 и выводиться в форме битового потока.
[73] Интра-предсказатель 222 может предсказывать текущий блок путем обращения к выборкам в текущей картинке. Указанные выборки могут быть расположены по соседству или с разнесением от текущего блока в соответствии с режимом предсказания. В интра-предсказании, режимы предсказания могут включать в себя множество ненаправленных режимов и множество направленных режимов. Ненаправленные режимы могут включать в себя, например, режим DC и планарный режим. Направленный режим может включать в себя, например, 33 направленных режима предсказания или 65 направленных режимов предсказания в соответствии со степенью детализации направления предсказания. Однако это только пример, и больше или меньше направленных режимов предсказания могут использоваться в зависимости от настройки. Интра-предсказатель 222 может определять режим предсказания, применяемый к текущему блоку, путем использования режима предсказания, применяемого к соседнему блоку.
[74] Интер-предсказатель 221 может выводить предсказанный блок для текущего блока на основе опорного блока (опорного массива выборок), специфицированного вектором движения на опорной картинке. Здесь, чтобы уменьшить количество информации движения, передаваемой в режиме интер-предсказания, информация движения может предсказываться на блоке, подблоке или выборке на основе корреляции информации движения между соседним блоком и текущим блоком. Информация движения может включать в себя вектор движения и индекс опорной картинки. Информация движения может дополнительно включать в себя информацию направления интер-предсказания (L0-предсказания, L1-предсказания, Bi-предсказания и т.д.). В случае интер-предсказания, соседний блок может включать в себя пространственный соседний блок, существующий в текущей картинке, и временной соседний блок, существующий в опорной картинке. Опорная картинка, включающая в себя опорный блок, и опорная картинка, включающая в себя временной соседний блок, могут быть одинаковыми или разными. Временной соседний блок может называться совместно расположенным (совмещенным) опорным блоком, co-located CU (colCU) и т.п., и опорная картинка, включающая в себя временной соседний блок, может называться совмещенной картинкой (colPic). Например, интер-предсказатель 221 может конфигурировать список кандидатов информации движения на основе соседних блоков и генерировать информацию, указывающую, какой кандидат используется, чтобы вывести вектор движения и/или индекс опорной картинки текущего блока. Интер-предсказание может выполняться на основе различных режимов предсказания. Например, в случае режима пропуска и режима объединения, интер-предсказатель 221 может использовать информацию движения соседнего блока как информацию движения текущего блока. В режиме пропуска, в отличие от режима объединения, остаточный сигнал может не передаваться. В случае режима предсказания вектора движения (MVP), вектор движения соседнего блока может использоваться как предиктор вектора движения, и вектор движения текущего блока может указываться путем сигнализации разности векторов движения.
[75] Предсказатель 220 может генерировать сигнал предсказания на основе различных способов предсказания, описанных ниже. Например, предсказатель может не только применять интра-предсказание или интер-предсказание для предсказания на одном блоке, но также может одновременно применять интра-предсказание и интер-предсказание. Это может называться комбинированным интер- и интра-предсказанием (CIIP). К тому же, предсказатель может быть основан на режиме предсказания внутри-блочного копирования (IBC) или режиме палитры для выполнения предсказания на блоке. Режим предсказания IBC или режим палитры могут использоваться для кодирования контента изображения/видео игры или тому подобного, например, кодирования экранного контента (SCC). Хотя IBC в основном выполняет предсказание в текущем блоке, оно может выполняться аналогично интер-предсказанию тем, что оно выводит опорный блок в текущем блоке. То есть, IBC может использовать по меньшей мере один из методов интер-предсказания, описанных в настоящем раскрытии.
[76] Сигнал предсказания, сгенерированный интер-предсказателем 221 и/или интра-предсказателем 222, может использоваться, чтобы генерировать восстановленный сигнал или чтобы генерировать остаточный сигнал. Преобразователь 232 может генерировать коэффициенты преобразования путем применения метода преобразования к остаточному сигналу. Например, метод преобразования может включать в себя по меньшей мере одно из дискретного косинусного преобразования (DCT), дискретного синусного преобразования (DST), преобразования Карунена-Лоэва (KLT), преобразования на основе графа (GBT) или условно-нелинейного преобразования (CNT). Здесь, GBT означает преобразование, полученное из графа, когда информация отношения между пикселами представлена графом. CNT относится к преобразованию, полученному на основе сигнала предсказания, сгенерированного с использованием всех ранее восстановленных пикселов. К тому же, процесс преобразования может применяться к квадратным блокам пикселов, имеющим одинаковый размер, или может применяться к блокам, имеющим переменный размер, а не квадратным.
[77] Квантователь 233 может квантовать коэффициенты преобразования и передавать их на энтропийный кодер 240, и энтропийный кодер 240 может кодировать квантованный сигнал (информацию о квантованных коэффициентах преобразования) и выводить закодированный сигнал в битовом потоке. Информация о квантованных коэффициентах преобразования может называться информацией остатка. Квантователь 233 может переупорядочивать квантованные коэффициенты преобразования типа блока в форму одномерного вектора на основе порядка сканирования коэффициентов и генерировать информацию о квантованных коэффициентах преобразования на основе квантованных коэффициентов преобразования в форме одномерного вектора. Энтропийный кодер 240 может выполнять различные способы кодирования, такие как, например, экспоненциальное кодирование Голомба, контекстно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и тому подобное. Энтропийный кодер 240 может кодировать информацию, необходимую для восстановления видео/изображения, отличную от квантованных коэффициентов преобразования (например, значения синтаксических элементов и т.д.), вместе или отдельно. Закодированная информация (например, закодированная информация видео/изображения) может передаваться или сохраняться в единицах уровня сетевой абстракции (NAL) в форме битового потока. Информация видео/изображения может дополнительно включать в себя информацию о различных наборах параметров, таких как набор параметров адаптации (APS), набор параметров картинки (PPS), набор параметров последовательности (SPS), набор параметров видео (VPS) и тому подобное. К тому же, информация видео/изображения может дополнительно включать в себя общую информацию ограничения. В настоящем раскрытии, информация и/или синтаксические элементы, передаваемые/сигнализируемые от устройства кодирования на устройство декодирования, могут быть включены в информацию видео/изображения. Информация видео/изображения может кодироваться посредством вышеописанной процедуры кодирования и включаться в битовый поток. Битовый поток может передаваться по сети или может сохраняться в цифровом носителе хранения. Сеть может включать в себя сеть вещания, сеть связи и/или тому подобное, и цифровой носитель хранения может включать в себя различные носители хранения, такие как USB, SD, CD, DVD, Blu-ray, HDD, SSD и тому подобное. Передатчик (не показан), передающий сигнал, выведенный из энтропийного кодера 240, и/или модуль хранения (не показан), хранящий сигнал, могут быть сконфигурированы как внутренний/внешний элемент устройства 200 кодирования, или передатчик может быть включен в энтропийный кодер 240.
[78] Квантованные коэффициенты преобразования, выведенные из квантователя 233, могут использоваться, чтобы генерировать сигнал предсказания. Например, остаточный сигнал (остаточный блок или остаточные выборки) может восстанавливаться путем применения деквантования и обратного преобразования к квантованным коэффициентам преобразования деквантователем 234 и обратным преобразователем 235. Сумматор 250 суммирует восстановленный остаточный сигнал с сигналом предсказания, выведенным из интер-предсказателя 221 или интра-предсказателя 222, так что может генерироваться восстановленный сигнал (восстановленная картинка, восстановленный блок, восстановленный массив выборок). Если отсутствует остаток для целевого блока обработки, как в случае, где применяется режим пропуска, предсказанный блок может использоваться как восстановленный блок. Сумматор 250 может называться реконструктором или генератором восстановленного блока. Сгенерированный восстановленный сигнал может использоваться для интра-предсказания следующего блока, подлежащего обработке, в текущей картинке и, как описано ниже, может использоваться для интер-предсказания следующей картинки посредством фильтрации.
[79] Между тем, отображение яркости с масштабированием цветности (LMCS) может применяться в процессе кодирования и/или восстановления картинки.
[80] Фильтр 260 может улучшать субъективное/объективное качество видео путем применения фильтрации к восстановленному сигналу. Например, фильтр 260 может генерировать модифицированную восстановленную картинку путем применения различных способов фильтрации к восстановленной картинке и может сохранять модифицированную восстановленную картинку в памяти 270, конкретно, в DPB памяти 270. Различные способы фильтрации могут включать в себя, например, фильтрацию устранения блочности, адаптивное смещение выборки, адаптивный контурный фильтр, двунаправленный фильтр и тому подобное. Фильтр 260 может генерировать различную информацию, относящуюся к фильтрации, и передавать сгенерированную информацию на энтропийный кодер 240, как описано далее в описании каждого способа фильтрации. Информация о фильтрации может кодироваться энтропийным кодером 240 и выводиться в форме битового потока.
[81] Модифицированная восстановленная картинка, которая была передана в память 270, может использоваться как опорная картинка в интер-предсказателе 221. Посредством этого, устройство кодирования может предотвратить несогласованность предсказания в устройстве 200 кодирования и устройстве декодирования, когда применяется интер-предсказание, и может также улучшить эффективность кодирования.
[82] DPB памяти 270 может хранить модифицированную восстановленную картинку для использования ее в качестве опорной картинки в интер-предсказателе 221. Память 270 может сохранить информацию движения блока в текущей картинке, из которого была выведена (или закодирована) информация движения, и/или информацию движения блоков в уже восстановленной картинке. Сохраненная информация движения может передаваться на интер-предсказатель 221 для использования в качестве информации движения соседнего блока или информации движения временного соседнего блока. Память 270 может хранить восстановленные выборки восстановленных блоков в текущей картинке и может передавать их на интра-предсказатель 222.
[83] Фиг. 3 является диаграммой, схематично иллюстрирующей конфигурацию устройства декодирования видео/изображения, в котором может применяться настоящее раскрытие.
[84] Со ссылкой на фиг. 3, устройство 300 декодирования может включать в себя энтропийный декодер 310, процессор 320 остатка, предсказатель 330, сумматор 340, фильтр 350 и память 360. Предсказатель 330 может включать в себя интер-предсказатель 331 и интра-предсказатель 332. Процессор 220 остатка может включать в себя деквантователь 321 и обратный преобразователь 321. Энтропийный декодер 310, процессор 320 остатка, предсказатель 330, сумматор 340 и фильтр 350, которые были описаны выше, могут быть сконфигурированы одним или более аппаратными компонентами (например, чипсетами или процессорами декодера) в соответствии с вариантом осуществления. К тому же, память 360 может включать в себя буфер декодированной картинки (DPB) или может быть сконфигурирована цифровым носителем хранения. Аппаратный компонент может дополнительно включать в себя память 360 как внутренний/внешний компонент.
[85] Когда битовый поток, включающий в себя информацию видео/изображения, вводится, устройство 300 декодирования может восстанавливать изображение в соответствии с процессом, посредством которого информация видео/изображения была обработана в устройстве кодирования согласно фиг. 2. Например, устройство 300 декодирования может выводить единицы/блоки на основе информации, относящейся к разбиению блока, полученной из битового потока. Устройство 300 декодирования может выполнять декодирование с использованием единицы обработки, применяемой в устройстве кодирования. Поэтому единица обработки декодирования может представлять собой, например, единицу кодирования, которая может разбиваться в соответствии со структурой квадродерева, структурой двоичного дерева и/или структурой троичного дерева из единицы дерева кодирования или наибольшей единицы кодирования. Одна или более единиц преобразования могут выводиться из единицы кодирования. И восстановленный сигнал изображения, декодированный и выведенный посредством устройства 300 декодирования, может воспроизводиться посредством устройства воспроизведения.
[86] Устройство 300 декодирования может принимать сигнал, выведенный из устройства кодирования согласно фиг. 2 в форме битового потока, и принятый сигнал может декодироваться посредством энтропийного декодера 310. Например, энтропийный декодер 310 может выполнять синтаксический анализ битового потока, чтобы вывести информацию (например, информацию видео/изображения), необходимую для восстановления изображения (или восстановления картинки). Информация видео/изображения может дополнительно включать в себя информацию о различных наборах параметров, таких как набор параметров адаптации (APS), набор параметров картинки (PPS), набор параметров последовательности (SPS), набор параметров видео (VPS) и тому подобное. К тому же, информация видео/изображения может дополнительно включать в себя общую информацию ограничения. Устройство декодирования может дополнительно декодировать картинку на основе информации о наборе параметров и/или общей информации ограничения. Сигнализированная/принятая информация и/или синтаксические элементы, описанные далее в настоящем раскрытии, могут быть декодированы посредством процедуры декодирования и получены из битового потока. Например, энтропийный декодер 310 может декодировать информацию в битовом потоке на основе способа кодирования, такого как экспоненциальное кодирование Голомба, CAVLC или CABAC, и может выводить значение синтаксического элемента, требуемое для восстановления изображения, и квантованные значения коэффициентов преобразования для остатка. Более конкретно, способ энтропийного декодирования CABAC может принимать бин, соответствующий каждому синтаксическому элементу в битовом потоке, определять контекстную модель с использованием информации целевого синтаксического элемента декодирования, информации декодирования соседнего и целевого блоков декодирования или информации символа/бина, декодированного на предыдущей стадии, предсказывать вероятность генерации бина в соответствии с определенной контекстной моделью и выполнять арифметическое декодирование бина, чтобы генерировать символ, соответствующий значению каждого синтаксического элемента. Здесь, способ энтропийного декодирования CABAC может обновлять контекстную модель с использованием информации декодированного символа/бина для контекстной модели следующего символа/бина после определения контекстной модели. Информация о предсказании среди информации, декодированной энтропийным декодером 310, может предоставляться на предсказатель (интер-предсказатель 332 и интра-предсказатель 331), и остаточные значения, то есть, квантованные коэффициенты преобразования, на которых энтропийное декодирование было выполнено в энтропийном декодере 310, и ассоциированная информация параметров могут вводиться в процессор 320 остатка. Процессор 320 остатка может выводить остаточный сигнал (остаточный блок, остаточные выборки, остаточный массив выборок). К тому же, информация о фильтрации среди информации, декодированной энтропийным декодером 310, может предоставляться на фильтр 350. Между тем, приемник (не показан), который принимает сигнал, выведенный из устройства кодирования, может быть дополнительно сконфигурирован как внутренний/внешний элемент устройства 300 декодирования, или приемник может быть компонентом энтропийного декодера 310. Между тем, устройство декодирования в соответствии с настоящим раскрытием может называться устройством декодирования видео/изображения/картинки, и устройство декодирования может классифицироваться на декодер информации (декодер информации видео/изображения/картинки) и декодер выборки (декодер выборки видео/изображения/картинки). Декодер информации может включать в себя энтропийный декодер 310, и декодер выборки может включать в себя по меньшей мере одно из деквантователя 321, обратного преобразователя 322, сумматора 340, фильтра 350, памяти 360, интер-предсказателя 332 и интра-предсказателя 331.
[87] Деквантователь 321 может выводить коэффициенты преобразования путем деквантования квантованных коэффициентов преобразования. Деквантователь 321 может переупорядочивать квантованные коэффициенты преобразования в форме двумерного блока. В этом случае, переупорядочивание может выполняться на основе порядка сканирования коэффициентов, выполняемого в устройстве кодирования. Деквантователь 321 может выполнять деквантование на квантованных коэффициентах преобразования с использованием параметра квантования (например, информации размера шага квантования) и получать коэффициенты преобразования.
[88] Обратный преобразователь 222 получает остаточный сигнал (остаточный блок, остаточный массив выборок) путем обратного преобразования коэффициентов преобразования.
[89] Предсказатель может выполнять предсказание на текущем блоке и генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Предсказатель может определять, применяется ли интра-предсказание или интер-предсказание к текущему блоку, на основе информации о предсказании, выведенной из энтропийного декодера 310, и может определять, в частности, режим интра/интер-предсказания.
[90] Предсказатель может генерировать сигнал предсказания на основе различных способов предсказания. Например, предсказатель может применять интра-предсказание или интер-предсказание на одном блоке, а также может одновременно применять интра-предсказание и интер-предсказание. Это может называться комбинированным интер- и интра-предсказанием (CIIP). К тому же, предсказатель может выполнять внутри-блочное копирование (IBC) для предсказания на блоке. Режим внутри-блочного копирования может использоваться для кодирования контента изображения/видео игры или тому подобного, например, кодирования экранного контента (SCC). Хотя IBC в основном выполняет предсказание в текущем блоке, оно может выполняться аналогично интер-предсказанию тем, что оно выводит опорный блок в текущем блоке. То есть, IBC может использовать по меньшей мере один из методов интер-предсказания, описанных в настоящем раскрытии.
[91] Интра-предсказатель 331 может предсказывать текущий блок путем обращения к выборкам в текущей картинке. Указанные выборки могут быть расположены по соседству или с разнесением от текущего блока в соответствии с режимом предсказания. В интра-предсказании, режимы предсказания могут включать в себя множество ненаправленных режимов и множество направленных режимов. Интра-предсказатель 331 может определять режим предсказания, применяемый к текущему блоку, с использованием режима предсказания, применяемого к соседнему блоку.
[92] Интер-предсказатель 332 может выводить предсказанный блок для текущего блока на основе опорного блока (опорного массива выборок), специфицированного вектором движения на опорной картинке. При этом, чтобы уменьшить количество информации движения, передаваемой в режиме интер-предсказания, информация движения может предсказываться на блоке, подблоке или выборке на основе корреляции информации движения между соседним блоком и текущим блоком. Информация движения может включать в себя вектор движения и индекс опорной картинки. Информация движения может дополнительно включать в себя информацию направления интер-предсказания (L0-предсказания, L1-предсказания, Bi-предсказания и т.д.). В случае интер-предсказания, соседний блок может включать в себя пространственный соседний блок, существующий в текущей картинке, и временной соседний блок, существующий в опорной картинке. Например, интер-предсказатель 332 может конфигурировать список кандидатов информации движения на основе соседних блоков и выводить вектор движения и/или индекс опорной картинки текущего блока на основе принятой информации выбора кандидата. Интер-предсказание может выполняться на основе различных режимов предсказания, и информация о предсказании может включать в себя информацию, указывающую режим интер-предсказания для текущего блока.
[93] Сумматор 340 может генерировать восстановленный сигнал (восстановленную картинку, восстановленный блок, восстановленный массив выборок) путем суммирования полученного остаточного сигнала с сигналом предсказания (предсказанным блоком, предсказанным массивом выборок), выведенным из предсказателя 330. Если отсутствует остаток для целевого блока обработки, как в случае, когда применяется режим пропуска, предсказанный блок может использоваться как восстановленный блок.
[94] Сумматор 340 может называться реконструктором или генератором восстановленного блока. Сгенерированный восстановленный сигнал может использоваться для интра-предсказания следующего целевого блока обработки в текущем блоке и, как описано ниже, может выводиться посредством фильтрации или использоваться для интер-предсказания следующей картинки.
[95] Между тем, в процессе декодирования картинки, может применяться отображение яркости с масштабированием цветности (LMCS).
[96] Фильтр 350 может улучшать субъективное/объективное качество изображения путем применения фильтрации к восстановленному сигналу. Например, фильтр 350 может генерировать модифицированную восстановленную картинку путем применения различных способов фильтрации к восстановленной картинке и может передавать модифицированную восстановленную картинку в память 260, конкретно, в DPB памяти 360. Различные способы фильтрации могут включать в себя, например, фильтрацию с устранением блочности, адаптивное смещение выборки, адаптивный контурный фильтр, двунаправленный фильтр и тому подобное.
[97] (Модифицированная) восстановленная картинка, которая была сохранена в DPB памяти 360, может использоваться как опорная картинка в интер-предсказателе 332. Память 360 может хранить информацию движения блока в текущей картинке, из которого выводится (или декодируется) информация движения, и/или информацию движения блоков в уже восстановленной картинке. Сохраненная информация движения может передаваться на интер-предсказатель 332 для использования в качестве информации движения соседнего блока или информации движения временного соседнего блока. Память 360 может хранить восстановленные выборки восстановленных блоков в текущей картинке и передавать их на интра-предсказатель 331.
[98] В настоящей спецификации, примеры, описанные для предсказателя 330, деквантователя 321, обратного преобразователя 322 и фильтра 350 устройства 300 декодирования, могут аналогично или соответственно применяться к предсказателю 220, деквантователю 234, обратному преобразователю 235 и фильтру 260 устройства 200 кодирования, соответственно.
[99] Как описано выше, предсказание выполняется, чтобы повысить эффективность сжатия при выполнении кодирования видео. Посредством этого может генерироваться предсказанный блок, включающий в себя выборки предсказания для текущего блока, то есть, целевой блок кодирования. Здесь предсказанный блок включает в себя выборки предсказания в пространственной области (или области пикселов). Предсказанный блок может выводиться одинаково в устройстве кодирования и устройстве декодирования, и устройство кодирования может повысить эффективность кодирования изображения путем сигнализации на устройство декодирования не исходного значения выборки самого исходного блока, а информации об остатке (остаточной информации) между исходным блоком и предсказанным блоком. Устройство декодирования может вывести остаточный блок, включающий в себя остаточные выборки, на основе остаточной информации, генерировать восстановленный блок, включающий в себя восстановленные выборки, путем суммирования остаточного блока и предсказанного блока и генерировать восстановленную картинку, включающую в себя восстановленные блоки.
[100] Информация остатка может генерироваться посредством процедур преобразования и квантования. Например, устройство кодирования может выводить остаточный блок между исходным блоком и предсказанным блоком, выводить коэффициенты преобразования путем выполнения процедуры преобразования на остаточных выборках (остаточном массиве выборок), включенных в остаточный блок, и выводить квантованные коэффициенты преобразования путем выполнения процедуры квантования на коэффициентах преобразования, так что оно может сигнализировать ассоциированную информацию остатка на устройство декодирования (посредством битового потока). Здесь информация остатка может включать в себя информацию значения, информацию местоположения, схему преобразования, ядро преобразования, параметр квантования или тому подобное квантованных коэффициентов преобразования. Устройство декодирования может выполнять процедуру деквантования/обратного преобразования и выводить остаточные выборки (или остаточный блок выборок) на основе остаточной информации. Устройство декодирования может генерировать восстановленный блок на основе предсказанного блока и остаточного блока. Устройство кодирования может выводить остаточный блок путем деквантования/обратного преобразования квантованных коэффициентов преобразования для ссылки для интер-предсказания следующей картинки и может генерировать восстановленную картинку на этой основе.
[101] Фиг. 4 схематично иллюстрирует метод множественного преобразования в соответствии с вариантом осуществления настоящего раскрытия.
[102] Со ссылкой на фиг. 4, преобразователь может соответствовать преобразователю в устройстве кодирования согласно фиг. 2, и обратный преобразователь может соответствовать обратному преобразователю в устройстве кодирования согласно фиг. 2 или обратному преобразователю в устройстве декодирования согласно фиг. 3.
[103] Преобразователь может выводить коэффициенты (первичного) преобразования путем выполнения первичного преобразования на основе остаточных выборок (массива остаточных выборок) в остаточном блоке (S410). Это первичное преобразование может упоминаться как основное (базовое) преобразование. Здесь, первичное преобразование может быть основано на выборе множественного преобразования (MTS), и когда множественное преобразование применяется как первичное преобразование, оно может упоминаться как множественное основное преобразование.
[104] Множественное основное преобразование может представлять способ преобразования, дополнительно использующий дискретное косинусное преобразование (DCT) типа 2 и дискретное синусное преобразование (DST) типа 7, DCT типа 8 и/или DST типа 1. То есть, множественное основное преобразование может представлять способ преобразования для преобразования остаточного сигнала (или остаточного блока) пространственной области в коэффициенты преобразования (или коэффициенты первичного преобразования) частотной области на основе множества ядер преобразования, выбранных из DCT типа 2, DST типа 7, DCT типа 8 и DST типа 1. Здесь, коэффициенты первичного преобразования могут называться коэффициентами временного преобразования с точки зрения преобразователя.
[105] Иными словами, когда применяется обычный способ преобразования, коэффициенты преобразования могут генерироваться путем применения преобразования из пространственной области в частотную область для остаточного сигнала (или остаточного блока) на основе DCT типа 2. В отличие от этого, когда применяется множественное основное преобразование, коэффициенты преобразования (или коэффициенты первичного преобразования) могут генерироваться путем применения преобразования из пространственной области в частотную область для остаточного сигнала (или остаточного блока) на основе DCT типа 2, DST типа 7, DCT типа 8 и/или DST типа 1. Здесь, DCT типа 2, DST типа 7, DCT типа 8 и DST типа 1 могут упоминаться как типы преобразования, ядра преобразования или базы преобразования. Эти типы преобразования DCT/DST могут определяться на основе базисных функций.
[106] Когда выполняется множественное основное преобразование, ядро вертикального преобразования и ядро горизонтального преобразования для целевого блока могут быть выбраны из ядер преобразования, вертикальное преобразование может выполняться на целевом блоке на основе ядра вертикального преобразования, и горизонтальное преобразование может выполняться на целевом блоке на основе ядра горизонтального преобразования. Здесь, горизонтальное преобразование может указывать преобразование на горизонтальных компонентах целевого блока, и вертикальное преобразование может указывать преобразование на вертикальных компонентах целевого блока. Ядро вертикального преобразования/ядро горизонтального преобразования может адаптивно определяться на основе режима предсказания и/или индекса преобразования для целевого блока (CU или подблока), включающего в себя остаточный блок.
[107] Кроме того, в соответствии с примером, если первичное преобразование выполняется путем применения MTS, отношение отображения для ядер преобразования может быть установлено путем установки специальных базисных функций в предопределенные значения и комбинирования базисных функций для применения в вертикальном преобразовании или горизонтальном преобразовании. Например, когда ядро горизонтального преобразования выражено как trTypeHor и ядро преобразования вертикального направления выражено как trTypeVer, значение 0 для trTypeHor или trTypeVer может быть установлено в DCT2, значение 1 для trTypeHor или trTypeVer может быть установлено в DST7, и значение 2 для trTypeHor или trTypeVer может быть установлено в DCT8.
[108] В этом случае, информация индекса MTS может кодироваться и сигнализироваться на устройство декодирования, чтобы указывать любой один из множества наборов ядер преобразования. Например, индекс MTS 0 может указывать, что значения как trTypeHor, так и trTypeVer равны 0, индекс MTS 1 может указывать, что значения как trTypeHor, так и trTypeVer равны 1, индекс MTS 2 может указывать, что значение trTypeHor равно 2 и значение trTypeVer равно 1, индекс MTS 3 может указывать, что значение trTypeHor равно 1 и значение trTypeVer равно 2, и индекс MTS 4 может указывать, что значения как trTypeHor, так и trTypeVer равны 2.
[109] В одном примере, наборы ядер преобразования в соответствии с информацией индекса MTS показаны в следующей таблице.
[110] [Таблица 1]
[112] Преобразователь может выводить модифицированные коэффициенты (вторичного) преобразования путем выполнения вторичного преобразования на основе коэффициентов (первичного) преобразования (S420). Первичное преобразование является преобразованием из пространственной области в частотную область, и вторичное преобразование относится к преобразованию в более сжатое выражение с использованием корреляции, существующей между коэффициентами (первичного) преобразования. Вторичное преобразование может включать в себя неразделимое преобразование. В этом случае, вторичное преобразование может называться неразделимым вторичным преобразованием (NSST) или зависимым от режима неразделимым вторичным преобразованием (MDNSST). Неразделимое вторичное преобразование может представлять преобразование, которое генерирует модифицированные коэффициенты преобразования (или коэффициенты вторичного преобразования) для остаточного сигнала путем вторичного преобразования, на основе матрицы неразделимого преобразования, коэффициентов (первичного) преобразования, выведенных посредством первичного преобразования. При этом вертикальное преобразование и горизонтальное преобразование не могут применяться отдельно (или горизонтальное и вертикальное преобразования не могут применяться независимо) к коэффициентам (первичного) преобразования, но преобразования могут применяться одновременно на основе матрицы неразделимого преобразования. Иными словами, неразделимое вторичное преобразование может представлять способ преобразования, которое отдельно не применяется в вертикальном направлении и горизонтальном направлении для коэффициентов (первичного) преобразования, и, например, двумерные сигналы (коэффициенты преобразования) переупорядочиваются в одномерный сигнал посредством некоторого определенного направления (например, направления "сначала по строке" или направления "сначала по столбцу"), и затем модифицированные коэффициенты преобразования (или коэффициенты вторичного преобразования) генерируются на основе матрицы неразделимого преобразования. Например, в соответствии с порядком сначала по строке, блоки M×N располагаются в линию в порядке первой строки, второй строки, … и N-ой строки. В соответствии с порядком сначала по столбцу, блоки M×N располагаются в линию в порядке первого столбца, второго столбца, … и N-го столбца. Неразделимое вторичное преобразование может применяться к верхней-левой области блока, сконфигурированного с коэффициентами (первичного) преобразования (далее может упоминаться как блок коэффициентов преобразования). Например, если ширина (W) и высота (H) блока коэффициентов преобразования равны или больше, чем 8, то неразделимое вторичное преобразование 8×8 может применяться к верхней-левой области 8×8 блока коэффициентов преобразования. Кроме того, если ширина (W) и высота (H) блока коэффициентов преобразования равны или больше, чем 4, и ширина (W) или высота (H) блока коэффициентов преобразования меньше, чем 8, то неразделимое вторичное преобразование 4×4 может применяться к верхней-левой области min(8,W) × min(8,H) блока коэффициентов преобразования. Однако вариант осуществления не ограничен этим, и например, даже если одно из условий, что ширина (W) или высота (H) блока коэффициентов преобразования равна или больше, чем 4, удовлетворяется, то неразделимое вторичное преобразование 4×4 может применяться к верхней-левой области min(8,W) × min(8,H) блока коэффициентов преобразования.
[112] Конкретно, например, если используется входной блок 4×4, то неразделимое вторичное преобразование может выполняться следующим образом.
[113] Входной блок X 4×4 может быть представлен следующим образом.
[114] [Уравнение 1]
[115] Если X представлен в форме вектора, то вектор  может быть представлен, как указано ниже.
[116] [Уравнение 2]
[117] В Уравнении 2, вектор  является одномерным вектором, полученным переупорядочением двумерного блока X в Уравнении 1 в соответствии с порядком сначала по строке.
[118] В этом случае, вторичное неразделимое преобразование может вычисляться, как указано ниже.
[119] [Уравнение 3]
[120] В этом уравнении,  представляет вектор коэффициентов преобразования, и T представляет матрицу 16×16 (неразделимого) преобразования.
[121] Посредством приведенного выше Уравнения 3, можно вывести вектор 16×1 коэффициентов преобразования , и  может быть переупорядочен в блок 4×4 с помощью порядка сканирования (горизонтальное, вертикальное, диагональное и т.п.). Однако вышеописанное вычисление является примером, и может использоваться преобразование гиперкуба Гивенса (HyGT) или тому подобное для вычисления неразделимого вторичного преобразования, чтобы уменьшить вычислительную сложность неразделимого вторичного преобразования.
[122] Между тем, в неразделимом вторичном преобразовании, ядро преобразования (база преобразования, тип преобразования) может выбираться как зависимое от режима. В этом случае, режим может включать в себя режим интра-предсказания и/или режим интер-предсказания.
[123] Как описано выше, неразделимое вторичное преобразование может выполняться на основе преобразования 8×8 или преобразования 4×4, определенного на основе ширины (W) и высоты (H) блока коэффициентов преобразования. Преобразование 8×8 относится к преобразованию, которое применимо к области 8×8, включенной в блок коэффициентов преобразования, когда как W, так и H равны или больше, чем 8, и область 8×8 может быть верхней-левой областью 8×8 в блоке коэффициентов преобразования. Аналогично, преобразование 4×4 относится к преобразованию, которое применимо к области 4×4, включенной в блок коэффициентов преобразования, когда как W, так и H равны или больше, чем 4, и область 4×4 может быть верхней-левой областью 4×4 в блоке коэффициентов преобразования. Например, матрица 8×8 ядра преобразования может быть матрицей 64×64/16×64, и матрица 4×4 ядра преобразования может быть матрицей 16×16/8×16.
[124] Здесь, чтобы выбрать зависимое от режима ядро преобразования, два неразделимых ядра вторичного преобразования на каждый набор преобразований для неразделимого вторичного преобразования могут быть сконфигурированы как для преобразования 8×8, так и преобразования 4×4, и может иметься четыре набора преобразований. То есть, четыре набора преобразований могут быть сконфигурированы для преобразования 8×8, и четыре набора преобразований могут быть сконфигурированы для преобразования 4×4. В этом случае, каждый из четырех наборов преобразований для преобразования 8×8 может включать в себя два ядра преобразования 8×8, и каждый из четырех наборов преобразований для преобразования 4×4 может включать в себя два ядра преобразования 4×4.
[125] Однако, поскольку размер преобразования, то есть, размер области, к которой применяется преобразование, может иметь, например, размер иной, чем 8×8 или 4×4, число наборов может составлять n, и число ядер преобразования в каждом наборе может составлять k.
[126] Набор преобразований может упоминаться как набор NSST или набор LFNST. Конкретный набор среди наборов преобразований может быть выбран, например, на основе режима интра-предсказания текущего блока (CU или подблока). Низкочастотное неразделимое преобразование (LFNST) может быть примером сокращенного неразделимого преобразования, которое будет описано далее, и представляет неразделимое преобразование для низкочастотного компонента.
[127] Для ссылки, например, режим интра-предсказания может включать в себя два ненаправленных (или неугловых) режима интра-предсказания и 65 направленных (или угловых) режимов интра-предсказания. Ненаправленные режимы интра-предсказания могут включать в себя планарный режим интра-предсказания № 0 и DC режим интра-предсказания № 1, и направленные режимы интра-предсказания могут включать в себя 65 режимов интра-предсказания от № 2 до 66. Однако это является примером, и этот документ может применяться, даже если число режимов интра-предсказания отличается. Между тем, в некоторых случаях, режим интра-предсказания № 67 может быть дополнительно использован, и режим интра-предсказания № 67 может представлять режим линейной модели (LM).
[128] Фиг. 5 показывает в качестве примера интра-направленные режимы 65 направлений предсказания.
[129] Со ссылкой на фиг. 5, на основе режима интра-предсказания 34, имеющего диагональное влево-вверх направление предсказания, режимы интра-предсказания могут быть разделены на режимы интра-предсказания, имеющие горизонтальную направленность, и режимы интра-предсказания, имеющие вертикальную направленность. На фиг. 5, H и V обозначают горизонтальную направленность и вертикальную направленность, соответственно, и числа от -32 до 32 указывают смещения в единицах 1/32 по дискретной позиции сетки. Эти числа могут представлять смещение для значения индекса режима. Режимы интра-предсказания от 2 до 33 имеют горизонтальную направленность, и режимы интра-предсказания от 34 до 66 имеют вертикальную направленность. Строго говоря, режим интра-предсказания 34 может рассматриваться как ни горизонтальный, ни вертикальный, но может классифицироваться как принадлежащий горизонтальной направленности при определении набора преобразований вторичного преобразования. Это объясняется тем, что входные данные транспонируются, чтобы использоваться для режима вертикального направления симметрично на основе режима 34 интра-предсказания, и способ выравнивания входных данных для горизонтального режима используется для режима 34 интра-предсказания. Транспонирование входных данных означает, что строки и столбцы двумерного блока M×N данных переключаются на N×M данные. Режим 18 интра-предсказания и режим 50 интра-предсказания могут представлять горизонтальный режим интра-предсказания и вертикальный режим интра-предсказания, соответственно, и режим 2 интра-предсказания может упоминаться как диагональный вправо-вверх режим интра-предсказания, так как режим 2 интра-предсказания имеет левый опорный пиксел и выполняет предсказание в направлении вправо-вверх. Аналогичным образом, режим 34 интра-предсказания может упоминаться как диагональный вправо-вниз режим интра-предсказания, и режим 66 интра-предсказания может упоминаться как диагональный влево-вниз режим интра-предсказания.
[130] В соответствии с примером, четыре набора преобразований в соответствии с режимом интра-предсказания могут отображаться, например, как показано в следующей таблице.
[131] [Таблица 2]
[132] Как показано в Таблице 2, любой один из четырех наборов преобразований, то есть, lfnstTrSetIdx, может быть отображен на любой из четырех индексов, то есть, от 0 до 3, в соответствии с режимом интра-предсказания.
[133] Когда определено, что конкретный набор используется для неразделимого преобразования, одно из k ядер преобразования в конкретном наборе может быть выбрано с помощью индекса неразделимого вторичного преобразования. Устройство кодирования может выводить индекс неразделимого вторичного преобразования, указывающий конкретное ядро преобразования, на основе проверки по критерию "скорость-искажение" (RD) и может сигнализировать индекс неразделимого вторичного преобразования на устройство декодирования. Устройство декодирования может выбрать одно из k ядер преобразования в конкретном наборе на основе индекса неразделимого вторичного преобразования. Например, значение 0 индекса lfnst может относиться к первому ядру неразделимого вторичного преобразования, значение 1 индекса lfnst может относиться ко второму ядру неразделимого вторичного преобразования, и значение 2 индекса lfnst может относиться к третьему ядру неразделимого вторичного преобразования. Альтернативно, значение 0 индекса lfnst может указывать, что первое неразделимое вторичное преобразование не применяется к целевому блоку, и значения от 1 до 3 индекса lfnst могут указывать три ядра преобразования.
[134] Преобразователь может выполнять неразделимое вторичное преобразование на основе выбранного ядра преобразования и может получать модифицированные коэффициенты (вторичного) преобразования. Как описано выше, модифицированные коэффициенты преобразования могут быть выведены как коэффициенты преобразования, квантованные с помощью квантователя, и могут кодироваться и сигнализироваться на устройство декодирования и передаваться на деквантователь/обратный преобразователь в устройстве кодирования.
[135] Между тем, как описано выше, если вторичное преобразование опущено, коэффициенты (первичного) преобразования, которые являются выходом первичного (разделимого) преобразования, могут быть выведены как коэффициенты преобразования, квантованные с помощью квантователя, как описано выше, и могут кодироваться и сигнализироваться на устройство декодирования и передаваться на деквантователь/обратный преобразователь в устройстве кодирования.
[136] Обратный преобразователь может выполнять ряд процедур в обратном порядке по отношению к тому, как они выполнялись в вышеописанном преобразователе. Обратный преобразователь может принимать (деквантованные) коэффициенты преобразования и выводить коэффициенты (первичного) преобразования путем выполнения вторичного (обратного) преобразования (S450) и может получать остаточный блок (остаточные выборки) путем выполнения первичного (обратного) преобразования на коэффициентах (первичного) преобразования (S460). В этой связи, коэффициенты первичного преобразования могут называться модифицированными коэффициентами преобразования с точки зрения обратного преобразователя. Как описано выше, устройство кодирования и устройство декодирования могут генерировать восстановленный блок на основе остаточного блока и предсказанного блока и могут генерировать восстановленную картинку на основе восстановленного блока.
[137] Устройство декодирования может, кроме того, включать в себя определитель применения вторичного обратного преобразования (или элемент для определения, следует ли применять вторичное обратное преобразование) и определитель вторичного обратного преобразования (или элемент для определения вторичного обратного преобразования). Определитель применения вторичного обратного преобразования может определять, следует ли применять вторичное обратное преобразование. Например, вторичное обратное преобразование может представлять собой NSST, RST или LFNST, и определитель применения вторичного обратного преобразования может определять, следует ли применять вторичное обратное преобразование, на основе флага вторичного преобразования, полученного путем синтаксического анализа битового потока. В другом примере, определитель применения вторичного обратного преобразования может определять, следует ли применять вторичное обратное преобразование, на основе коэффициента преобразования остаточного блока.
[138] Определитель вторичного обратного преобразования может определять вторичное обратное преобразование. В этом случае, определитель вторичного обратного преобразования может определять вторичное обратное преобразование, применяемое к текущему блоку, на основе набора преобразований LFNST (NSST или RST), специфицированного в соответствии с режимом интра-предсказания. В варианте осуществления, способ определения вторичного преобразования может определяться в зависимости от способа определения первичного преобразования. Различные комбинации первичных преобразований и вторичных преобразований могут определяться в соответствии с режимом интра-предсказания. Кроме того, в примере, определитель вторичного обратного преобразования может определять область, к которой применяется вторичное обратное преобразование, на основе размера текущего блока.
[139] Между тем, как описано выше, если вторичное (обратное) преобразование опущено, могут приниматься (деквантованные) коэффициенты преобразования, может выполняться первичное (разделимое) обратное преобразование, и может быть получен остаточный блок (остаточные выборки). Как описано выше, устройство кодирования и устройство декодирования могут генерировать восстановленный блок на основе остаточного блока и предсказанного блока и могут генерировать восстановленную картинку на основе восстановленного блока.
[140] Между тем, в настоящем раскрытии, сокращенное вторичное преобразование (RST), в котором размер матрицы (ядра) преобразования уменьшен, может применяться в концепции NSST, чтобы уменьшить объем вычислений и памяти, требуемый для неразделимого вторичного преобразование.
[141] Между тем, ядро преобразования, матрица преобразования и коэффициент, образующий матрицу ядра преобразования, то есть, коэффициент ядра или коэффициент матрицы, описанные в настоящем раскрытии, могут быть выражены в 8 битах. Это может быть условием для реализации в устройстве декодирования и устройстве кодирования и может уменьшить объем памяти, требуемой для хранения ядра преобразования, при снижении производительности, которое может рационально допускаться, по сравнению с существующими случаями 9 битов или 10 битов. Дополнительно, выражение матрицы ядра в 8 битах может позволить использовать небольшой умножитель и может быть более подходящим для инструкций архитектуры одного потока инструкций и множества потоков данных (SIMD), используемых для оптимальной реализации программного обеспечения.
[142] В настоящей спецификации, термин "RST" может означать преобразование, которое выполняется на остаточных выборках для целевого блока на основе матрицы преобразования, размер которой уменьшен в соответствии с коэффициентом уменьшения. В случае выполнения сокращенного преобразования, объем вычислений, требуемых для преобразования, может быть уменьшен, вследствие сокращения в размере матрицы преобразования. То есть, RST может использоваться для решения проблемы вычислительной сложности, проявляющейся при неразделимом преобразовании или преобразовании блока большого размера.
[143] RST может определяться различными терминами, такими как сокращенное преобразование, сокращенное вторичное преобразование, преобразование сокращения, упрощенное преобразование, простое преобразование и тому подобное, и наименование RST не ограничивается перечисленными примерами. Альтернативно, поскольку RST в основном выполняется в низкочастотной области, включающей ненулевой коэффициент в блоке преобразования, оно может упоминаться как низкочастотное неразделимое преобразование (LFNST). Индекс преобразования может упоминаться как индекс LFNST.
[144] Между тем, когда вторичное обратное преобразование выполняется на основе RST, обратный преобразователь 235 устройства 200 кодирования и обратный преобразователь 322 устройства 300 декодирования могут включать в себя обратный сокращенный вторичный преобразователь, который выводит модифицированные коэффициенты преобразования на основе обратного RST коэффициентов преобразования, и обратный первичный преобразователь, который выводит остаточные выборки для целевого блока на основе обратного первичного преобразования модифицированных коэффициентов преобразования. Обратное первичное преобразование относится к обратному преобразованию первичного преобразования, применяемого к остатку. В настоящем раскрытии, выведение коэффициента преобразования на основе преобразования может относиться к выведению коэффициента преобразования путем применения преобразования.
[145] Фиг. 6 является диаграммой, иллюстрирующей RST в соответствии с вариантом осуществления настоящего раскрытия.
[146] В настоящем раскрытии, "целевой блок" может относиться к текущему блоку, подлежащему кодированию, остаточному блоку или блоку преобразования.
[147] В RST в соответствии с примером, N-мерный вектор может быть отображен на R-мерный вектор, расположенный в другом пространстве, так что может определяться матрица сокращенного преобразования, где R меньше, чем N. N может означать квадрат длины стороны блока, к которому применяется преобразование, или общее число коэффициентов преобразования, соответствующих блоку, к которому применяется преобразование, и сокращенный фактор может означать значение R/N. Сокращенный фактор (коэффициент) может упоминаться как сокращенный коэффициент, коэффициент сокращения, упрощенный коэффициент, простой коэффициент или определяться различными другими терминами. Между тем, R может упоминаться как сокращенный коэффициент, но в зависимости от обстоятельств, сокращенный коэффициент может означать R. Кроме того, в зависимости от обстоятельств, сокращенный коэффициент может означать значение N/R.
[148] В примере, сокращенный фактор или сокращенный коэффициент может сигнализироваться посредством битового потока, но пример не ограничен этим. Например, предопределенное значение для сокращенного фактора или сокращенного коэффициента может быть сохранено в каждом из устройства 200 кодирования и устройства 300 декодирования, и в этом случае, сокращенный фактор или сокращенный коэффициент может не сигнализироваться отдельно.
[149] Размер матрицы сокращенного преобразования в соответствии с примером может быть R×N меньше, чем N×N, размер матрицы обычного преобразования, и может быть определен как в Уравнении 4 ниже.
[150] [Уравнение 4]
R
N
R
N
[151] Матрица T в блоке сокращенного преобразования, показанном на фиг. 6(a) может означать матрицу T× Уравнения 4. Как показано на фиг. 6(a), когда матрица T× сокращенного преобразования умножается на остаточные выборки для целевого блока, могут быть выведены коэффициенты преобразования для целевого блока.
[152] В примере, если размер блока, к которому применяется преобразование, составляет 8×8 и R=16 (т.е. R/N=16/64=1/4), то RST в соответствии с фиг. 6(a) может быть выражено как матричная операция, как показано в Уравнение 5 ниже. В этом случае, память и вычисление умножения могут быть сокращены до примерно 1/4 посредством сокращенного коэффициента.
[153] В настоящем раскрытии, матричная операция может пониматься как операция умножения вектор-столбца на матрицу, расположенную слева от вектор-столбца, чтобы получить вектор-столбец.
[154] [Уравнение 5]
1
64
[155] В Уравнении 5, r до r могут представлять остаточные выборки для целевого блока и могут быть конкретно коэффициентами преобразования, сгенерированными путем применения первичного преобразования. В результате вычисления Уравнения 5, могут быть выведены коэффициенты преобразования ci для целевого блока, и процесс выведения ci может быть таким, как в Уравнении 6.
[156] [Уравнение 6]
1
R
1
16
[157] В результате вычисления Уравнения 6, могут быть выведены коэффициенты преобразования c до c для целевого блока. То есть, когда R=16, могут быть выведены коэффициенты преобразования c до c для целевого блока. Если, вместо RST, применяется регулярное преобразование, и матрица преобразования размером 64×64 (N×N) умножается на остаточные выборки размером 64×1 (N×1), то только 16 (R) коэффициентов преобразования выводятся для целевого блока, поскольку применялось RST, хотя 64 (N) коэффициентов преобразования выведены для целевого блока. Поскольку общее число коэффициентов преобразования для целевого блока сокращается от N до R, объем данных, передаваемых устройством 200 кодирования на устройство 300 декодирования, уменьшается, так что эффективность передачи между устройством 200 кодирования и устройством 300 декодирования может быть повышена.
[158] При рассмотрении с точки зрения размера матрицы преобразования, размер матрицы регулярного преобразования составляет 64×64 (N×N), но размер матрицы сокращенного преобразования уменьшается до 16×64 (R×N), поэтому использование памяти в случае выполнения RST может быть сокращено в отношении R/N по сравнению со случаем выполнения регулярного преобразования. Кроме того, по сравнению с числом вычислений умножения N×N в случае использования матрицы регулярного преобразования, использование матрицы сокращенного преобразования может уменьшить число вычислений умножения в отношении R/N (R×N).
[159] В примере, преобразователь 232 устройства 200 кодирования может выводить коэффициенты преобразования для целевого блока путем выполнения первичного преобразования и основанного на RST вторичного преобразования на остаточных выборках для целевого блока. Эти коэффициенты преобразования могут передаваться на обратный преобразователь устройства 300 декодирования, и обратный преобразователь 322 устройства 300 декодирования может выводить модифицированные коэффициенты преобразования на основе обратного сокращенного вторичного преобразования (RST) для коэффициентов преобразования и может выводить остаточные выборки для целевого блока на основе обратного первичного преобразования для модифицированных коэффициентов преобразования.
R
N
R
N
[160] Размер матрицы T× обратного RST в соответствии с примером на N×R меньше, чем размер N×N матрицы регулярного обратного преобразования, и находится в отношении транспозиции с матрицей T× сокращенного преобразования, показанной в уравнении 4.
t
T
T
T
T
R
N
R
N
R
N
R
N
NxR
[161] Матрица T в блоке сокращенного обратного преобразования, показанном на фиг. 6(b), может означать матрицу T× обратного RST (надстрочный индекс T означает транспозицию). Когда матрица T× обратного RST умножается на коэффициенты преобразования для целевого блока, как показано на фиг. 6(b), могут быть выведены модифицированные коэффициенты преобразования для целевого блока или остаточные выборки для текущего блока. Матрица T× обратного RST может быть выражена как (T×).
R
N
R
N
T
T
[162] Более конкретно, когда обратное RST применяется как вторичное обратное преобразование, модифицированные коэффициенты преобразования для целевого блока могут быть выведены, когда матрица T× обратного RST умножается на коэффициенты преобразования для целевого блока. Между тем, обратное RST может применяться как обратное первичное преобразование, и в этом случае, могут быть выведены остаточные выборки для целевого блока, когда матрица T× обратного RST умножается на коэффициенты преобразования для целевого блока.
[163] В примере, если размер блока, к которому применяется обратное преобразование, составляет 8×8 и R=16 (т.е. R/N=16/64= 1/4), то RST в соответствии с фиг. 6(b) может быть выражено как матричная операция, как показано в Уравнение 7 ниже.
[164] [Уравнение 7]
1
16
i
i
[165] В Уравнении 7, c до c могут представлять коэффициенты преобразования для целевого блока. В результате вычисления Уравнения 7, могут быть выведены r, представляющие модифицированные коэффициенты преобразования для целевого блока или остаточные выборки для целевого блока, и процесс выведения r может быть таким, как в Уравнении 8.
[166] [Уравнение 8]
1
N
[167] В результате вычисления Уравнения 8, могут быть выведены r до r, представляющие модифицированные коэффициенты преобразования для целевого блока или остаточные выборки для целевого блока. При рассмотрении с точки зрения размера матрицы обратного преобразования, размер матрицы регулярного обратного преобразования составляет 64×64 (N×N), но размер матрицы сокращенного обратного преобразования уменьшается до 64×16 (R×N), так что использование памяти в случае выполнения обратного RST может быть уменьшено в отношении R/N по сравнению со случаем выполнения регулярного обратного преобразования. Дополнительно, по сравнению с числом вычислений умножения N×N в случае использования матрицы регулярного обратного преобразования, использование матрицы сокращенного обратного преобразования может уменьшить число вычислений умножения в отношении R/N (N×R).
[168] Конфигурация набора преобразований, показанная в Таблице 2, может применяться к 8×8 RST. То есть, 8×8 RST может применяться в соответствии с набором преобразований в Таблице 2. Поскольку один набор преобразований включает в себя два или три преобразования (ядра) в соответствии с режимом интра-предсказания, он может быть сконфигурирован для выбора одного из до четырех преобразований, включая случай, когда вторичное преобразование не применяется. В преобразовании, где вторичное преобразование не применяется, это может учитываться, чтобы применять единичную матрицу. Предполагая, что индексы 0, 1, 2 и 3 соответственно назначены четырем преобразованиям (например, индекс 0 может быть выделен для случая, когда применяется единичная матрица, то есть, случая, когда вторичное преобразование не применяется), индекс преобразование или индекс lfnst в качестве синтаксического элемента может сигнализироваться для каждого блока коэффициентов преобразования, тем самым указывая применяемое преобразование. То есть, для верхнего-левого блока 8×8, с помощью индекса преобразования, можно указать 8×8 RST в конфигурации RST или указать 8×8 lfnst, когда применяется LFNST. 8×8 lfnst и 8×8 RST относятся к преобразованиям, применимым к области 8×8, включенной в блок коэффициентов преобразования, когда W и H целевого блока, подлежащего преобразованию, равны или больше, чем 8, и область 8×8 может быть верхней-левой областью 8×8 в блоке коэффициентов преобразования. Аналогично, 4×4 lfnst и 4×4 RST относятся к преобразованиям, применимым к области 4×4, включенной в блок коэффициентов преобразования, когда W и H целевого блока равны или больше, чем 4, и область 4×4 может быть верхней-левой областью 4×4 в блоке коэффициентов преобразования.
[169] В соответствии с вариантом осуществления настоящего раскрытия, для преобразования в процессе кодирования, только 48 частей данных могут быть выбраны, и матрица максимум 16×48 ядра преобразования может применяться к ним, вместо применения матрицы 16×64 ядра преобразования к 64 частям данных, образующих область 8×8. Здесь, "максимум" означает, что m имеет максимальное значение 16 в матрице m×48 ядра преобразования для генерации m коэффициентов. То есть, когда RST выполняется путем применения матрицы m×48 ядра преобразования (m≤16) к области 8×8, вводятся 48 частей данных, и генерируются m коэффициентов. Когда m равно 16, вводятся 48 частей данных, и генерируются 16 коэффициентов. То есть, предполагая, что 48 частей данных формируют вектор 48×1, матрица 16×48 и вектор 48×1 последовательно умножаются, тем самым генерируя вектор 16×1. Здесь, 48 частей данных, формирующих область 8×8, могут надлежащим образом располагаться, формируя при этом вектор 48×1. Например, вектор 48×1 может быть сформирован на основе 48 частей данных, образующих область, исключая нижнюю-правую область 4×4 среди областей 8×8. Здесь, когда матричная операция выполняется путем применения матрицы максимум 16×48 ядра преобразования, генерируются 16 модифицированных коэффициентов преобразования, и 16 модифицированных коэффициентов преобразования могут быть упорядочены в верхней-левой области 4×4 в соответствии с порядком сканирования, и верхняя-правая область 4×4 и нижняя-левая область 4×4 могут быть заполнены нулями.
[170] Для обратного преобразования в процессе декодирования, может использоваться транспонированная матрица вышеописанной матрицы ядра преобразования. То есть, когда обратное RST или LFNST выполняется в процессе обратного преобразования устройством декодирования, входные данные коэффициентов, к которым применяется обратное RST, конфигурируются в одномерный вектор в соответствии с предопределенным порядком расположения, и вектор модифицированных коэффициентов, полученный умножением одномерного вектора и соответствующей матрицы обратного RST слева от одномерного вектора, может быть упорядочен в двумерный блок в соответствии с предопределенным порядком расположения.
[171] В итоге, в процессе преобразования, когда RST или LFNST применяется к области 8×8, матричная операция применяется к 48 коэффициентам преобразования в верхней-левой, верхней-правой и нижней-левой областях области 8×8, исключая нижнюю-правую область среди коэффициентов преобразования в области 8×8 и матрицы 16×48 ядра преобразования. Для матричной операции, 48 коэффициентов преобразования вводятся в одномерном массиве. Когда выполняется матричная операция, выводятся 16 модифицированных коэффициентов преобразования, и модифицированные коэффициенты преобразования могут быть упорядочены в верхней-левой области в области 8×8.
[172] Напротив, в процессе обратного преобразования, когда обратное RST или LFNST применяется к области 8×8, 16 коэффициентов преобразования, соответствующих верхней-левой области в области 8×8 среди коэффициентов преобразования в области 8×8, могут вводиться в одномерном массиве в соответствии с порядком сканирования и могут подвергаться матричной операции с матрицей 48×16 ядра преобразования. То есть, матричная операция может быть выражена как (матрица 48×16)*(вектор 16×1 коэффициентов преобразования)=(вектор 48×1 модифицированных коэффициентов преобразования). Здесь, вектор n×1 может интерпретироваться, чтобы иметь то же самое значение, что и матрица n×1, и может, таким образом, выражаться как вектор-столбец n×1. Кроме того, * означает матричное умножение. Когда выполняется матричная операция, могут быть выведены 48 модифицированных коэффициентов преобразования, и 48 модифицированных коэффициентов преобразования могут быть упорядочены в верхней-левой, верхней-правой и нижней-левой областях в области 8×8, исключая нижнюю-правую область.
[173] Когда вторичное обратное преобразование основано на RST, обратный преобразователь 235 устройства 200 кодирования и обратный преобразователь 322 устройства 300 декодирования могут включать в себя обратный сокращенный вторичный преобразователь для выведения модифицированных коэффициентов преобразования на основе обратного RST на коэффициентах преобразования и обратный первичный преобразователь для выведения остаточных выборок для целевого блока на основе обратного первичного преобразования на модифицированных коэффициентах преобразования. Обратное первичное преобразование относится к обратному преобразованию первичного преобразования, применяемого к остатку. В настоящем раскрытии, выведение коэффициента преобразования на основе преобразования может относиться к выведению коэффициента преобразования путем применения преобразования.
[174] Вышеописанное неразделенное преобразование, LFNST, будет описано детально следующим образом. LFNST может включать в себя прямое преобразование устройством кодирования и обратное преобразование устройством декодирования.
[175] Устройство кодирования принимает результат (или часть результата), выведенный после применения первичного (основного) преобразования в качестве входа, и применяет прямое вторичное преобразование (вторичное преобразование).
[176] [Уравнение 9]
T
[177] В Уравнении 9, x и y являются входами и выходами вторичного преобразования, соответственно, и G является матрицей, представляющей вторичное преобразование, и базисные векторы преобразования образованы вектор-столбцами. В случае обратного LFNST, когда размерность матрицы преобразования G выражается как [число строк × число столбцов], в случае прямого LFNST, транспозиция матрицы G становится размерностью G.
[178] Для обратного LFNST, размерностями матрицы G являются [48×16], [48×8], [16×16], [16×8], и матрица [48×8] и матрица [16×8] являются частичными матрицами, полученными дискретизацией 8 базисных векторов преобразования слева матрицы [48×16] и матрицы [16×16], соответственно.
T
[179] С другой стороны, для прямого LFNST, размерностями матрицы G являются [16×48], [8×48], [16×16], [8×16], и матрица [8×48] и матрица [8×16] являются частичными матрицами, полученными дискретизацией 8 базисных векторов преобразования сверху матрицы [16×48] и матрицы [16×16], соответственно.
[180] Поэтому, в случае прямого LFNST, вектор [48×1] или вектор [16×1] возможен как вход x, и вектор [16×1] или вектор [8×1] возможен как выход y. В кодировании и декодировании видео, выход прямого первичного преобразования является двумерными (2D) данными, поэтому для формирования вектора [48×1] или вектора [16×1] в качестве входа x, одномерный вектор должен формироваться путем надлежащего упорядочивания 2D данных, которые являются выходом прямого преобразования.
[181] Фиг. 7 является диаграммой, иллюстрирующей последовательность компоновки выходных данных прямого первичного преобразования в одномерный вектор в соответствии с примером. Левые диаграммы (a) и (b) на фиг. 7 показывают последовательность для формирования вектора [48×1], и правые диаграммы (a) и (b) на фиг. 7 показывают последовательность для формирования вектора [16×1]. В случае LFNST, одномерный вектор x может быть получен путем последовательной компоновки 2D данных в том же порядке, что и в (a) и (b) на фиг. 7.
[182] Направление компоновки выходных данных прямого первичного преобразования может определяться в соответствии с режимом интра-предсказания текущего блока. Например, когда режим интра-предсказания текущего блока находится в горизонтальном направлении относительно диагонального направления, выходные данные прямого первичного преобразования могут быть скомпонованы в порядке согласно фиг. 7(a), и когда режим интра-предсказания текущего блока находится в вертикальном направлении относительно диагонального направления, выходные данные прямого первичного преобразования могут быть скомпонованы в порядке согласно фиг. 7(b).
[183] В соответствии с примером, может применяться порядок компоновки, отличающийся от порядков компоновки на фиг. 7(a) и (b), и чтобы получить тот же результат (вектор y), что и получаемый при применении порядков компоновки на фиг. 7(a) и (b), вектор-столбцы матрицы G могут быть переупорядочены в соответствии с порядком компоновки. То есть, можно переупорядочить вектор-столбцы G так, что каждый элемент, составляющий вектор x, всегда умножается на тот же самый базисный вектор преобразования.
[184] Поскольку выход y, полученный с помощью Уравнения 9, является одномерным вектором, когда требуются двумерные данные в качестве входных данных в процессе использования результата прямого вторичное преобразования в качестве входа, например, в процессе выполнения квантования или кодирования остатка, выходной вектор y в Уравнении 9 должен быть надлежащим образом снова скомпонован как 2D данные.
[185] Фиг. 8 является диаграммой, иллюстрирующей последовательность компоновки выходных данных прямого вторичного преобразования в двумерный вектор в соответствии с примером.
[186] В случае LFNST, выходные значения могут быть скомпонованы в 2D блок в соответствии с предопределенным порядком сканирования. Фиг. 8(a) показывает, что когда выходом y является вектор [16×1], выходные значения скомпонованы в 16 положениях 2D блока в соответствии с порядком диагонального сканирования. Фиг. 8(b) показывает, что когда выходом y является вектор [8×1], выходные значения скомпонованы в 8 положениях 2D блока в соответствии с порядком диагонального сканирования, и остальные 8 положений заполнены нулями. X на фиг. 8(b) указывает, что это положение заполнено нулем.
[187] В соответствии с другим примером, поскольку порядок, в котором обрабатывается выходной вектор y при выполнении квантования или кодирования остатка, может быть предварительно установлен, выходной вектор y может не компоноваться в 2D блок, как показано на фиг. 8. Однако, в случае кодирования остатка, кодирование данных может выполняться в единицах 2D блока (например, 4×4), таких как CG (группа коэффициентов), и в этом случае, данные компонуются в соответствии с конкретным порядком, как в порядке диагонального сканирования на фиг. 8.
[188] Между тем, устройство декодирования может конфигурировать одномерный входной вектор y путем компоновки двумерных данных, выводимых с помощью процесса деквантования или тому подобного в соответствии с предварительно установленным порядком сканирования для обратного преобразования. Входной вектор y может выводиться как выходной вектор x посредством следующего уравнения.
[189] [Уравнение 10]
x=Gy
[190] В случае обратного LFNST, выходной вектор x может выводиться путем умножения входного вектора y, который представляет собой вектор [16×1] или вектор [8×1], на матрицу G. Для обратного LFNST, выходной вектор x может представлять собой либо вектор [48×1], либо вектор [16×1].
[191] Выходной вектор x компонуется в двумерный блок в соответствии с порядком, показанным на фиг. 7, и компонуется как двумерные данные, и эти двумерные данные становятся входными данными (или частью входных данных) обратного первичного преобразования.
[192] Соответственно, обратное вторичное преобразование представляет собой в целом процесс, противоположный процессу прямого вторичного преобразования, и в случае обратного преобразования, в отличие от прямого направления, сначала применяется обратное вторичное преобразование, а затем применяется обратное первичное преобразование.
[193] В обратном LFNST, одна из 8 матриц [48×16] и 8 матриц [16×16] может быть выбрана как матрица G преобразования. Следует ли применять матрицу [48×16] или матрицу [16×16], зависит от размера и формы блока.
[194] Кроме того, 8 матриц могут быть выведены из четырех наборов преобразований, как показано в Таблице 2 выше, и каждый набор преобразований может состоять из двух матриц. То, какой набор преобразований использовать среди 4 наборов преобразований, определяется в соответствии с режимом интра-предсказания, и более конкретно, набор преобразований определяется на основе значения режима интра-предсказания, расширенного с учетом широкоугольного интра-предсказания (WAIP). То, какую матрицу выбрать из двух матриц, составляющих выбранный набор преобразований, выводится с помощью сигнализации индекса. Более конкретно, 0, 1 и 2 возможны в качестве передаваемого значения индекса, 0 может указывать, что LFNST не применяется, и 1 и 2 могут указывать любую одну из двух матриц преобразования, составляющих набор преобразований, выбранный на основе значения режима интра-предсказания.
[195] Фиг. 9 является диаграммой, иллюстрирующей широкоугольные режимы интра-предсказания в соответствии с вариантом осуществления настоящего документа.
[196] Обычное значение режима интра-предсказания может иметь значения от 0 до 66 и от 81 до 83, а значение режима интра-предсказания, расширенное вследствие WAIP, может иметь значение от -14 до 83, как показано. Значения от 81 до 83 указывают режим CCLM (линейная модель перекрестного компонента), и значения от -14 до -1 и значения от 67 до 80 указывают режим интра-предсказания, расширенный вследствие применения WAIP.
[197] Когда ширина текущего блока предсказания больше, чем высота, верхние опорные пикселы обычно ближе к положениям внутри предсказываемого блока. Поэтому, было бы более точным предсказывать в нижнем-левом направлении, чем в верхнем-правом направлении. Напротив, когда высота блока больше, чем ширина, левые опорные пикселы обычно ближе к положениям внутри предсказываемого блока. Поэтому, может быть более точным предсказывать в верхнем-правом направлении, чем в нижнем-левом направлении. Поэтому, может быть предпочтительным применить повторное отображение, т.е. модификацию индекса режима, на индекс режима широкоугольного интра-предсказания.
[198] Когда применяется широкоугольное интра-предсказание, информация о существующем интра-предсказании может сигнализироваться, и после того как информация синтаксически проанализирована, информация может повторно отображаться на индекс режима широкоугольного интра-предсказания. Поэтому, общее число режимов интра-предсказания для конкретного блока (например, неквадратного блока конкретного размера) может не изменяться, и общее число режимов интра-предсказания равно 67, и кодирование режима интра-предсказания для конкретного блока может не изменяться.
[199] Таблица 3 ниже показывает процесс выведения модифицированного интра-режима путем повторного отображения режима интра-предсказания на режим широкоугольного интра-предсказания.
[200]
[Таблица 3]
Входами в этот процесс являются:- переменная predModeIntra, специфицирующая режим интра-предсказания,- переменная nTbW, специфицирующая ширину блока преобразования,- переменная nTbH, специфицирующая высоту блока преобразования,- переменная cIdx, специфицирующая цветовой компонент текущего блока.Выходом этого процесса является модифицированный режим интра-предсказания predModeIntra.Переменные nW и nH выводятся следующим образом:- Если IntraSubPartitionsSplitType равно ISP_NO_SPLIT или cIdx не равно 0, то применимо следующее:nW=nTbWnH=nTbH- Иначе (IntraSubPartitionsSplitType не равно ISP_NO_SPLIT, и cIdx равно 0), то применимо следующее:nW=nCbWnH=nCbHПеременная whRatio устанавливается равной Abs(Log2(nW/nH)).Для неквадратных блоков (nW не равно nH), режим интра-предсказания predModeIntra модифицируется следующим образом:- Если все из следующих условий справедливы, то predModeIntra устанавливается равным (predModeIntra+65),-- nW больше, чем nH-- predModeIntra больше или равно 2-- predModeIntra меньше, чем (whRatio > 1)?(8+2* whRatio) : 8- Иначе, если все из следующих условий справедливы, то predModeIntra устанавливается равным (predModeIntra - 67),-- nH больше, чем nW-- predModeIntra меньше или равно 66-- predModeIntra больше, чем (whRatio > 1)?(60-2* whRatio): 60
[201] В Таблице 3, значение расширенного режима интра-предсказания окончательно сохраняется в переменной predModeIntra, и ISP_NO_SPLIT указывает, что блок CU не делится на подразбиения посредством метода интра-подразбиений (ISP), принятого в настоящее время в стандарте VVC, и значения 0, 1 и 2 переменной cIdx указывают случай компонентов яркости, Cb и Cr, соответственно. Функция Log2, показанная в Таблице 3, возвращает значение log с основанием 2, и функция Abs возвращает абсолютное значение.
[202] Переменная predModeIntra, указывающая режим интра-предсказания, и высота и ширина блока преобразования и т.д. используются как входные значения процесса отображения режима широкоугольного интра-предсказания, и выходным значением является модифицированный режим интра-предсказания predModeIntra. Высота и ширина блока преобразования или блока кодирования могут быть высотой и шириной текущего блока для повторного отображения режима интра-предсказания. При этом, переменная whRatio, отражающая отношение ширины к высоте, может быть установлена в Abs(Log2(nW/nH)).
[203] Для неквадратного блока, режим интра-предсказания может быть разделен на два случая и модифицирован.
[204] Во-первых, если все условия (1)~(3) удовлетворены, (1) ширина текущего блока больше, чем высота, (2) режим интра-предсказания перед модифицированием равен или больше, чем 2, (3) режим интра-предсказания меньше, чем значение, выведенное из (8+2*whRatio), когда переменная whRatio больше, чем 1, и меньше, чем 8, когда переменная whRatio меньше или равна 1 [predModeIntra меньше, чем (whRatio>1)?(8+2*whRatio):8], режим интра-предсказания установлен в значение 65 больше, чем режим интра-предсказания [predModeIntra установлено равным (predModeIntra+65)].
[205] Если в отличие от вышеизложенного, то есть, следующие условия (1)~(3) удовлетворены: (1) высота текущего блока больше, чем ширина, (2) режим интра-предсказания перед модифицированием меньше или равен 66, (3) режим интра-предсказания больше, чем значение, выведенное из (60-2*whRatio), когда переменная whRatio больше, чем 1, и больше, чем 60, когда переменная whRatio меньше или равна 1 [predModeIntra больше, чем (whRatio>1)? (60-2*whRatio):60], режим интра-предсказания установлен в значение 67 меньше, чем режим интра-предсказания [predModeIntra установлено равным (predModeIntra-67)].
[206] Таблица 2 выше показывает, как набор преобразований выбирается на основе значения режима интра-предсказания, расширенного посредством WAIP в LFNST. Как показано на фиг. 9, режимы 14 до 33 и режимы 35 до 80 симметричны относительно направления предсказания вокруг режима 34. Например, режим 14 и режим 54 симметричны относительно направления, соответствующего режиму 34. Поэтому, тот же самый набор преобразований применяется к режимам, расположенным во взаимно симметричных направлениях, и эта симметрия также отражается в Таблице 2.
[207] Между тем, предполагается, что входные данные прямого LFNST для режима 54 симметричны с входными данными прямого LFNST для режима 14. Например, для режима 14 и режима 54, двумерные данные переупорядочиваются в одномерные данные в соответствии с порядком компоновки, показанным на фиг. 7(a) и на фиг. 7(b), соответственно. Кроме того, можно видеть, что шаблоны в порядке, показанном на фиг. 7(a) и на фиг. 7(b), симметричны относительно направления (диагонального направления), указанного режимом 34.
[208] Между тем, как описано выше, то, какая матрица преобразования из матрицы [48×16] и матрицы [16 ×16] применяется к LFNST, определяется размером и формой целевого блока преобразования.
[209] Фиг. 10 является диаграммой, иллюстрирующей форму блока, к которой применяется LFNST. Фиг. 10(a) показывает блоки 4×4, (b) показывает блоки 4×8 и 8×4, (c) показывает блоки 4×N или блоки N×4, в которых N равно 16 или более, (d) показывает блоки 8×8, (e) показывает блоки M×N, где M≥8, N≥8 и N>8 или M>8.
[210] На фиг. 10, блоки с жирными границами указывают области, к которым применяется LFNST. Для блоков согласно фиг. 10(a) и (b), LFNST применяется к верхней-левой области 4×4, и для блока согласно фиг. 10(c), LFNST применяется индивидуально к двум верхним-левым областям 4×4, которые расположены смежно. На фиг. 10(a), (b) и (c), поскольку LFNST применяется в единицах областей 4×4, это LFNST будет далее упоминаться как "4×4 LFNST". В качестве соответствующей матрицы преобразования, матрица [16×16] или матрица [16×8] может применяться на основе размерности матрицы G в уравнениях 9 и 10.
[211] Более конкретно, матрица [16×8] применяется к блоку 4×4 (TU 4×4 или CU 4×4) согласно фиг. 10(a), и матрица [16×16] применяется к блокам на фиг. 10(b) и (c). Это предназначено для регулирования вычислительной сложности для наихудшего случая до 8 умножений на выборку.
[212] В отношении фиг. 10(d) и (e), LFNST применяется к верхней-левой области 8×8, и это LFNST далее упоминается как "8×8 LFNST". В качестве соответствующей матрицы преобразования, может применяться матрица [48×16] или матрица [48×8]. В случае прямого LFNST, поскольку вектор [48×1] (вектор x в Уравнении 9) вводится в качестве входных данных, значения всех выборок верхней-левой области 8×8 не используются в качестве входных значений прямого LFNST. То есть, как можно видеть в левой компоновке на фиг. 7(a) или левой компоновке на фиг. 7(b), вектор [48×1] может быть сформирован на основе выборок, принадлежащих остальным 3 блокам 4×4, оставляя нижний правый блок 4×4 как он есть.
[213] Матрица [48×8] может применяться к блоку 8×8 (TU 8×8 или CU 8×8) на фиг. 10(d), и матрица [48×16] может применяться к блоку 8×8 на фиг. 10(e). Это также предназначено для регулирования вычислительной сложности для наихудшего случая до 8 умножений на выборку.
T
[214] В зависимости от формы блока, когда применяется соответствующее прямое LFNST (4×4 LFNST или 8×8 LFNST), генерируется 8 или 16 выходных данных (вектор y в Уравнении 9, вектор [8×1] или [16×1]). В прямом LFNST, число выходных данных равно или меньше, чем число входных данных, вследствие характеристик матрицы G.
[215] Фиг. 11 является диаграммой, иллюстрирующей компоновку выходных данных прямого LFNST в соответствии с примером, и показывает блок, в котором выходные данные прямого LFNST скомпонованы в соответствии с формой блока.
[216] Затененная область верхнего-левого блока, показанного на фиг. 11, соответствует области, где расположены выходные данные прямого LFNST, положения, маркированные 0, указывают выборки, заполненные значениями 0, и остальная область представляет области, не измененные прямым LFNST. В области, не измененной посредством LFNST, выходные данные прямого первичного преобразования остаются неизменными.
[217] Как описано выше, поскольку размерность примененной матрицы преобразования варьируется в соответствии с формой блока, число выходных данных также варьируется. Как показано на фиг. 11, выходные данные прямого LFNST могут не полностью заполнять верхний-левый блок 4×4. В случае фиг. 11(a) и (d), матрица [16×8] и матрица [48×8] применяются к блоку, указанному жирной линией, или частичной области внутри блока, соответственно, и вектор [8×1] генерируется в качестве выхода прямого LFNST. То есть, в соответствии с порядком сканирования, показанным на фиг. 8(b), только 8 выходных данных может быть заполнено, как показано на фиг. 11(a) и (d), и 0 может быть заполнен в остальных 8 положениях. В случае применяемого блока LFNST согласно фиг. 10(d), как показано на фиг. 11(d), два блока 4×4 сверху-справа и снизу-слева от верхнего-левого блока 4×4 также заполнены значениями 0.
[218] Как описано выше, в основном, путем сигнализации индекса LFNST, специфицируется, следует ли применять LFNST, и матрица преобразования, подлежащая применению. Как показано на фиг. 11, когда применяется LFNST, поскольку число выходных данных прямого LFNST может быть равно или меньше, чем число входных данных, возникает область, заполненная нулевыми значениями, следующим образом.
[219] 1) Как показано на фиг. 11(a), выборки из 8-го и последующих положений в порядке сканирования в верхнем-левом блоке 4×4, то есть, выборки от 9-ой до 16-ой.
[220] 2) Как показано на фиг. 11(d) и (e), когда применяется матрица [16×48] или матрица [8×48], два блока 4×4, смежные с верхним-левым блоком 4×4, или второй и третий блоки 4×4 в порядке сканирования.
[221] Поэтому, если ненулевые данные существуют при проверке областей 1) и 2), то ясно, что LFNST не применяется, так что сигнализация соответствующего индекса LFNST может опускаться.
[222] В соответствии с примером, например, в случае LFNST, принятого в стандарте VVC, поскольку сигнализация индекса LFNST выполняется после кодирования остатка, устройство кодирования может знать, имеются ли ненулевые данные (значимые коэффициенты) для всех положений в блоке TU или CU посредством кодирования остатка. Соответственно, устройство кодирования может определять, следует ли выполнять сигнализацию по индексу LFNST, на основе существования ненулевых данных, и устройство декодирования может определять, анализируется ли индекс LFNST. Когда ненулевые данные не существуют в области, указанной выше в 1) и 2), сигнализация индекса LFNST выполняется.
[223] Поскольку усеченный унарный код применяется как способ бинаризации для индекса LFNST, индекс LFNST состоит из вплоть до двух бинов, и 0, 10 и 11 назначаются в качестве двоичных кодов для возможных значений 0, 1 и 2 индекса LFNST, соответственно. В случае LFNST, принятого в настоящее время для VVC, основанное на контексте CABAC кодирование применяется к первому бину (регулярное кодирование), и кодирование с обходом применяется ко второму бину. Общее число контекстов для первого бина равно 2, когда (DCT-2, DCT-2) применяется как пара первичного преобразования для горизонтального и вертикального направлений, и компонент яркости и компонент цветности кодируются по типу дуального дерева, один контекст выделяется, а другой контекст применяется для оставшихся случаев. Кодирование индекса LFNST показано в таблице следующим образом.
[224] [Таблица 4]
[225] Между тем, для принятого LFNST, могут применяться следующие способы упрощения.
[226] (i) В соответствии с примером, число выходных данных для прямого LFNST может быть ограничено до максимум 16.
[227] В случае фиг. 10(c), 4×4 LFNST может применяться к двум областям 4×4, смежным сверху-слева, соответственно, и в этом случае, могут генерироваться максимум 32 LFNST выходных данных. Когда число выходных данных для прямого LFNST ограничено до максимум 16, в случае блоков 4×N/N×4 (N≥16) (TU или CU), 4×4 LFNST применяется только к одной области 4×4 сверху-слева, LFNST может применяться только один раз ко всем блокам на фиг. 10. С помощью этого, реализация кодирования изображения может быть упрощена.
[228] Фиг. 12 показывает, что число выходных данных для прямого LFNST ограничено до максимум 16 в соответствии с примером. Как показано на фиг. 12, когда LFNST применяется к самой верхней-левой области 4×4 в блоке 4×N или блоке N×4, в котором N равно 16 или более, выходными данными прямого LFNST становятся 16 частей.
[229] (ii) В соответствии с примером, обнуление может дополнительно применяться к области, для которой не применяется LFNST. В настоящем документе, обнуление может означать заполнение значений всех положений, принадлежащих конкретной области, значением 0. То есть, обнуление может применяться к области, которая не изменяется вследствие LFNST и сохраняет результат прямого первичного преобразования. Как описано выше, поскольку LFNST делится на 4×4 LFNST и 8×8 LFNST, обнуление может делиться на два типа ((ii)-(A) и (ii)-(B)) следующим образом.
[230] (ii)-(A) Когда применяется 4×4 LFNST, область, к которой 4×4 LFNST не применяется, может быть обнулена. Фиг. 13 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 4×4 LFNST в соответствии с примером.
[231] Как показано на фиг. 13, в отношении блока, к которому применяется 4×4 LFNST, то есть, для всех блоков на фиг. 11(a), (b) и (c), вся область, к которой LFNST не применяется, может быть заполнена нулями.
[232] С другой стороны, фиг. 13(d) показывает, что когда максимальное значение числа выходных данных прямого LFNST ограничено до 16, как показано на фиг. 12, обнуление выполняется на остальных блоках, к которым 4×4 LFNST не применяется.
[233] ii)-(B) Когда применяется 8×8 LFNST, область, к которой 8×8 LFNST не применяется, может быть обнулена. Фиг. 14 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с примером.
[234] Как показано на фиг. 14, в отношении блока, к которому применяется 8×8 LFNST, то есть, для всех блоков на фиг. 11(d) и (e), вся область, к которой LFNST не применяется, может быть заполнена нулями.
[235] iii) Вследствие обнуления, представленного в (ii) выше, область, заполненная нулями, может быть не той же самой, когда LFNST применяется. Соответственно, можно проверить, существуют ли ненулевые данные, в соответствии с обнулением, предложенным в (ii), в более широкой области, чем в случае LFNST согласно фиг. 11.
[236] Например, когда применяется (ii)-(B), после проверки, существуют ли ненулевые данные, где область заполняется нулевыми значениями на фиг. 11(d) и (e) в дополнение к области, заполненной 0 дополнительно на фиг. 14, сигнализация для индекса LFNST может выполняться, только когда ненулевые данные не существуют.
[237] Разумеется, даже если применяется обнуление, предложенное в (ii), можно проверить, существуют ли ненулевые данные, таким же путем, как существующая сигнализация индекса LFNST. То есть, после проверки, существуют ли ненулевые данные в блоке, заполненном нулями на фиг. 11, может применяться сигнализация индекса LFNST. В этом случае, только устройство кодирования выполняет обнуление, а устройство декодирования не предполагает обнуления, то есть, проверяя только, существуют ли ненулевые данные только в области, явно маркированной как 0 на фиг. 11, может выполнять синтаксический анализ в отношении индекса LFNST.
[238] Альтернативно, в соответствии с другим примером, обнуление может выполняться, как показано на фиг. 15. Фиг. 15 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с другим примером.
[239] Как показано на фиг. 13 и 14, обнуление может применяться ко всем областям иным, чем область, к которой применяется LFNST, или обнуление может применяться только к частичной области, как показано на фиг. 15. Обнуление применяется только к областям иным, чем верхняя-левая область 8×8 на фиг. 15, обнуление не может применяться к нижнему-правому блоку 4×4 в пределах верхней-левой области 8×8.
[240] Могут быть получены различные варианты осуществления, в которых применяются комбинации способов упрощения ((i), (ii)-(A), (ii)-(B), (iii)) для LFNST. Разумеется, комбинации вышеописанных способов упрощения не ограничены следующими вариантами осуществления, и любая комбинация может применяться к LFNST.
Вариант осуществления
[241]
[242] - Ограничить число выходных данных для прямого LFNST до максимум 16 → (i)
[243] - Когда применяется 4×4 LFNST, все области, к которым 4×4 LFNST не применяется, обнуляются → (ii)-(A)
[244] - Когда применяется 8×8 LFNST, все области, к которым 8×8 LFNST не применяется, обнуляются → (ii)-(B)
[245] - После проверки, существуют ли ненулевые данные, также существующие области, заполненные нулевыми значениями, и области, заполненные нулями вследствие дополнительных обнулений ((ii)-(A), (ii)-(B)), индекс LFNST сигнализируется, только когда ненулевые данные не существуют → (iii)
[246] В случае варианта осуществления, когда LFNST применяется, область, в которой могут существовать ненулевые выходные данные, ограничена в пределах верхней-левой области 4×4. Более конкретно, в случае фиг. 13(a) и фиг. 14(a), 8-ое положение в порядке сканирования является последним положением, где могут существовать ненулевые данные. В случае фиг. 13(b) и (c) и фиг. 14(b), 16-ое положение в порядке сканирования (т.е., положение верхнего-правого края верхнего-левого блока 4×4) является последним положением, где могут существовать данные иные, чем 0.
[247] Поэтому, когда применяется LFNST, после проверки, существуют ли ненулевые данные в положении, где процесс кодирования остатка не разрешен (в положении за пределами последнего положения), может быть определено, сигнализируется ли индекс LFNST.
[248] В случае способа обнуления, предложенного в (ii), поскольку число данных, в конечном счете, сгенерированных, когда применяются как первичное преобразование, так и LFNST, объем вычислений, требуемых для выполнения всего процесса преобразования, может быть сокращен. То есть, когда применяется LFNST, поскольку обнуление применяется к выходным данным прямого первичного преобразования, существующим в области, в которой не применяется LFNST, нет необходимости генерировать данные для области, которая становится обнуленной во время выполнения прямого первичного преобразования. Соответственно, можно сократить объем вычислений, требуемых для генерации соответствующих данных. Дополнительные результаты способа обнуления, предложенного в (ii), формулируются следующим образом.
[249] Во-первых, как описано выше, объем вычислений требуемых для выполнения всего процесса преобразования, сокращается.
[250] В частности, когда применяется (ii)-(B), объем вычислений для наихудшего случая сокращается, так что процесс преобразования может быть упрощен. Иными словами, в общем, большой объем вычислений требуется для выполнения крупноразмерного первичного преобразования. Путем применения (ii)-(B), число данных, выводимых как результат выполнения прямого LFNST, может быть сокращено до 16 или менее. Кроме того, по мере того как размер всего блока (TU или CU) увеличивается, эффект сокращения величины операции преобразования дополнительно увеличивается.
[251] Во-вторых, объем вычислений, требуемых для всего процесса преобразования, может быть сокращен, тем самым снижая энергопотребление, требуемое для выполнения преобразования.
[252] В-третьих, снижается время ожидания, связанное с процессом преобразования.
[253] Вторичное преобразования, такое как LFNST, добавляет объем вычислений к существующему первичному преобразованию, тем самым увеличивая общее время задержки, связанное с выполнением преобразования. В частности, в случае интра-предсказания, поскольку восстановленные данные соседних блоков используются в процессе предсказания, во время кодирования, увеличение времени ожидания вследствие вторичного преобразования приводит к увеличению времени ожидания до восстановления. Это может привести к увеличению общего времени ожидания кодирования с интра-предсказанием.
[254] Однако, если применяется обнуление, предложенное в (ii), время задержки выполнения первичного преобразования может быть заметно сокращено, когда применяется LFNST, время задержки для всего преобразования сохраняется или сокращается, так что устройство кодирования может быть реализовано проще.
[255] Между тем, в обычном интра-предсказании, целевой блок кодирования рассматривается как одна единица кодирования, и кодирование выполняется без ее разбиения. Однако кодирование ISP (интра-подразбиений) относится к выполнению кодирования с интра-предсказанием с целевым блоком кодирования, разделенным в горизонтальном направлении или вертикальном направлении. В этом случае, восстановленный блок может генерироваться путем выполнения кодирования/декодирования в единицах разделенных блоков, и восстановленный блок может использоваться как опорный блок следующего разделенного блока. В соответствии с примером, в кодировании ISP, один блок кодирования может разбиваться на два или четыре подблока и кодироваться, и в ISP, интра-предсказание выполняется на одном подблоке со ссылкой на восстановленное значение пиксела подблока, расположенного рядом с его левой или верхней стороной. Далее, термин "кодирование" может использоваться как понятие, включающее в себя как кодирование, выполняемое устройством кодирования, так и декодирование, выполняемое устройством декодирования.
[256] Таблица 5 показывает пример подблоков, разделенных в соответствии с размерами блока, когда применяется ISP, и под-разбиения, разделенные в соответствии с ISP, могут упоминаться как блоки преобразования (TU).
[257]
[Таблица 5]
Размер блока (CU)
Число разбиений
4×4
Не доступно
4×8, 8×4
2
Все другие случаи
4
[258] ISP разбивает блок, предсказанный как интра-предсказание яркости, на два или четыре подразбиения в вертикальном направлении или горизонтальном направлении в соответствии с размером блока. Например, минимальный размер блока, к которому может применяться ISP, равен 4×8 или 8×4. Если размер блока больше, чем 4×8 или 8×4, блок разбивается на четыре подразбиения.
[259] Фиг. 16 и 17 показывают пример подблока, на который разбивается один блок кодирования, и более конкретно, фиг. 16 является примером разбиения для случая, в котором блок кодирования (ширина (W) × высота (H)) является блоком 4×8 или блоком 8×4, и фиг. 17 показывает пример разбиения для случая, в котором блок кодирования не является ни блоком 4×8, ни блоком 8×4, ни блоком 4×4.
[260] Когда применяется ISP, подблоки последовательно кодируются в соответствии с типом разбиения, таким как по горизонтали или по вертикали, слева направо, или сверху вниз, и кодирование для следующего подблока может выполняться после выполнения вплоть до процесса восстановления через обратное преобразование и интра-предсказание для одного подблока. Для самого левого или самого верхнего подблока, как в обычном способе интра-предсказания, ссылаются на восстановленный пиксел блока кодирования, который уже был кодирован. Дополнительно, если предыдущий подблок не является смежным с каждой стороной внутреннего подблока, который следует за ним, чтобы вывести опорные пикселы, смежные с соответствующей стороной, как в обычном способе интра-предсказания, ссылаются на восстановленный пиксел уже кодированного смежного блока кодирования.
[261] В режиме кодирования ISP, все подблоки могут кодироваться с помощью того же самого режима интра-предсказания, и может сигнализироваться флаг, указывающий, следует ли или нет использовать кодирование ISP, и флаг, указывающий, в каком направлении (горизонтальном или вертикальном) должно выполняться разбиение. Как на фиг. 16 и 17, число подблоков может настраиваться на 2 или 4 в зависимости от формы блока, и когда размер (ширина × высота) одного подблока меньше, чем 16, разбиение не может быть разрешено для соответствующих подблоков, или применение самого кодирования ISP может быть ограничено.
[262] Между тем, в случае режима предсказания ISP, одна единица кодирования разбивается на два или четыре блока разбиения, то есть подблока, и предсказывается, и тот же самый режим интра-предсказания применяется к разделенным таким образом двум или четырем блокам разбиения.
[263] Как описано выше, как горизонтальное направление (если M×N единица кодирования, имеющая горизонтальную длину и вертикальную длину M и N, соответственно, делится в горизонтальном направлении, она делится на блоки M×(N/2) при делении на два и на блоки M×(N/4) при делении на четыре), так и вертикальное направление (если M×N единица кодирования делится в вертикальном направлении, она делится на блоки (M/2)×N при делении на два и делится на блоки (M/4)×N при делении на четыре) возможны в качестве направлений разбиения. При разбиении в горизонтальном направлении, блоки разбиения кодируются в порядке сверху вниз, а при разбиении в вертикальном направлении, блоки разбиения кодируются в порядке слева направо. Текущий кодируемый блок разбиения может предсказываться со ссылкой на значения восстановленных пикселов верхнего (левого) блока разбиения в случае разбиения в горизонтальном (вертикальном) направлении.
[264] Преобразование может применяться к остаточному сигналу, генерируемому способом предсказания ISP в единицах блоков разбиения. Технология MTS (выбор множественного преобразования), основанная на комбинации DST-7/DCT-8, а также существующего DCT-2, может применяться к первичному преобразованию (основному преобразованию или первичному преобразованию) на основе прямого направления, и LFNST (низкочастотное неразделимое преобразование) может применяться к коэффициенту преобразования, генерируемому в соответствии с первичным преобразованием, чтобы генерировать окончательно модифицированный коэффициент преобразования.
[265] То есть, LFNST может также применяться к блокам разбиения, разделенным путем применения режима преобразования ISP, и тот же самый режим интра-предсказания применяется к разделенным блокам преобразования, как описано выше. Соответственно, при выборе набора LFNST, выведенного на основе режима интра-предсказания, выведенный набор LFNST может применяться ко всем блокам разбиения. То есть, один и тот же режим интра-предсказания применяется ко всем блокам разбиения, и при этом тот же самый набор LFNST может применяться ко всем блокам разбиения.
[266] Между тем, в соответствии с примером, LFNST может применяться только к блокам преобразования, имеющим горизонтальную и вертикальную длину 4 или более. Поэтому, когда горизонтальная или вертикальная длина блока разбиения, разделенного в соответствии со способом предсказания ISP, меньше, чем 4, LFNST не применяется, и индекс LFNST не сигнализируется. Соответственно, когда LFNST применяется к каждому блоку разбиения, соответствующий блок разбиения может рассматриваться как один блок преобразования. Разумеется, когда способ предсказания ISP не применяется, LFNST может применяться к блоку кодирования.
[267] Применение LFNST к каждому блоку разбиения детально описывается следующим образом.
[268] В соответствии с примером, после применения прямого LFNST к индивидуальному блоку разбиения, и после того как останется только 16 коэффициентов (8 или 16) в верхней-левой области 4×4 в соответствии с порядком сканирования коэффициентов преобразования, может применяться обнуление заполнения всех оставшихся положений и областей значением 0.
[269] Альтернативно, в соответствии с примером, когда длина одной стороны блока разбиения равна 4, LFNST применяется только к верхней-левой области 4×4, и когда длина всех сторон блока разбиения, то есть, ширина и высота, равны 8 или более, LFNST может применяться к оставшимся 48 коэффициентам за исключением нижней-правой области 4×4 в верхней-левой области 8×8.
[270] Альтернативно, в соответствии с примером, чтобы отрегулировать вычислительную сложность наихудшего случая до 8 умножений на выборку, когда каждый блок разбиения равен 4×4 или 8×8, только 8 коэффициентов преобразования могут быть выведены после применения прямого LFNST. То есть, если блок разбиения равен 4×4, матрица 8×16 может применяться как матрица преобразования, и если блок разбиения равен 8×8, матрица 8×48 может применяться как матрица преобразования.
[271] Между тем, в современном стандарте VVC, сигнализация индекса LFNST выполняется в единицах кодирования. Соответственно, когда используется режим предсказания ISP и LFNST применяется ко всем блокам разбиения, то одинаковое значение индекса LFNST может применяться к соответствующим блокам разбиения. То есть, когда значение индекса LFNST передается на уровне единицы кодирования, соответствующий индекс LFNST может применяться ко всем блокам разбиения в единице кодирования. Как описано выше, значение индекса LFNST может иметь значения 0, 1 и 2; 0 указывает случай, в котором LFNST не применяется, 1 и 2 указывают две матрицы преобразования, присутствующие в одном наборе LFNST, когда LFNST применяется.
[272] Как описано выше, набор LFNST определяется режимом интра-предсказания, и поскольку все блоки разбиения в единице кодирования предсказываются в том же самом режиме интра-предсказания в случае режима предсказания ISP, блоки разбиения могут ссылаться на один и тот же набор LFNST.
[273] В качестве другого примера, сигнализация индекса LFNST все еще выполняется в единицах кодирования, но в случае режима предсказания ISP, без определения, следует ли или нет применять LFNST равномерно ко всем блокам разбиения, следует ли применять значение индекса LFNST, сигнализируемое на уровне единицы кодирования, к каждому блоку разбиения или не применять LFNST, может определяться посредством отдельного условия. Здесь, отдельное условие может сигнализироваться в форме флага для каждого блока разбиения посредством битового потока, и когда значение флага равно 1, может применяться значение индекса LFNST, сигнализируемое на уровне единицы кодирования, а когда значение флага равно 0, LFNST может не применяться.
[274] Между тем, в единице кодирования, к которой применяется режим ISP, пример применения LFNST, когда длина одной стороны блока разбиения меньше, чем 4, обсуждается следующим образом.
[275] Сначала, когда размер блока разбиения равен N×2 (2×N), LFNST может применяться к верхней-левой области M×2 (2×M) (здесь, M≤N). Например, когда M=8, соответствующая верхняя-левая область становится 8×2 (2×8), и таким образом, область, в которой существуют 16 остаточных сигналов, может быть входом в прямое LFNST, и может применяться матрица прямого преобразования R×16 (R≤16).
[276] Здесь, матрица прямого LFNST может не являться матрицей, включенной в текущий стандарт VVC, а отдельной дополнительной матрицей. Кроме того, для комплексного регулирования наихудшего случая, матрица 8×16, полученная дискретизацией только верхних 8 векторов-строк матрицы 16×16, может использоваться для преобразования. Способ регулирования сложности будет подробно описан далее.
[277] Во-вторых, когда размер блока разбиения равен N×1 (1×N), LFNST может применяться к верхней-левой области M×1 (1×M) (здесь, M≤N). Например, когда M=16, соответствующая верхняя-левая область становится 16×1 (1×16), и таким образом, область, в которой существуют 16 остаточных сигналов, может быть входом прямого LFNST, и может применяться матрица R×16 (R≤16) прямого преобразования.
[278] Здесь, матрица соответствующего прямого LFNST может быть не матрицей, включенной в текущий стандарт VVC, а отдельной дополнительной матрицей. Кроме того, для регулирования сложности наихудшего случая, матрица 8×16, полученная дискретизацией только верхних 8 векторов-строк матрицы 16×16 может использоваться для преобразования. Способ регулирования сложности будет описан более детально далее.
[279] Первый вариант осуществления и второй вариант осуществления могут применяться одновременно, или может применяться любой один из двух вариантов осуществления. В частности, в случае второго варианта осуществления, поскольку одномерное преобразование рассматривается в LFNST, было обнаружено с помощью экспериментов, что улучшение характеристик сжатия, которое могло быть получено из существующего LFNST, не было относительно большим по сравнению с затратами на сигнализацию индекса LFNST. Однако в случае первого варианта осуществления наблюдалось улучшение характеристик сжатия, подобное получаемому из обычного LFNST, то есть, в случае ISP, экспериментами можно верифицировать, что применение LFNST для 2×N и N×2 вносит вклад в реальную характеристику сжатия.
[280] В LFNST в текущем VVC, применяется симметрия между режимами интер-предсказания. Тот же самый набор LFNST применяется к двум направленным режимам, центрированным по режиму 34 (предсказание в нижнем-правом 45-градусном диагональном направлении), и, например, тот же самый набор LFNST применяется к режиму 18 (режим предсказания горизонтального направления) и режиму 50 (режим предсказания вертикального направления). Однако, в режимах 35-66, когда применяется прямое LFNST, входные данные транспонируются, и затем применяется LFNST.
[281] Между тем, VVC поддерживает режим широкоугольного интра-предсказания (WAIP), и набор LFNST выводится на основе модифицированного режима интра-предсказания с учетом режима WAIP. Для режимов, расширенных посредством WAIP, набор LFNST также определяется с использованием симметрии, как в общем направленном режиме интра-предсказания. Например, режим -1 является симметричным режиму 67, так что применяется тот же самый набор LFNST, и режим -14 является симметричным режиму 80, так что применяется тот же самый набор LFNST. Режимы 67-80 применяют преобразование LFNST после транспонирования входных данных перед применением прямого LFNST.
[282] В случае LFNST, применяемого к верхнему-левому блоку M×2 (M×1), вышеописанная симметрия для LFNST не может быть применена, поскольку блок, к которому применяется LFNST, является неквадратным. Поэтому, вместо применения симметрии на основе режима интра-предсказания, как в LFNST в Таблице 2, может применяться симметрия между блоком M×2 (M×1) и блоком 2×M (1×M).
[283] Фиг. 18 является диаграммой, иллюстрирующей симметрию между блоком M×2 (M×1) и блоком 2×M (1×M) в соответствии с примером.
[284] Как показано на фиг. 16, режим 2 в блоке M×2 (M×1) может рассматриваться как симметричный режиму 66 в блоке 2×M (1×M), и, таким образом, тот же самый набор LFNST может применяться к блоку 2×M (1×M) и блоку M×2 (M×1).
[285] При этом, чтобы применять набор LFNST, который был применен к блоку M×2 (M×1), к блоку 2×M (1×M), набор LFNST выбирается на основе режима 2 вместо режима 66. То есть, перед применением прямого LFNST, можно применять LFNST после транспонирования входных данных блока 2×M (1×M).
[286] Фиг. 19 является диаграммой, иллюстрирующей пример транспонирования блока 2×M в соответствии с примером.
[287] Фиг. 19A является диаграммой, иллюстрирующей, что LFNST может применяться путем считывания входных данных в порядке сначала по столбцу относительно блока 2×M, и фиг. 19B является диаграммой, иллюстрирующей, что LFNST применяется путем считывания входных данных в порядке сначала по строке относительно блока M×2 (M×1). Способ применения LFNST к верхнему-левому блоку M×2 (M×1) или блоку 2×M (M×1) обобщается следующим образом.
[288] 1. Сначала, как показано на фиг. 19A и 19B, входные данные упорядочены, чтобы формировать входной вектор прямого LFNST. Например, со ссылкой на фиг. 18, для блока M×2, предсказанного в режиме 2, следуют порядку согласно фиг. 19(b), и для блока 2×M, предсказанного в режиме 66, после упорядочения входных данных в соответствии с порядком, показанным на фиг. 19(a), может применяться набор LFNST для режима 2.
[289] 2. Для блока M×2 (M×1), набор LFNST определяется на основе модифицированного режима интра-предсказания с учетом WAIP. Как описано выше, предопределенное отношение отображения установлено между режимом интра-предсказания и набором LFNST и может быть представлено таблицей отображения, как показано в Таблице 2.
[290] Для блока 2×M (1×M), после получения симметричного режима относительно режима предсказания (режима 34 в случае стандарта VVC) в диагональном направлении 45 градусов вправо вниз из режима интра-предсказания, модифицированного с учетом WAIP, набор LFNST определяется на основе соответствующего симметричного режима и таблицы отображения. Симметричный режим (y) относительно режима 34 может выводиться с помощью следующего уравнения. Таблица отображения более подробно описана ниже.
[291] [Уравнение 11]
если 2≤x≤66, y=68-x,
иначе (x≤-1 or x≥67), y=66-x
[292] 3. Когда применяется прямое LFNST, коэффициент преобразования может выводиться путем умножения входных данных, подготовленных с помощью процесса 1, на ядро LFNST. Ядро LFNST может выбираться из набора LFNST, определенного в процессе 2, и предопределенного индекса LFNST.
[293] Например, если M=8 и матрица 16×16 применяется как ядро LFNST, то 16 коэффициентов преобразования могут генерироваться путем умножения матрицы на 16 входных данных. Генерируемые коэффициенты преобразования могут быть упорядочены в верхней-левой области 8×2 или 2×8 в соответствии с порядком сканирования, используемым в стандарте VVC.
[294] Фиг. 20 показывает порядок сканирования для области 8×2 или 2×8 в соответствии с примером.
[295] Все области иные, чем верхняя-левая область 8×2 или 2×8, могут заполняться нулевыми значениями (обнуляться), или существующий коэффициент преобразования, к которому было применено первичное преобразование, может поддерживаться как он есть. Предопределенный индекс LFNST может быть одним из значений (0, 1, 2) индекса LFNST, проверяемого при расчете стоимости по критерию RD при изменении значения индекса LFNST в процессе кодирования.
[296] Для конфигурации, которая приводит к вычислительной сложности наихудшего случая ниже определенного уровня (например, 8 умножений на выборку), например, после генерации только восьми коэффициентов преобразования путем умножения матрицы 8×16, полученной взятием только верхних восьми строк матрицы 16×16, восемь коэффициентов преобразования могут быть упорядочены в соответствии с порядком сканирования, как показано на фиг. 20, и обнуление может применяться к оставшимся областям коэффициентов. Регулирование сложности для наихудшего случая будет описано далее.
[297] 4. При применении обратного LFNST, предопределенное число (например, 16) коэффициентов преобразования устанавливается как входной вектор, и после выбора ядра LFNST (например, матрицы 16×16), выведенного из набора LFNST, полученного из процесса 2 и индекса LFNST, полученного посредством синтаксического анализа, выходной вектор может быть выведен путем умножения ядра LFNST на входной вектор.
[298] В случае блока M×2 (M×1), выходной вектор может быть упорядочен в соответствии с порядком сначала по строке, как показано на фиг. 19B, а в случае блока 2×M (1×M), выходной вектор может быть упорядочен в соответствии с порядком сначала по столбцу, как показано на фиг. 19A.
[299] Для оставшейся области за исключением области, где соответствующий выходной вектор расположен в верхней-левой области M×2 (M×1) или 2×M (M×2), и области иной, чем верхняя-левая область M×2 (M×1) или 2×M (M×2) в блоке разбиения, все из них могут быть сконфигурированы, чтобы заполняться нулевыми значениями (обнуляться) или сохранять коэффициент преобразования, восстановленный с помощью процессов кодирования остатка и деквантования, как он есть.
[300] Как в пункте 3, при формировании входного вектора, входные данные могут упорядочиваться в соответствии с порядком сканирования согласно фиг. 20, и входной вектор может формироваться с сокращенным количеством входных данных (например, 8 вместо 16), чтобы регулировать вычислительную сложность для наихудшего случая до определенного уровня или менее.
[301] Например, при использовании 8 входных данных и когда M=8, только левая матрица 16×8 может браться из соответствующей матрицы 16×16, и умножаться, тем самым получая 16 выходных данных. Регулирование сложности для наихудшего случая будет описано далее.
[302] В то время как вышеописанный вариант осуществления представляет случай, в котором симметрия применяется между блоком M×2 (M×1) и блоком 2×M (1×M) при применении LFNST, различные наборы LFNST могут применяться к двум формам блоков, соответственно, в соответствии с другим примером.
[303] Далее будут описаны различные примеры конфигурации набора LFNST для режима ISP и способ отображения с использованием режима интра-предсказания.
[304] В случае режима ISP, конфигурация набора LFNST может отличаться от конфигурации существующего набора LFNST. Иными словами, могут применяться ядра, отличающиеся от существующих ядер LFNST, и может применяться таблица отображения, отличающаяся от таблицы отображения между индексом режима интра-предсказания, применяемым к современному стандарту VVC, и набором LFNST. Таблица отображения, применяемая к текущему стандарту VVC, может быть показана в Таблице 2.
[305] В Таблице 2, значение preModeIntra означает значение режима интра-предсказания, измененное с учетом WAIP, и значение lfnstTrSetIdx является значением индекса, указывающим конкретный набор LFNST. Каждый набор LFNST конфигурируется с двумя ядрами LFNST.
[306] Когда применяется режим предсказания ISP, и когда горизонтальная длина и вертикальная длина каждого блока разбиения равны или больше, чем 4, могут применяться те же самые ядра, что и ядра LFNST, применяемые в текущем стандарте VVC, и таблица отображения может также применяться, как она есть. Разумеется, также возможно применять отличающуюся таблицу отображения и ядра LFNST, отличающиеся от текущего стандарта VVC.
[307] Когда применяется режим предсказания ISP и когда горизонтальная длина или вертикальная длина каждого блока разбиения меньше, чем 4, могут применяться таблица и ядра LFNST, отличающиеся от текущего стандарта VVC. Далее, Таблицы 7-9 показывают таблицы отображения между значением режима интра-предсказания (значением режима интра-предсказания, измененным с учетом WAIP) и набором LFNST, которые могут применяться к блоку M×2 (M×1) или блоку 2×M (1×M).
[308] [Таблица 6]
[309] [Таблица 7]
[310] [Таблица 8]
[311] Первая таблица отображения Таблицы 6 включает в себя семь наборов LFNST, и таблица отображения Таблицы 7 включает в себя четыре набора LFNST, и таблица отображения Таблицы 8 включает в себя два набора LFNST. В качестве другого примера, при конфигурировании с одним набором LFNST, значение lfnstTrSetIdx может фиксироваться на 0 относительно значения preModeIntra.
[312] Далее будет описан способ для поддержания вычислительной сложности для наихудшего случая, когда LFNST применяется к режиму ISP.
[313] В случае режима ISP, чтобы поддерживать число умножений на выборку (или на коэффициент, или на положение) на определенном значении или менее, когда применяется LFNST, применение LFNST может быть ограничено. В зависимости от размера блока разбиения, число умножений на выборку (или на коэффициент или на положение) может поддерживаться на 8 или менее путем применения LFNST следующим образом.
[314] 1. Когда горизонтальная длина и вертикальная длина блока разбиения равны или больше, чем 4, может применяться тот же самый способ, что и способ регулирования сложности вычислений для наихудшего случая для LFNST в текущем стандарте VVC.
[315] То есть, когда блок разбиения представляет собой блок 4×4, вместо матрицы 16×16, в прямом направлении, может применяться матрица 8×16, полученная путем дискретизации верхних 8 строк из матрицы 16×16, и в обратном направлении, может применяться матрица 16×8, полученная путем дискретизации левых 8 столбцов из матрицы 16×16. Дополнительно, когда блок разбиения представляет собой блок 8×8, в прямом направлении, вместо матрицы 16×48, может применяться матрица 8×48, полученная дискретизацией верхних 8 строк из матрицы 16×48, и в обратном направлении, вместо матрицы 48×16, может применяться матрица 48×8, полученная дискретизацией левых 8 столбцов из матрицы 48×16.
[316] В случае блока 4×N или N×4 (N>4), когда выполняется прямое преобразование, 16 коэффициентов, генерируемых после применения матрицы 16×16 только к верхнему-левому блоку 4×4, упорядочиваются в верхней-левой области 4×4, и другие области могут быть заполнены значениями 0. Дополнительно, при выполнении обратного преобразования, 16 коэффициентов, расположенных в верхнем-левом блоке 4×4, могут быть упорядочены в порядке сканирования, чтобы конфигурировать входной вектор, и затем 16 выходных данных могут генерироваться путем умножения на матрицу 16×16. Сгенерированные выходные данные могут быть упорядочены в верхней-левой области 4×4, и остальные области за исключением верхней-левой области 4×4 могут быть заполнены нулями.
[317] В случае блока 8×N или N×8 (N>8), когда выполняется прямое преобразование, 16 коэффициентов, генерируемых после применения матрицы 16×48 только к области ROI в верхнем-левом блоке 8×8 (остальным областям, исключая нижний-правый блок 4×4 из верхнего-левого блока 8×8), могут быть упорядочены в верхней-левой области 4×4, а другие области могут быть заполнены значениями 0. Дополнительно, при выполнении обратного преобразования, 16 коэффициентов, расположенных в верхнем-левом блоке 4×4, могут быть упорядочены в порядке сканирования, чтобы сконфигурировать входной вектор, и затем 48 выходных данных могут генерироваться путем умножения на матрицу 48×16. Сгенерированные выходные данные могут быть заполнены в области ROI, и другие области могут быть заполнены значениями 0.
[318] 2. Когда размер блока разбиения равен N×2 или 2×N и LFNST применяется к верхней-левой области M×2 или 2×M (M≤N), может применяться матрица, к которой применялась дискретизация в соответствии со значением N.
[319] Когда M=8, для блока разбиения N=8, то есть, блока 8×2 или 2×8, в случае прямого преобразования, вместо матрицы 16×16, может применяться матрица 8×16, полученная дискретизацией верхних 8 строк из матрицы 16×16, а в случае обратного преобразования, вместо матрицы 16×16, может применяться матрица 16×8, полученная дискретизацией левых 8 столбцов из матрицы 16×16.
[320] Когда N больше, чем 8, в случае прямого преобразования, 16 выходных данных, сгенерированных после применения матрицы 16×16 к верхнему-левому блоку 8×2 или 2×8, могут быть упорядочены в верхнем-левом блоке 8×2 или 2×8, и остальные области могут быть заполнены значениями 0. При выполнении обратного преобразования, 16 коэффициентов, расположенных в верхнем-левом блоке 8×2 или 2×8, могут быть упорядочены в порядке сканирования, чтобы конфигурировать входной вектор, и затем 16 выходных данных могут генерироваться путем умножения на матрицу 16×16. Сгенерированные выходные данные могут быть упорядочены в верхнем-левом блоке 8×2 или 2×8, и все остальные области могут быть заполнены значениями 0.
[321] 3. Когда размер блока разбиения равен N×1 или 1×N и LFNST применяется к верхней-левой области M×1 или 1×M (M≤N), может применяться матрица, к которой была применена дискретизация в соответствии со значением N.
[322] Когда M=16, для блока разбиения N=16, то есть, блока 16×1 или 1×16, в случае прямого преобразования, вместо матрицы 16×16, может применяться матрица 8×16, полученная дискретизацией верхних 8 строк из матрицы 16×16, а в случае обратного преобразования, вместо матрицы 16×16, может применяться матрица 16×8, полученная дискретизацией левых 8 столбцов из матрицы 16×16.
[323] Когда N больше, чем 16, в случае прямого преобразования, 16 выходных данных, сгенерированных после применения матрицы 16×16 к верхнему-левому блоку 16×1 или 1×16, могут быть упорядочены в верхнем-левом блоке 16×1 или 1×16, и остальные области могут быть заполнены значениями 0. При выполнении обратного преобразования, 16 коэффициентов, расположенных в верхнем-левом блоке 16×1 или 1×16, могут быть упорядочены в порядке сканирования, чтобы конфигурировать входной вектор, и затем 16 выходных данных могут генерироваться путем умножения на матрицу 16×16. Сгенерированные выходные данные могут быть упорядочены в верхнем-левом блоке 16×1 или 1×16, и все остальные области могут быть заполнены значениями 0.
[324] В качестве другого примера, чтобы поддерживать число умножений на выборку (или на коэффициент или на положение) на некотором значении или менее, число умножений на выборку (или на коэффициент или на положение), основанное на размере единицы кодирования ISP, а не размере блока разбиения ISP, может поддерживаться на 8 или менее. Если имеется только один блок среди блоков разбиения ISP, который удовлетворяет условию, при котором применяется LFNST, вычисление сложности для наихудшего случая LFNST может применяться на основе соответствующего размера единицы кодирования, а не размера блока разбиения. Например, когда блок кодирования яркости для определенной единицы кодирования разбивается на 4 блока разбиения размером 4×4 и кодируется посредством ISP, и когда ненулевой коэффициент преобразования существует для двух блоков разбиения среди них, другие два блока разбиения могут быть соответственно установлены, чтобы генерировать 16 коэффициентов преобразования вместо 8 (на основе кодера).
[325] Далее будет описан способ сигнализации индекса LFNST в случае режима ISP.
[326] Как описано выше, индекс LFNST может иметь значения 0, 1 и 2, где 0 указывает, что LFNST не применяется, и 1 и 2 соответственно указывают любую одну из двух матриц ядра LFNST, включенных в выбранный набор LFNST. LFNST применяется на основе матрицы ядра LFNST, выбранной посредством индекса LFNST. Способ передачи индекса LFNST в текущем стандарте VVC будет описан следующим образом.
[327] 1. Индекс LFNST может передаваться однократно для каждой единицы кодирования (CU), и в случае дуального дерева индивидуальные индексы LFNST могут сигнализироваться для блока яркости и блока цветности, соответственно.
[328] 2. Когда индекс LFNST не сигнализируется, значение индекса LFNST подразумевается равным значению по умолчанию 0. Случай, когда значение индекса LFNST подразумевается равным 0, является следующим.
[329] A. В случае режима, в котором не применяется преобразование (например, пропуск преобразования, BDPCM, кодирование без потерь и т.д.)
[330] B. Когда первичным преобразованием является не DCT-2 (DST7 или DCT8), то есть, когда преобразованием в горизонтальном направлении или преобразованием в вертикальном направлении является не DCT-2
[331] C. Когда горизонтальная длина или вертикальная длина для блока яркости единицы кодирования превышает размер преобразуемого максимального преобразования яркости, например, когда размер преобразуемого максимального преобразования яркости равен 64, и когда размер для блока яркости блока кодирования равен 128×16, LFNST не может применяться.
[332] В случае дуального дерева, определяется, превышается ли или нет размер максимального преобразования яркости для каждой из единицы кодирования для компонента яркости и единицы кодирования для компонента цветности. То есть, для блока яркости проверяется, превышается ли размер максимального преобразуемого преобразования яркости, и для блока цветности проверяется, превышаются ли горизонтальная/вертикальная длина соответствующего блока яркости для цветового формата и размер преобразуемого максимального преобразования яркости. Например, когда цветовым форматом является 4:2:0, горизонтальная/вертикальная длина соответствующего блока яркости равна двукратной длине соответствующего блока цветности, и размер преобразования соответствующего блока яркости равен двукратному размеру соответствующего блока цветности. В качестве другого примера, когда цветовым форматом является 4:4:4, горизонтальная/вертикальная длина и размер преобразования соответствующего блока яркости являются теми же самыми, что и размеры соответствующего блока цветности.
[333] Преобразование длиной 64 или преобразование длиной 32 могут означать преобразование, применимое к ширине или высоте, имеющей длину 64 или 32, соответственно, и "размер преобразования" может означать 64 или 32 в качестве соответствующей длины.
[334] В случае одиночного дерева, после проверки того, превышает ли или нет горизонтальная длина или вертикальная длина блока яркости максимальный размер преобразуемого блока преобразования яркости, если он превышает, то сигнализация индекса LFNST может быть опущена.
[335] D. Индекс LFNST может передаваться, только когда горизонтальная длина и вертикальная длина единицы кодирования равны или больше, чем 4.
[336] В случае дуального дерева, индекс LFNST может сигнализироваться, только когда как горизонтальная, так и вертикальная длины для соответствующего компонента (т.е., компонента яркости или цветности) равны или больше, чем 4.
[337] В случае одиночного дерева, индекс LFNST может сигнализироваться, когда как горизонтальная, так и вертикальная длины для компонента яркости равны или больше, чем 4.
[338] E. Если положение последнего ненулевого коэффициента не является DC положением (верхним-левым положением блока), и если положение последнего ненулевого коэффициента не является DC положением, в случае блока яркости дерева дуального типа, то индекс LFNST передается. В случае блока цветности дерева дуального типа, если любое одно из положения последнего ненулевого коэффициента для Cb и положения последнего ненулевого коэффициента для Cr не является DC положением, соответствующий индекс LNFST передается.
[339] В случае дерева одиночного типа, если положение последнего ненулевого коэффициента любого одного из компонента яркости, компонента Cb и компонента Cr не является DC положением, индекс LFNST передается.
[340] Здесь, если значение флага кодируемого блока (CBF), указывающее, существует ли или нет коэффициент преобразования для одного блока преобразования, равно 0, положение последнего ненулевого коэффициента для соответствующего блока преобразования не проверяется, чтобы определить, сигнализируется ли или нет LFNST. То есть, когда значение соответствующего CBF равно 0, поскольку преобразование не применяется к соответствующему блоку, положение последнего ненулевого коэффициента может не учитываться при проверке условия для сигнализации индекса LFNST.
[341] Например, 1) в случае дерева дуального типа и компонента яркости, если значение соответствующего CBF равно 0, индекс LFNST не сигнализируется, 2) в случае дерева дуального типа и компонента цветности, если значение CBF для Cb равно 0 и значение CBF для Cr равно 1, то проверяется только положение последнего ненулевого коэффициента для Cr, и передается соответствующий индекс LFNST, 3) в случае дерева одиночного типа, положение последнего ненулевого коэффициента проверяется только для компонентов, имеющих значение CBF, равное 1 для каждого из яркости, Cb и Cr.
[342] F. Когда подтверждается, что коэффициент преобразования существует в положении ином, чем положение, где коэффициент преобразования LFNST может существовать, сигнализация индекса LFNST может опускаться. В случае блока преобразования 4×4 и блока преобразования 8×8, коэффициенты преобразования LFNST могут существовать в восьми положениях от DC положения в соответствии с порядком сканирования коэффициентов преобразования в стандарте VVC, и остальные положения заполняются нулями. Дополнительно, когда блок преобразования 4×4 и блок преобразования 8×8 отсутствуют, коэффициенты преобразования LFNST могут существовать в шестнадцати положениях от DC положения в соответствии с порядком сканирования коэффициентов преобразования в стандарте VVC, и остальные положения заполняются нулями.
[343] Соответственно, если ненулевые коэффициенты преобразования существуют в области, которая должна заполняться нулевым значением после продвижения кодирования остатка, сигнализация индекса LFNST может опускаться.
[344] Между тем, режим ISP может также применяться только к блоку яркости или может применяться как к блоку яркости, так и к блоку цветности. Как описано выше, когда предсказание ISP применяется, соответствующая единица кодирования может разделяться на два или четыре блока разбиения и предсказываться, и преобразование может применяться к каждому из блоков разбиения. Поэтому, при определении условия для сигнализации индекса LFNST в единицах кодирования, необходимо принимать во внимание тот факт, что LFNST может применяться к соответствующим блокам разбиения. Кроме того, когда режим предсказания ISP применяется только к конкретному компоненту (например, блоку яркости), индекс LFNST должен сигнализироваться с учетом того факта, что только этот компонент делится на блоки разбиения. Способы сигнализации LFNST, доступные в режиме ISP, обобщаются следующим образом.
[345] 1. Индекс LFNST может передаваться однократно для каждой единицы кодирования (CU), и в случае дуального дерева, отдельные индексы LFNST могут сигнализироваться для блока яркости и блока цветности, соответственно.
[346] 2. Когда индекс LFNST не сигнализируется, значение индекса LFNST подразумевается равным значению по умолчанию 0. Случай, когда значение индекса LFNST подразумевается равным 0, является следующим.
[347] A. В случае режима, в котором не применяется преобразование (например, пропуск преобразования, BDPCM, кодирование без потерь и т.д.)
[348] B. Когда горизонтальная длина или вертикальная длина для блока яркости единицы кодирования превышает размер преобразуемого максимального преобразования яркости, например, когда размер преобразуемого максимального преобразования яркости равен 64, и когда размер для блока яркости блока кодирования равен 128×16, LFNST не может применяться.
[349] Следует ли или нет сигнализировать индекс LFNST, может определяться на основе размера блока разбиения вместо единицы кодирования. То есть, если горизонтальная или вертикальная длина блока разбиения для соответствующего блока яркости превышает размер преобразуемого максимального преобразования яркости, сигнализация индекса LFNST может опускаться, и значение индекса LFNST может подразумеваться равным 0.
[350] В случае дуального дерева, определяется, превышается ли или нет размер максимального преобразования яркости для каждого из единицы кодирования или блока разбиения для компонента яркости и единицы кодирования или блока разбиения для компонента цветности. То есть, если горизонтальная и вертикальная длины единицы кодирования или блока разбиения для яркости сравниваются с максимальным размером преобразования яркости, соответственно, и по меньшей мере одна из них больше, чем максимальный размер преобразования яркости, то LFNST не применяется, и в случае единицы кодирования или блока разбиения для цветности, горизонтальная/вертикальная длина соответствующего блока яркости для цветового формата и размер максимального преобразуемого преобразования яркости сравниваются. Например, когда цветовым форматом является 4:2:0, горизонтальная/вертикальная длина соответствующего блока яркости равна двукратной длине соответствующего блока цветности, и размер преобразования соответствующего блока яркости равен двукратному размеру соответствующего блока цветности. В качестве другого примера, когда цветовым форматом является 4:4:4, горизонтальная/вертикальная длина и размер преобразования соответствующего блока яркости являются такими же, как для соответствующего блока цветности.
[351] В случае одиночного дерева, после проверки, превышает ли или нет горизонтальная длина или вертикальная длина для блока яркости (единицы кодирования или блока разбиения) максимальный размер преобразуемого блока преобразования яркости, если она превышает, то сигнализация индекса LFNST может опускаться.
[352] C. Если применяется LFNST, включенное в текущий стандарт VVC, индекс LFNST может передаваться, только когда как горизонтальная длина, так и вертикальная длина блока разбиения равны или больше, чем 4.
[353] Если LFNST применяется для блока 2×M (1×M) или M×2 (M×1) в дополнение к LFNST, включенному в текущий стандарт VVC, индекс LFNST может передаваться, только когда размер блока разбиения равен или больше, чем блок 2×M (1×M) или M×2 (M×1). Здесь, выражение "блок PxQ равен или больше, чем блок R×S" означает, что P≥R и Q≥S.
[354] Таким образом, индекс LFNST может передаваться, только когда блок разбиения равен или больше, чем минимальный размер, к которому применяется LFNST. В случае дуального дерева, индекс LFNST может сигнализироваться, только когда блок разбиения для компонента яркости или цветности равен или больше, чем минимальный размер, к которому применяется LFNST. В случае одиночного дерева, индекс LFNST может сигнализироваться, только когда блок разбиения для компонента яркости равен или больше, чем минимальный размер, к которому применяется LFNST.
[355] В настоящем документе, выражение "блок M×N больше или равен блоку K×L" означает, что M больше или равно K и N больше или равно L. Выражение "блок M×N больше, чем блок K×L" означает, что M больше или равно K и N больше или равно L, и что M больше, чем K, или N больше, чем L. Выражение "блок M×N меньше или равен блоку K×L" означает, что M меньше или равно K и N меньше или равно L, в то время как выражение "блок M×N меньше, чем блок K×L" означает, что M меньше или равно K и N меньше или равно L, и что M меньше, чем K, или N меньше, чем L.
[356] D. Если положение последнего ненулевого коэффициента не является DC положением (верхним-левым положением блока) и если положение последнего ненулевого коэффициента не является DC положением в любом одном из всех блоков разбиения, в случае блока яркости дерева дуального типа, то индекс LFNST передается. В случае дерева дуального типа и блока цветности, если по меньшей мере одно положение последнего ненулевого коэффициента из всех блоков разбиения для Cb (если режим ISP не применяется к компоненту цветности, число блоков разбиения считается равным одному) и положение последнего ненулевого коэффициента всех блоков разбиения для Cr (если режим ISP не применяется к компоненту цветности, число блоков разбиения считается равным одному) не является DC положением, соответствующий индекс LNFST может передаваться.
[357] В случае дерева одиночного типа, если положение последнего ненулевого коэффициента любого одного из всех блоков разбиения для компонента яркости, компонента Cb и компонента Cr не является DC положением, соответствующий индекс LFNST может передаваться.
[358] Здесь, если значение флага кодированного блока (CBF), указывающее, существует ли коэффициент преобразования для каждого блока разбиения, равно 0, положение последнего ненулевого коэффициента для соответствующего блока разбиения не проверяется чтобы определить, сигнализируется ли или нет индекс LFNST. То есть, когда соответствующее значение CBF равно 0, поскольку преобразование не применяется к соответствующему блоку, положение последнего ненулевого коэффициента для соответствующего блока разбиения не учитывается при проверке условия для сигнализации индекса LFNST.
[359] Например, 1) в случае дерева дуального типа и компонента яркости, если соответствующее значение CBF для каждого блока разбиения равно 0, блок разбиения исключается при определении, следует ли или нет сигнализировать индекс LFNST, 2) в случае дерева дуального типа и компонента цветности, если значение CBF для Cb равно 0 и значение CBF для Cr равно 1 для каждого блока разбиения, то только положение последнего ненулевого коэффициента для Cr проверяется, чтобы определить, следует ли или нет сигнализировать индекс LFNST, 3) в случае дерева одиночного типа, можно определить, следует ли или нет сигнализировать индекс LFNST, путем проверки положения последнего ненулевого коэффициента только для блоков, имеющих значение CBF, равное 1, для всех блоков разбиения компонента яркости, компонента Cb и компонента Cr.
[360] В случае режима ISP, информация изображения может также конфигурироваться так, что положение последнего ненулевого коэффициента не проверяется, и вариант осуществления этого является следующим.
[361] i. В случае режима ISP, сигнализация индекса LFNST может быть разрешена без проверки положения последнего ненулевого коэффициента для блока яркости и блока цветности. То есть, даже если положение последнего ненулевого коэффициента для всех блоков разбиения представляет собой DC положение или соответствующее значение CBF равно 0, сигнализация индекса LFNST может быть разрешена.
[362] ii. В случае режима ISP, проверка положения последнего ненулевого коэффициента только для блока яркости может опускаться, и в случае блока цветности, проверка положения последнего ненулевого коэффициента может выполняться вышеописанным образом. Например, в случае дерева дуального типа и блока яркости, сигнализация индекса LFNST разрешается без проверки положения последнего ненулевого коэффициента, и в случае дерева дуального типа и блока цветности, сигнализируется ли или нет соответствующий индекс LFNST, может проверяться путем проверки, существует ли или нет DC положение для положения последнего ненулевого коэффициента, вышеописанным образом.
[363] iii. В случае режима ISP и дерева одиночного типа, может применяться способ i или ii. То есть, в случае режима ISP и когда вариант i применяется к дереву одиночного типа, можно опустить проверку положения последнего ненулевого коэффициента как для блока яркости, так и блока цветности и разрешить сигнализацию индекса LFNST. Альтернативно, при применении варианта ii, для блоков разбиения для компонента яркости, проверка положения последнего ненулевого коэффициента опускается, и для блоков разбиения для компонента цветности (если ISP не применяется для компонента цветности, число блоков разбиения может считаться равным 1), положение последнего ненулевого коэффициента проверяется вышеописанным образом, тем самым определяя, следует ли или нет сигнализировать индекс LFNST.
[364] E. Когда подтверждается, что коэффициент преобразования существует в положении ином, чем положение, где коэффициент преобразования LFNST может существовать даже для одного блока разбиения среди всех блоков разбиения, сигнализация индекса LFNST может опускаться.
[365] Например, в случае блока разбиения 4×4 и блока разбиения 8×8, коэффициенты преобразования LFNST могут существовать в восьми положениях от DC положения в соответствии с порядком сканирования коэффициентов преобразования в стандарте VVC, и остальные положения заполняются нулями. Дополнительно, если он равен или больше, чем 4×4, и не является ни блоком разбиения 4×4, ни блоком разбиения 8×8, то коэффициенты преобразования LFNST могут существовать в 16 положениях от DC положения в соответствии с порядком сканирования коэффициентов преобразования в стандарте VVC, а все остальные положения заполняются нулями.
[366] Соответственно, если ненулевые коэффициенты преобразования существуют в области, которая должна быть заполнена нулевым значением после продвижения кодирования остатка, сигнализация индекса LFNST может опускаться.
[367] Если LFNST может применяться даже когда блоком разбиения является 2×M (1×M) или M×2 (M×1), область, в которой могут быть расположены коэффициенты преобразования LFNST, может указываться следующим образом. Если область иная, чем область, где могут располагаться коэффициенты преобразования, может быть заполнена 0, и если ненулевой коэффициент преобразования существует в области, которая должна быть заполнена 0, когда предполагается, что LFNST применяется, сигнализация индекса LFNST может опускаться.
[368] i. Если LFNST может применяться к блоку 2×M или M×2 и M=8, только 8 коэффициентов преобразования LFNST может генерироваться для блока разбиения 2×8 или 8×2. Когда коэффициенты преобразования упорядочены в порядке сканирования, как показано на фиг. 20, 8 коэффициентов преобразования упорядочены в порядке сканирования от DC положения, и остальные 8 положений могут быть заполнены нулями.
[369] Для блока разбиения 2×N или N×2 (N>8), могут генерироваться 16 коэффициентов преобразования LFNST, и когда коэффициенты преобразования упорядочены в порядке сканирования, как показано на фиг. 20, 16 коэффициентов преобразования упорядочены в порядке сканирования от DC положения, и остальная область может быть заполнена нулями. То есть, в блоке разбиения 2×N или N×2 (N>8), область иная, чем верхний-левый блок 2×8 или 8×2, может быть заполнена нулями. Даже для блока разбиения 2×8 или 8×2, 16 коэффициентов преобразования могут генерироваться вместо 8 коэффициентов преобразования LFNST, и в этом случае, область, которая должна быть заполнена нулями, не возникает. Как описано выше, когда применяется LFNST, и когда обнаруживается, что ненулевой коэффициент преобразования существует в области, определенной как заполненная 0 в по меньшей мере одном блоке разбиения, сигнализация индекса LFNST может опускаться, и индекс LFNST может подразумеваться равным 0.
[370] ii. Если LFNST может применяться к блоку 1×M или M×1, и M=16, только 8 коэффициентов преобразования LFNST может генерироваться для блока разбиения 1×16 или 16×1. Когда коэффициенты преобразования упорядочены в порядке сканирования слева направо или сверху вниз, 8 коэффициентов преобразования упорядочены в соответствующем порядке сканирования от DC положения, и остальные 8 положений могут быть заполнены нулями.
[371] Для блока разбиения 1×N или N×1 (N>16), могут генерироваться 16 коэффициентов преобразования LFNST, и когда коэффициенты преобразования упорядочены в порядке сканирования слева направо или сверху вниз, 16 коэффициентов преобразования упорядочены в соответствующем порядке сканирования от DC положения, и остальная область может быть заполнена нулями. То есть, в блоке разбиения 1×N или N×1 (N>16), область иная, чем верхний-левый блок 1×16 или 16×1, может быть заполнена нулями.
[372] Даже для блока разбиения 1×16 или 16×1, 16 коэффициентов преобразования могут генерироваться вместо 8 коэффициентов преобразования LFNST, и в этом случае, область, которая должна быть заполнена нулями, не возникает. Как описано выше, когда применяется LFNST, и когда обнаруживается, что ненулевой коэффициент преобразования существует в области, определенной как заполняемая 0 в по меньшей мере одном блоке разбиения, сигнализация индекса LFNST может опускаться, и индекс LFNST может подразумеваться равным 0.
[373] Между тем, в случае режима ISP, условие длины независимо рассматривается для горизонтального направления и вертикального направления, и DST-7 применяется вместо DCT-2 без сигнализации для индекса MTS. Определяется, является ли или нет горизонтальная или вертикальная длина большей или равной 4 и меньшей или равной 16, и ядро первичного преобразования определяется в соответствии с результатом определения. Соответственно, в случае режима ISP, когда может быть применено LFNST, возможна следующая конфигурация комбинации преобразования.
[374] 1. Когда индекс LFNST равен 0 (включая случай, в котором индекс LFNST подразумевается равным 0), можно следовать условию принятия решения о первичном преобразовании во время ISP, включенному в текущий стандарт VVC. Иными словами, может проверяться, удовлетворяется ли или нет условие длины (равна или больше, чем 4, или равна или меньше, чем 16) независимо для горизонтального и вертикального направлений, соответственно, и если оно удовлетворяется, то DST-7 может применяться вместо DCT-2 для первичного преобразования, а если оно не удовлетворяется, то может применяться DCT-2.
[375] 2. Для случая, в котором индекс LFNST больше, чем 0, следующие две конфигурации возможны в качестве первичного преобразования.
[376] A. DCT-2 может применяться как для горизонтального, так и вертикального направлений.
[377] B. Можно следовать условию принятия решения о первичном преобразовании во время ISP, включенному в текущий стандарт VVC. Иными словами, может проверяться, удовлетворяется ли или нет условие длины (равна или больше, чем 4, или равна или меньше, чем 16) независимо для горизонтального и вертикального направлений, соответственно, и если оно удовлетворяется, то DST-7 может применяться вместо DCT-2, а если оно не удовлетворяется, то может применяться DCT-2.
[378] В режиме ISP, информация изображения может конфигурироваться так, что индекс LFNST передается для каждого блока разбиения, а не для каждой единицы кодирования. В этом случае, в вышеописанном способе сигнализации индекса LFNST, может считаться, что только один блок разбиения существует в единице, в которой передается индекс LFNST, и может определяться, следует ли или нет сигнализировать индекс LFNST.
[379] Между тем, порядок сигнализации индекса LFNST и индекса MTS будет описан ниже.
[380] В соответствии с примером, индекс LFNST, сигнализируемый в кодировании остатка, может кодироваться после положения кодирования для положения последнего ненулевого коэффициента, и индекс MTS может кодироваться непосредственно после индекса LFNST. В случае этой конфигурации, индекс LFNST может сигнализироваться для каждой единицы преобразования. Альтернативно, даже если не сигнализируется в кодировании остатка, индекс LFNST может кодироваться после кодирования для положения последнего значимого коэффициента, и индекс MTS может кодироваться после индекса LFNST.
[381] Синтаксис кодирования остатка в соответствии с примером является следующим.
[382] [Таблица 9]
[383]
[384] Значения основных переменных, показанных в Таблице 9, являются следующими.
[385] 1. cbWidth, cbHeight: ширина и высота текущего блока кодирования
[386] 2. log2TbWidth, log2TbHeight: значение логарифма по основанию 2 для ширины и высоты текущего блока преобразования, он может быть уменьшен, путем отражения обнуления, до верхней-левой области, в которой может существовать ненулевой коэффициент.
[387] 3. sps_lfnst_enabled_flag: флаг, указывающий, разрешено ли или нет LFNST, если значение флага равно 0, это указывает, что LFNST не разрешено, а если значение флага равно 1, это указывает, что LFNST разрешено. Это определено в наборе параметров последовательности (SPS).
[388] 4. CuPredMode[chType][x0][y0]: режим предсказания, соответствующий переменной chType и положению (x0, y0), chType может иметь значения 0 и 1, причем 0 указывает компонент яркости, и 1 указывает компонент цветности. Положение (x0, y0) указывает положение на картинке, и MODE_INTRA (интра-предсказание) и MODE_INTER (интер-предсказание) возможны в качестве значения CuPredMode[chType][x0][y0].
[389] 5. IntraSubPartitionsSplit[x0][y0]: содержания положения (x0, y0) являются теми же самыми, что и в пункте 4. Это указывает, какое разбиение ISP применяется в положении (x0, y0), ISP_NO_SPLIT указывает, что единица кодирования, соответствующая положению (x0, y0), не делится на блоки разбиения.
[390] 6. intra_mip_flag[x0][y0]: содержания положения (x0, y0) являются теми же самыми, что и в пункте 4 выше. intra_mip_flag является флагом, указывающим, применяется ли или нет режим предсказания на матричной основе (MIP). Если значение флага равно 0, это указывает, что MIP не разрешено, а если значение флага равно 1, это указывает, что MIP разрешено.
[391] 7. cIdx: значение 0 указывает яркость, и значения 1 и 2 указывают Cb и Cr, которые являются соответственно компонентами цветности.
[392] 8. treeType: указывает одиночное дерево и дуальное дерево и т.д. (SINGLE_TREE: одиночное дерево, DUAL_TREE_LUMA: дуальное дерево для компонентов яркости, DUAL_TREE_CHROMA: дуальное дерево для компонента цветности).
[393] 9. tu_cbf_cb[x0][y0]: содержания положения (x0, y0) являются теми же самыми, что и в пункте 4. Это указывает флаг кодированного блока (CBF) для компонента Cb. Если его значение равно 0, это означает, что ненулевые коэффициенты отсутствуют в соответствующей единице преобразования для компонента Cb, а если его значение равно 1, это указывает, что ненулевые коэффициенты присутствуют в соответствующей единице преобразования для компонента Cb.
[394] 10. lastSubBlock: указывает положение в порядке сканирования подблока (группы коэффициентов (CG)), в котором расположен последний ненулевой коэффициент. 0 указывает подблок, в который включен DC компонент, а в случае значения больше 0, он не является подблоком, в который включен DC компонент.
[395] 11. lastScanPos: указывает положение, где последний значимый коэффициент находится в порядке сканирования в пределах одного подблока. Если один подблок включает в себя 16 положений, возможны значения от 0 до 15.
[396] 12. lfnst_idx[x0][y0]: синтаксический элемент индекса LFNST, подлежащий синтаксическому анализу. Если он не анализируется, то подразумевается как значение 0. То есть, значение по умолчанию установлено в 0, указывая, что LFNST не применяется.
[397] 13. LastSignificantCoeffX, LastSignificantCoeffY: указывают координаты x и y, где последний значимый коэффициент расположен в блоке преобразования. x-координата начинается в 0 и увеличивается слева направо, и y-координата начинается в 0 и увеличивается сверху вниз. Если значения обеих переменных равны 0, это означает, что последний значимый коэффициент расположен в DC.
[398] 14. cu_sbt_flag: флаг, указывающий разрешено ли или нет преобразование подблока (SBT), включенное в текущий стандарт VVC. Если значение флага равно 0, это указывает, что SBT не разрешено, а если значение флага равно 1, это указывает, что SBT разрешено.
[399] 15. sps_explicit_mts_inter_enabled_flag, sps_explicit_mts_intra_enabled_flag: флаги, указывающие, применяется ли или нет явное MTS к интер-CU и интра-CU, соответственно. Если значение соответствующего флага равно 0, это указывает, что MTS не разрешено для интер-CU или интра-CU, а если значение соответствующего флага равно 1, это указывает, что MTS разрешено.
[400] 16. tu_mts_idx[x0][y0]: синтаксический элемент индекса MTS, подлежащий синтаксическому анализу. Если он не анализируется, то подразумевается как значение 0. То есть, значение по умолчанию устанавливается в 0, указывая, что DCT-2 разрешено как для горизонтального, так и вертикального направлений.
[401] Как показано в Таблице 9, в случае одиночного дерева, можно определить, следует ли или нет сигнализировать индекс LFNST с использованием только условия положения последнего значимого коэффициента для яркости. То есть, если положение последнего значимого коэффициента не является DC и последний значимый коэффициент существует в верхнем-левом подблоке (CG), например, блоке 4×4, то индекс LFNST сигнализируется. В этом случае, в случае блока преобразования 4×4 и блока преобразования 8×8, индекс LFNST сигнализируется, только когда последний значимый коэффициент существует в положениях 0-7 в верхнем-левом подблоке.
[402] В случае дуального дерева, индекс LFNST сигнализируется независимо от каждого из яркости и цветности, и в случае цветности, индекс LFNST может сигнализироваться путем применения условия положения последнего значимого коэффициента только к компоненту Cb. Соответствующее условие может не проверяться для компонента Cr, и если значение CBF для Cb равно 0, индекс LFNST может сигнализироваться путем применения условия положения последнего значимого коэффициента к компоненту Cr.
[403] ‘Min(log2TbWidth, log2TbHeight)>=2’ в Таблице 9 может выражаться как “Min(tbWidth, tbHeight)>=4”, и ‘Min(log2TbWidth, log2TbHeight)>=4’ может выражаться как “Min(tbWidth, tbHeight)>= 16”.
[404] В Таблице 9, log2ZoTbWidth и log2ZoTbHeight означают значения логарифмов с основаниями по ширине и высоте, равными 2 (по основанию 2), для верхней-левой области, где последний значимый коэффициент может существовать, при обнулении, соответственно.
[405] Как показано в Таблице 9, значения log2ZoTbWidth и log2ZoTbHeight могут обновляться в двух местах. Первое - перед тем, как значение индекса MTS или индекса LFNST анализируется, и второе - после того, как индекс MTS анализируется.
[406] Первое обновление выполняется перед анализом значения индекса MTS (tu_mts_idx[x0][y0]), так что log2ZoTbWidth и log2ZoTbHeight могут устанавливаться независимо от значения индекса MTS.
[407] После того как индекс MTS проанализирован, log2ZoTbWidth и log2ZoTbHeigh устанавливаются для индекса MTS больше 0 (комбинация DST-7/DCT-8). Когда DST-7/DCT-8 независимо применяется в каждом из горизонтального и вертикального направлений в первичном преобразовании, может иметься до 16 значимых коэффициентов на строку или столбец в каждом направлении. То есть, после применения DST-7/DCT-8 с длиной 32 или более, до 16 коэффициентов преобразования может быть выведено для каждой строки или столбца слева или сверху. Соответственно, в 2D блоке, когда DST-7/DCT-8 применяется как в горизонтальном направлении, так и вертикальном направлении, значимые коэффициенты могут существовать только в верхней-левой области 16×16.
[408] Кроме того, когда DCT-2 независимо применяется в каждом из горизонтального и вертикального направлений в текущем первичном преобразовании, может иметься до 32 значимых коэффициентов на строку или столбец в каждом направлении. То есть, при применении DCT-2 с длиной 64 или более, до 32 коэффициентов преобразования могут выводиться для каждой строки или столбца слева или сверху. Соответственно, в 2D блоке, когда DCT-2 применяется как в горизонтальном направлении, так и вертикальном направлении, значимые коэффициенты могут существовать только в верхней-левой области 32×32.
[409] Кроме того, когда DST-7/DCT-8 применяется с одной стороны, и DCT-2 применяется с другой стороны к горизонтальному и вертикальному направлениям, 16 значимых коэффициентов могут существовать в первом направлении, и 32 значимых коэффициента могут существовать в последнем направлении. Например, в случае блока преобразования 64×8, если DCT-2 применяется в горизонтальном направлении и DST-7 применяется в вертикальном направлении (может возникнуть ситуация, где применяется неявное MTS), значимый коэффициент может существовать в области вплоть до верхней-левой области 32×8.
[410] Если, как показано в Таблице 9, log2ZoTbWidth и log2ZoTbHeight обновляются в двух местах, то есть, перед синтаксическим анализом индекса MTS, диапазоны last_sig_coeff_x_prefix и last_sig_coeff_y_prefix могут быть определены посредством log2ZoTbWidth и log2ZoTbHeight, как показано в таблице ниже.
[411]
[Таблица 10]
7.4.9.11 Семантика кодирования остатка…last_sig_coeff_x_prefix специфицирует префикс положения столбца последнего значимого коэффициента в порядке сканирования в блоке преобразования. Значения last_sig_coeff_x_prefix должны быть в диапазоне от 0 до (log2ZoTbWidth << 1)-1), включительно.Когда last_sig_coeff_x_prefix отсутствует, он подразумевается равным 0.last_sig_coeff_y_prefix специфицирует префикс положения строки последнего значимого коэффициента в порядке сканирования в блоке преобразования. Значения last_sig_coeff_y_prefix должны быть в диапазоне от 0 до (log2ZoTbHeight << 1)-1), включительно.Когда last_sig_coeff_y_prefix отсутствует, он подразумевается равным 0.…
[412] Дополнительно, в этом случае, максимальные значения last_sig_coeff_x_prefix и last_sig_coeff_y_prefix могут быть установлены путем отображения значений log2ZoTbWidth и log2ZoTbHeight в процессе бинаризации для last_sig_coeff_x_prefix и last_sig_coeff_y_prefix.
[413] [Таблица 11]
[414] В соответствии с примером, в случае, где применяется режим ISP и LFNST, когда применяется сигнализация Таблицы 9, текст спецификации может конфигурироваться, как показано в Таблице 12. По сравнению с Таблицей 9, условие сигнализации индекса LFNST только в случае, исключающем режим ISP (IntraSubPartitionsSplit[x0][y0]==ISP_NO_SPLIT в Таблице 9) удаляется.
[415] В одиночном дереве, когда индекс LFNST, передаваемый для компонента яркости (cIdx=0) повторно используется для компонента цветности, индекс LFNST, передаваемый для первого блока разбиения ISP, в котором существует значимый коэффициент, может применяться к блоку преобразования. Альтернативно, даже в одиночном дереве, индекс LFNST может сигнализироваться для компонента цветности отдельно от индекса для компонента яркости. Описание переменных в Таблице 12 такое же, как Таблице 9.
[416] [Таблица 12]
[417] В соответствии с другим примером, в Таблице 12, когда последнему значимому коэффициенту разрешается находиться в DC положении для ISP, условие для синтаксического анализа в отношении индекса LFNST может быть изменено следующим образом.
[418] [Таблица 13]
[419] В соответствии с примером, индекс LFNST и/или индекс MTS может сигнализироваться на уровне единицы кодирования. Как описано выше, индекс LFNST может иметь три значения 0, 1 и 2, где 0 указывает, что LFNST не применяется, и 1 и 2 соответственно указывают первый кандидат и второй кандидат из двух кандидатов ядра LFNST, включенных в выбранный набор LFNST. Индекс LFNST кодируется посредством усеченной унитарной бинаризации, и значения 0, 1 и 2 могут кодироваться как биновые строки 0, 10 и 11, соответственно.
[420] В соответствии с примером, LFNST может применяться, только когда DCT-2 применяется как в горизонтальном направлении, так и в вертикальном направлении в первичном преобразовании. Поэтому, если индекс MTS сигнализируется после сигнализации индекса LFNST, индекс MTS может сигнализироваться, только когда индекс LFNST равен 0, и первичное преобразование может выполняться путем применения DCT-2 как в горизонтальном направлении, так и в вертикальном направлении, без сигнализации индекса MTS, когда индекс LFNST не равен 0.
[421] Индекс MTS может иметь значения 0, 1, 2, 3 и 4, где 0, 1, 2, 3 и 4 могут указывать, что DCT-2/DCT-2, DST-7/DST-7, DCT-8/DST-7, DST-7/DCT-8, DCT-8/DCT-8 применяются в горизонтальном и вертикальном направлениях, соответственно. Кроме того, индекс MTS может кодироваться посредством усеченной унитарной бинаризации и значения 0, 1, 2, 3 и 4 могут кодироваться как биновые строки 0, 10, 110, 1110 и 1111, соответственно.
[422] Индекс LFNST и индекс MTS могут сигнализироваться на уровне единицы кодирования, и индекс MTS может затем кодироваться после индекса LFNST на уровне единицы кодирования. Таблица синтаксиса единицы кодирования для этого является следующей.
[423] [Таблица 14]
[424] Сравнивая Таблицу 14 с Таблицей 13, условие для проверки, равно ли 0 значение tu_mts_idx[x0][y0] (т.е., проверки, применяется ли DCT-2 в горизонтальном направлении и в вертикальном направлении), в условии для сигнализации lfnst_idx[x0][y0] изменено на условие для проверки, равно ли 0 значение transform_skip_flag[x0][y0] (!transform_skip_flag[x0][y0]). transform_skip_flag[x0][y0] указывает, кодируется ли единица кодирования в режиме пропуска преобразования, в котором преобразование пропускается, и флаг сигнализируется перед индексом MTS и индексом LFNST. То есть, поскольку lfnst_idx[x0][y0] сигнализируется до того, как сигнализируется значение tu_mtx_idx[x0][y0], только условие для значения transform_skip_flag[x0][y0] может проверяться.
[425] Как показано в Таблице 14, множество условий проверяется при кодировании tu_mts_idx[x0][y0], и tu_mts_idx[x0][y0] сигнализируется, только когда значение lfnst_idx[x0][y0] равно 0, как описано выше.
[426] tu_cbf_LUMA[x0][y0] является флагом, указывающим, существует ли значимый коэффициент для компонента яркости, и cbWidth и cbHeight указывают ширину и высоту единицы кодирования для компонента яркости, соответственно.
[427] В Таблице 14, (IntraSubPartitionsSplit[x0][y0]== ISP_NO_SPLIT) указывает, что режим ISP не применяется, и (!cu_sbt_flag) указывает, что SBT не применяется.
[428] В соответствии с Таблицей 14, когда как ширина, так и высота единицы кодирования для компонента яркости равны 32 или меньше, tu_mts_idx[x0][y0] сигнализируется, то есть, применяется ли MTS, определяется шириной и высотой единицы кодирования для компонента яркости.
[429] В соответствии с другим примером, когда происходит мозаичное разбиение блока преобразования (TU) (например, когда максимальный размер преобразования установлен в 32, единица кодирования 64×64 делится на четыре блока преобразования 32×32 и кодируется), индекс MTS может сигнализироваться на основе размера каждого блока преобразования. Например, когда как ширина, так и высота блока преобразования равны 32 или меньше, одно и то же значение индекса MTS может применяться ко всем блокам преобразования в единице кодирования, тем самым применяя одно и то же первичное преобразование. К тому же, когда происходит мозаичное разбиение блока преобразования, значение tu_cbf_LUMA[x0][y0] в Таблице 14 может представлять собой значение CBF для верхнего-левого блока преобразования или может быть установлено в 1, когда значение CBF для даже одного блока преобразования из всех блоков преобразования равно 1.
[430] В соответствии с примером, когда режим ISP применяется к текущему блоку, LFNST может применяться, в этом случае Таблица 14 может изменяться, как показано в Таблице 15.
[431] [Таблица 15]
[432] Как показано в Таблице 15, даже в режиме ISP, (IntraSubPartitionsSplitType!=ISP_NO_SPLIT)lfnst_idx[x0][y0] может быть сконфигурировано, чтобы сигнализироваться, и одно и то же значение индекса LFNST может применяться ко всем блокам разбиения ISP.
[433] Дополнительно, как показано в Таблице 15, поскольку tu_mts_idx[x0][y0] может сигнализироваться только в режиме, исключающим режим ISP, часть кодирования индекса MTS является той же самой, что и в Таблице 14.
[434] Как показано в Таблице 14 и Таблице 15, когда индекс MTS сигнализируется непосредственно после индекса LFNST, информация о первичном преобразовании не может быть известна при выполнении кодирования остатка. То есть, индекс MTS сигнализируется после кодирования остатка. Соответственно, в части кодирования остатка, часть, на которой обнуление выполняется, оставляя только 16 коэффициентов для DST-7 или DCT-8, имеющего длину 32, может изменяться, как показано ниже, в Таблице 16.
[435]
[Таблица 16]
residual_coding( x0, y0, log2TbWidth, log2TbHeight, cIdx ) {
Descriptor
if( ( sps_mts_enabled_flag && cu_sbt_flag && log2TbWidth < 6 && log2TbHeight < 6 ) && cIdx == 0 && log2TbWidth > 4 )
log2ZoTbWidth=4
Else
log2ZoTbWidth=Min( log2TbWidth, 5 )
MaxCcbs=2 * ( 1 << log2TbWidth ) * ( 1<< log2TbHeight )
if( ( sps_mts_enabled_flag && cu_sbt_flag && log2TbWidth < 6 && log2TbHeight < 6 ) && cIdx == 0 && log2TbHeight > 4 )
log2ZoTbHeight=4
Else
log2ZoTbHeight=Min( log2TbHeight, 5 )
[436]
if( log2TbWidth > 0 )
<b>last_sig_coeff_x_prefix</b>
<b>ae(v)</b>
if( log2TbHeight > 0 )
<b>last_sig_coeff_y_prefix</b>
<b>ae(v)</b>
if( last_sig_coeff_x_prefix > 3 )
<b>last_sig_coeff_x_suffix</b>
<b>ae(v)</b>
if( last_sig_coeff_y_prefix > 3 )
<b>last_sig_coeff_y_suffix</b>
<b>ae(v)</b>
log2TbWidth=log2ZoTbWidth
log2TbHeight=log2ZoTbHeight
remBinsPass1=( ( 1 << ( log2TbWidth+log2TbHeight ) ) * 7 ) >> 2
log2SbW=( Min( log2TbWidth, log2TbHeight ) < 2 ? 1 : 2 )
log2SbH=log2SbW
if( log2TbWidth+log2TbHeight > 3 ) {
if( log2TbWidth < 2 ) {
log2SbW=log2TbWidth
log2SbH=4 - log2SbW
} else if( log2TbHeight < 2 ) {
log2SbH=log2TbHeight
log2SbW=4 - log2SbH
}
}
numSbCoeff=1 << ( log2SbW+log2SbH )
lastScanPos=numSbCoeff
lastSubBlock=( 1 << ( log2TbWidth+log2TbHeight - ( log2SbW+log2SbH ) ) ) - 1
do {
if( lastScanPos== 0 ) {
lastScanPos=numSbCoeff
lastSubBlock--
}
lastScanPos--
xS=DiagScanOrder[ log2TbWidth - log2SbW ][ log2TbHeight - log2SbH ] [ lastSubBlock ][ 0 ]
yS=DiagScanOrder[ log2TbWidth - log2SbW ][ log2TbHeight - log2SbH ] [ lastSubBlock ][ 1 ]
xC=( xS << log2SbW ) + DiagScanOrder[ log2SbW ][ log2SbH ][ lastScanPos ][ 0 ]
yC=( yS << log2SbH ) + DiagScanOrder[ log2SbW ][ log2SbH ][ lastScanPos ][ 1 ]
} while( ( xC != LastSignificantCoeffX ) || ( yC != LastSignificantCoeffY ) )
if( lastSubBlock== 0 &&log2TbWidth >= 2 && log2TbHeight >= 2 && !transform_skip_flag[ x0 ][ y0 ] && lastScanPos > 0 )
LfnstDcOnly= 0
if( ( lastSubBlock > 0 && log2TbWidth >= 2 &&log2TbHeight >= 2 ) || ( lastScanPos > 7 && ( log2TbWidth== 2 || log2TbWidth== 3 ) && log2TbWidth == log2TbHeight ) )
LfnstZeroOutSigCoeffFlag=0
[437] Как показано в Таблице 16, в процессе определения
log2ZoTbWidth и log2ZoTbHeight (где log2ZoTbWidth и log2ZoTbHeight соответственно обозначают значения логарифмов по основанию 2 ширины и высоты верхней-левой области, оставшейся после выполнения обнуления), проверка значения tu_mts_idx[x0][y0] может опускаться.
[438] Бинаризация last_sig_coeff_x_prefix и last_sig_coeff_y_prefix в Таблице 16 может определяться на основе log2ZoTbWidth и log2ZoTbHeight, как показано в Таблице 11.
[439] Дополнительно, как показано в Таблице 16, условие проверки sps_mts_enable_flag может добавляться при определении log2ZoTbWidth и log2ZoTbHeight в остаточном кодировании.
[440] TR в Таблице 11 указывает способ усеченной бинаризации Райса, и информация последнего значимого коэффициента может бинаризоваться на основе cMax и cRiceParam, определенных в Таблице 11 в соответствии со способом, описанным в следующей таблице.
[441] В соответствии с примером, когда информация о положении последнего значимого коэффициента блока преобразования яркости записывается в процессе кодирования остатка, индекс MTS может сигнализироваться, как показано в Таблице 17.
[442] [Таблица 17]
[443] В Таблице 17, LumaLastSignificantCoeffX и LumaLastSignificantCoeffY указывают координату X и координату Y положения последнего значимого коэффициента для блока преобразования яркости, соответственно. Условие, что LumaLastSignificantCoeffX и LumaLastSignificantCoeffY должны быть меньше 16, было добавлено в Таблицу 17. Когда любое одно равно 16 или более, DCT-2 применяется как в горизонтальном, так и в вертикальном направлениях, так что сигнализация для tu_mts_idx[x0][y0] опускается, и может подразумеваться, что DCT-2 применяется как к горизонтальному, так и вертикальному направлениям.
[444] Когда как LumaLastSignificantCoeffX, так и LumaLastSignificantCoeffY меньше 16, это означает, что последний значимый коэффициент существует в верхней-левой области 16×16. К тому же, это указывает, что, когда DST-7 или DCT-8 длиной 32 применяется в текущем стандарте VVC, существует возможность, что применяется обнуление, которое оставляет только 16 коэффициентов преобразования слева или сверху. Соответственно, tu_mts_idx[x0][y0] может сигнализироваться для указания ядра преобразования, используемого для первичного преобразования.
[445] В другом примере, таблица синтаксиса единицы кодирования и таблица синтаксиса кодирования остатка являются следующими.
[446] [Таблица 18]
[447] [Таблица 19]
[448] В Таблице 18, MtsZeroOutSigCoeffFlag первоначально устанавливается в 1, и это значение может изменяться в остаточном кодировании в Таблице 19. Значение переменной MtsZeroOutSigCoeffFlag изменяется с 1 на 0, когда значимый коэффициент существует в области (LastSignificantCoeffX > 15 || LastSignificantCoeffY > 15), подлежащей заполнению 0 путем обнуления, в этом случае индекс MTS не сигнализируется, как показано в Таблице 19.
[449] Между тем, таблица синтаксиса уровня единицы преобразования в соответствии с примером показана следующим образом.
[450] [Таблица 20]
[451] Как показано в Таблице 20, MtsZeroOutSigCoeffFlag может устанавливаться в 1, когда tu_cbf_LUMA[x0][y0] равно 1, и когда tu_cbf_LUMA[x0][y0] равно 0, существующее значение MtsZeroOutSigCoeffFlag может поддерживаться. Соответственно, когда tu_cbf_LUMA[x0][y0] равно 0 и значение MtsZeroOutSigCoeffFlag поддерживается на 0, кодирование mts_idx[x0][y0] может опускаться. То есть, если значение CBF компонента яркости равно 0, поскольку индекс MTS является незначимым, поскольку преобразование не применяется, кодирование индекса MTS может опускаться.
[452] Следующие чертежи были подготовлены для объяснения конкретного примера настоящей спецификации. Поскольку названия конкретных устройств, описанных на чертежах, или названия конкретных сигналов/сообщений/полей представлены в качестве примера, технические признаки настоящей спецификации не ограничены конкретными названиями, использованными в следующих чертежах.
[453] Фиг. 21 является блок-схемой последовательности операций, показывающей работу устройства декодирования видео в соответствии с вариантом осуществления настоящего документа.
[454] Каждый этап, раскрытый на фиг. 21, основан на некотором из содержания, описанного выше на фиг. 4-20. Поэтому, объяснение для конкретного содержания, повторяющего содержание, описанное выше на фиг. 3-20, будет опускаться или даваться кратко.
[455] В соответствии с вариантом осуществления, устройство 300 декодирования может принимать остаточную информацию из битового потока (S2110).
[456] Более конкретно, устройство 300 декодирования может декодировать информацию о квантованных коэффициентах преобразования для текущего блока из битового потока и может выводить квантованные коэффициенты преобразования для целевого блока на основе информации о квантованных коэффициентах преобразования для текущего блока. Информация о квантованных коэффициентах преобразования для целевого блока может быть включена в набор параметров последовательности (SPS) или заголовок вырезки и может включать в себя по меньшей мере одно из информации о том, применяется ли или нет сокращенное преобразование (RST), информации об сокращенном коэффициенте, информации о минимальном размере преобразования, к которому применяется сокращенное преобразование, информации о максимальном размере преобразования, к которому применяется сокращенное преобразование, и информации об индексе преобразования, указывающем любое одно из размера упрощенного обратного преобразования и матрицы ядра преобразования, включенных в набор преобразования.
[457] К тому же, устройство декодирования может дополнительно принимать информацию о режиме интра-предсказания для текущего блока и информацию о том, применяется ли или нет ISP к текущему блоку. Устройство декодирования может выводить, делится ли или нет текущий блок на предопределенное число блоков преобразования подразбиения, путем применения и синтаксического анализа в отношении информации флага, указывающей, следует ли или нет применять кодирование ISP или режим ISP. Здесь, текущий блок может представлять собой блок кодирования. Дополнительно, устройство декодирования может выводить размер и число разделенных блоков подразбиения посредством информации флага, указывающей, в каком направлении будет делиться текущий блок.
[458] Устройство 300 декодирования может выводить коэффициенты преобразования путем деквантования остаточной информации о текущем блоке, то есть, квантованных коэффициентов преобразования (S2120).
[459] Выведенные коэффициенты преобразования могут быть упорядочены в соответствии с обратным диагональным порядком сканирования в единицах блоков 4×4, и коэффициенты преобразования в пределах блока 4×4 могут также быть упорядочены в соответствии с обратным диагональным порядком сканирования. То есть, коэффициенты преобразования, на которых было выполнено деквантование, могут быть упорядочены в соответствии с порядком сканирования, обратным применяемому в кодеке видео, например, в VVC или HEVC.
[460] Коэффициент преобразования, выведенный на основе этой остаточной информации, может представлять собой деквантованный коэффициент преобразования, как описано выше, и может также представлять собой квантованный коэффициент преобразования. То есть, коэффициент преобразования может представлять собой любые данные, способными к проверке, являются ли они или нет ненулевыми данными в текущем блоке, независимо от того, квантованы они или нет.
[461] Устройство декодирования может выводить остаточные выборки путем применения обратного преобразования к квантованным коэффициентам преобразования.
[462] Как описано выше, устройство декодирования может выводить остаточные выборки путем применения LFNST, которое представляет собой неразделимое преобразование, или MTS, которое представляет собой разделимое преобразование, и такие преобразования могут выполняться на основе индекса LFNST, указывающего ядро LFNST, то есть, матрицу LFNST, и индекса MTS, указывающего ядро MTS, соответственно.
[463] Устройство декодирования может принимать и выполнять синтаксический анализ в отношении по меньшей мере одного из индекса LFNST или индекса MTS на уровне единицы кодирования и может выполнять синтаксический анализ в отношении индекса LFNST, указывающего ядро LFNST, перед, то есть, непосредственно перед, индексом MTS, указывающим ядро MTS.
[464] Индекс MTS может синтаксически анализироваться в соответствии с конкретным условием для индекса LFNST, например, когда индекс LFNST равен 0. Также, в соответствии с примером, когда типом дерева текущего блока является дуальным деревом яркости или одиночным деревом, и значение индекса LFNST равно 0, может быть выполнен синтаксический анализ в отношении индекса MTS.
[465] Когда значение индекса LFNST равно 0, уровень кодирования остатка может включать в себя синтаксис для информации положения последнего значимого коэффициента, и индекс LFNST может быть получен посредством синтаксического анализа после синтаксического анализа в отношении информации положения последнего значимого коэффициента.
[466] В соответствии с примером, когда текущий блок является блоком яркости и индекс LFNST составляет 0, может быть выполнен синтаксический анализ в отношении индекса MTS. То есть, когда текущий блок является блоком яркости и если индекс LFNST больше, чем 0, синтаксический анализ в отношении индекса MTS может не выполняться.
[467] В соответствии с примером, когда типом дерева текущего блока является дуальное дерево, индекс LFNST для каждого из блока яркости и блока цветности может быть получен посредством синтаксического анализа.
[468] Между тем, при выведении коэффициента преобразования, ширина и высота для верхней-левой области, в которой последний значимый коэффициент может существовать в текущем блоке, могут выводиться путем обнуления, и ширина и высота для верхней-левой области может выводиться перед синтаксическим анализом в отношении индекса MTS.
[469] Между тем, положение последнего значимого коэффициента может выводиться посредством ширины и высоты для верхней-левой области, и информация положения последнего значимого коэффициента может быть бинаризована на основе ширины и высоты для верхней-левой области.
[470] Альтернативно, в соответствии с примером, когда типом дерева текущего блока является тип одиночного дерева, устройство декодирования может выполнять кодирование остатка на блоке яркости и блоке цветности текущего блока и может затем осуществлять синтаксический анализ в отношении индекса LFNST.
[471] Когда выполняется синтаксический анализ в отношении индекса LFNST на уровне единицы кодирования после выполнения кодирования остатка не на уровне блока преобразования или уровне кодирования остатка, индекс LFNST, отображающий положения полных коэффициентов преобразования для блока яркости и блока цветности, и может приниматься информация обнуления, вовлеченная в процесс преобразования, а не информация коэффициента преобразования по любому из блока яркости или блока цветности.
[472] Когда типом дерева текущего блока является тип дуального дерева и компонент цветности кодируется, устройство декодирования может выполнять кодирование остатка на компоненте Cb и компоненте Cr блока цветности и затем может выполнять синтаксический анализ в отношении индекса LFNST.
[473] Когда выполняется синтаксический анализ в отношении индекса LFNST на уровне единицы кодирования после выполнения кодирования остатка не на уровне блока преобразования или уровне кодирования остатка, индекс LFNST, отображающий положения полных коэффициентов преобразования для компонента Cb и компонента Cr блока цветности, и принимается информация обнуления, вовлеченная в процесс преобразования, а не информация коэффициента преобразования по любому одному из компонента Cb и компонента Cr блока цветности.
[474] Когда текущий блок разбивается на множество блоков подразбиения, устройство декодирования может выполнять кодирование остатка по множеству блоков подразбиения и может затем выполнять синтаксический анализ в отношении индекса LFNST.
[475] Подобно приведенному выше описанию, когда выполняется синтаксический анализ в отношении индекса LFNST на уровне единицы кодирования после выполнения кодирования остатка не на уровне блока преобразования или уровне кодирования остатка, может приниматься индекс LFNST, отображающий положения полных коэффициентов преобразования для всех блоков подразбиения, и информация обнуления, вовлеченная в процесс преобразования, а не информация коэффициента преобразования по некоторым или индивидуальным блокам подразбиения.
[476] В соответствии с примером, когда текущий блок разбивается на множество блоков подразбиения, синтаксический анализ в отношении индекса LFNST может осуществляться независимо от того, существует ли коэффициент преобразования в области, исключающей DC положение каждого из множества блоков подразбиения. То есть, если последнему значимому коэффициенту разрешается находиться только в DC положении для всех блоков подразбиения, когда ISP применяется к текущему блоку, может быть разрешена сигнализация индекса LFNST.
[477] В процессе кодирования остатка, устройство декодирования может выводить первую переменную, указывающую, существует ли коэффициент преобразования в области, исключающей DC положение текущего блока, и может выводить вторую переменную, указывающую, существует ли коэффициент преобразования во второй области, исключающей верхнюю-левую первую область текущего блока или блока подразбиения, на который разбивается текущий блок.
[478] Устройство декодирования может осуществлять синтаксический анализ в отношении индекса LFNST, когда коэффициент преобразования существует в области, исключающей DC положение, и коэффициент преобразования не существует во второй области.
[479] Конкретно, чтобы определить, следует ли осуществлять синтаксический анализ в отношении индекса LFNST, устройство декодирования может вывести первую переменную, указывающую, существует ли коэффициент преобразования, то есть, значимый коэффициент, в области, исключающей DC положение текущего блока.
[480] Первая переменная может быть переменной LfnstDcOnly, которая может быть выведена в процессе кодирования остатка. Первая переменная может быть выведена как 0, когда индекс подблока, включающего последний значимый коэффициент в текущем блоке, равен 0, и положение последнего значимого коэффициента в подблоке больше, чем 0, и синтаксический анализ может осуществляться в отношении индекса LFNST , когда первая переменная равна 0. Подблок относится к блоку 4×4, используемому как единица кодирования в кодировании остатка, и может также упоминаться как группа коэффициентов (CG). Индекс подблока, равный 0, указывает верхний-левый подблок 4×4.
[481] Первая переменная может быть первоначально установлена в 1 и может сохраняться как 1 или может изменяться на 0 в зависимости от того, существует ли значимый коэффициент в области, исключающей DC положение.
[482] Переменная LfnstDcOnly указывает, существует ли ненулевой коэффициент в положении не-DC компонента для по меньшей мере одного блока преобразования в пределах одной единицы кодирования, может быть равна 0, когда ненулевой коэффициент существует в положении не-DC компонента для по меньшей мере одного блока преобразования в пределах одной единицы кодирования, и может быть равна 1, когда ненулевой коэффициент не существует в положении не-DC компонента для всех блоков преобразования в пределах одной единицы кодирования.
[483] Устройство декодирования может вывести вторую переменную, указывающую, существует ли значимый коэффициент во второй области, исключающей верхнюю-левую первую область текущего блока, тем самым проверяя, было ли выполнено обнуление на второй области.
[484] Вторая переменная может быть переменной LfnstZeroOutSigCoeffFlag, которая может указывать, что обнуление выполнено, когда применяется LFNST. Вторая переменная может быть первоначально установлена в 1 и может быть изменена на 0, когда значимый коэффициент существует во второй области.
[485] Переменная LfnstZeroOutSigCoeffFlag может быть выведена как 0, когда индекс подблока, в котором существует последний ненулевой коэффициент, больше, чем 0, и ширина и высота блока преобразования равны или больше, чем 4, или когда положение последнего ненулевого коэффициента в подблоке, в котором существует последний ненулевой коэффициент, больше, чем 7, и размер блока преобразования равен 4×4 или 8×8. Подблок относится к блоку 4×4, используемому как единица кодирования в кодировании остатка, и может также упоминаться как группа коэффициентов (CG). Индекс подблока, равный 0, указывает верхний-левый подблок 4×4.
[486] То есть, когда ненулевой коэффициент выводится в области, исключающей верхнюю-левую область, где может существовать коэффициент преобразования LFNST в блоке преобразования, или ненулевой коэффициент существует вне восьмого положения в порядке сканирования для блока 4×4 и блока 8×8, переменная LfnstZeroOutSigCoeffFlag устанавливается в 0.
[487] В соответствии с примером, когда ISP применяется к единице кодирования, если идентифицировано, что коэффициент преобразования существует в положении, исключая положение, где коэффициент преобразования LFNST может существовать даже для одного блока подразбиения среди всех блоков подразбиения, сигнализация индекса LFNST может опускаться. То есть, когда обнуление не выполняется в одном блоке подразбиения и значимый коэффициент существует во второй области, индекс LFNST не сигнализируется.
[488] Первая область может быть выведена на основе размера текущего блока.
[489] Например, когда размер текущего блока равен 4×4 или 8×8, первая область может быть от сверху-слева текущего блока до положения восьмой выборки в направлении сканирования. Когда текущий блок разбивается и размер блока подразбиения равен 4×4 или 8×8, первая область может быть от сверху-слева блока подразбиения до положения восьмой выборки в направлении сканирования.
[490] Когда размер текущего блока равен 4×4 или 8×8, восемь частей данных выводятся посредством прямого LFNST, и, следовательно, восемь коэффициентов преобразования, принятых устройством декодирования, могут быть упорядочены от сверху-слева текущего блока до положения восьмой выборки в направлении сканирования, как показано на фиг. 13(а) и фиг. 14(а).
[491] Когда размер текущего блока не равен 4×4 или 8×8, первая область может быть верхней-левой областью 4×4 текущего блока. Когда размер текущего блока не равен 4×4 или 8×8, 16 частей данных выводятся посредством прямого LFNST, и, следовательно, 16 коэффициентов преобразования, принятых устройством декодирования, могут быть упорядочены в верхней-левой области 4×4 текущего блока, как показано на фиг. 13 (b)-(d) и фиг. 14(b).
[492] Коэффициенты преобразования, которые могут быть упорядочены в первой области, могут упорядочиваться в соответствии с диагональным направлением сканирования, как показано на фиг. 8.
[493] Как описано выше, когда текущий блок разбивается на блоки подразбиения, если коэффициент преобразования не существует во всех отдельных областях для множества блоков подразбиения, устройство декодирования может выполнять синтаксический анализ в отношении индекса LFNST. Когда коэффициент преобразования существует во второй области для любого одного блока подразбиения, синтаксический анализ в отношении индекса LFNST не выполняется.
[494] Как описано выше, LFNST может применяться к блоку подразбиения, имеющему ширину и высоту 4 или более, и индекс LFNST для текущего блока, который является блоком кодирования, может применяться к множеству блоков подразбиения.
[495] Поскольку отображаемое на LFNST обнуление (включая все обнуления, затрагиваемые в применении LFNST) применяется к блоку подразбиения как он есть, первая область равным образом применяется к блоку подразбиения. То есть, когда разделенным блоком подразбиения является блок 4×4 или блок 8×8, LFNST может применяться от сверху-слева блока подразбиения до восьмого коэффициента преобразования в направлении сканирования, а когда блоком подразбиения не является блок 4×4 или блок 8×8, LFNST может применяться к коэффициентам преобразования в верхней-левой области 4×4 блока подразбиения.
[496] К тому же, в процессе кодирования остатка, устройство декодирования может определять, присутствует ли коэффициент преобразования в области за исключением верхней-левой области 16×16 текущего блока (S2130), и может осуществлять синтаксический анализ в отношении индекса MTS, когда коэффициент преобразования не существует в области за исключением области 16×16 (S2140).
[497] С этой целью, устройство декодирования может выводить третью переменную, указывающую, существует ли коэффициент преобразования в области, отличной от верхней-левой области 16×16.
[498] Третья переменная может представлять собой переменную MtsZeroOutSigCoeffFlag, которая может указывать, что обнуление выполняется, когда применяется MTS. Переменная MtsZeroOutSigCoeffFlag указывает, существует ли коэффициент преобразования в верхней-левой области, где может существовать последний значимый коэффициент, путем обнуления после выполнения MTS, то есть, области за исключением верхней-левой области 16×16, и значение третьей переменной может первоначально устанавливаться в 1 и может изменяться с 1 на 0, когда коэффициент преобразования существует в области за исключением верхней-левой области 16×16. Когда значение третьей переменной равно 0, индекс MTS не сигнализируется.
[499] Устройство декодирования может выводить остаточные выборки путем применения по меньшей мере одного из LFNST, выполняемого на основе индекса LFNST, или MTS, выполняемого на основе индекса MTS, и в соответствии с примером, остаточные выборки могут выводиться путем применения ядра MTS, выведенного на основе индекса MTS, к коэффициентам преобразования верхней-левой области 16×16 (S2150).
[500] Затем, устройство 300 декодирования может генерировать восстановленные выборки на основе остаточных выборок для текущего блока и выборок предсказания для текущего блока (S2160).
[501] Следующие чертежи были подготовлены для объяснения конкретного примера настоящего описания. Поскольку названия конкретных устройств, описанных на чертежах, или названия конкретных сигналов/сообщений/полей представлены в качестве примера, технические признаки настоящего описания не ограничены конкретными названиями, используемыми в следующих чертежах.
[502] Фиг. 22 является блок-схемой последовательности операций, показывающей работу устройства кодирования видео в соответствии с вариантом осуществления настоящего документа.
[503] Каждый этап, раскрытый на фиг. 22, основан на некотором из содержания, описанного выше со ссылкой на фиг. 4-20. Поэтому, объяснение для конкретного содержания, повторяющего содержание, описанное выше со ссылкой на фиг. 2 и 4-20, будет опущено или приведено кратко.
[504] Устройство 200 кодирования в соответствии с вариантом осуществления может выводить выборки предсказания для текущего блока на основе режима интра-предсказания, примененного к текущему блоку (S2210).
[505] Устройство кодирования может выполнять предсказание для каждого подблока разбиения преобразования в случае, где ISP применяется к текущему блоку.
[506] Устройство кодирования может определять, следует или нет применить кодирование ISP или режим ISP к текущему блоку, то есть, блоку кодирования, и в соответствии с результатом определения, возможно определить, в каком направлении должен делиться текущий блок, и вывести размер и число подблоков, подлежащих разделению.
[507] Устройство 200 кодирования может выводить остаточные выборки для текущего блока на основе выборок предсказания (S2220).
[508] Устройство 200 кодирования может выводить коэффициенты преобразования для текущего блока путем применения по меньшей мере одного из LFNST или MTS к остаточным выборкам и может упорядочивать коэффициенты преобразования в соответствии с предопределенным порядком сканирования, в соответствии с примером, коэффициенты преобразования для текущего блока могут выводиться на основе MTS для остаточных выборок (S2230).
[509] Первичное преобразование может выполняться посредством множества ядер преобразования, таких как MTS, и в этом случае, ядро преобразования может выбираться на основе режима интра-предсказания.
[510] После выведения коэффициентов преобразования путем применения MTS, устройство кодирования может обнулять оставшиеся области текущего блока за исключением конкретной области сверху-слева текущего блока, например, области 16×16 (S2240).
[511] В соответствии с примером, устройство кодирования может выполнять обнуление, когда MTS применяется в первичном преобразовании текущего блока. Устройство кодирования может выполнять обнуление заполнения области за исключением верхней-левой области 16×16 текущего блока или подблока разбиения нулями и может кодировать индекс MTS в соответствии с третьей переменной, указывающей, существует ли коэффициент преобразования в области обнуления.
[512] Третья переменная может представлять собой переменную MtsZeroOutSigCoeffFlag, которая может указывать, что обнуление выполняется, когда применяется MTS. Переменная MtsZeroOutSigCoeffFlag указывает, существует ли коэффициент преобразования в верхней-левой области, где последний значимый коэффициент может существовать, путем обнуления после выполнения MTS, то есть, области за исключением верхней-левой области 16×16, и значение третьей переменной может первоначально устанавливаться в 1 и может изменяться с 1 на 0, когда коэффициент преобразования существует в области за исключением верхней-левой области 16×16. Когда значение третьей переменной равно 0, индекс MTS не кодируется и не сигнализируется.
[513] В соответствии с примером, устройство кодирования может выводить положение последнего значимого коэффициента на основе ширины и высоты верхней-левой области и может бинаризовать информацию положения последнего значимого коэффициента.
[514] В соответствии с примером, ширина и высота верхней-левой области могут выводиться перед сигнализацией индекса MTS.
[515] Также, устройство 200 кодирования может определять, следует или нет выполнять вторичное преобразование, или неразделимое преобразование, конкретно LFNST, на коэффициентах преобразования для текущего блока, и может применять LFNST к коэффициентам преобразования, чтобы вывести модифицированные коэффициенты преобразования.
[516] LFNST является неразделимым преобразованием, которое применяет преобразование без разделения коэффициентов в конкретном направлении, в отличие от первичного преобразования, которое разделяет и преобразует в вертикальном или горизонтальном направлении коэффициенты, которые являются целями преобразования. Такое неразделимое преобразование может представлять собой низкочастотное неразделимое преобразование, которое применяет преобразование только к низкочастотной области, а не ко всему целевому блоку, который является целью преобразования.
[517] Когда ISP применяется к текущему блоку, устройство кодирования может определять, может ли или нет LFNST применяться к высоте и ширине разделенного подблока разбиения.
[518] Устройство кодирования может определять, может ли или нет LFNST применяться к высоте и ширине разделенного подблока разбиения. В этом случае, устройство декодирования может синтаксически анализировать индекс LFNST, когда высота ширина подблока разбиения равны или больше 4.
[519] Устройство кодирования может конфигурировать и выводить информацию изображения, так что по меньшей мере одно из индекса LFNST и индекса MTS сигнализируется на уровне единицы кодирования, и индекс MTS сигнализируется непосредственно после сигнализации индекса LFNST, и остаток, выведенный посредством квантования информации коэффициентов преобразования, может кодироваться (S2250).
[520] Индекс MTS может кодироваться в соответствии с конкретным условием для индекса LFNST, например, когда индекс LFNST равен 0. Также, в соответствии с примером, когда типом дерева текущего блока является дуальное дерево яркости или одиночное дерево и значение индекса LFNST равно 0, индекс MTS может кодироваться.
[521] В соответствии с примером, когда текущий блок является блоком яркости и индекс LFNST указывает 0, устройство кодирования может кодировать индекс MTS.
[522] В соответствии с примером, когда типом дерева текущего блока является дуальное дерево, устройство кодирования может кодировать индекс LFNST для каждого из блока яркости и блока цветности.
[523] Альтернативно, в соответствии с примером, когда типом дерева текущего блока является тип одиночного дерева, устройство кодирования может вывести все коэффициенты преобразования для блока яркости и блока цветности текущего блока и может затем кодировать индекс LFNST на уровне единицы кодирования.
[524] Когда индекс LFNST кодируется на уровне единицы кодирования после выведения всех коэффициентов преобразования, а не на уровне блока преобразования или уровне кодирования остатка, индекс LFNST, отображающий положения полных коэффициентов преобразования для блока яркости и блока цветности, и информация обнуления, затрагиваемая в процессе преобразования, а не информация коэффициента преобразования по блоку яркости или блоку цветности, может кодироваться.
[525] Когда типом дерева текущего блока является тип дуального дерева и кодируется компонент цветности, устройство кодирования может выводить все коэффициенты преобразования компонента Cb и компонента Cr блока цветности и может затем кодировать индекс LFNST на уровне единицы кодирования.
[526] Когда индекс LFNST кодируется на уровне единицы кодирования после выведения всех коэффициентов преобразования не на уровне блока преобразования или на уровне кодирования остатка, индекс LFNST, отображающий положения полных коэффициентов преобразования для компонента Cb и компонента Cr блока цветности, и информация обнуления, затрагиваемая в процессе преобразования, а не информация коэффициента преобразования по любому одному из компонента Cb и компонента Cr блока цветности, может кодироваться.
[527] Когда текущий блок разбивается на множество блоков подразбиения, устройство кодирования может выводить все коэффициенты преобразования для множества блоков подразбиения и может затем кодировать индекс LFNST на уровне единицы кодирования.
[528] Аналогично приведенному выше описанию, когда индекс LFNST анализируется на уровне единицы кодирования после выведения всех коэффициентов преобразования не на уровне блока преобразования или на уровне кодирования остатка, индекс LFNST, отображающий положения полных коэффициентов преобразования для всех блоков подразбиения, и информация обнуления, затрагиваемая в процессе преобразования, а не информация коэффициентов преобразования по некоторым или отдельным блокам подразбиения, может кодироваться.
[529] Когда текущий блок разбивается на множество блоков подразбиения, устройство кодирования может кодировать индекс LFNST независимо от того, существует ли коэффициент преобразования в области, исключая DC положение каждого из множества блоков подразбиения. То есть, если последнему значимому коэффициенту разрешается находиться только в DC положении для всех блоков подразбиения, когда ISP применяется к текущему блоку, сигнализация индекса LFNST может быть разрешена.
[530] В процессе выведения коэффициентов преобразования, устройство кодирования может выводить первую переменную, указывающую, существует ли коэффициент преобразования в области, исключая DC положение текущего блока, и вторую переменную, указывающую, существует ли коэффициент преобразования во второй области, исключая верхнюю-левую первую область текущего блока или блока подразбиения, на который разбивается текущий блок.
[531] Устройство кодирования может кодировать индекс LFNST, когда коэффициент преобразования существует в области, исключая DC положение, и коэффициент преобразования не существует во второй области.
[532] Конкретно, первая переменная может быть переменной LfnstDcOnly и может быть выведена как 0, когда индекс подблока, включающего последний значимый коэффициент в текущем блоке, равен 0, и положение последнего значимого коэффициента в подблоке больше, чем 0, и индекс LFNST может кодироваться, когда первая переменная равна 0.
[533] Первая переменная может быть первоначально установлена в 1 и может сохраняться как 1 или может изменяться на 0 в зависимости от того, существует ли значимый коэффициент в области, исключающей DC положение.
[534] Переменная LfnstDcOnly указывает, существует ли ненулевой коэффициент в положении не-DC компонента для по меньшей мере одного блока преобразования в пределах одной единицы кодирования, может быть равна 0, когда ненулевой коэффициент существует в положении не-DC компонента для по меньшей мере одного блока преобразования в пределах одной единицы кодирования, и может быть равна 1, когда ненулевой коэффициент не существует в положении не-DC компонента для всех блоков преобразования в пределах одной единицы кодирования.
[535] Устройство кодирования может обнулять вторую область текущего блока, где не существуют модифицированные коэффициенты преобразования после выполнения LFNST, и может выводить вторую переменную, указывающую, существует ли коэффициент преобразования во второй области.
[536] Как показано на фиг. 13 и фиг. 14, остальная область текущего блока, где не существуют модифицированные коэффициенты преобразования, может быть обнулена. Вследствие этого обнуления, можно сократить объем вычислений, требуемых для выполнения всего процесса преобразования, и сократить объем операций, требуемых для всего процесса преобразования, таким образом, сокращая потребление мощности, требуемое для выполнения преобразования. Кроме того, может быть сокращено ожидание, вызываемое процессом преобразования, тем самым повышая эффективность кодирования изображения.
[537] Второй переменной может быть переменная LfnstZeroOutSigCoeffFlag, которая может указывать, что обнуление выполняется, когда применяется LFNST. Вторая переменная может быть первоначально установлена в 1 и может изменяться на 0, когда значимый коэффициент существует во второй области.
[538] Переменная LfnstZeroOutSigCoeffFlag может быть выведена как 0, когда индекс подблока, в котором существует последний ненулевой коэффициент, больше, чем 0, и как ширина, так и высота блока преобразования равны или больше, чем 4, или когда положение последнего ненулевого коэффициента в подблоке, в котором существует последний ненулевой коэффициент, больше, чем 7, и размер блока преобразования равен 4×4 или 8×8.
[539] То есть, когда ненулевой коэффициент выводится в области, исключая верхнюю-левую область, где коэффициент преобразования LFNST может существовать в блоке преобразования, или ненулевой коэффициент существует вне восьмого положения в порядке сканирования для блока 4×4 и блока 8×8, переменная LfnstZeroOutSigCoeffFlag устанавливается в 0.
[540] Описание первой области и описание обнуления в случае, где ISP применяется, по существу являются теми же самыми, что и описания, приведенные в способе декодирования, и таким образом избыточное описание будет опущено.
[541] Дополнительно, устройство кодирования может выводить квантованные коэффициенты преобразования путем выполнения квантования на основе коэффициентов преобразования или модифицированных коэффициентов преобразования для текущего блока и может кодировать и выводить информацию изображения, включающую в себя информацию о квантованных коэффициентах преобразования.
[542] Устройство кодирования может генерировать остаточную информацию, включающую в себя информацию о квантованных коэффициентах преобразования. Остаточная информация может включать в себя вышеописанную связанную с преобразованием информацию/синтаксический элемент. Устройство кодирования может кодировать информацию изображения/видео, включая остаточную информацию, и выводить закодированную информацию изображения/видео в форме битового потока.
[543] Более конкретно, устройство кодирования может генерировать информацию о квантованных коэффициентах преобразования и кодировать информацию о сгенерированных квантованных коэффициентах преобразования.
[544] В настоящем раскрытии, по меньшей мере одно из квантования/деквантования и/или преобразования/обратного преобразования может быть опущено. Когда квантование/деквантование опущено, квантованный коэффициент преобразования может упоминаться как коэффициент преобразования. Когда преобразование/обратное преобразование опущено, коэффициент преобразования может упоминаться как коэффициент или остаточный коэффициент или все еще может упоминаться как коэффициент преобразования в целях непротиворечивости выражения.
[545] Кроме того, в настоящем раскрытии, квантованный коэффициент преобразования и коэффициент преобразования могут упоминаться как коэффициент преобразования и масштабированный коэффициент преобразования, соответственно. В этом случае, остаточная информация может включать в себя информацию о коэффициенте(ах) преобразования, и информация о коэффициенте(ах) преобразования может сигнализироваться посредством синтаксиса кодирования остатка. Коэффициенты преобразования могут быть выведены на основе остаточной информации (или информации о коэффициенте(ах) преобразования), и масштабированные коэффициенты преобразования могут быть выведены посредством обратного преобразования (масштабирования) коэффициентов преобразования. Остаточные выборки могут быть выведены на основе обратного преобразования (преобразования) масштабированных коэффициентов преобразования. Эти детали также могут быть применены/выражены в других частях настоящего раскрытия.
[546] В вышеописанных вариантах осуществления, способы поясняются на основе блок-схем последовательностей операций, с помощью последовательности этапов или блоков, но настоящее раскрытие не ограничено этим порядком этапов или блоков, и определенный этап может выполняться в порядке ином, чем описано выше, или одновременно с другим этапом. Дополнительно, специалисту в данной области техники должно быть понятно, что этапы, показанные в блок-схеме последовательности операций выше, не являются исключительными, что другой этап может быть включен или что один или несколько этапов в блок-схеме последовательности операций могут быть удалены без влияния на объем настоящего раскрытия.
[547] Вышеописанные способы в соответствии с настоящим раскрытием могут быть реализованы в форме программного обеспечения, и устройство кодирования и/или устройство декодирования в соответствии с настоящим раскрытием могут быть включены в устройство для обработки изображения, такое как телевизор, компьютер, смартфон, телевизионная приставка, дисплейное устройство и т.д.
[548] Когда варианты осуществления настоящего раскрытия реализованы в программном обеспечении, вышеописанные способы могут быть реализованы как модули (процессы, функции и т.д.) для выполнения вышеописанных функций. Модули могут храниться в памяти и могут исполняться процессором. Память может быть внутренней или внешней по отношению к процессору и может быть соединена с процессором различными хорошо известными средствами. Процессор может включать в себя специализированную интегральную схему (ASIC), другие чипсеты, логическую схему и/или устройство обработки данных. Память может включать в себя постоянную память (ROM), память с произвольным доступом (RAM), флэш-память, карту памяти, носитель хранения и/или другое устройство хранения. То есть, варианты осуществления, описанные в настоящем раскрытии, могут реализовываться и выполняться на процессоре, микропроцессоре, контроллере или чипе. Например, функциональные блоки, показанные на каждом чертеже, могут реализовываться и выполняться на компьютере, процессоре, микропроцессоре, контроллере или чипе.
[549] Кроме того, устройство декодирования и устройство кодирования, к которым применяется настоящее раскрытие, могут быть включены в приемопередатчик мультимедийного вещания, мобильный терминал связи, устройство домашнего кинотеатра, устройство цифрового кинотеатра, камеру наблюдения, устройство для разговора по видео, устройство связи в реальном времени, такой как видеосвязь, мобильное устройство стриминга, носитель хранения, камеру-регистратор, устройство обеспечения услуги видео по требованию (VoD), устройство доставки видео непосредственно от провайдера контента (OTT), устройство обеспечения услуги Интернет-стриминга, устройство трехмерного (3D) видео, устройство видео-телеконференции и медицинское видеоустройство, и могут использоваться для обработки сигнала видео и сигнала данных. Например, видеоустройство OTT может включать в себя игровую консоль, blue-ray плеер, телевизор с Интернет-доступом, систему домашнего кинотеатра, смартфон, планшетный PC, цифровой рекордер видео (DVR) и тому подобное.
[550] Кроме того, способ обработки, к которому применяется настоящее раскрытие, может выполняться в форме программы, исполняемой компьютером, и может храниться в считываемом компьютером носителе записи. Мультимедийные данные, имеющие структуру данных в соответствии с настоящим раскрытием, могут также храниться в считываемых компьютером носителях записи. Считываемый компьютером носитель записи включает в себя все типы устройств хранения и распределенных устройств хранения, в которых хранятся считываемые компьютером данные. Считываемые компьютером носители записи могут включать в себя, например, Blu-ray диск (BD), универсальную последовательную шину (USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, магнитную ленту, флоппи-диск и устройство оптического хранения данных. Дополнительно, считываемый компьютером носитель записи включает в себя носители, реализуемые в форме несущей волны (например, передача через Интернет). Кроме того, битовый поток, сгенерированный способом кодирования, может храниться в считываемом компьютером носителе записи или может передаваться по сетям проводной или беспроводной связи. Дополнительно, варианты осуществления настоящего раскрытия могут быть реализованы как компьютерный программный продукт посредством программных кодов, и программные коды могут исполняться на компьютере посредством вариантов осуществления настоящего раскрытия. Программные коды могут храниться на считываемом компьютером носителе.
[551] Фиг. 23 показывает пример системы стриминга контента, в которой применимо настоящее раскрытие.
[552] Система стриминга контента, в которой применяется настоящее раскрытие, может в широком смысле включать в себя сервер кодирования, стриминговый сервер, веб-сервер, медиа-хранилище, пользовательское оборудование и устройство мультимедийного ввода.
[553] Сервер кодирования функционирует для сжатия цифровых данных контента, введенного из устройств мультимедийного ввода, таких как смартфон, камера, камера-регистратор (камкордер) и т.д., в цифровые данные, чтобы сгенерировать битовый поток и передать его на стриминговый сервер. В качестве другого примера, когда устройство мультимедийного ввода, такое как смартфон, камера, камера-регистратор и т.д., непосредственно генерирует битовый поток, сервер кодирования может опускаться. Битовый поток может генерироваться способом кодирования или способом генерации битового потока, в котором применяется настоящее раскрытие, и стриминговый сервер может временно хранить битовый поток в процессе передачи или приема битового потока.
[554] Стриминговый сервер передает мультимедийные данные на пользовательское оборудование на основе запроса пользователя через веб-сервер, который функционирует как инструмент, который информирует пользователя об услуге. Когда пользователь запрашивает желаемую услугу, веб-сервер переносит запрос на стриминговый сервер, и стриминговый сервер передает мультимедийные данные пользователю. В этом отношении, система стриминга контента может включать в себя отдельный сервер управления, и в этом случае, сервер управления функционирует, чтобы управлять командами/ответами между соответствующими оборудованиями в системе стриминга контента.
[555] Стриминговый сервер может принимать контент из медиа-хранилища и/или сервера кодирования. Например, когда контент принимается от сервера кодирования, контент может приниматься в реальном времени. В этом случае, чтобы обеспечить плавную стриминговую услугу, стриминговый сервер может хранить битовый поток в течение предопределенного периода времени.
[556] Например, пользовательское оборудование может включать в себя мобильный телефон, смартфон, ноутбук, терминал цифрового вещания, персональный цифровой помощник (PDA), портативный мультимедийный плеер (PMP), навигатор, тонкий PC, планшетный PC, ультрабук, носимое устройство (например, терминал типа часов (умные часы), терминал типа очков (умные очки), наголовный дисплей (HMD)), цифровой телевизор, настольный компьютер, цифровой указатель и тому подобное. Каждый из серверов в системе стриминга контента может работать как распределенный сервер, и в этом случае, данные, принимаемые каждым сервером, могут обрабатываться распределенным образом.
[557] Пункты формулы изобретения, раскрытые в настоящем документе, могут комбинироваться различным образом. Например, технические признаки пунктов формулы на способ в настоящем раскрытии могут комбинироваться для реализации или выполнения в устройстве, и технические признаки пунктов формулы на устройство могут комбинироваться для реализации или выполнения в способе. Кроме того, технические признаки пунктов формулы на способ и пунктов формулы на устройство могут комбинироваться для реализации или выполнения в устройстве, и технические признаки пунктов формулы на способ и пунктов формулы на устройство могут комбинироваться для реализации или выполнения в способе.