RU2799629C1 - Способ кодирования изображения на основе преобразования и устройство для его осуществления - Google Patents
Способ кодирования изображения на основе преобразования и устройство для его осуществления Download PDFInfo
- Publication number
- RU2799629C1 RU2799629C1 RU2022103282A RU2022103282A RU2799629C1 RU 2799629 C1 RU2799629 C1 RU 2799629C1 RU 2022103282 A RU2022103282 A RU 2022103282A RU 2022103282 A RU2022103282 A RU 2022103282A RU 2799629 C1 RU2799629 C1 RU 2799629C1
- Authority
- RU
- Russia
- Prior art keywords
- transform
- current block
- lfnst
- block
- index
- Prior art date
Links
Images
Abstract
Изобретение относится к кодированию изображения и, в частности, к кодированию изображения на основе преобразования. Техническим результатом является повышение эффективности кодирования изображения. Результат достигается тем, что декодирование изображения содержит этапы: выведения позиции последнего значимого коэффициента в текущем блоке и коэффициентов преобразования для текущего блока на основе остаточной информации; определения, является ли индекс подблока, включающего в себя последний значимый коэффициент, равным 0 и является ли позиция последнего значимого коэффициента в подблоке большей чем 0; определения, существует ли значимый коэффициент во второй области за исключением первой области в верхнем левом конце текущего блока; и анализа индекса LFNST из битового потока, когда позиция последнего значимого коэффициента определена большей чем 0 в подблоке, в котором индекс равен 0, и значимый коэффициент не существует во второй области. 3 н. и 12 з.п. ф-лы, 18 ил., 13 табл.
Description
Область ТЕХНИКИ
[1] Настоящий документ относится к методу кодирования изображения и, в частности, к способу и устройству для кодирования изображения на основе преобразования в системе кодирования изображения.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[2] В последнее время потребность в изображениях/видео высокого разрешения и высокого качества, таких как изображения/видео сверхвысокой четкости (UHD) 4K или 8K или выше, возросла в различных областях. Так как данные изображения/видео имеют высокое разрешение и высокое качество, передаваемое количество информации или количество битов увеличивается по сравнению с данными обычного изображения. Поэтому, когда данные изображения передаются с использованием носителей, таких как обычная проводная/беспроводная широкополосная линия, или данные изображения/видео сохраняются с использованием существующего носителя хранения, затраты на их передачу и затраты на хранение увеличиваются.
[3] К тому же, в настоящее время возрастают интерес и потребность в иммерсивных медиа, таких как контент или голограммы виртуальной реальности (VR) и искусственной реальности (AR) или тому подобное, возрастает трансляция изображения/видео, имеющих характеристики, отличные от характеристик реального изображения, таких как игровые изображения.
[4] Соответственно, существует необходимость в высокоэффективной технологии сжатия изображения/видео для эффективного сжатия, передачи или хранения и воспроизведения информации изображений/видео высокого разрешения и высокого качества, имеющих различные характеристики, как описано выше.
Краткое описание сущности изобретения
[5] Технический аспект настоящего раскрытия заключается в обеспечении способа и устройства для повышения эффективности кодирования изображения.
[6] Другой технический аспект настоящего раскрытия заключается в обеспечении способа и устройства для повышения эффективности кодирования индекса преобразования.
[7] Еще один технический аспект настоящего раскрытия заключается в обеспечении способа и устройства кодирования изображения с использованием LFNST.
[8] Еще один технический аспект настоящего раскрытия заключается в обеспечении способа и устройства кодирования изображения для обнуления (установки в нуль), выполняемого, когда применяется LFNST.
[9] В соответствии с вариантом осуществления настоящего раскрытия, обеспечен способ декодирования изображения, выполняемый устройством декодирования. Способ может включать в себя: выведение позиции последнего значимого коэффициента в текущем блоке и коэффициентов преобразования для текущего блока на основе остаточной информации; определение, является ли индекс подблока, включающего в себя последний значимый коэффициент, равным 0, и позиция последнего значимого коэффициента в подблоке больше, чем 0; определение указания, существует ли значимый коэффициент во второй области иной, чем первая область сверху-слева текущего блока; получение, посредством анализа (разбора), индекса LFNST из битового потока, когда определено, что позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, больше, чем 0, и значимый коэффициент не существует во второй области; и выведение модифицированных коэффициентов преобразования путем применения матрицы LFNST, выведенной на основе индекса LFNST, к коэффициентам преобразования в первой области.
[10] Способ дополнительно содержит установку первой флаговой информации, указывающей, является ли позиция последнего значимого коэффициента большей, чем 0, в подблоке, имеющем индекс 0, в 1, и когда позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, больше, чем 0, изменение первой флаговой информации в 0 и получение, посредством анализа, индекса LFNST.
[11] Способ дополнительно содержит установку второй флаговой информации, указывающей, существует ли значимый коэффициент во второй области за исключением первой области, в 1, и когда не имеется значимого коэффициента во второй области, сохранение второй флаговой информации как 1 и получение, посредством анализа, индекса LFNST.
[12] Вторая флаговая информация выводится как 0, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, больше, чем 0, и ширина и высота текущего блока равны 4 или более, и разбор в отношении индекса LFNST не выполняется, когда вторая флаговая информация равна 0.
[13] Вторая флаговая информация выводится как 0, когда размер текущего блока составляет 4×4 или 8×8 и позиция последнего значимого коэффициента больше или равна 8, и разбор в отношении индекса LFNST не выполняется, когда вторая флаговая информация равна 0.
[14] В соответствии с другим вариантом осуществления настоящего раскрытия, обеспечен способ кодирования изображения, выполняемый устройством кодирования. Способ может включать в себя: выведение коэффициентов преобразования для текущего блока на основе первичного преобразования для остаточных выборок; выведение модифицированных коэффициентов преобразования для текущего блока на основе коэффициентов преобразования первой области сверху-слева текущего блока и предопределенной матрицы LFNST; обнуление второй области текущего блока, в которой не существуют модифицированные коэффициенты преобразования; формирование информации изображения таким образом, что индекс LFNST, указывающий матрицу LFNST, передается, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, равен 0, позиция последнего значимого коэффициента в подблоке больше, чем 0, и значимый коэффициент не существует во второй области, и вывод информации изображения, включающей в себя остаточную информацию, выведенную посредством квантования модифицированных коэффициентов преобразования и индекса LFNST.
[15] В соответствии с еще одним другим вариантом осуществления настоящего раскрытия, может быть обеспечен цифровой носитель хранения, который хранит данные изображения, включающие в себя закодированную информацию изображения и битовый поток, генерируемый в соответствии со способом кодирования изображения, выполняемым устройством кодирования.
[16] В соответствии с другим вариантом осуществления настоящего раскрытия, может быть обеспечен цифровой носитель хранения, который хранит данные изображения, включающие в себя закодированную информацию изображения и битовый поток, чтобы побуждать устройство декодирования выполнять способ декодирования изображения.
[17] В соответствии с настоящим раскрытием, можно повысить общую эффективность сжатия изображения/видео.
[18] В соответствии с настоящим раскрытием, можно повысить эффективность кодирования индекса преобразования.
[19] Технический аспект настоящего раскрытия может обеспечить способ и устройство кодирования изображения с использованием LFNST.
[20] Технический аспект настоящего раскрытия может обеспечить способ и устройство кодирования изображения для обнуления, когда применяется LFNST.
[21] Результаты, которые могут быть получены с помощью конкретных примеров настоящего раскрытия, не ограничены результатами, перечисленными выше. Например, могут достигаться различные технические результаты, которые специалист в данной области техники сможет понять или получить на основе настоящего раскрытия. Соответственно, конкретные результаты настоящего раскрытия не ограничены теми, которые явно описаны в настоящем раскрытии и могут включать в себя различные результаты, которые можно понять или получить с помощью технических признаков настоящего раскрытия.
Краткое описание чертежей
[22] Фиг. 1 является диаграммой, схематично иллюстрирующей конфигурацию устройства кодирования видео/изображения, в котором могут применяться варианты осуществления настоящего раскрытия.
[23] Фиг. 2 является диаграммой, схематично иллюстрирующей конфигурацию устройства декодирования видео/изображения, в котором могут применяться варианты осуществления настоящего документа.
[24] Фиг. 3 схематично иллюстрирует схему множественного преобразования в соответствии с вариантом осуществления настоящего документа.
[25] Фиг. 4 схематично показывает интра-направленные режимы 65 направлений предсказания.
[26] Фиг. 5 является диаграммой для пояснения RST в соответствии с вариантом осуществления настоящего документа.
[27] Фиг. 6 является диаграммой, иллюстрирующей последовательность компоновки выходных данных прямого первичного преобразования в одномерный вектор в соответствии с примером.
[28] Фиг. 7 является диаграммой, иллюстрирующей последовательность компоновки выходных данных прямого вторичного преобразования в двумерный вектор в соответствии с примером.
[29] Фиг. 8 является диаграммой, иллюстрирующей широкоугольные режимы интра-предсказания в соответствии с вариантом осуществления настоящего документа.
[30] Фиг. 9 является диаграммой, иллюстрирующей форму блока, к которой применяется LFNST.
[31] Фиг. 10 является диаграммой, иллюстрирующей компоновку выходных данных прямого LFNST в соответствии с примером.
[32] Фиг. 11 является диаграммой, иллюстрирующей, что число выходных данных для прямого LFNST ограничено до максимум 16 в соответствии с примером.
[33] Фиг. 12 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 4×4 LFNST в соответствии с примером.
[34] Фиг. 13 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с примером.
[35] Фиг. 14 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с другим примером.
[36] Фиг. 15 является блок-схемой последовательности операций для пояснения способа декодирования изображения в соответствии с примером.
[37] Фиг. 16 является блок-схемой последовательности операций для пояснения способа кодирования изображения в соответствии с примером.
[38] Фиг. 17 схематично иллюстрирует пример системы кодирования видео/изображения, к которой применимо настоящее раскрытие.
[39] Фиг. 18 иллюстрирует структуру системы потоковой передачи контента, к которой применимо настоящее раскрытие.
Описание примерных вариантов осуществления
[40] Хотя настоящий документ допускает различные модификации и включает различные варианты осуществления, его конкретные варианты осуществления, показанные на чертежах в качестве примера, будут далее описаны детально. Однако это не подразумевает ограничения настоящего раскрытия конкретными вариантами осуществления, описанными здесь. Термины, используемые здесь, предназначены только для описания конкретных вариантов осуществления, но не предназначены для ограничения технической идеи настоящего раскрытия. Формы единственного числа включают в себя формы множественного числа, если только контекст явно не указывает иное. Термины, такие как "включать в себя" и "иметь", предназначены указывать, что признаки, числа, этапы, операции, элементы, компоненты или их комбинации, используемые в следующем описании, существуют, и, таким образом, не должны пониматься так, что возможность существования или добавления одного или более других признаков, чисел, этапов, операций, элементов, компонентов или их комбинация заранее исключается.
[41] Между тем, каждый компонент на чертежах, описанный в настоящем документе, иллюстрируется независимо для удобства описания касательно различных характеристических функций, и это не означает, что каждый компонент реализуется как отдельные аппаратные средства или отдельное программное обеспечение. Например, два или более из этих компонентов могут комбинироваться для образования одного компонента, или один компонент может делиться на множество компонентов. Варианты осуществления, в которых компоненты комбинируются и/или разделяются, будут включены в объем патентных прав настоящего раскрытия, если они не отклоняются от сущности настоящего раскрытия.
[42] Далее, предпочтительные варианты осуществления настоящего раскрытия будут пояснены более подробно со ссылкой на прилагаемые чертежи. К тому же, одинаковые ссылочные позиции используются для одинаковых компонентов на чертежах, и повторные описания одинаковых компонентов будут опущены.
[43] Настоящий документ относится к кодированию видео/изображения. Например, способ/пример, раскрытый в настоящем документе, может относиться к стандарту VVC (многоцелевого кодирования видео) (ITU-T Rec. H266), стандарту кодирования видео/изображения следующего поколения после VVC или другим стандартам, относящимся к кодированию видео (например, стандарт HEVC (высокоэффективного кодирования видео) (ITU-T Rec. H.265), стандарт EVC (существенного кодирования видео) стандарт AVS2 и т.д.).
[44] В настоящем документе, могут быть обеспечены различные варианты осуществления, относящиеся к кодированию видео/изображения, и варианты осуществления могут также комбинироваться друг с другом, если не специфицировано иное.
[45] В настоящем документе, видео может относиться к последовательности изображений по времени. Картинка обычно относится к единице, представляющей одно изображение в конкретной временной области, и вырезка/мозаичный элемент представляет собой единицу, составляющую часть картинки. Вырезка/мозаичный элемент может включать в себя одну или более единиц дерева кодирования (CTU). Одна картинка может состоять из одной или более вырезок/мозаичных элементов. Одна картинка может состоять из одной или более групп мозаичных элементов. Одна группа мозаичных элементов может включать в себя один или более мозаичных элементов.
[46] Пиксел или пел может означать наименьшую единицу, составляющую одну картинку (или изображение). Также, ‘дискретный отсчет’ (‘выборка’) может использоваться как термин, соответствующий пикселу. Выборка может, в общем, представлять пиксел или значение пиксела и может представлять только пиксел/значение пиксела компонента яркости или только пиксел/значение пиксела компонента цветности. Альтернативно, выборка может относиться к значению пиксела в пространственной области, или когда это значение пиксела преобразуется в частотную область, она может относиться к коэффициенту преобразования в частотной области.
[47] Единица может представлять базовую единицу обработки изображения. Единица может включать в себя по меньшей мере одно из конкретной области картинки и информации, относящейся к области. Одна единица может включать в себя один блок яркости и два блока цветности (например, cb, cr). Единица и такой термин как блок, область или тому подобное могут использоваться взаимозаменяемо соответственно обстоятельствам. В общем случае, блок M×N может включать в себя набор (или массив) выборок (или массивов выборок) или коэффициентов преобразования, состоящих из M столбцов и N строк.
[48] В этом документе, символы "/" или "," должны интерпретироваться как указывающие "и/или". Например, выражение "A/B" может означать "A и/или B". Дополнительно, "A, B" может означать "A и/или B". Кроме того, "А/В/С" может означать "по меньшей мере одно из А, В и/или С". Также, "А/В/С" может означать "по меньшей мере одно из А, В и/или С".
[49] Кроме того, в настоящем документе, термин "или" должен интерпретироваться как указывающий "и/или". Например, выражение "A или B" может включать 1) только A, 2) только B и/или 3) как A, так и B. Другими словами, термин "или" в настоящем документе должен интерпретироваться как указывающий "дополнительно или альтернативно".
[50] В настоящем раскрытии, "по меньшей мере одно из A и B" может означать "только A", "только B" или "как A, так и B". Также, в настоящем раскрытии, выражение "по меньшей мере одно из A или B" или "по меньшей мере одно из A и/или B" может интерпретироваться как "по меньшей мере одно из A и B".
[51] Кроме того, в настоящем раскрытии, по меньшей мере одно из A, B и C" может означать "только A", "только B", "только C" или "любая комбинация A, B и C". Также, "по меньшей мере одно из A, B или C" или "по меньшей мере одно из A, B и/или C" может означать "по меньшей мере одно из A, B и C".
[52] Кроме того, круглые скобки, используемые в настоящем раскрытии, могут означать "например". Конкретно, когда указано "предсказание (интра-предсказание)", это может означать, что "интра-предсказание" предлагается как пример "предсказания". Другими словами, "предсказание" в настоящем раскрытии не ограничено "интра-предсказанием", и "интра-предсказание" может предлагаться в качестве примера "предсказания". Также, когда указано "предсказание (т.е., интра-предсказание)", это также означает, что "интра-предсказание" предлагается как пример "предсказания".
[53] Технические признаки, отдельно описанные на одном чертеже в настоящем раскрытии, могут быть реализованы по отдельности или вместе.
[54] Фиг. 1 является диаграммой, схематично иллюстрирующей конфигурацию устройства кодирования видео/изображения, к которой могут применяться варианты осуществления настоящего документа. Далее, устройство кодирования видео, может включать в себя устройство кодирования изображения.
[55] Со ссылкой на фиг. 1, устройство 100 кодирования включает в себя модуль 110 разбиения изображения, предсказатель 120, процессор 130 остатка и энтропийный кодер 140, сумматор 150, фильтр 160 и память 170. Предсказатель 120 может включать в себя интер-предсказатель 121 и интра-предсказатель 122. Процессор 130 остатка может включать в себя преобразователь 132, квантователь 133, деквантователь 134 и обратный преобразователь 135. Процессор 130 остатка может дополнительно включать в себя вычитатель 131. Сумматор 150 может называться реконструктором или генератором восстановленного блока. Модуль 110 разбиения изображения, предсказатель 120, процессор 130 остатка, энтропийный кодер 140, сумматор 150 и фильтр 160 могут быть сконфигурированы по меньшей мере одним аппаратным компонентом (например, чипсетом кодера или процессором) в соответствии с вариантом осуществления. К тому же, память 170 может включать в себя буфер декодированной картинки (DPB) или может быть сконфигурирована цифровым носителем хранения. Компонент аппаратных средств может дополнительно включать в себя память 170 как внутренний/внешний компонент.
[56] Модуль 110 разбиения изображения может разбивать входное изображение (или картинку или кадр), введенное в устройство 200 кодирования, в одну или единиц обработки. Например, единица обработки может называться единицей кодирования (CU). В этом случае, единица кодирования может рекурсивно разбиваться в соответствии со структурой квадродерева/двоичного дерева/троичного дерева (QTBTTT) из единицы дерева кодирования (CTU) или наибольшей единицы кодирования (LCU). Например, одна единица кодирования может разбиваться на множество единиц кодирования большей глубины на основе структуры квадродерева, структуры двоичного дерева и/или троичного дерева. В этом случае, например, структура квадродерева может применяться первой, и структура двоичного дерева и/или структура троичного дерева может применяться позже. Альтернативно, структура двоичного дерева может применяться первой. Процедура кодирования в соответствии с настоящим раскрытием может выполняться на основе конечной единицы кодирования, которая больше не разбивается. В этом случае, наибольшая единица кодирования может использоваться как конечная единица кодирования на основе эффективности кодирования в соответствии с характеристиками изображения, или если необходимо, единица кодирования может рекурсивно разбиваться на единицы кодирования большей глубины, и единица кодирования, имеющая оптимальный размер, может использоваться как конечная единица кодирования. Здесь, процедура кодирования может включать в себя процедуру предсказания, преобразования и восстановления, которые будут описаны далее. В качестве примера, процессор может дополнительно включать в себя единицу предсказания (PU) или единицу преобразования (TU). В этом случае, единица предсказания и единица преобразования могут разделяться или разбиваться из вышеупомянутой конечной единицы кодирования. Единица предсказания может представлять собой единицу предсказания выборки, и единица преобразования может представлять собой единицу для выведения коэффициента преобразования и/или единицу для выведения остаточного сигнала из коэффициента преобразования.
[57] Единица может использоваться взаимозаменяемо с такими терминами, как блок или область в некоторых случаях. В общем случае, блок M×N может представлять набор выборок или коэффициентов преобразования, состоящих из M столбцов и N строк. Выборка может, в общем, представлять пиксел или значение пиксела, может представлять только пиксел/значение пиксела компонента яркости или представлять только пиксел/значение пиксела компонента цветности. Выборка может использоваться как термин, соответствующий одной картинке (или изображению) для пиксела или пела.
[58] В устройстве 100 кодирования, сигнал предсказания (предсказанный блок, массив выборок предсказания), выведенный из интер-предсказателя 121 или интра-предсказателя 122, вычитается из входного сигнала изображения (исходного блока, исходного массива выборок), чтобы сгенерировать остаточный сигнал (остаточный блок, остаточный массив выборок), и сгенерированный остаточный сигнал передается на преобразователь 132. В этом случае, как показано, модуль для вычитания сигнала предсказания (предсказанного блока, массива выборок предсказания) из входного сигнала изображения (исходного блока, исходного массива выборок) в устройстве 100 кодирования может называться вычитателем 131. Предсказатель может выполнять предсказание на блоке, подлежащем обработке (далее называемом текущим блоком), и генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Предсказатель может определять, применяется ли интра-предсказание или интер-предсказание на текущем блоке или на основе CU. Как описано далее в описании каждого режима предсказания, предсказатель может генерировать различную информацию, относящуюся к предсказанию, такую как информация режима предсказания, и передавать сгенерированную информацию на энтропийный кодер 140. Информация о предсказании может кодироваться в энтропийном кодере 140 и выводиться в форме битового потока.
[59] Интра-предсказатель 122 может предсказывать текущий блок путем ссылки на выборки в текущей картинке. Указанные выборки могут быть расположены по соседству с текущим блоком или могут быть разнесены в соответствии с режимом предсказания. В интра-предсказании, режимы предсказания могут включать в себя множество ненаправленных режимов и множество направленных режимов. Ненаправленный режим может включать в себя, например, режим DC и планарный режим. Направленный режим может включать в себя, например, 33 направленных режима предсказания или 65 направленных режимов предсказания в соответствии со степенью детализации направления предсказания. Однако это только пример, больше или меньше направленных режимов предсказания могут использоваться в зависимости от настройки. Интра-предсказатель 122 может определять режим предсказания, применяемый к текущему блоку, путем использования режима предсказания, применяемого к соседнему блоку.
[60] Интер-предсказатель 121 может выводить предсказанный блок для текущего блока на основе опорного блока (опорного массива выборок), специфицированного вектором движения на опорной картинке. Здесь, чтобы уменьшить количество информации движения, передаваемой в режиме интер-предсказания, информация движения может предсказываться в единицах блоков, подблоков или выборках на основе корреляции информации движения между соседним блоком и текущим блоком. Информация движения может включать в себя вектор движения и индекс опорной картинки. Информация движения может дополнительно включать в себя информацию направления интер-предсказания (L0-предсказание, L1-предсказание, Bi-предсказание и т.д.). В случае интер-предсказания, соседний блок может включать в себя пространственный соседний блок, представленный в текущей картинке, и временной соседний блок, представленный в опорной картинке. Опорная картинка, включающая в себя опорный блок, и опорная картинка, включающая в себя временной соседний блок, могут быть одинаковыми или разными. Временной соседний блок может называться совместно расположенным (совмещенным) опорным блоком, co-located CU (colCU) и т.п., и опорная картинка, включающая в себя временной соседний блок, может называться совмещенной картинкой (colPic). Например, интер-предсказатель 121 может конфигурировать список кандидатов информации движения на основе соседних блоков и генерировать информацию, указывающую, какой кандидат используется, чтобы вывести вектор движения и/или индекс опорной картинки текущего блока. Интер-предсказание может выполняться на основе различных режимов предсказания. Например, в случае режима пропуска и режима объединения, интер-предсказатель 221 может использовать информацию движения соседнего блока как информацию движения текущего блока. В режиме пропуска, в отличие от режима объединения, остаточный сигнал может не передаваться. В случае режима предсказания вектора движения (MVP), вектор движения соседнего блока может использоваться как предсказатель вектора движения, и вектор движения текущего блока может указываться путем сигнализации разности векторов движения.
[61] Предсказатель 120 может генерировать сигнал предсказания на основе различных способов предсказания, описанных ниже. Например, предсказатель может не только применять интра-предсказание или интер-предсказание, чтобы предсказать один блок, но также одновременно применять как интра-предсказание, так и интер-предсказание. Это может называться комбинированным интер- и интра-предсказанием (CIIP). К тому же, предсказатель может быть основан на режиме предсказания внутри-блочного копирования (IBC) или режиме палитры для предсказания блока. Режим предсказания IBC или режим палитры могут использоваться для кодирования контента изображения/видео игры или тому подобного, например, кодирования экранного контента (SCC). IBC в основном выполняет предсказание в текущей картинке, но может выполняться аналогично интер-предсказанию тем, что опорный блок выводится в текущей картинке. То есть, IBC может использовать по меньшей мере один из методов интер-предсказания, описанных в настоящем раскрытии. Режим палитры может рассматриваться как пример интра-кодирования или интра-предсказания. Когда применяется режим палитры, значение выборки в пределах картинки может сигнализироваться на основе информации о таблице палитры и индексе палитры.
[62] Сигнал предсказания, сгенерированный предсказателем (включающим в себя интер-предсказатель 121 и/или интра-предсказатель 122), может использоваться, чтобы генерировать восстановленный сигнал или чтобы генерировать остаточный сигнал. Преобразователь 132 может генерировать коэффициенты преобразования путем применения метода преобразования к остаточному сигналу. Например, метод преобразования может включать в себя по меньшей мере одно из дискретного косинусного преобразования (DCT), дискретного синусного преобразования (DST), преобразования Карунена-Лоэва (KLT), преобразования на основе графа (GBT) или условно-нелинейного преобразования (CNT). Здесь, GBT означает преобразование, полученное из графа, когда информация отношения между пикселами представлена графом. CNT относится к преобразованию, сгенерированному на основе сигнала предсказания, сгенерированного с использованием всех ранее восстановленных пикселов. К тому же, процесс преобразования может применяться к квадратным блокам пикселов, имеющим одинаковый размер, или может применяться к блокам, имеющим переменный размер, а не квадратным.
[63] Квантователь 133 может квантовать коэффициенты преобразования и передавать их на энтропийный кодер 140, и энтропийный кодер 140 может кодировать квантованный сигнал (информацию о квантованных коэффициентах преобразования) и выводить битовый поток. Информация о квантованных коэффициентах преобразования может называться информацией остатка. Квантователь 133 может переупорядочивать квантованные коэффициенты преобразования типа блока в форму одномерного вектора на основе порядка сканирования коэффициентов и генерировать информацию о квантованных коэффициентах преобразования на основе квантованных коэффициентов преобразования в форме одномерного вектора. Информация о коэффициентах преобразования может генерироваться. Энтропийный кодер 140 может выполнять различные способы кодирования, такие как, например, экспоненциальное кодирование Голомба, контекстно-адаптивное кодирование с переменной длиной (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и тому подобное. Энтропийный кодер 140 может кодировать информацию, необходимую для восстановления видео/изображения, отличную от квантованных коэффициентов преобразования (например, значения синтаксических элементов и т.д.), вместе или отдельно. Закодированная информация (например, закодированная информация видео/изображения) может передаваться или сохраняться в единицах NAL (уровень сетевой абстракции) в форме битового потока. Информация видео/изображения может дополнительно включать в себя информацию о различных наборах параметров, таких как набор параметров адаптации (APS), набор параметров картинки (PPS), набор параметров последовательности (SPS) или набор параметров видео (VPS). К тому же, информация видео/изображения может дополнительно включать в себя общую информацию ограничения. В настоящем документе, информация и/или синтаксические элементы, передаваемые/сигнализируемые от устройства кодирования на устройство декодирования, могут быть включены в информацию видео/картинки. Информация видео/изображения может кодироваться посредством вышеописанной процедуры кодирования и включаться в битовый поток. Битовый поток может передаваться по сети или может сохраняться в цифровом носителе хранения. Сеть может включать в себя сеть вещания и/или сеть связи, и цифровой носитель хранения может включать в себя различные носители хранения, такие как USB, SD, CD, DVD, Blu-ray, HDD, SSD и тому подобное. Передатчик (не показан), передающий сигнал, выведенный из энтропийного кодера 140, и/или модуль хранения (не показан), хранящий сигнал, могут быть включены как внутренний/внешний элемент устройства 100 кодирования, и альтернативно, передатчик может быть включен в энтропийный кодер 140.
[64] Квантованные коэффициенты преобразования, выведенные из квантователя 133, могут использоваться, чтобы генерировать сигнал предсказания. Например, остаточный сигнал (остаточный блок или остаточные выборки) может восстанавливаться путем применения деквантования и обратного преобразования к квантованным коэффициентам преобразования деквантователем 134 и обратным преобразователем 135. Сумматор 150 добавляет восстановленный остаточный сигнал к сигналу предсказания, выведенному из интер-предсказателя 121 или интра-предсказателя 122, чтобы сгенерировать восстановленный сигнал (восстановленную картинку, восстановленный блок, восстановленный массив выборок). Если отсутствует остаток для блока, подлежащего обработке, например, в случае, где применяется режим пропуска, предсказанный блок может использоваться как восстановленный блок. Сумматор 150 может называться реконструктором или генератором восстановленного блока. Сгенерированный восстановленный сигнал может использоваться для интра-предсказания следующего блока, подлежащего обработке, в текущей картинке и может использоваться для интер-предсказания следующей картинки посредством фильтрации, как описано ниже.
[65] Между тем, отображение яркости с масштабированием цветности (LMCS) может применяться во время кодирования и/или восстановления картинки.
[66] Фильтр 160 может улучшать субъективное/объективное качество изображения путем применения фильтрации к восстановленному сигналу. Например, фильтр 160 может генерировать модифицированную восстановленную картинку путем применения различных способов фильтрации к восстановленной картинке и сохранять модифицированную восстановленную картинку в памяти 170, конкретно, DPB памяти 170. Различные способы фильтрации могут включать в себя, например, фильтрацию устранения блочности, адаптивное смещение выборки, адаптивный контурный фильтр, двунаправленный фильтр и тому подобное. Фильтр 160 может генерировать различную информацию, относящуюся к фильтрации, и передавать сгенерированную информацию на энтропийный кодер 140, как описано далее в описании каждого способа фильтрации. Информация, относящаяся к фильтрации, может кодироваться энтропийным кодером 140 и выводиться в форме битового потока.
[67] Модифицированная восстановленная картинка, передаваемая в память 170, может использоваться как опорная картинка в интер-предсказателе 121. Когда интер-предсказание применяется посредством устройства кодирования, можно избежать рассогласования предсказания между устройством 100 кодирования и устройством декодирования, и эффективность кодирования может улучшаться.
[68] DPB памяти 170 DPB может хранить модифицированную восстановленную картинку для использования в качестве опорной картинки в интер-предсказателе 121. Память 170 может хранить информацию движения блока, из которой выводится (или кодируется) информация движения в текущей картинке, и/или информацию движения блоков в картинке, которые уже были восстановлены. Сохраненная информация движения может передаваться на интер-предсказатель 121 и использоваться как информация движения пространственного соседнего блока или информация движения временного соседнего блока. Память 170 может хранить восстановленные выборки восстановленных блоков в текущей картинке и может переносить восстановленные выборки на интра-предсказатель 122.
[69] Фиг. 2 является схематичной диаграммой, иллюстрирующей конфигурацию устройства декодирования видео/изображения, к которой может применяться вариант(ы) осуществления настоящего раскрытия.
[70] Со ссылкой на фиг. 2, устройство 200 декодирования может включать в себя энтропийный декодер 210, процессор 220 остатка, предсказатель 230, сумматор 240, фильтр 250, память 260. Предсказатель 230 может включать в себя интер-предсказатель 231 и интра-предсказатель 232. Процессор 220 остатка может включать в себя деквантователь 221 и обратный преобразователь 221. Энтропийный декодер 210, процессор 220 остатка, предсказатель 230, сумматор 240 и фильтр 250 могут быть сконфигурированы компонентом аппаратных средств (например, чипсетом декодера или процессором) в соответствии с вариантом осуществления. К тому же, память 260 может включать в себя буфер декодированной картинки (DPB) или может быть сконфигурирована цифровым носителем хранения. Компонент аппаратных средств может дополнительно включать в себя память 260 как внутренний/внешний компонент.
[71] Когда битовый поток, включающий в себя информацию видео/изображения, вводится, устройство 200 декодирования может восстанавливать изображение, соответствующее процессу, в котором информация видео/изображения обрабатывается в устройстве кодирования согласно фиг. 1. Например, устройство 200 декодирования может выводить единицы/блоки на основе информации, относящейся к разбиению блока, полученной из битового потока. Устройство 200 декодирования может выполнять декодирование с использованием процессора, применяемого к устройству кодирования. Таким образом, процессор декодирования может представлять собой, например, единицу кодирования, и единица кодирования может разбиваться в соответствии со структурой квадродерева, структурой двоичного дерева и/или структурой троичного дерева из единицы дерева кодирования или наибольшей единицы кодирования. Одна или более единиц преобразования могут выводиться из единицы кодирования. Восстановленный сигнал изображения, декодированный и выведенный посредством устройства 300 декодирования, может воспроизводиться посредством устройства воспроизведения.
[72] Устройство 200 декодирования может принимать сигнал, выведенный из устройства кодирования согласно фиг. 1 в форме битового потока, и принятый сигнал может декодироваться посредством энтропийного декодера 210. Например, энтропийный декодер 210 может выполнять анализ битового потока, чтобы вывести информацию (например, информацию видео/изображения), необходимую для восстановления изображения (или восстановления картинки). Информация видео/изображения может дополнительно включать в себя информацию о различных наборах параметров, таких как набор параметров адаптации (APS), набор параметров картинки (PPS), набор параметров последовательности (SPS) или набор параметров видео (VPS). К тому же, информация видео/изображения может дополнительно включать в себя общую информацию ограничения. Устройство декодирования может дополнительно декодировать картинку на основе информации о наборе параметров и/или общей информации ограничения. Сигнализированная/принятая информация и/или синтаксические элементы, описанные далее в настоящем раскрытии, могут быть декодированы для декодирования процедуры декодирования и получены из битового потока. Например, энтропийный декодер 210 кодирует информацию в битовом потоке на основе способа кодирования, такого как экспоненциальное кодирование Голомба, CAVLC или CABAC, и выводит синтаксические элементы, требуемые для восстановления изображения, и квантованные значения коэффициентов преобразования для остатка. Более конкретно, способ энтропийного декодирования CABAC может принимать бин, соответствующий каждому синтаксическому элементу в битовом потоке, определять контекстную модель с использованием информации синтаксического элемента цели декодирования, информации декодирования целевого блока декодирования или информации символа/бина, декодированного на предыдущей стадии, и выполнять арифметическое декодирование на бине путем предсказания вероятности появления бина в соответствии с определенной контекстной моделью, и генерировать символ соответственно значению каждого синтаксического элемента. В этом случае, способ энтропийного декодирования CABAC может обновлять контекстную модель с использованием информации декодированного символа/бина для контекстной модели следующего символа/бина после определения контекстной модели. Информация, относящаяся к предсказанию, среди информации, декодированной энтропийным декодером 210, может предоставляться на предсказатель (интер-предсказатель 232 и интра-предсказатель 231), и остаточное значение, на котором энтропийное декодирование было выполнено в энтропийном декодере 210, то есть, квантованные коэффициенты преобразования и связанная информация параметров, может вводиться в процессор 220 остатка. Процессор 220 остатка может выводить остаточный сигнал (остаточный блок, остаточные выборки, остаточный массив выборок). К тому же, информация о фильтрации среди информации, декодированной энтропийным декодером 210, может предоставляться на фильтр 250. Между тем, приемник (не показан) для приема сигнала, выведенного из устройства кодирования, может быть дополнительно сконфигурирован как внутренний/внешний элемент устройства 200 декодирования, или приемник может быть компонентом энтропийного декодера 210. Между тем, устройство декодирования в соответствии с настоящим документом может называться устройством декодирования видео/изображения/картинки, и устройство декодирования может классифицироваться на декодер информации (декодер информации видео/изображения/картинки) и декодер выборки (декодер выборки видео/изображения/картинки). Декодер информации может включать в себя энтропийный декодер 210, и декодер выборки может включать в себя по меньшей мере одно из деквантователя 221, обратного преобразователя 222, сумматора 240, фильтра 250, памяти 260, интер-предсказателя 232 и интра-предсказателя 231.
[73] Деквантователь 221 может деквантовать квантованные коэффициенты преобразования и выводить коэффициенты преобразования. Деквантователь 221 может переупорядочивать квантованные коэффициенты преобразования в форме двумерного блока. В этом случае, переупорядочивание может выполняться на основе порядка сканирования коэффициентов, выполняемого в устройстве кодирования. Деквантователь 221 может выполнять деквантование на квантованных коэффициентах преобразования с использованием параметра квантования (например, информации размера шага квантования) и получать коэффициенты преобразования.
[74] Обратный преобразователь 222 обратно преобразует коэффициенты преобразования, чтобы получить остаточный сигнал (остаточный блок, остаточный массив выборок).
[75] Предсказатель может выполнять предсказание на текущем блоке и генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Предсказатель может определять, применяется ли интра-предсказание или интер-предсказание к текущему блоку, на основе информации о предсказании, выведенной из энтропийного декодера 210, и может определять конкретный режим интра/интер-предсказания.
[76] Предсказатель 220 может генерировать сигнал предсказания на основе различных способов предсказания, описанных ниже. Например, предсказатель может не только применять интра-предсказание или интер-предсказание, чтобы предсказывать один блок, но также одновременно применять интра-предсказание и интер-предсказание. Это может называться комбинированным интер- и интра-предсказанием (CIIP). К тому же, предсказатель может быть основан на режиме предсказания внутри-блочного копирования (IBC) или режиме палитры для предсказания блока. Режим предсказания IBC или режим палитры могут использоваться для кодирования контента изображения/видео игры или тому подобного, например, кодирования экранного контента (SCC). IBC в основном выполняет предсказание в текущей картинке, но может выполняться аналогично интер-предсказанию тем, что опорный блок выводится в текущей картинке. То есть, IBC может использовать по меньшей мере один из методов интер-предсказания, описанных в настоящем документе. Режим палитры может рассматриваться как пример интра-кодирования или интра-предсказания. Когда режим палитры применяется, значение выборки в пределах картинки может сигнализироваться на основе информации о таблице палитры и индексе палитры.
[77] Интра-предсказатель 231 может предсказывать текущий блок путем ссылки на выборки в текущей картинке. Указанные выборки могут быть расположены по соседству с текущим блоком или могут быть разнесены в соответствии с режимом предсказания. В интра-предсказании, режимы предсказания могут включать в себя множество ненаправленных режимов и множество направленных режимов. Интра-предсказатель 231 может определять режим предсказания, применяемый к текущему блоку, с использованием режима предсказания, применяемого к соседнему блоку.
[78] Интер-предсказатель 232 может выводить предсказанный блок для текущего блока на основе опорного блока (опорного массива выборок), специфицированного вектором движения на опорной картинке. В этом случае, чтобы уменьшить количество информации движения, передаваемой в режиме интер-предсказания, информация движения может предсказываться в единицах блоков, подблоков или выборках на основе корреляции информации движения между соседним блоком и текущим блоком. Информация движения может включать в себя вектор движения и индекс опорной картинки. Информация движения может дополнительно включать в себя информацию направления интер-предсказания (L0-предсказание, L1-предсказание, Bi-предсказание и т.д.). В случае интер-предсказания, соседний блок может включать в себя пространственный соседний блок, представленный в текущей картинке, и временной соседний блок, представленный в опорной картинке. Например, интер-предсказатель 232 может конструировать список кандидатов информации движения на основе соседних блоков и выводить вектор движения текущего блока и/или индекс опорной картинки на основе принятой информации выбора кандидата. Интер-предсказание может выполняться на основе различных режимов предсказания, и информация о предсказании может включать в себя информацию, указывающую режим интер-предсказания для текущего блока.
[79] Сумматор 240 может генерировать восстановленный сигнал (восстановленную картинку, восстановленный блок, восстановленный массив выборок) путем добавления полученного остаточного сигнала к сигналу предсказания (предсказанному блоку, предсказанному массиву выборок), выведенному из предсказателя (включающего в себя интер-предсказатель 232 и/или интра-предсказатель 231). Если отсутствует остаток для блока, подлежащего обработке, например, когда применяется режим пропуска, предсказанный блок может использоваться как восстановленный блок.
[80] Сумматор 240 может называться реконструктором или генератором восстановленного блока. Сгенерированный восстановленный сигнал может использоваться для интра-предсказания следующего блока, подлежащего обработке в текущей картинке, может выводиться посредством фильтрации, как описано ниже, или может использоваться для интер-предсказания следующей картинки.
[81] Между тем, отображение яркости с масштабированием цветности (LMCS) может применяться в процессе декодирования картинки.
[82] Фильтр 250 может улучшать субъективное/объективное качество изображения путем применения фильтрации к восстановленному сигналу. Например, фильтр 250 может генерировать модифицированную восстановленную картинку путем применения различных способов фильтрации к восстановленной картинке и сохранять модифицированную восстановленную картинку в памяти 260, конкретно, DPB памяти 260. Различные способы фильтрации могут включать в себя, например, фильтрацию устранения блочности, адаптивное смещение выборки, адаптивный контурный фильтр, двунаправленный фильтр и тому подобное.
[83] (Модифицированная) восстановленная картинка, хранящаяся в DPB памяти 260, может использоваться как опорная картинка в интер-предсказателе 232. Память 260 может хранить информацию движения блока, из которого выводится (или декодируется) информация движения в текущей картинке, и/или информацию движения блоков в картинке, которые уже были восстановлены. Сохраненная информация движения может передаваться на интер-предсказатель 160 для использования в качестве информации движения пространственного соседнего блока или информации движения временного соседнего блока. Память 260 может хранить восстановленные выборки восстановленных блоков в текущей картинке и переносить восстановленные выборки на интра-предсказатель 231.
[84] В настоящем документе, варианты осуществления, описанные для фильтра 160, интер-предсказателя 121 и интра-предсказателя 122 устройства 100 кодирования, могут быть теми же самыми или соответственно применяться, чтобы соответствовать фильтру 250, интер-предсказателю 232 и интра-предсказателю 231 устройства 200 декодирования.
[85] Как описано выше, в выполнении кодирования видео, предсказание выполняется, чтобы повысить эффективность сжатия. Предсказанный блок, включающий в себя выборки предсказания для текущего блока, то есть, целевой блок кодирования, может генерироваться путем предсказания. В этом случае, предсказанный блок включает в себя выборки предсказания в пространственной области (или области пикселов). Предсказанный блок выводится одинаково в устройстве кодирования и устройстве декодирования. Устройство кодирования может повысить эффективность кодирования путем сигнализации, на устройство декодирования, информации об остатке (информации остатка) между исходным блоком и предсказанным блоком, а не исходное значение выборки самого исходного блока. Устройство декодирования может выводить остаточный блок, включающий в себя остаточные выборки, на основе информации остатка и может генерировать восстановленный блок, включающий в себя восстановленные выборки, путем суммирования остаточного блока и предсказанного блока и может генерировать восстановленную картинку, включающую в себя восстановленные блоки.
[86] Информация остатка может генерироваться посредством процедуры преобразования и квантования. Например, устройство кодирования может выводить остаточный блок между исходным блоком и предсказанным блоком, может выводить коэффициенты преобразования путем выполнения процедуры преобразования на остаточных выборках (остаточном массиве выборок), включенных в остаточный блок, может выводить квантованные коэффициенты преобразования путем выполнения процедуры квантования на коэффициентах преобразования и может сигнализировать информацию остатка на устройство декодирования (посредством битового потока). В этом случае, информация остатка может включать в себя информацию, такую как информация значения, информация местоположения, схема преобразования, ядро преобразования и параметр квантования квантованных коэффициентов преобразования. Устройство декодирования может выполнять процесс деквантования/обратного преобразования на основе информации остатка и выводить остаточные выборки (или остаточный блок). Устройство декодирования может генерировать восстановленную картинку на основе предсказанного блока и остаточного блока. Устройство кодирования может выводить остаточный блок путем деквантования/обратного преобразования квантованных коэффициентов преобразования для ссылки для интер-предсказания последующей картинки и может генерировать восстановленную картинку.
[87] Фиг. 3 схематично иллюстрирует метод множественного преобразования в соответствии с вариантом осуществления настоящего раскрытия.
[88] Со ссылкой на фиг. 3, преобразователь может соответствовать преобразователю в устройстве кодирования согласно фиг. 1, и обратный преобразователь может соответствовать обратному преобразователю в устройстве кодирования согласно фиг. 1 или обратному преобразователю в устройстве декодирования согласно фиг. 2.
[89] Преобразователь может выводить коэффициенты (первичного) преобразования путем выполнения первичного преобразования на основе остаточных выборок (массива остаточных выборок) в остаточном блоке (S310). Это первичное преобразование может упоминаться как основное (базовое) преобразование. Здесь, первичное преобразование может быть основано на выборе множественного преобразования (MTS), и когда множественное преобразование применяется как первичное преобразование, оно может упоминаться как множественное основное преобразование.
[90] Множественное основное преобразование может представлять способ преобразования, дополнительно использующий дискретное косинусное преобразование (DCT) типа 2 и дискретное синусное преобразование (DST) типа 7, DCT типа 8 и/или DST типа 1. То есть, множественное основное преобразование может представлять способ преобразования для преобразования остаточного сигнала (или остаточного блока) пространственной области в коэффициенты преобразования (или коэффициенты первичного преобразования) частотной области на основе множества ядер преобразования, выбранных из DCT типа 2, DST типа 7, DCT типа 8 и DST типа 1. Здесь, коэффициенты первичного преобразования могут называться коэффициентами временного преобразования с точки зрения преобразователя.
[91] Иными словами, когда применяется обычный способ преобразования, коэффициенты преобразования могут генерироваться путем применения преобразования из пространственной области в частотную область для остаточного сигнала (или остаточного блока) на основе DCT типа 2. В отличие от этого, когда применяется множественное основное преобразование, коэффициенты преобразования (или коэффициенты первичного преобразования) могут генерироваться путем применения преобразования из пространственной области в частотную область для остаточного сигнала (или остаточного блока) на основе DCT типа 2, DST типа 7, DCT типа 8 и/или DST типа 1. Здесь, DCT типа 2, DST типа 7, DCT типа 8 и DST типа 1 могут называться типом преобразования, ядром преобразования или основой (базой) преобразования. Эти типы преобразования DCT/DST могут определяться на основе базисных функций.
[92] Когда выполняется множественное основное преобразование, ядро вертикального преобразования и ядро горизонтального преобразования для целевого блока может быть выбрано из ядер преобразования, вертикальное преобразование может выполняться на целевом блоке на основе ядра вертикального преобразования, и горизонтальное преобразование может выполняться на целевом блоке на основе ядра горизонтального преобразования. Здесь, горизонтальное преобразование может указывать преобразование на горизонтальных компонентах целевого блока, и вертикальное преобразование может указывать преобразование на вертикальных компонентах целевого блока. Ядро вертикального преобразования/ядро горизонтального преобразования может адаптивно определяться на основе режима предсказания и/или индекса преобразования для целевого блока (CU или подблока), включающего в себя остаточный блок.
[93] Кроме того, в соответствии с примером, если первичное преобразование выполняется путем применения MTS, отношение отображения для ядер преобразования может быть установлено путем установки специальных базисных функций в предопределенные значения и комбинирования базисных функций для применения в вертикальном преобразовании или горизонтальном преобразовании. Например, когда ядро горизонтального преобразования выражено как trTypeHor и ядро преобразования вертикального направления выражено как trTypeVer, значение 0 для trTypeHor или trTypeVer может быть установлено в DCT2, значение 1 для trTypeHor или trTypeVer может быть установлено в DST7, и значение 2 для trTypeHor или trTypeVer может быть установлено в DCT8.
[94] В этом случае, информация индекса 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.
[95] В одном примере, наборы ядер преобразования в соответствии с информацией индекса MTS показаны в следующей таблице.
[96] [Таблица 1]
[97] Преобразователь может выводить модифицированные коэффициенты (вторичного) преобразования путем выполнения вторичного преобразования на основе коэффициентов (первичного) преобразования (S320). Первичное преобразование является преобразованием из пространственной области в частотную область, и вторичное преобразование относится к преобразованию в более сжатое представление с использованием корреляции, существующей между коэффициентами (первичного) преобразования. Вторичное преобразование моет включать в себя неразделимое преобразование. В этом случае, вторичное преобразование может называться неразделимым вторичным преобразованием (NSST) или зависимым от режима неразделимым вторичным преобразованием (MDNSST). Неразделимое вторичное преобразование может представлять преобразование, которое генерирует модифицированные коэффициенты преобразования (или коэффициенты вторичного преобразования) для остаточного сигнала путем вторичного преобразования, на основе матрицы неразделимого преобразования, коэффициентов (первичного) преобразования, выведенных посредством первичного преобразования. При этом вертикальное преобразование и горизонтальное преобразование не могут применяться отдельно (или горизонтальное и вертикальное преобразования не могут применяться независимо) к коэффициентам (первичного) преобразования, но преобразования могут применяться одновременно на основе матрицы неразделимого преобразования. Иными словами, неразделимое вторичное преобразование может представлять способ преобразования, в котором вертикальные и горизонтальные компоненты коэффициентов (первичного) преобразования не разделяются, и например, двумерные сигналы (коэффициенты преобразования) переупорядочиваются в одномерный сигнал с некоторым определенным направлением (например, направление "сначала по строке" или направление "сначала по столбцу"), и затем модифицированные коэффициенты преобразования (или коэффициенты вторичного преобразования) генерируются на основе матрицы неразделимого преобразования. Например, в соответствии с порядком сначала по строке, блоки M×N располагаются в линию в порядке первой строки, второй строки, … и N-ой строки. В соответствии с порядком сначала по столбцу, блоки M×N располагаются в линию в порядке первого столбца, второго столбца, … и N-го столбца. Неразделимое вторичное преобразование может применяться к верхней-левой области блока, сконфигурированного с коэффициентами (первичного) преобразования (далее, может упоминаться как блок коэффициентов преобразования). Например, если ширина (W) и высота (H) блока коэффициентов преобразования равны или больше, что чем 8, 8×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) блока коэффициентов преобразования.
[98] Конкретно, например, если используется входной блок 4×4, то неразделимое вторичное преобразование может выполняться следующим образом.
[99] Входной блок X 4×4 может быть представлен следующим образом.
[100] [Уравнение 1]
[102] [Уравнение 2]
[103] В Уравнении 2, вектор является одномерным вектором, полученным переупорядочением двумерного блока X в Уравнении 1 в соответствии с порядком сначала по строке.
[104] В этом случае, вторичное неразделимое преобразование может вычисляться, как указано ниже.
[105] [Уравнение 3]
[106] В этом уравнении, представляет вектор коэффициентов преобразования, и T представляет матрицу 16×16 (неразделимого) преобразования.
[107] Посредством приведенного выше Уравнения 3, можно вывести вектор 16×1 коэффициентов преобразования , и может быть переупорядочен в блок 4×4 с помощью порядка сканирования (горизонтальное, вертикальное, диагональное и т.п.). Однако вышеописанное вычисление является примером, и может использоваться преобразование гиперкуба Гивенса (HyGT) или тому подобное для вычисления неразделимого вторичного преобразования или для уменьшения вычислительной сложности неразделимого вторичного преобразования.
[108] Между тем, в неразделимом вторичном преобразовании, ядро преобразования (база преобразования, тип преобразования) может выбираться как зависимое от режима. В этом случае, режим может включать в себя режим интра-предсказания и/или режим интер-предсказания.
[109] Как описано выше, неразделимое вторичное преобразование может выполняться на основе преобразования 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.
[110] Здесь, чтобы выбрать зависимое от режима ядро преобразования, два неразделимых ядра вторичного преобразования на каждый набор преобразований для неразделимого вторичного преобразования могут быть сконфигурированы как для преобразования 8×8, так и преобразования 4×4, и может иметься четыре набора преобразований. То есть, четыре набора преобразований могут быть сконфигурированы для преобразования 8×8, и четыре набора преобразований могут быть сконфигурированы для преобразования 4×4. В этом случае, каждый из четырех наборов преобразований для преобразования 8×8 может включать в себя два ядра преобразования 8×8, и каждый из четырех наборов преобразований для преобразования 4×4 может включать в себя два ядра преобразования 4×4.
[111] Однако, поскольку размер преобразования, то есть, размер области, к которой применяется преобразование, может иметь, например, размер иной, чем 8×8 или 4×4, число наборов может составлять n, и число ядер преобразования в каждом наборе может составлять k.
[112] Набор преобразований может упоминаться как набор NSST или набор LFNST. Конкретный набор среди наборов преобразований может быть выбран, например, на основе режима интра-предсказания текущего блока (CU или подблока). Низкочастотное неразделимое преобразование (LFNST) может быть примером сокращенного неразделимого преобразования, которое будет описано далее, и представляет неразделимое преобразование для низкочастотного компонента.
[113] Для ссылки, например, режим интра-предсказания может включать в себя два ненаправленных (или неугловых) режима интра-предсказания и 65 направленных (или угловых) режимов интра-предсказания. Ненаправленные режимы интра-предсказания могут включать в себя планарный режим интра-предсказания № 0 и DC режим интра-предсказания № 1, и направленные режимы интра-предсказания могут включать в себя 65 режимов интра-предсказания № 2 до 66. Однако это является примером, и этот документ может применяться, даже если число режимов интра-предсказания отличается. Между тем, в некоторых случаях, режим интра-предсказания № 67 может быть дополнительно использован, и режим интра-предсказания № 67 может представлять режим линейной модели (LM).
[114] Фиг. 4 показывает в качестве примера интра-направленные режимы 65 направлений предсказания.
[115] Со ссылкой на фиг. 4, на основе режима интра-предсказания 34, имеющего диагональное влево-вверх направление предсказания, режимы интра-предсказания могут быть разделены на режимы интра-предсказания, имеющие горизонтальную направленность, и режимы интра-предсказания, имеющие вертикальную направленность. На фиг. 4, H и V обозначают горизонтальную направленность и вертикальную направленность, соответственно, и числа от -32 до 32 указывают смещения в единицах 1/32 в дискретной позиции сетки. Эти числа могут представлять смещение для значения индекса режима. Режимы интра-предсказания от 2 до 33 имеют горизонтальную направленность, и режимы интра-предсказания от 34 до 66 имеют вертикальную направленность. Строго говоря, режим интра-предсказания 34 может рассматриваться как ни горизонтальный, ни вертикальный, но может классифицироваться как принадлежащий горизонтальной направленности при определении набора преобразований вторичного преобразования. Это объясняется тем, что входные данные транспонируются, чтобы использоваться для режима вертикального направления симметрично на основе режима 34 интра-предсказания, и режим выравнивания входных данных для горизонтального режима используется для режима 34 интра-предсказания. Транспонирование входных данных означает, что строки и столбцы двумерного блока M×N данных переключаются в N×M данные. Режим 18 интра-предсказания и режим 50 интра-предсказания могут представлять горизонтальный режим интра-предсказания и вертикальный режим интра-предсказания, соответственно, и режим 2 интра-предсказания может упоминаться как диагональный вправо-вверх режим интра-предсказания, так как режим 2 интра-предсказания имеет левый опорный пиксел и выполняет предсказание в направлении вправо-вверх. Аналогичным образом, режим 34 интра-предсказания может упоминаться как диагональный вправо-вниз режим интра-предсказания, и режим 66 интра-предсказания может упоминаться как диагональный влево-вниз режим интра-предсказания.
[116] В соответствии с примером, четыре набора преобразований в соответствии с режимом интра-предсказания могут отображаться, например, как показано в следующей таблице.
[117] [Таблица 2]
[118] Как показано в Таблице 2, любо один из четырех наборов преобразований, то есть, lfnstTrSetIdx, может быть отображен на любой из четырех индексов, то есть, от 0 до 3, в соответствии с режимом интра-предсказания.
[119] Когда определено, что конкретный набор используется для неразделимого преобразования, одно из k ядер преобразования в конкретном наборе может быть выбрано с помощью индекса неразделимого вторичного преобразования. Устройство кодирования может выводить индекс неразделимого вторичного преобразования, указывающий конкретное ядро преобразования, на основе проверки по критерию "скорость-искажение" (RD) и может сигнализировать индекс неразделимого вторичного преобразования на устройство декодирования. Устройство декодирования может выбрать одно из k ядер преобразования в конкретном наборе на основе индекса неразделимого вторичного преобразования. Например, значение 0 индекса LFNST может относиться к первому ядру неразделимого вторичного преобразования, значение 1 индекса LFNST может относиться к второму ядру неразделимого вторичного преобразования, и значение 2 индекса LFNST может относиться к третьему ядру неразделимого вторичного преобразования. Альтернативно, значение 0 индекса LFNST может указывать, что первое неразделимое вторичное преобразование не применяется к целевому блоку, и значения от 1 до 3 индекса LFNST могут указывать три ядра преобразования.
[120] Преобразователь может выполнять неразделимое вторичное преобразование на основе выбранного ядра преобразования и может получать модифицированные коэффициенты (вторичного) преобразования. Как описано выше, модифицированные коэффициенты преобразования могут быть выведены как коэффициенты преобразования, квантованные с помощью квантователя, и могут кодироваться и сигнализироваться на устройство декодирования и передаваться на деквантователь/обратный преобразователь в устройстве кодирования.
[121] Между тем, как описано выше, если вторичное преобразование опущено, коэффициенты (первичного) преобразования, которые являются выходом первичного (разделимого) преобразования, могут быть выведены как коэффициенты преобразования, квантованные с помощью квантователя, как описано выше, и могут кодироваться и сигнализироваться на устройство декодирования и передаваться на деквантователь/обратный преобразователь в устройстве кодирования.
[122] Обратный преобразователь может выполнять ряд процедур в обратном порядке по отношению к тому, как они выполнялись в вышеописанном преобразователе. Обратный преобразователь может принимать (деквантованные) коэффициенты преобразования и выводить коэффициенты (первичного) преобразования путем выполнения вторичного (обратного) преобразования (S350) и может получать остаточный блок (остаточные выборки) путем выполнения первичного (обратного) преобразования на коэффициентах (первичного) преобразования (S360). В этой связи, коэффициенты первичного преобразования могут называться модифицированными коэффициентами преобразования с точки зрения обратного преобразователя. Как описано выше, устройство кодирования и устройство декодирования могут генерировать восстановленный блок на основе остаточного блока и предсказанного блока и могут генерировать восстановленную картинку на основе восстановленного блока.
[123] Устройство декодирования может, кроме того, включать в себя определитель применения вторичного обратного преобразования (или элемент для определения, следует ли применять вторичное обратное преобразование) и определитель вторичного обратного преобразования (или элемент для определения вторичного обратного преобразования). Определитель применения вторичного обратного преобразования может определять, следует ли применять вторичное обратное преобразование. Например, вторичное обратное преобразование может представлять собой NSST, RST или LFNST, и определитель применения вторичного обратного преобразования может определять, следует ли применять вторичное обратное преобразование на основе флага вторичного преобразования, полученного путем анализа битового потока. В другом примере, определитель применения вторичного обратного преобразования может определять, следует ли применять вторичное обратное преобразование, на основе коэффициента преобразования остаточного блока.
[124] Определитель вторичного обратного преобразования может определять вторичное обратное преобразование. В этом случае, определитель вторичного обратного преобразования может определять вторичное обратный преобразование, применяемое к текущему блоку, на основе набора преобразований LFNST (NSST или RST), специфицированного в соответствии с режимом интра-предсказания. В варианте осуществления, способ определения вторичного преобразования может определяться в зависимости от способа определения первичного преобразования. Различные комбинации первичных преобразований и вторичных преобразований могут определяться в соответствии с режимом интра-предсказания. Кроме того, в примере, определитель вторичного обратного преобразования может определять область, к которой применяется вторичное обратный преобразование, на основе размера текущего блока.
[125] Между тем, как описано выше, если вторичное (обратное) преобразование опущено, (деквантованные) коэффициенты преобразования могут приниматься, первичное (разделимое) обратное преобразование может выполняться, и может быть получен остаточный блок (остаточные выборки). Как описано выше, устройство кодирования и устройство декодирования могут генерировать восстановленный блок на основе остаточного блока и предсказанного блока и могут генерировать восстановленную картинку на основе восстановленного блока.
[126] Между тем, в настоящем раскрытии, сокращенное вторичное преобразование (RST), в котором размер матрицы (ядра) преобразования уменьшен, может применяться в концепции NSST, чтобы уменьшить объем вычислений и памяти, требуемый для неразделимого вторичного преобразование.
[127] Между тем, ядро преобразования, матрица преобразования и коэффициент, образующий матрицу ядра преобразования, то есть, коэффициент ядра или коэффициент матрицы, описанные в настоящем раскрытии, могут быть выражены в 8 битах. Это может быть условием для реализации в устройстве декодирования и устройстве кодирования и может уменьшить объем памяти, требуемой для хранения ядра преобразования со снижением производительности, которое может рационально допускаться, по сравнению с существующими случаями 9 битов или 10 битов. Дополнительно, выражение матрицы ядра в 8 битах может позволить использовать небольшой умножитель и может быть более подходящим для инструкций архитектуры одного потока инструкций и множества потоков данных (SIMD), используемых для оптимальной реализации программного обеспечения.
[128] В настоящей спецификации, термин “RST” может означать преобразование, которое выполняется на остаточных выборках для целевого блока на основе матрицы преобразования, размер которой уменьшен в соответствии с коэффициентом уменьшения. В случае выполнения сокращенного преобразования, объем вычислений, требуемых для преобразования, может быть уменьшен, вследствие сокращения в размере матрицы преобразования. То есть, RST может использоваться для решения проблемы вычислительной сложности, проявляющейся при неразделимом преобразовании или преобразовании блока большого размера.
[129] RST может определяться различными терминами, такими как сокращенное преобразование, сокращенное вторичное преобразование, преобразование сокращения, упрощенное преобразование, простое преобразование и тому подобное, и наименование RST не ограничивается перечисленными примерами. Альтернативно, поскольку RST в основном выполняется в низкочастотной области, включающей ненулевой коэффициент в блоке преобразования, оно может упоминаться как низкочастотное неразделимое преобразование (LFNST). Индекс преобразования может упоминаться как индекс LFNST.
[130] Между тем, когда вторичное обратное преобразование выполняется на основе RST, обратный преобразователь 135 устройства 100 кодирования и обратный преобразователь 222 устройства 200 декодирования могут включать в себя обратный сокращенный вторичный преобразователь, который выводит модифицированные коэффициенты преобразования на основе обратного RST коэффициентов преобразования, и обратный первичный преобразователь, который выводит остаточные выборки для целевого блока на основе обратного первичного преобразования модифицированных коэффициентов преобразования. Обратное первичное преобразование относится к обратному преобразованию первичного преобразования, применяемого к остатку. В настоящем раскрытии, выведение коэффициента преобразования на основе преобразования может относиться к выведению коэффициента преобразования путем применения преобразования.
[131] Фиг. 5 является диаграммой, иллюстрирующей RST в соответствии с вариантом осуществления настоящего раскрытия.
[132] В настоящем раскрытии, "целевой блок" может относиться к текущему блоку, подлежащему кодированию, остаточному блоку или блоку преобразования.
[133] В RST в соответствии с примером, N-мерный вектор может быть отображен на R-мерный вектор, расположенный в другом пространстве, так что матрица сокращенного преобразования может определяться, где R меньше, чем N. N может означать квадрат длины стороны блока, к которому применяется преобразование, или общее число коэффициентов преобразования, соответствующих блоку, к которому применяется преобразование, и сокращенный коэффициент может означать значение R/N. Сокращенный фактор (коэффициент) может упоминаться как сокращенный коэффициент, коэффициент сокращения, упрощенный коэффициент, простой коэффициент или определяться различными другими терминами. Между тем, R может упоминаться как сокращенный коэффициент, но в зависимости от обстоятельств, сокращенный коэффициент может означать R. Кроме того, в зависимости от обстоятельств, сокращенный коэффициент может означать значение N/R.
[134] В примере, сокращенный фактор или сокращенный коэффициент может сигнализироваться посредством битового потока, но пример не ограничен этим. Например, предопределенное значение для сокращенного фактора или сокращенного коэффициента может быть сохранено в каждом из устройства 100 кодирования и устройства 200 декодирования, и в этом случае, сокращенный фактор или сокращенный коэффициент может не сигнализироваться отдельно.
[135] Размер матрицы сокращенного преобразования в соответствии с примером может быть R×N меньше, чем N×N, размер матрицы обычного преобразования, и может быть определен как в Уравнении 4 ниже.
[136] [Уравнение 4]
[137] Матрица T в блоке сокращенного преобразования, показанном на фиг. 5(a) может означать матрицу TR×N Уравнения 4. Как показано на фиг. 5(a), когда матрица TR×N сокращенного преобразования умножается на остаточные выборки для целевого блока, могут быть выведены коэффициенты преобразования для целевого блока.
[138] В примере, если размер блока, к которому применяется преобразование, составляет 8×8 и R=16 (т.е. R/N=16/64=1/4), то RST в соответствии с фиг. 5(a) может быть выражено как матричная операция, как показано в Уравнение 5 ниже. В этом случае, память и вычисление умножения могут быть сокращены до примерно 1/4 посредством сокращенного коэффициента.
[139] В настоящем раскрытии, матричная операция может пониматься как операция умножения вектор-столбца на матрицу, расположенную слева от вектор-столбца, чтобы получить вектор-столбец.
[140] [Уравнение 5]
[141] В Уравнении 5, r1 до r64 могут представлять остаточные выборки для целевого блока и могут быть конкретно коэффициентами преобразования, сгенерированными путем применения первичного преобразования. В результате вычисления Уравнения 5, могут быть выведены коэффициенты преобразования ci для целевого блока, и процесс выведения ci может быть таким, как в Уравнении 6.
[142] [Уравнение 6]
[143] В результате вычисления Уравнения 6, могут быть выведены коэффициенты преобразования c1 до cR для целевого блока. То есть, когда R=16, могут быть выведены коэффициенты преобразования c1 до c16 для целевого блока. Если, вместо RST, применяется регулярное преобразование, и матрица преобразования размером 64×64 (N×N) умножается на остаточные выборки размером 64×1 (N×1), то только 16 (R) коэффициентов преобразования выводятся для целевого блока, поскольку применялось RST, хотя 64 (N) коэффициентов преобразования выведены для целевого блока. Поскольку общее число коэффициентов преобразования для целевого блока сокращается от N до R, объем данных, передаваемых устройством 100 кодирования на устройство 200 декодирования, уменьшается, так что эффективность передачи между устройством 100 кодирования и устройством 200 декодирования может быть повышена.
[144] При рассмотрении с точки зрения размера матрицы преобразования, размер матрицы регулярного преобразования составляет 64×64 (N×N), но размер матрицы сокращенного преобразования уменьшается до 16×64 (R×N), поэтому использование памяти в случае выполнения RST может быть сокращено в отношении R/N по сравнению со случаем выполнения регулярного преобразования. Кроме того, по сравнению с числом вычислений умножения N×N в случае использования матрицы регулярного преобразования, использование матрицы сокращенного преобразования может уменьшить число вычислений умножения в отношении R/N (R×N).
[145] В примере, преобразователь 132 устройства 100 кодирования может выводить коэффициенты преобразования для целевого блока путем выполнения первичного преобразования и основанного на RST вторичного преобразования на остаточных выборках для целевого блока. Эти коэффициенты преобразования могут передаваться на обратный преобразователь устройства 200 декодирования, и обратный преобразователь 222 устройства 200 декодирования может выводить модифицированные коэффициенты преобразования на основе обратного сокращенного вторичного преобразования (RST) для коэффициентов преобразования и может выводить остаточные выборки для целевого блока на основе обратного первичного преобразования для модифицированных коэффициентов преобразования.
[146] Размер матрицы TR×N обратного RST в соответствии с примером на N×R меньше, чем размер N×N матрицы регулярного обратного преобразования, и имеет отношение транспозиции с матрицей TR×N сокращенного преобразования, показанной в уравнении 4.
[147] Матрица Tt в блоке сокращенного обратного преобразования, показанном на фиг. 5(b), может означать матрицу TR×N Т обратного RST (надстрочный индекс T означает транспозицию). Когда матрица TR×N Т обратного RST умножается на коэффициенты преобразования для целевого блока, как показано на фиг. 5(b), могут быть выведены модифицированные коэффициенты преобразования для целевого блока или остаточные выборки для текущего блока. Матрица TR×N Т обратного RST может быть выражена как (TR×N Т)NxR.
[148] Более конкретно, когда обратное RST применяется как вторичное обратное преобразование, модифицированные коэффициенты преобразования для целевого блока могут быть выведены, когда матрица TR×N Т обратного RST умножается на коэффициенты преобразования для целевого блока. Между тем, обратное RST может применяться как обратное первичное преобразование, и в этом случае, могут быть выведены остаточные выборки для целевого блока, когда матрица TR×N Т обратного RST умножается на коэффициенты преобразования для целевого блока.
[149] В примере, если размер блока, к которому применяется обратное преобразование, составляет 8×8 и R=16 (т.е., R/N=16/64= 1/4), то RST в соответствии с фиг. 5(b) может быть выражено как матричная операция, как показано в Уравнение 7 ниже.
[150] [Уравнение 7]
[151] В Уравнении 7, c1 до c16 могут представлять коэффициенты преобразования для целевого блока. В результате вычисления Уравнения 7, могут быть выведены ri, представляющие модифицированные коэффициенты преобразования для целевого блока или остаточные выборки для целевого блока, и процесс выведения ri может быть таким, как в Уравнении 8.
[152] [Уравнение 8]
[153] В результате вычисления Уравнения 8, могут быть выведены r1 до rN, представляющие модифицированные коэффициенты преобразования для целевого блока или остаточные выборки для целевого блока. При рассмотрении с точки зрения размера матрицы обратного преобразования, размер матрицы регулярного обратного преобразования составляет 64×64 (N×N), но размер матрицы сокращенного обратного преобразования уменьшается до 64×16 (R×N), так что использование памяти в случае выполнения обратного RST может быть уменьшено в отношении R/N по сравнению со случаем выполнения регулярного обратного преобразования. Дополнительно, по сравнению с числом вычислений умножения N×N в случае использования матрицы регулярного обратного преобразования, использование матрицы сокращенного обратного преобразования может уменьшить число вычислений умножения в отношении R/N (N×R).
[154] Конфигурация набора преобразований, показанная в Таблице 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 в блоке коэффициентов преобразования.
[155] В соответствии с вариантом осуществления настоящего раскрытия, для преобразования в процессе кодирования, только 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 могут быть заполнены нулями.
[156] Для обратного преобразования в процессе декодирования, может использоваться транспонированная матрица вышеописанной матрицы ядра преобразования. То есть, когда обратное RST или LFNST выполняется в процессе обратного преобразования устройством декодирования, входные данные коэффициентов, к которым применяется обратное RST, конфигурируются в одномерный вектор в соответствии с предопределенным порядком расположения, и вектор модифицированных коэффициентов, полученный умножением одномерного вектора и соответствующей матрицы обратного RST слева от одномерного вектора, может быть упорядочен в двумерный блок в соответствии с предопределенным порядком расположения.
[157] В итоге, в процессе преобразования, когда RST или LFNST применяется к области 8×8, матричная операция 48 применяется к коэффициентам преобразования в верхней-левой, верхней-правой и нижней-левой областях области 8×8, исключая нижнюю-правую область среди коэффициентов преобразования в области 8×8 и матрицы 16×48 ядра преобразования. Для матричной операции, 48 коэффициентов преобразования вводятся в одномерном массиве. Когда выполняется матричная операция, выводятся 16 модифицированных коэффициентов преобразования, и модифицированные коэффициенты преобразования могут быть упорядочены в верхней-левой области в области 8×8.
[158] Напротив, в процессе обратного преобразования, когда обратное 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, исключая нижнюю-правую область.
[159] Когда вторичное обратное преобразование основано на RST, обратный преобразователь 135 устройства 100 кодирования и обратный преобразователь 222 устройства 200 декодирования может включать в себя обратный сокращенный вторичный преобразователь для выведения модифицированных коэффициентов преобразования на основе обратного RST на коэффициентах преобразования и обратный первичный преобразователь для выведения остаточных выборок для целевого блока на основе обратного первичного преобразования на модифицированных коэффициентах преобразования. Обратное первичное преобразование относится к обратному преобразованию первичного преобразования, применяемого к остатку. В настоящем раскрытии, выведение коэффициента преобразования на основе преобразования может относиться к выведению коэффициента преобразования путем применения преобразования.
[160] Вышеописанное неразделимое преобразование, LFNST, будет описано детально следующим образом. LFNST может включать в себя прямое преобразование устройством кодирования и обратное преобразование устройством декодирования.
[161] Устройство кодирования принимает результат (или часть результата), выведенный после применения первичного (ядра) преобразования в качестве входа, и применяет прямое вторичное преобразование (вторичное преобразование).
[162] [Уравнение 9]
[163] В Уравнении 9, x и y являются входами и выходами вторичного преобразования, соответственно, и G является матрицей, представляющей вторичное преобразование, и базисные векторы преобразования образованы вектор-столбцами. В случае обратного LFNST, когда размерность матрицы преобразования G выражается как [число строк × число столбцов], в случае прямого LFNST, транспозиция матрицы G становится размерностью GT.
[164] Для обратного LFNST, размерами матрицы G являются [48×16], [48×8], [16×16], [16×8], и матрица [48×8] и матрица [16×8] являются частичными матрицами, полученными дискретизацией 8 базисных векторов преобразования слева от матрицы [48×16] и матрицы [16×16], соответственно.
[165] С другой стороны, для прямого LFNST, размерностями матрицы GT являются [16×48], [8×48], [16×16], [8×16], и матрица [8×48] и матрица [8×16] являются частичными матрицами, полученным дискретизацией 8 базисных векторов преобразования сверху матрицы [16×48] и матрицы [16×16], соответственно.
[166] Поэтому, в случае прямого LFNST, вектор [48×1] или вектор [16×1] возможен как вход x, и вектор [16×1] или вектор [8×1] возможен как выход y. В кодировании и декодировании видео, выход прямого первичного преобразования является двумерными (2D) данными, поэтому для создания вектора [48×1] или вектора [16×1] в качестве входа x, одномерный вектор должен быть сформирован путем надлежащего упорядочивания 2D данных, которые являются выходом прямого преобразования.
[167] Фиг. 6 является диаграммой, иллюстрирующей a последовательность компоновки выходных данных прямого первичного преобразования в одномерный вектор в соответствии с примером. Левые диаграммы (a) и (b) на фиг. 6 показывают последовательность для построения вектора [48×1], и правые диаграммы (a) и (b) на фиг. 6 показывают последовательность для построения вектора [16×1]. В случае LFNST, одномерный вектор x может быть получен путем последовательной компоновки 2D данных в том же порядке, что и в (a) и (b) на фиг. 6.
[168] Направление компоновки выходных данных прямого первичного преобразования может определяться в соответствии с режимом интра-предсказания текущего блока. Например, когда режим интра-предсказания текущего блока находится в горизонтальном направлении относительно диагонального направления, выходные данные прямого первичного преобразования могут быть скомпонованы в порядке (a) согласно фиг. 6, и когда режим интра-предсказания текущего блока находится в вертикальном направлении относительно диагонального направления, выходных данных прямого первичного преобразования могут быть скомпонованы в порядке (b) на фиг. 6.
[169] В соответствии с примером, порядок компоновки, отличающийся от порядков компоновки (a) и (b) на фиг. 6, может применяться, и чтобы получить тот же результат (вектор y), что и получаемый при применении порядков компоновки (a) и (b) на фиг. 6, вектор-столбцы матрицы G могут быть переупорядочены в соответствии с порядком компоновки. То есть, можно переупорядочить вектор-столбцы G так, что каждый элемент, составляющий вектор x, всегда умножается на тот же самый базисный вектор преобразования.
[170] Поскольку выход y, полученный с помощью Уравнения 9, является одномерным вектором, когда требуются двумерные данные в качестве входных данных в процессе использования результата прямого вторичное преобразования в качестве входа, например, в процессе выполнения квантования или кодирования остатка, выходной вектор y в Уравнении 9 должен быть надлежащим образом снова скомпонован как 2D данные.
[171] Фиг. 7 является диаграммой, иллюстрирующей последовательность компоновки выходных данных прямого вторичного преобразования в двумерный вектор в соответствии с примером.
[172] В случае LFNST, выходные значения могут быть скомпонованы в 2D блок в соответствии с предопределенным порядком сканирования. (a) на фиг. 7 показывает, что когда выходом y является вектор [16×1], выходные значения скомпонованы в 16 позициях 2D блока в соответствии с порядком диагонального сканирования. (b) на фиг. 7 показывает, что когда выходом y является вектор [8×1], выходные значения скомпонованы в 8 позициях 2D блока в соответствии с порядком диагонального сканирования, и остальные 8 позиций заполнены нулями. X в (b) на фиг. 7 указывает, что эта позиция заполнена нулем.
[173] В соответствии с другим примером, поскольку порядок, в котором обрабатывается выходной вектор y при выполнении квантования или кодирования остатка, может быть предварительно установлен, выходной вектор y может не компоноваться в 2D блок, как показано на фиг. 7. Однако, в случае кодирования остатка, кодирование данных может выполняться в единицах 2D блока (например, 4×4), таких как CG (группа коэффициентов), и в этом случае, данные компонуются в соответствии с конкретным порядком, как в порядке диагонального сканирования на фиг. 7.
[174] Между тем, устройство декодирования может конфигурировать одномерный входной вектор y путем компоновки двумерных данных, выводимых с помощью процесса деквантования или тому подобного в соответствии с предварительно установленным порядком сканирования для обратного преобразования. Входной вектор y может выводиться как выходной вектор x посредством следующего уравнения.
[175] [Уравнение 10]
x=Gy
[176] В случае обратного LFNST, выходной вектор x может выводиться путем умножения входного вектора y, который представляет собой вектор [16×1] или вектор [8×1], на матрицу G. Для обратного LFNST, выходной вектор x может представлять собой либо вектор [48×1], либо вектор [16×1].
[177] Выходной вектор x скомпонован в двумерный блок в соответствии с порядком, показанным на фиг. 6, и скомпонован как двумерные данные, и эти двумерные данные становятся входными данными (или частью входных данных) обратного первичного преобразования.
[178] Соответственно, обратное вторичное преобразование представляет собой в целом процесс, противоположный процессу прямого вторичного преобразования, и в случае обратного преобразования, в отличие от прямого направления, сначала применяется обратное вторичное преобразование, а затем применяется обратное первичное преобразование.
[179] В обратном LFNST, одна из 8 матриц [48×16] и 8 матриц [16×16] может быть выбрана как матрица G преобразования. Следует ли применять матрицу [48×16] или матрицу [16×16], зависит от размера и формы блока.
[180] Кроме того, 8 матриц могут быть выведены из четырех наборов преобразований, как показано в Таблице 2 выше, и каждый набор преобразований может состоять из двух матриц. То, какой набор преобразований использовать среди 4 наборов преобразований, определяется в соответствии с режимом интра-предсказания, и более конкретно, набор преобразований определяется на основе значения режима интра-предсказания, расширенного с учетом широкоугольного интра-предсказания (WAIP). То, какую матрицу выбрать из двух матриц, составляющих выбранный набор преобразований, выводится с помощью сигнализации индекса. Более конкретно, 0, 1 и 2 возможны в качестве передаваемого значения индекса, 0 может указывать, что LFNST не применяется, и 1 и 2 могут указывать любую одну из двух матриц преобразования, составляющих набор преобразований, выбранный на основе значения режима интра-предсказания.
[181] Фиг. 8 является диаграммой, иллюстрирующей широкоугольные режимы интра-предсказания в соответствии с вариантом осуществления настоящего документа.
[182] Обычное значение режима интра-предсказания может иметь значения от 0 до 66 и от 81 до 83, а значение режима интра-предсказания, расширенное вследствие WAIP, может иметь значение от -14 до 83, как показано. Значения от 81 до 83 указывают режим CCLM (линейная модель перекрестного компонента), и значения от -14 до -1 и значения от 67 до 80 указывают режим интра-предсказания, расширенный вследствие применения WAIP.
[183] Когда ширина текущего блока предсказания больше, чем высота, верхние опорные пикселы обычно ближе к позициям внутри предсказываемого блока. Поэтому, было бы более точным предсказывать в нижнем-левом направлении, чем в верхнем-правом направлении. Напротив, когда высота блока больше, чем ширина, левые опорные пикселы обычно ближе к позициям внутри предсказываемого блока. Поэтому, может быть более точным предсказывать в верхнем-правом направлении, чем в нижнем-левом направлении. Поэтому, может быть предпочтительным применить повторное отображение, т.е. модификацию индекса режима, на индекс широкоугольного режима интра-предсказания.
[184] Когда применяется широкоугольное интра-предсказание, информация о существующем интра-предсказании может сигнализироваться, и после того как информация проанализирована, информация может повторно отображаться на индекс широкоугольного режим интра-предсказания. Поэтому, общее число режимов интра-предсказания для конкретного блока (например, неквадратного блока конкретного размера) может не изменяться, и общее число режимов интра-предсказания равно 67, и кодирование режима интра-предсказания для конкретного блока может не изменяться.
[185] Таблица 3 ниже показывает процесс выведения модифицированного интра-режима путем повторного отображения режима интра-предсказания на широкоугольный режим интра-предсказания.
[186] [Таблица 3]
[187] В Таблице 3, расширенное значение режима интра-предсказания окончательно сохраняется в переменной predModeIntra, и ISP_NO_SPLIT указывает, что блок CU не делится на подразделения посредством метода интра-подразделений (ISP), принятого в настоящее время в стандарте VVC, и значения 0, 1 и 2 переменной cIdx указывают случай компонентов яркости, Cb и Cr, соответственно. Функция Log2, показанная в Таблице 3, возвращает значение log с основанием 2, и функция Abs возвращает абсолютное значение.
[188] Переменная predModeIntra, указывающая режим интра-предсказания, и высота и ширина блока преобразования и т.д. используются как входные значения процесса отображения широкоугольного режима интра-предсказания, и выходным значением является модифицированный режим интра-предсказания predModeIntra. Высота и ширина блока преобразования или блока кодирования могут быть высотой и шириной текущего блока для повторного отображения режима интра-предсказания. При этом, переменная whRatio, отражающая отношение ширины к ширине может быть установлена в Abs(Log2(nW/nH)).
[189] Для неквадратного блока, режим интра-предсказания может быть разделен на два случая и модифицирован.
[190] Во-первых, если все условия (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)].
[191] Если в отличие от вышеизложенного, то есть, следующие условия (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)].
[192] Таблица 2 выше показывает, как набор преобразований выбирается на основе значения режима интра-предсказания, расширенного посредством WAIP в LFNST. Как показано на фиг. 8, режимы 14 до 33 и режимы 35 до 80 симметричны относительно направления предсказания вокруг режима 34. Например, режим 14 и режим 54 симметричны относительно направления, соответствующего режиму 34. Поэтому, тот же самый набор преобразований применяется к режимам, расположенным во взаимно симметричных направлениях, и эта симметрия также отражается в Таблице 2.
[193] Между тем, предполагается, что входные данные прямого LFNST для режима 54 симметричны с входными данными прямого LFNST для режима 14. Например, для режима 14 и режима 54, двумерные данные переупорядочиваются в одномерные данные в соответствии с порядком компоновки, показанным в (a) на фиг. 6 и (b) на фиг. 6, соответственно. Кроме того, можно видеть, что шаблоны в порядке, показанном в (a) на фиг. 6 и (b) на фиг. 6, симметричны относительно направления (диагонального направления), указанного режимом 34.
[194] Между тем, как описано выше, то, какая матрица преобразования из матрицы [48×16] и матрицы [16 ×16] применяется к LFNST, определяется размером и формой целевого блока преобразования.
[195] Фиг. 9 является диаграммой, иллюстрирующей форму блока, к которой применяется LFNST. (a) на фиг. 9 показывает блоки 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.
[196] На фиг. 9, блоки с жирными границами указывают области, к которым применяется LFNST. Для блоков согласно фиг. 9(a) и (b), LFNST применяется к верхней-левой области 4×4, и для блока согласно фиг. 9(c), LFNST применяется индивидуально к двум верхним-левым областям 4×4, которые расположены смежно. В (a), (b) и (c) на фиг. 9, поскольку LFNST применяется в единицах областей 4×4, это LFNST будет далее упоминаться как "4×4 LFNST". В качестве соответствующих матриц преобразования, матрица [16×16] или матрица [16×8] может применяться на основе размерности матрицы для G в Уравнениях 9 и 10.
[197] Более конкретно, матрица [16×8] применяется к блоку 4×4 (TU 4×4 или CU 4×4) согласно фиг. 9(a) и матрица [16×16] применяется к блокам в (b) и (c) на фиг. 9. Это предназначено для регулирования вычислительной сложности для наихудшего случая до 8 умножений на выборку.
[198] В отношении (d) и (e) на фиг. 9, LFNST применяется к верхней-левой области 8×8, и это LFNST далее упоминается как "8×8 LFNST". В качестве соответствующей матрицы преобразования, может применяться матрица [48×16] или матрица [48×8]. В случае прямого LFNST, поскольку вектор [48×1] (вектор x в Уравнении 9) вводится в качестве входных данных, значения всех выборок верхней-левой области 8×8 не используются в качестве входных значений прямого LFNST. То есть, как можно видеть в левой компоновке на фиг. 6(a) или левой компоновке на фиг. 6(b), вектор [48×1] может быть сформирован на основе выборок, принадлежащих остальным 3 блокам 4×4, оставляя нижний правый блок 4×4 как он есть.
[199] Матрица [48×8] может применяться к блоку 8×8 (TU 8×8 или CU 8×8) на фиг. 9(d), и матрица [48×16] может применяться к блоку 8×8 на фиг. 9(e). Это также предназначено для регулирования вычислительной сложности для наихудшего случая до 8 умножений на выборку.
[200] В зависимости от формы блока, когда применяется соответствующее прямое LFNST (4×4 LFNST или 8×8 LFNST), генерируется 8 или 16 выходных данных (вектор y в Уравнении 9, вектор [8×1] или [16×1]). В прямом LFNST, число выходных данных равно или меньше, чем число входных данных, вследствие характеристик матрицы GT.
[201] Фиг. 10 является диаграммой, иллюстрирующей компоновку выходных данных прямого LFNST в соответствии с примером, и показывает блок, в котором выходные данные прямого LFNST скомпонованы в соответствии с формой блока.
[202] Затененная область верхнего-левого блока, показанного на фиг. 10, соответствует области, где расположены выходные данные прямого LFNST, позиции, маркированные 0, указывают выборки, заполненные значениями 0, и остальная область представляет области, не измененные прямым LFNST. В области, не измененной посредством LFNST, выходные данные прямого первичного преобразования остаются неизменными.
[203] Как описано выше, поскольку размерность примененной матрицы преобразования варьируется в соответствии с формой блока, число выходных данных также варьируется. Как показано на фиг. 10, выходные данные прямого LFNST могут не полностью заполнять верхний-левый блок 4×4. В случае (a) и (d) на фиг. 10, матрица [16×8] и матрица [48×8] применяются к блоку, указанному жирной линией, или частичной области внутри блока, соответственно, и вектор [8×1] генерируется в качестве выхода прямого LFNST. То есть, в соответствии с порядком сканирования, показанным в (b) на фиг. 7, только 8 выходных данных может быть заполнено, как показано в (a) и (d) на фиг. 10, и 0 может быть заполнен в остальных 8 позициях. В случае применяемого блока LFNST согласно фиг. 9(d), как показано на фиг. 10(d), два блока 4×4 сверху-справа и снизу-слева от верхнего-левого блока 4×4 также заполнены значениями 0.
[204] Как описано выше, в основном, путем сигнализации индекса LFNST, специфицируется, следует ли применять LFNST, и матрица преобразования, подлежащая применению. Как показано на фиг. 10, когда применяется LFNST, поскольку число выходных данных прямого LFNST может быть равно или меньше, чем число входных данных, область, заполненная нулевыми значениями, возникает следующим образом.
[205] 1) Как показано в (a) на фиг. 10, выборки из 8-ой и последующих позиций в порядке сканирования в верхнем-левом блоке 4×4, то есть, выборки от 9-ой до 16-ой.
[206] 2) Как показано в (d) и (e) на фиг. 10, когда применяется матрица [16×48] или матрица [8×48], два блока 4×4, смежные с верхним-левым блоком 4×4, или второй и третий блоки 4×4 в порядке сканирования.
[207] Поэтому, если ненулевые данные существуют при проверке областей 1) и 2), то ясно, что LFNST не применяется, так что сигнализация соответствующего индекса LFNST может опускаться.
[208] В соответствии с примером, например, в случае LFNST, принятого в стандарте VVC, поскольку сигнализация индекса LFNST выполняется после кодирования остатка, устройство кодирования может знать, имеются ли ненулевые данные (значимые коэффициенты) для всех позиций в блоке TU или CU посредством кодирования остатка. Соответственно, устройство кодирования может определять, следует ли выполнять сигнализацию индекса LFNST, на основе существования ненулевых данных, и устройство декодирования может определять, анализируется ли индекс LFNST. Когда ненулевые данные не существуют в области, указанной выше в 1) и 2), сигнализация индекса LFNST выполняется.
[209] Поскольку усеченный унарный код применяется как способ бинаризации для индекса LFNST, индекс LFNST состоит из вплоть до двух бинов, и 0, 10 и 11 назначаются в качестве двоичных кодов для возможных значений 0, 1 и 2 индекса LFNST, соответственно. В случае LFNST, принятого в настоящее время для VVC, основанное на контексте CABAC кодирование применяется к первому бину (регулярное кодирование), и кодирование с обходом применяется к второму бину. Общее число контекстов для первого бина равно 2, когда (DCT-2, DCT-2) применяется как пара первичного преобразования для горизонтального и вертикального направлений, и компонент яркости и компонент цветности кодируются по типу двойственного дерева, один контекст выделяется, а другой контекст применяется к остальным случаям. Кодирование индекса LFNST показано в таблице следующим образом.
[210] [Таблица 4]
[211] Между тем, для принятого LFNST, могут применяться следующие способы упрощения.
[212] (i) В соответствии с примером, число выходных данных для прямого LFNST может быть ограничено до максимум 16.
[213] В случае (c) на фиг. 9, 4×4 LFNST может применяться к двум областям 4×4, смежным сверху-слева, соответственно, и в этом случае, могут генерироваться максимум 32 LFNST выходных данных. Когда число выходных данных для прямого LFNST ограничено до максимум 16, в случае блоков 4×N/N×4 (N≥16) (TU или CU), 4×4 LFNST применяется только к одной области 4×4 сверху-слева, LFNST может применяться только один раз ко всем блокам на фиг. 9. С помощью этого, реализация кодирования изображения может быть упрощена.
[214] Фиг. 11 показывает, что число выходных данных для прямого LFNST ограничено до максимум 16 в соответствии с примером. Как показано на фиг. 11, когда LFNST применяется к самой верхней-левой области 4×4 в блоке 4×N или блоке N×4, в котором N равно 16 или более, выходными данными прямого LFNST становятся 16 частей.
[215] (ii) В соответствии с примером, обнуление может дополнительно применяться к области, для которой не применяется LFNST. В настоящем документе, обнуление может означать заполнение значений всех позиций, принадлежащих конкретной области, значением 0. То есть, обнуление может применяться к области, которая не изменяется вследствие LFNST и сохраняет результат прямого первичного преобразования. Как описано выше, поскольку LFNST делится на 4×4 LFNST и 8×8 LFNST, обнуление может делиться на два типа ((ii)-(A) и (ii)-(B)) следующим образом.
[216] (ii)-(A) Когда применяется 4×4 LFNST, область, к которой 4×4 LFNST не применяется, может быть обнулена. Фиг. 12 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 4×4 LFNST в соответствии с примером.
[217] Как показано на фиг. 12, в отношении блока, к которому применяется 4×4 LFNST, то есть, для всех блоков в (a), (b) и (c) на фиг. 10, вся область, к которой LFNST не применяется, может быть заполнена нулями.
[218] С другой стороны, (d) на фиг. 12 показывает, что когда максимальное значение числа выходных данных прямого LFNST ограничено до 16, как показано на фиг. 11, обнуление выполняется на остальных блоках, к которым 4×4 LFNST не применяется.
[219] ii)-(B) Когда применяется 8×8 LFNST, область, к которой 8×8 LFNST не применяется, может быть обнулена. Фиг. 13 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с примером.
[220] Как показано на фиг. 13, в отношении блока, к которому применяется 8×8 LFNST, то есть, для всех блоков в (d) и (e) на фиг. 10, вся область, к которой LFNST не применяется, может быть заполнена нулями.
[221] iii) Вследствие обнуления, представленного в (ii) выше, область, заполненная нулями, может быть не той же самой, когда LFNST применяется. Соответственно, можно проверить, существуют ли ненулевые данные, в соответствии с обнулением, предложенным в (ii), в более широкой области, чем в случае LFNST согласно фиг. 10.
[222] Например, когда применяется (ii)-(B), после проверки, существуют ли ненулевые данные, где область заполняется нулевыми значениями в (d) и (e) на фиг. 10 в дополнение к области, заполненной 0 дополнительно на фиг. 13, сигнализация для индекса LFNST может выполняться, только если ненулевые данные не существуют.
[223] Разумеется, даже если применяется обнуление, предложенное в (ii), можно проверить, существуют ли ненулевые данные, таким же путем, как существующая сигнализация индекса LFNST. То есть, после проверки, существуют ли ненулевые данные в блоке, заполненном нулями, на фиг. 10, может применяться сигнализация индекса LFNST. В этом случае, только устройство кодирования выполняет обнуление, а устройство декодирования не предполагает обнуления, то есть, проверяя, существуют ли ненулевые данные только в области, явно маркированной как 0 на фиг. 10, может выполнять анализ индекса LFNST.
[224] Альтернативно, в соответствии с другим примером, обнуление может выполняться, как показано на фиг. 14. Фиг. 14 является диаграммой, иллюстрирующей обнуление в блоке, к которому применяется 8×8 LFNST в соответствии с другим примером.
[225] Как показано на фиг. 12 and 13, обнуление может применяться ко всем областям иным, чем область, к которой применяется LFNST, или обнуление может применяться только к частичной области, как показано на фиг. 14. Обнуление применяется только к областям иным, чем верхняя-левая область 8×8 на фиг. 14, обнуление может не применяться к нижнему-правому блоку 4×4 в пределах верхней-левой области 8×8.
[226] Могут быть получены различные варианты осуществления, в которых применяются комбинации способов упрощения ((i), (ii)-(A), (ii)-(B), (iii)) для LFNST. Разумеется, комбинации вышеописанных способов упрощения не ограничены следующими вариантами осуществления, и любая комбинация может применяться к LFNST.
[227] Вариант осуществления
[228] - Ограничить число выходных данных для прямого LFNST до максимум 16 → (i)
[229] - Когда применяется 4×4 LFNST, все области, к которым 4×4 LFNST не применяется, обнуляются → (ii)-(A)
[230] - Когда применяется 8×8 LFNST, все области, к которым 8×8 LFNST не применяется, обнуляются → (ii)-(B)
[231] - После проверки, существуют ли ненулевые данные, также существующие области, заполненные нулевыми значениями, и области, заполненные нулями вследствие дополнительных обнулений ((ii)-(A), (ii)-(B)), индекс LFNST сигнализируется, только когда ненулевые данные не существуют → (iii)
[232] В случае варианта осуществления, когда LFNST применяется, область, в которой могут существовать ненулевые выходные данные, ограничена в пределах верхней-левой области 4×4. Более конкретно, в случае фиг. 12(a) и фиг. 13(a), 8-ая позиция в порядке сканирования является последней позицией, где могут существовать ненулевые данные. В случае фиг. 12(b) и (c) и фиг. 13(b), 16-ая позиция в порядке сканирования (т.е., позиция верхнего-правого края верхнего-левого блока 4×4) является последней позицией, где могут существовать данные иные, чем 0.
[233] Поэтому, когда применяется LFNST, после проверки, существуют ли ненулевые данные в позиции, где процесс кодирования остатка не разрешен (в позиции за пределами последней позиции), может быть определено, сигнализируется ли индекс LFNST.
[234] В случае способа обнуления, предложенного в (ii), поскольку число данных, в конечном счете сгенерированных, когда применяются как первичное преобразование, так и LFNST, объем вычислений, требуемых для выполнения всего процесса преобразования, может быть сокращен. То есть, когда применяется LFNST, поскольку обнуление применяется к выходным данным прямого первичного преобразования, существующим в области, в которой не применяется LFNST, нет необходимости генерировать данные для области, которая становится обнуленной, во время выполнения прямого первичного преобразования. Соответственно, можно сократить объем вычислений, требуемых для генерации соответствующих данных. Дополнительные результаты способа обнуления, предложенного в (ii), формулируются следующим образом.
[235] Во-первых, как описано выше, объем вычислений требуемых для выполнения всего процесса преобразования, сокращается.
[236] В частности, когда применяется (ii)-(B), объем вычислений для наихудшего случая сокращается, так что процесс преобразования может быть упрощен. Иными словами, в общем, большой объем вычислений требуется для выполнения крупно-размерного первичного преобразования. Путем применения (ii)-(B), число данных, выводимых в качестве результата выполнения прямого LFNST, может быть сокращено до 16 или менее. Кроме того, по мере того как размер всего блока (TU или CU) увеличивается, эффект сокращения величины операции преобразования дополнительно увеличивается.
[237] Во-вторых, объем вычислений, требуемых для всего процесса преобразования, может быть сокращен, тем самым снижая энергопотребление, требуемое для выполнения преобразования.
[238] В-третьих, снижается время ожидания, связанное с процессом преобразования.
[239] Вторичное преобразования, такое как LFNST, добавляет объем вычислений к существующему первичному преобразованию, тем самым увеличивая общее время задержки, связанное с выполнением преобразования. В частности, в случае интра-предсказания, поскольку восстановленные данные соседних блоков используются в процессе предсказания, во время кодирования, увеличение времени ожидания вследствие вторичного преобразования приводит к увеличению времени ожидания до восстановления. Это может привести к увеличению общего времени ожидания кодирования с интра-предсказанием.
[240] Однако, если применяется обнуление, предложенное в (ii), время задержки выполнения первичного преобразования может быть заметно сокращено, когда применяется LFNST, время задержки для всего преобразования сохраняется или сокращается, так что устройство кодирования может быть реализовано проще.
[241] Далее, процесс декодирования изображения, в котором отражен данный вариант осуществления, показан в таблице.
[242] [Таблица 5]
[243] Таблица 5 показывает, что sps_log2_max_luma_transform_size_minus5, которое является синтаксической информацией о размере блока преобразования, сигнализируется через синтаксис набора параметров последовательности. В соответствии с семантикой, sps_log2_max_luma_transform_size_minus5 представляет значение, полученное вычитанием 5 после взятия логарифма по основанию 2 для максимального размера преобразования.
[244] Минимальный размер (MinTbSizeY) блока преобразования, в котором может выполняться преобразование, установлен в 4 (MinTbSizeY=1 << MinTbLog2SizeY), и максимальный размер блока преобразования, в котором может выполняться преобразование, может быть выведен как степень 2 значения, полученного сложением 5 с sps_log2_max_luma_transform_size_minus5(MaxTbLog2SizeY=sps_log2_max_luma_transform_size_minus5+5, MaxTbSizeY=1 << MaxTbLog2SizeY).
[245] Поскольку sps_log2_max_luma_transform_size_minus5 состоит из 1 бита и имеет значение 0 или 1, ширина и высота максимального блока преобразования могут быть установлены в 32 или 64 на основе sps_log2_max_luma_transform_size_minus5 Таблицы 5.
[246] Между тем, в соответствии с другим вариантом осуществления, может сигнализироваться флаговая информация sps_max_luma_transform_size_64_flag для размера максимального блока преобразования. Когда sps_max_luma_transform_size_64_flag равно 1, максимальный размер блока преобразования равен 64, и когда sps_max_luma_transform_size_64_flag равно 0, максимальный размер блока преобразования равен 32.
[247] [Таблица 6]
[248] Таблица 6 показывает синтаксические элементы lfnst_idx[x0][y0], сигнализируемые на уровне единицы кодирования. lfnst_idx[x0][y0] может указывать любую одну из двух матриц ядра преобразования, включенных в набор преобразований. Если lfnst_idx равно 0, это может указывать, что неразделимое вторичное преобразование, то есть, LFNST не применяется.
[249] Для того чтобы lfnst_idx анализировалось устройством декодирования, должно удовлетворяться несколько условий. Во-первых, переменная LfnstDcOnly и переменная LfnstZeroOutSigCoeffFlag первоначально установлены в 1. После разбора синтаксиса для дерева преобразования (transform_tree(x0, y0, cbWidth, cbHeight, treeType)), когда переменная LfnstDcOnly, установленная в 1, изменяется на 0, и значение переменной LfnstZeroOutSigCoeffFlag сохраняется на 1, lfnst_idx может анализироваться [if(LfnstDcOnly == 0 && LfnstZeroOutSigCoeffFlag == 1)]. Переменная LfnstDcOnly и переменная LfnstZeroOutSigCoeffFlag могут быть выведены посредством синтаксической информации кодирования остатка.
[250] Между тем, максимальный размер блока кодирования, в котором может кодироваться lfnst_idx[x0][y0], ограничен до максимального размера преобразования (Max(cbWidth, cbHeight) <= MaxTbSizeY).
[251] Кроме того, поскольку ширина (cbWidth) блока кодирования и высота (cbHeight) блока кодирования указывают ширина блока кодирования и высоту блока кодирования для компонента яркости, соответственно, в случае компонента цветности, LFNST может применяться к каждому блоку, имеющему меньший размер в соответствии с цветовым форматом изображения (например, 4:2:0).
[252] Конкретно, как показано в Таблице 6, если типом дерева целевого блока является двойственное дерево цветности, LFNST может применяться к блоку цветности, имеющему размер, деленный на SubWidthC и SubHeight, указывающий переменную для формата цветности в размере блока кодирования яркости [lfnstWidth=(treeType == DUAL_TREE_CHROMA) ? cbWidth/SubWidthC : cbWidth, lfnstHeight=(treeType == DUAL_TREE_CHROMA) ? cbHeight/SubHeightC : cbHeight].
[253] Если форматом цветности является 4:2:0, SubWidthC и SubHeight становятся равными 2, так что LFNST может применяться к блоку цветности, имеющему ширину и высоту, полученную путем деления ширины и высоты блока яркости на 2. Поэтому, поскольку LFNST может применяться, когда размер блока яркости равен или меньше, чем блок 64×64, LFNST может применяться, когда размер блока цветности равен или меньше, чем блок 32×32, когда форматом цветности является 4:2:0.
[254] Между тем, в настоящем документе, когда горизонтальная и вертикальная длины блока A равны Wa и Ha, соответственно, и когда горизонтальная и вертикальная длины блока B равны Wb и Hb, соответственно, блок A меньше, чем блок B, означает, что Wa равно или меньше, чем Wb, Ha равно или меньше, чем Hb, и Wa и Wb не равны или Ha и Hb не равны. Также, то, что блок A меньше или равен блоку B, указывает, что Wa равно или меньше, чем Wb, и Ha равно или меньше, чем Hb.
[255] В итоге, когда размер целевого блока равен или меньше, чем предварительно установленный максимальный размер, LFNST может применяться, этот максимальный размер может применяться к размеру блока яркости, и соответственно, может выводиться максимальный размер блока цветности, к которому может применяться LFNST.
[256] [Таблица 7]
[257] Таблица 7 показывает transform_skip_flag, указывающий, следует ли пропускать преобразование в отношении блока преобразования, и tu_mts_idx[x0][y0], которое является информацией индекса ядра преобразования для первичного преобразования.
[258] Как показано в Таблице 7, для того чтобы сигнализировать tu_mts_idx[x0][y0], может быть случай, где режим предсказания текущего блока является интер-режимом или когда флаговая информация sps_explicit_mts_inter_enabled_flag, которая явно указывает, может ли MTS применяться к остаточным данным, генерируемым интер-предсказанием, равна 1 [(CuPredMode[x0][y0] == MODE_INTER && sps_explicit_mts_inter_enabled_flag)], или случай, где режим предсказания текущего блока является интра-режимом, или когда флаговая информация sps_explicit_mts_intra_enabled_flag, которая явно указывает, может ли MTS применяться к остаточным данным, генерируемым интер-предсказанием, равна 1 [(CuPredMode[x0][y0]== MODE_INTRA && sps_explicit_mts_intra_enabled_flag)].
[259] Дополнительно, когда условие, в котором transform_skip_flag не равно 0, удовлетворено, tu_mts_idx[x0][y0] может анализироваться.
[260] Между тем, в соответствии с другим примером, tu_mts_idx[x0][y0] может сигнализироваться на уровне единицы кодирования Таблицы 6, а не на уровне единицы преобразования.
[261] [Таблица 8]
[262]
[263] Таблица 8 показывает синтаксис кодирования остатка, и показан процесс, в котором выводятся переменная LfnstDcOnly и переменная LfnstZeroOutSigCoeffFlag Таблицы 6.
[264] На основе размера блока преобразования, могут выводиться переменная log2SbW и переменная log2SbH, указывающие высоту и ширину подблока; numSbCoeff, представляющее число коэффициентов, которые могут существовать в подблоке, может быть установлено на основе переменной log2SbW и переменной log2SbH [numSbCoeff=1 << (log2SbW+log2SbH)].
[265] Переменная lastScanPos, указывающая позицию последнего значимого коэффициента в подблоке, первоначально установлена в numSbCoeff, переменная lastSubBlock, указывающая подблок, в котором существует последний ненулевой коэффициент, первоначально установлена в "(1 << (log2TbWidth+log2TbHeight − (log2SbW+log2SbH ))) - 1".
[266] При сканировании диагонально в подблоке, соответствующем lastSubBlock [lastScanPos− −], проверяется, существует ли последний ненулевой значимый коэффициент в соответствующей позиции.
[267] Когда никакой значимый коэффициент не найден до тех пор, пока переменная lastScanPos не станет 0 в подблоке, указанном посредством lastSubBlock, переменная lastScanPos вновь устанавливается в numSbCoeff, и переменная lastSubBlock также изменяется на следующий подблок в направлении сканирования.
[268] То есть, так как переменная lastScanPos и переменная lastSubBlock обновляются в соответствии с направлением сканирования, идентифицируется позиция, где существует последний ненулевой коэффициент.
[269] Переменная LfnstDcOnly указывает, существует ли ненулевой коэффициент в позиции, которая не является DC компонентом для по меньшей мере одного блока преобразования в одной единице кодирования; когда ненулевой коэффициент существует в позиции, которые не являются DC компонентом для по меньшей мере одного блока преобразование в одной единице кодирования, он становится 0, и когда ненулевые коэффициенты не существуют в позициях иных, чем DC компоненты, для всех блоков преобразования в одной единице кодирования, он становится 1. В настоящем документе, DC компонент относится к (0,0) или верхней-левой позиции относительно 2D компонента.
[270] Различные блоки преобразования могут существовать в одной единице кодирования. Например, в случае компонента цветности, могут существовать блоки преобразования для Cb и Cr, и в случае типа одиночного дерева, могут существовать блоки преобразования для яркости, Cb и Cr. В соответствии с примером, когда ненулевой коэффициент иной, чем позиция DC компонента, найден в одном блоке преобразования среди блоков преобразования, составляющих текущий блок кодирования, значение переменной LnfstDcOnly может быть установлено в 0.
[271] Между тем, поскольку кодирование остатка не выполняется на соответствующем блоке преобразования, если ненулевой коэффициент не существует в блоке преобразования, значение переменной LfnstDcOnly не изменяется соответствующим блоком преобразования. Поэтому, когда ненулевой коэффициент не существует в позиции, которая не является DC компонентом в блоке преобразования, значение переменной LfnstDcOnly не изменяется, и сохраняется предыдущее значение. Например, если единица кодирования кодируется как тип одиночного дерева, и значение переменной LfnstDcOnly изменяется в 0 вследствие блока преобразования яркости, даже если ненулевой коэффициент существует только в DC компоненте в блоке преобразования Cb/Cr, или ненулевой коэффициент не существует в блоке преобразования Cb/Cr, значение переменной LfnstDcOnly сохраняет значение 0. Значение переменной LfnstDcOnly первоначально инициализируется в 1, и если никакой компонент в текущей единице кодирования не может обновить значение переменной LfnstDcOnly в 0, она сохраняет значение 1 как есть, и когда значение переменной LfnstDcOnly обновляется в 0 в любом одном из блоков преобразования, составляющих соответствующую единицу кодирования, оно в итоге остается 0.
[272] Как показано в Таблице 8, когда индекс подблока, в котором существует последний ненулевой коэффициент, равен 0 [lastSubBlock == 0] и позиция последнего ненулевого коэффициента в подблоке больше, чем 0, [lastScanPos > 0], переменная LfnstDcOnly может быть выведена как 0. Переменная LfnstDcOnly может выводиться как 0, только когда ширина и высота блока преобразования равны 4 или более [log2TbWidth >= 2 && log2TbHeight >= 2], и пропуск преобразования не применяется [!transform_skip_flag[ x0 ][ y0 ]].
[273] В предположении, что применяется LFNST, переменная LfnstZeroOutSigCoeffFlag, которая может указывать, было ли выполнено обнуление надлежащим образом, устанавливается в 0 в случае, когда индекс подложка, в котором существует последний ненулевой коэффициент больше 0, и ширина и высота блока преобразования обе больше или равны 4 [( lastSubBlock > 0 && log2TbWidth >= 2 && log2TbHeight >= 2 )], или в случае, когда последняя позиция ненулевого коэффициента в подблоке, в котором существует последний ненулевой коэффициент, больше, чем 7, и размер блока преобразования равен 4×4 или 8×8 [(lastScanPos >7 && (log2TbWidth == 2||log2TbHeight == 3) && log2TbWidth == log2TbHeight)].
[274] То есть, первое условие для переменной LfnstZeroOutSigCoeffFlag является условием, в котором ненулевой коэффициент выводится в области иной, чем верхняя-левая область, к которой может применяться LFNST в блоке преобразования (то есть, когда выводится значимый коэффициент в подблоках иных, чем верхний-левый подблок (4×4)). Когда первое условие удовлетворяется, флаговая переменная lfnstZeroOutSigCoeffFlag для обнуления LFNST устанавливается в 0. Удовлетворение первого условия указывает, что обнуление не выполняется, предполагая, что LFNST применяется.
[275] Второе условие для переменной LfnstZeroOutSigCoeffFlag предназначено для блока 4×4 и блока 8×8. Когда LFNST применяется к блоку 4×4 и блоку 8×8, поскольку последней позицией, где ненулевой коэффициент может существовать, является 8-ая позиция, как показано в (a) и (d) на фиг. 10, если ненулевой коэффициент существует вне 7-ой позиции, если начинать с 0, флаговая переменная lfnstZeroOutSigCoeffFlag устанавливается в 0. Удовлетворение второго условия также указывает, что обнуление не выполняется, когда предполагается, что применяется LFNST .
[276] Когда флаговая переменная lfnstZeroOutSigCoeffFlag установлена в 0, как показано в Таблица 6, lfnst_idx, сигнализируемый на уровне единицы кодирования, не сигнализируется. То есть, когда флаговая переменная lfnstZeroOutSigCoeffFlag установлена в 0, устройство декодирования не анализирует lfnst_idx.
[277] Таким образом, на уровне единицы кодирования, переменная LfnstDcOnly и переменная LfnstZeroOutSigCoeffFlag установлены в 1, соответственно, и затем заново выводятся посредством процесса, показанного в Таблице 8 на уровне кодирования остатка. Только когда переменная LfnstDcOnly, выводимая на уровне кодирования остатка, равна 0 и переменная LfnstZeroOutSigCoeffFlag равна 1 [if(LfnstDcOnly== 0 && LfnstZeroOutSigCoeffFlag== 1), lfnst_idx может сигнализироваться.
[278] [Таблица 9]
[279]
[280] [Таблица 10]
[281]
[282] Таблицы 9 и 10 показывают, что процессы интра-предсказания и интер-предсказания выполняются на основе переменной MaxTbSizeY для размера блока преобразования, выведенного из Таблицы 5.
[283] Максимальная ширина (maxTbWidth) и максимальная высота (maxTbHeight) блока преобразования выводятся либо из переменной MaxTbSizeY, либо MaxTbSizeY/SubWidthC, которая отражает цветовой формат в соответствии с цветовым индексом cIdx для яркости или цветности [maxTbWidth=(cIdx== 0) ? MaxTbSizeY : MaxTbSizeY/SubWidthC, maxTbHeight=(cIdx== 0 ) ? MaxTbSizeY : MaxTbSizeY/SubHeightC].
[284] Высота и ширина блока преобразования для интер-предсказания и интра-предсказания установлены на основе переменной maxTbWidth и переменной maxTbHeight, выведенных таким образом [newTbW=(nTbW > maxTbWidth) ? (nTbW/2) : nTbW, newTbH=(nTbH > maxTbHeight) ? (nTbH/2) : nTbH], последующий процесс предсказания может выполняться на основе установленного значения.
[285][Таблица 11]
[286]
[287]
[288] Таблица 11 показывает общий процесс преобразования, выполняемый устройством декодирования.
[289] Со ссылкой на Таблицу 11, переменная nonZeroSize, указывающая размер или число ненулевых переменных, на которых выполняется матричная операция, чтобы применить LFNST, установлена в 8 или 16. Когда ширина и высота блока преобразования равны 4 или 8, то есть, длина выходных данных прямого LFNST или входных данных обратного LFNST блока 4×4 и блока 8×8, как показано на фиг. 10, равна 8. Для всех других блоков, длина выходных данных прямого LFNST или входных данных обратного LFNST равна 16 [nonZeroSize=((nTbW== 4 && nTbH== 4 ) | | (nTbW== 8 && nTbH== 8)) ? 8 : 16]. То есть, когда применяется прямое LFNST, максимальное число выходных данных ограничено до 16.
[290] Входные данные этого обратного LFNST могут быть двумерно скомпонованы в соответствии с диагональным сканированием [xC=DiagScanOrder[2][2][x][0], yC=DiagScanOrder[2][2][x][1]]. Вышеописанная часть показывает процесс декодирования для (i) способа упрощения LFNST.
[291] Поскольку число входных данных обратного LFNST для блока преобразования ограничено до максимум 16, LFNST может применяться к самой верхней-левой области 4×4 в блоке 4×N или блоке N×4, где N равно 16 или более, как показано на фиг. 11, и в результате, как показано в (d) на фиг. 12, обнуление может выполняться на остальных блоках, к которым не применяется 4×4 LFNST.
[292] С другой стороны, когда режим интра-предсказания больше или равен 81, то есть, когда CCLM применяется во время интра-предсказания блока цветности, режим интра-предсказания (predModeIntra) для выведения набора преобразований может быть установлен как интра-режим (IntraPredModeY[xTbY+nTbW/2][yTbY+nTbH/2]) соответствующего блока яркости.
[293] При этом переменная implicitMtsEnabled, указывающая, выполняется ли MTS неявно, может устанавливаться в 1, при удовлетворении условиям, что флаговая информация sps_mts_enabled_flag, сигнализируемая на уровне параметра последовательности, равна 1, sps_explicit_mts_intra_enabled_flag равна 0, режим интра-предсказания применяется к текущему блоку, lfnst_idx равно 0 и intra_mip_flag равно 1.
[294] Кроме того, переменные nonZeroW и nonZeroH, указывающие ширину и высоту верхнего-левого блока, в котором могут существовать ненулевые коэффициенты преобразования, вводимые в обратное первичное преобразование, выводятся как 4, когда индекс LFNST не равен 0, и ширина или высота блока преобразования выводится 4, иначе выводится как 8 [nonZeroW=(nTbW == 4 | | nTbH == 4) ? 4 : 8, nonZeroH=(nTbW == 4 | | nTbH == 4) ? 4 : 8]. То есть, в блоке преобразования, обнуление выполняется в областях иных, чем область 4×4 и область 8×8, в которой применяется LFNST. Эта часть показывает процесс декодирования для (ii) способа упрощения LFNST.
[295] [Таблица 12]
[296] Таблица 12 показывает набор преобразований для LFNST и LFNST набор преобразований выводится на основе входного значения для выведения матрицы ядра преобразования и режима интра-предсказания.
[297] Как показано в Таблице 12, матрица ядра преобразования (lowFreqTransMatrix) может выводиться с использованием переменной nTrS, указывающей выходной размер преобразования для выведения матрицы ядра преобразования, информации режима интра-предсказания (predModeIntra) для выбора набора преобразований LFNST и индекса LFNST, сигнализируемого из единицы кодирования в качестве входных значений.
[298] Имеется четыре набора преобразований LFNST, таких как 0, 1, 2 и 3, и один и тот же набор преобразований может применяться к режимам, расположенным во взаимно симметричных направлениях на основе симметрии режима интра-предсказания. Когда режим интра-предсказания является ненаправленным планарным режимом или DC режимом (0 <= predModeIntra <= 1), то набором преобразований является 0, в случае широкоугольного режима интра-предсказания (predModeIntra < 0, 56 <= predModeIntra <= 80), набором преобразований является 1.
[299] С другой стороны, как описано выше, когда CCLM применяется к блоку цветности, режим интра-предсказания (predModeIntra) блока цветности для выведения набора преобразований может быть установлен в интра-режим соответствующего блока яркости (IntraPredModeY[xTbY+nTbW/2][yTbY+nTbH/2]), вместо 81 до 83, указывающих CCLM или планарный режим.
[300] Соответственно, 81 до 83 опущены в режиме интра-предсказания (predModeIntra) для выбора набора преобразований согласно Таблице 12.
[301] Таблица 13 ниже показывает ctxInc, распределенный индексу бина синтаксического элемента tu_mts_idx, описанного выше (назначение ctxInc синтаксическим элементам с контекстно-кодированными бинами).
[302] [Таблица 13]
[303] Как показано в Таблице 13, ctxInc первого бина (binIdx=0) tu_mts_idx равен 0, ctxInc второго бина (binIdx=1) равен 1, ctxInc третьего бина (binIdx=2) равен 2, и четвертый ctxInc бина (binIdx=3) равен 3.
[304] В обычном случае, любой один ctxInc выбирается из множества ctxInc в соответствии с предопределенным условием и распределяется первому бину, как описано выше; путем распределения одного фиксированного ctxInc первому бину без соблюдения конкретного условия, эффективность кодирования может быть повышена.
[305] Следующие чертежи обеспечены для описания конкретных примеров настоящего раскрытия. Поскольку конкретные обозначения устройств или обозначения конкретных сигналов/сообщений/полей, проиллюстрированных на чертежах, предоставлены для иллюстрации, технические признаки настоящего раскрытия не ограничены конкретными обозначениями, использованными в следующих чертежах.
[306] Фиг. 15 является блок-схемой последовательности операций, иллюстрирующей работу устройства декодирования видео в соответствии с вариантом осуществления настоящего раскрытия.
[307] Каждая операция, показанная на фиг. 15, может выполняться устройством декодирования 200, показанным на фиг. 2. Конкретно, S1510 - S1550 могут выполняться энтропийным декодером 210, показанным на фиг. 2, S1520 может выполняться деквантователем 221, показанным на фиг. 2, S1560 и S1570 могут выполняться обратным преобразователем 222, показанным на фиг. 2, и S1580 может выполняться сумматором 240, показанным на фиг. 2. Операции в соответствии с S1510 - S1580 основаны на некоторых из вышеописанных подробностей, поясненных со ссылками на фиг. 3 - фиг. 14. Поэтому, описание конкретных подробностей, перекрывающимися с теми, которые были пояснены выше со ссылкой на фиг. 2 - фиг. 14, будет опущено или будет приведено кратко.
[308] Устройство декодирования 200 в соответствии с вариантом осуществления принимает битовый поток, включающий в себя остаточную информацию, и может выводить остаточную информацию о текущем блоке, то есть блоке преобразования, подлежащем преобразованию, например, квантованные коэффициенты преобразования, из битового потока (S1510).
[309] Более конкретно, устройство 200 декодирования может декодировать информацию о квантованных коэффициентах преобразования для целевого блока из битового потока и может выводить квантованные коэффициенты преобразования для текущего блока на основе информация о квантованных коэффициентах преобразования для текущего блока. Информация о квантованных коэффициентах преобразования для целевого блока может быть включена в набор параметров последовательности (SPS) или заголовок вырезки и может включать в себя по меньшей мере одно из информации о том, применяется ли сокращенное преобразование (RST), информацию о коэффициенте упрощения, информацию о минимальном размере преобразования, в котором применяется сокращенное преобразование, информацию о максимальном размере преобразования, в котором применяется сокращенное преобразование, размер сокращенного обратного преобразования и информацию об индексе преобразования, указывающем любую одну из матриц ядра преобразования, включенных в набор преобразований.
[310] Устройство 200 декодирования может выводить позицию последнего значимого коэффициента в текущем блоке и коэффициенты преобразования для текущего блока на основе остаточной информации (S1520). Устройство 200 декодирования может выполнять деквантование квантованных коэффициентов преобразования текущего блока для выведения коэффициентов преобразования.
[311] Выведенные коэффициенты преобразования могут быть двумерно скомпонованы в текущем блоке, и устройство декодирования может выводить ненулевые данные, т.е. информацию о ненулевых значимых коэффициентах в текущем блоке, посредством кодирования остатка. То есть, устройство декодирования может определять информацию о последней позиции ненулевого значимого коэффициента в текущем блоке.
[312] Коэффициенты преобразования, выведенные на основе остаточной информации в S1520, могут быть деквантованными коэффициентами преобразования, как описано выше, или могут быть квантованными коэффициентами преобразования. То есть, коэффициент преобразования может быть любыми данными, способными определять, является ли он или нет ненулевыми данными в текущем блоке, и позицию значимого коэффициента независимо от того, является ли коэффициент преобразования квантованным или нет.
[313] Устройство декодирования может определять, является ли индекс подблока, включающего последний значимый коэффициент, 0, и позицией последнего значимого коэффициента в подблоке является 0 или более (S1530). Устройство декодирования может определять, существует ли значимый коэффициент в области иной, чем DC область (область, в которой расположен DC компонент) по меньшей мере одного блока преобразования среди блоков преобразования, составляющих блок кодирования.
[314] В настоящем документе, в соответствии с примером, DC область может означать только позицию относительно DC коэффициента преобразования, то есть, только верхнюю-левую позицию блока преобразования.
[315] В соответствии с определением, первая переменная или первая флаговая информация, указывающая, существует ли значимый коэффициент в области иной, чем DC область текущего блока, может быть выведена, и первая переменная или первая флаговая информация может быть выведена в процессе кодирования остатка. Первая флаговая информация может быть выведена как 0, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, равен 0, и позиция последнего значимого коэффициента в подблоке больше, чем 0, и если первая флаговая информация равна 0, индекс LFNST может анализироваться.
[316] Первая флаговая информация может быть первоначально установлена в 1 и может оставаться 1 или может изменяться в 0 в зависимости от того, существует ли значимый коэффициент в области иной, чем DC область. То есть, первая флаговая информация, указывающая, является ли позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, большей, чем 0, первоначально установлена в 1; когда позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, равна 0 или более, первая флаговая информация изменяется в 0. Когда первая флаговая информация изменена в 0, индекс LFNST может анализироваться.
[317] В соответствии с примером, переменная log2SbW и переменная log2SbH, указывающие высоту и ширину подблока, могут быть выведены на основе размера блока преобразования, и numSbCoeff, представляющее число коэффициентов, которые могут существовать в подблоке, может быть установлено на основе переменной log2SbW и переменной log2SbH [numSbCoeff=1 << (log2SbW+log2SbH)].
[318] Переменная lastScanPos, указывающая позицию последнего значимого коэффициента в подблоке, первоначально установлена в numSbCoeff, и переменная lastSubBlock, указывающая подблок, в котором существует последний ненулевой коэффициент первоначально установлена в " (1 << (log2TbWidth+log2TbHeight − (log2SbW+log2SbH))) - установлено в 1".
[319] При сканировании в диагональном направлении в подблоке, соответствующем [lastSubBlock[lastScanPos− −], проверяется, существует ли последний значимый коэффициент иной, чем 0, в соответствующей позиции.
[320] Если значимый коэффициент не найден до тех пор, пока переменная lastScanPos не станет 0 в подблоке, указанном посредством lastSubBlock, переменная lastScanPos устанавливается снова в numSbCoeff, и переменная lastSubBlock также изменяется на следующий подблок в направлении сканирования [lastSubBlock− −].
[321] То есть, когда переменная lastScanPos и переменная lastSubBlock обновляются в соответствии с направлением сканирования, идентифицируется позиция, где существует последний ненулевой коэффициент.
[322] Переменная LfnstDcOnly указывает, существует ли ненулевой коэффициент в позиции, которая не является DC компонентом, для по меньшей мере одного блока преобразования в одной единице кодирования, когда ненулевой коэффициент существует в позиции, которая не является DC компонентом для по меньшей мере одного блока преобразования в одной единице кодирования, оно становится 0, а когда ненулевые коэффициенты не существуют в позициях иных, чем DC компоненты для всех блоков преобразования в одной единице кодирования, она становится 1.
[323] Как показано в Таблица 8, когда индекс подблока, в котором существует последний ненулевой коэффициент, равен 0 [lastSubBlock== 0] и позиция последнего ненулевого коэффициента в подблоке больше, чем 0, [lastScanPos > 0], переменная LfnstDcOnly может выводиться как 0. Переменная LfnstDcOnly может выводиться как 0, только когда ширина и высота блока преобразования равны 4 или более [log2TbWidth >= 2 && log2TbHeight >= 2] и не применяется пропуск преобразования [!transform_skip_flag[x0][y0]].
[324] В соответствии с примером, устройство декодирования может определять, существует ли значимый коэффициент во второй области иной, чем первая область, в верхнем-левом текущем блоке (S1540).
[325] Устройство декодирования может установить вторую переменную или вторую флаговую информацию, указывающую, существует ли значимый коэффициент во второй области за исключением первой области, в 1, и когда не имеется значимого коэффициента во второй области, вторая флаговая информация может быть оставлена как 1, и индекс LFNST может анализироваться.
[326] Вторая флаговая информация может представлять собой переменную LfnstZeroOutSigCoeffFlag, которая может указывать, что обнуление выполняется, когда применяется LFNST. Вторая флаговая информация первоначально установлена в 1, и когда значимый коэффициент существует во второй области, вторая флаговая информация может быть изменена в 0.
[327] Переменная LfnstZeroOutSigCoeffFlag может выводиться как 0, когда индекс подблока, в котором существует последний ненулевой коэффициент, больше, чем 0, и ширина и высота блока преобразования больше, чем 4 [(lastSubBlock > 0 && log2TbWidth >= 2 && log2TbHeight >= 2)], или когда последняя позиция ненулевого коэффициента в подблоке, в котором существует последний ненулевой коэффициент, больше, чем 7, и размер блока преобразования равен 4×4 или 8×8 [(lastScanPos > 7 && (log2TbWidth == 2 | | log2TbHeight == 3) && log2TbWidth == log2TbHeight)].
[328] То есть, в блоке преобразования, когда ненулевые коэффициенты выводятся из областей иных, чем верхняя-левая область, где могут существовать коэффициенты преобразования LFNST, или для блоков 4×4 и блоков 8×8, когда ненулевой коэффициент существует вне 8-ой позиции в порядке сканирования, переменная LfnstZeroOutSigCoeffFlag установлена в 0. В этом случае, индекс LFNST не анализируется.
[329] Первая область может быть выведена на основе размера текущего блока.
[330] Например, когда размер текущего блока равен 4×4 или 8×8, первая область может быть сверху-слева текущего блока до позиции восьмой выборки в направлении сканирования.
[331] Когда размер текущего блока равен 4×4 или 8×8, поскольку 8 данных выводятся посредством прямого LFNST, 8 коэффициентов преобразования, принятых устройством декодирования, могут быть скомпонованы от положения сверху-слева текущего блока до позиции 8-ой выборки в направлении сканирования, как на фиг. 12(a) и фиг. 13(a).
[332] Также, когда размер текущего блока не равен 4×4 или 8×8, первая область может быть областью 4×4 сверху-слева текущего блока. Если размер текущего блока не равен 4×4 или 8×8, поскольку 16 данных выводятся посредством прямого LFNST, 16 коэффициентов преобразования, принятых устройством декодирования, могут быть скомпонованы в верхней-левой области 4×4 текущего блока, как показано на фиг. 12(b)-(d) и фиг. 13(b).
[333] Между тем, коэффициенты преобразования, которые могут компоноваться в первой области, могут быть скомпонованы вдоль направления диагонального сканирования, как показано на фиг. 7.
[334] Также, в соответствии с примером, максимальное число коэффициентов преобразования, которые могут существовать в блоке, к которому применяется LFNST, может составлять 16.
[335] Устройство декодирования может получать, посредством анализа, индекс LFNST из битового потока, когда определено, что позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, равна или больше, чем 0, и значимый коэффициент не существует во второй области (S1550).
[336] Иными словами, когда первая флаговая информация указывает, что значимый коэффициент существует в области иной, чем DC область, и вторая флаговая информация указывает, что не имеется значимого коэффициента во второй области, устройство декодирования может получать, посредством анализа, индекс LFNST из битового потока.
[337] То есть, когда первая флаговая информация, которая была установлена в 1, изменяется в 0, и вторая флаговая информация сохраняется как 1, индекс LFNST может анализироваться. Иными словами, имеется значимый коэффициент в подблоке, включающем в себя DC область, то есть, верхний-левый блок 4×4, в дополнение к DC области, и когда значимый коэффициент не существует, при проверке значимого коэффициента вплоть до второй области текущего блока, индекс LFNST для LFNST может анализироваться.
[338] В итоге, на уровне единицы кодирования, первая флаговая информация LfnstDcOnly и вторая флаговая информация LfnstZeroOutSigCoeffFlag устанавливаются в 1, соответственно, и затем заново выводятся в процессе, показанном в Таблице 8, на уровне кодирования остатка. Только когда переменная LfnstDcOnly, выведенная на уровне кодирования остатка, равна 0, и переменная LfnstZeroOutSigCoeffFlag равна 1 [if(LfnstDcOnly== 0 && LfnstZeroOutSigCoeffFlag== 1), lfnst_idx может сигнализироваться на уровне единицы кодирования.
[339] Как описано выше, когда прямое LFNST выполняется устройством кодирования, обнуление, в котором остальные области текущего блока, за исключением области, в которой могут существовать коэффициенты преобразования LFNST, может выполняться как 0.
[341] Поэтому, когда значимый коэффициент существует во второй области, ясно, что LFNST не применяется, поэтому индекс LFNST не сигнализируется, и устройство декодирования не анализирует индекс LFNST.
[342] Информация индекса LFNST принимается как синтаксическая информация, и синтаксическая информация принимается как бинаризованная строка бина, включающая 0 и 1.
[342] Синтаксический элемент индекса LFNST в соответствии с этим вариантом осуществления может указывать, применяется ли обратное LFNST или обратное неразделимое преобразование, и любую одну из матриц ядра преобразования, включенных в набор преобразований, и набор преобразований включает в себя две матрицы ядра преобразования. В этом случае, синтаксический элемент индекса преобразование может иметь три значения.
[343] То есть, в соответствии с вариантом осуществления, значение синтаксического элемента для индекса LFNST может быть 0, указывая случай, в котором обратное LFNST не применяется к целевому блоку, 1, указывая первую матрицу ядра преобразования из матриц ядра преобразования, и 2, указывая вторую матрицу ядра преобразования из матриц ядра преобразования.
[344] Когда индекс LFNST проанализирован, устройство декодирования может применять матрицу LFNST к коэффициентам преобразования первой области для выведения модифицированных коэффициентов преобразования (S1560).
[345] Обратный преобразователь 232 устройства 200 декодирования может определять набор преобразований на основе отношения отображения в соответствии с режимом интра-предсказания, применимым к текущему блоку, и может выполнять обратное LFNST, то есть, обратное неразделимое преобразование на основе набора преобразований и значений синтаксических элементов для индекса LFNST.
[346] Как описано выше, множество наборов преобразований может определяться в соответствии с режимом интра-предсказания блока преобразования, подлежащего преобразованию, и обратное LFNST может выполняться на основе любой одной из матриц ядра преобразования, то есть, матриц LFNST, включенных в набор преобразований, указанных индексом LFNST. Матрица, применяемая к обратному LFNST, может именоваться матрицей обратного LFNST или матрицей LFNST, и наименование этой матрицы не существенно, при условии, что она имеет отношение транспонирования с матрицей, используемой для прямого LFNST.
[347] В одном примере, матрица обратного LFNST может быть неквадратной матрицей, в которой число столбцов меньше, чем число строк.
[348] Между тем, предопределенное число модифицированных коэффициентов преобразования может быть выведено на основе размера текущего блока. Например, когда высота и ширина текущего блока равны 8 или более, 48 модифицированных коэффициентов преобразования выводятся, как показано слева на фиг. 6. И когда ширина и высота текущего блока не равны или больше, чем 8, то есть, когда ширина и высота текущего блока больше или равны 4 и ширина или высота текущего блока меньше, чем 8, 16 модифицированных коэффициентов преобразования могут быть выведены, как показано справа на фиг. 6.
[349] Как показано на фиг. 6, 48 модифицированных коэффициентов преобразования могут быть скомпонованы в верхней-левой, верхней-правой и нижней-левой областях 4×4 верхней-левой области 8×8 текущего блока, и 16 модифицированных коэффициентов преобразования могут быть скомпонованы в верхней-левой области 4×4 текущего блока.
[350] 48 модифицированных коэффициентов преобразования и 16 модифицированных коэффициентов преобразования могут быть скомпонованы в вертикальном или горизонтальном направлении в соответствии с режимом интра-предсказания текущего блока. Например, в случае режима интра-предсказания в горизонтальном направлении (режимы 2-34 на фиг. 8) на основе диагонального направления (режим 34 на фиг. 8), модифицированные коэффициенты преобразования могут быть скомпонованы в горизонтальном направлении, то есть, в направлении сначала по строке, как показано на фиг. 6(a). В случае режима интра-предсказания в вертикальном направлении (режимы от 35 до 66 на фиг. 8) на основе диагонального направления, модифицированные коэффициенты преобразования могут быть скомпонованы в вертикальном направлении, то есть, в направлении сначала по столбцу, как показано на фиг. 6(b).
[351] В одном варианте осуществления, S1560 может включать в себя декодирование индекса преобразования, определение, соответствует ли он условиям применения обратного RST, на основе индекса преобразования, то есть индекса LFNST, выбор матрицы ядра преобразования и применение обратного LFNST к коэффициентам преобразования на основе выбранной матрицы ядра преобразования и/или коэффициента упрощения, когда условия для применения обратного LFNST удовлетворяются. В этом случае, размер матрицы обратного преобразования с упрощением может определяться на основе коэффициента упрощения.
[352] Со ссылкой на S1560, может быть подтверждено, что остаточные выборки для целевого блока выведены на основе обратного LFNST коэффициента преобразования для целевого блока. Касательно размера матрицы обратного преобразования, размер матрицы обычного обратного преобразования составляет N×N, в то время как размер матрицы обратного LFNST сокращен до N×R, делая возможным сокращение занятости памяти в отношении R/N при выполнении обратного LFNST по сравнению с тем, когда выполняется обычное преобразование. Кроме того, по сравнению с числом операций умножения, N×N, при использовании матрицы обычного преобразования, можно сократить число операций умножения в отношении R/N (до N×R), когда используется матрица обратного LFNST. Кроме того, поскольку только R коэффициентов преобразования требуется декодировать, когда применяется обратное LFNST, общее число коэффициентов преобразования для целевого блока может быть сокращено от N до R, по сравнению с тем, когда применяется обычное обратное преобразование, в котором необходимо декодировать N коэффициентов преобразования, следовательно, повышается эффективность декодирования. То есть, в соответствии с S1560, эффективность (обратного) преобразования и эффективность декодирования устройства 200 декодирования могут быть повышены с помощью обратного LFNST.
[353] Устройство 200 декодирования в соответствии с вариантом осуществления может выводить остаточные выборки для целевого блока на основе обратного первичного преобразования для модифицированных коэффициентов преобразования (S1570).
[354] С другой стороны, когда LFNST не применяется, только основанная на MTS процедура обратного преобразования может применяться в процедуре обратного преобразования следующим образом. То есть, устройство декодирования может определять, применяется ли LFNST к текущему блоку, как в вышеописанном варианте осуществления, и когда LFNST не применяется, устройство декодирования может выводить остаточные выборки из коэффициентов преобразования посредством первичного обратного преобразования.
[355] Устройство декодирования может определять, что LFNST не применяется, когда значимые коэффициенты существуют во второй области иной, чем первая верхняя-левая область текущего блока, и может выводить остаточные выборки из коэффициентов преобразования посредством первичного обратного преобразования.
[356] Процедура первичного обратного преобразования может упоминаться как процедура обратного первичного преобразования или процедура обратного MTS преобразования. Такая основанная на MTS процедура первичного обратного преобразования может также быть опущена в некоторых случаях.
[357] Кроме того, упрощенное обратное преобразование может применяться для обратного первичного преобразования, или может использоваться обычное разделимое преобразование.
[358] Устройство 200 декодирования в соответствии с вариантом осуществления может генерировать восстановленные выборки на основе остаточных выборок текущего блока и выборок предсказания текущего блока (S1580).
[359] Следующие чертежи обеспечены для описания конкретных примеров настоящего раскрытия. Поскольку конкретные обозначения устройств или обозначения конкретных сигналов/сообщений/полей, показанных на чертежах, обеспечены для иллюстрации, технические признаки настоящего раскрытия не ограничены конкретными обозначениями, используемыми в следующих чертежах.
[360] Фиг. 16 является блок-схемой последовательности операций, иллюстрирующей работу устройства кодирования видео в соответствии с вариантом осуществления настоящего раскрытия.
[361] Каждая операция, показанная на фиг. 16, может выполняться устройством 100 кодирования, показанным на фиг. 1. Конкретно, S1610 может выполняться предсказателем 120, показанным на фиг. 1, S1620 может выполняться вычитателем 131, показанным на фиг. 1, S1630-S1650 могут выполняться преобразователем 132, показанным на фиг. 1, и S1660 и S1670 могут выполняться квантователем 133 и энтропийным кодером 240, показанным на фиг. 1. Операции в соответствии с S1610-S1670 основаны на некотором из содержания, описанного на фиг. 3 - фиг. 14. Поэтому, описание конкретных подробностей, перекрывающимися с теми, которые были пояснены выше со ссылкой на фиг. 3 - фиг. 14, будет опущено или будет приведено кратко.
[362] Устройство 100 кодирования в соответствии с вариантом осуществления может выводить выборки предсказания на основе режима интра-предсказания, применимого к текущему блоку (S1610).
[363] Устройство 100 кодирования в соответствии с вариантом осуществления может выводить остаточные выборки для текущего блока на основе выборок предсказания (S1620).
[364] Устройство 100 кодирования в соответствии с вариантом осуществления может выводить коэффициенты преобразования для целевого блока на основе первичного преобразования для остаточных выборок (S1630).
[365] Первичное преобразование может выполняться посредством множества ядер преобразования и в этом случае, ядро преобразования может быть выбрано на основе режима интра-предсказания.
[366] Устройство 100 кодирования может определять, следует ли выполнять вторичное преобразование или неразделимое преобразование, конкретно, LFNST, на коэффициентах преобразования для текущего блока.
[367] Когда определено выполнять LFNST, устройство 100 кодирования может выводить модифицированные коэффициенты преобразования для текущего блока на основе коэффициентов преобразования первой области сверху-слева текущего блока и предопределенной матрицы LFNST (S1640).
[368] Устройство 100 кодирования может определять набор преобразований на основе отношения отображения в соответствии с режимом интра-предсказания, применяемым к текущему блоку, и может выполнять LFNST, то есть, неразделимое преобразование на основе одной из двух матриц LFNST, включенных в набор преобразований.
[369] Как описано выше, множество наборов преобразований может определяться в соответствии с режимом интра-предсказания блока преобразования, подлежащего преобразованию. Матрица, применяемая к LFNST, имеет отношение транспонирования с матрицей, используемой для обратного LFNST.
[370] В одном примере, матрица LFNST может быть неквадратной матрицей, в которой число строк меньше, чем число столбцов.
[371] Первая область может быть выведена на основе размера текущего блока. Например, когда высота и ширина текущего блока больше или равна 8, первая область является областью 4×4 сверху-слева, сверху-справа и снизу-слева области 8×8 сверху-слева текущего блока, как показано слева на фиг. 6. Когда высота и ширина текущего блока не равны или больше, чем 8, первая область может быть областью 4×4 сверху-слева текущего блока, как показано справа на фиг. 6.
[372] Коэффициенты преобразования первой области могут считываться в вертикальном или горизонтальном направлении в соответствии с режимом интра-предсказания текущего блока и компоноваться одномерно для операции умножения на матрицу LFNST.
[373] 48 модифицированных коэффициентов преобразования или 16 модифицированных коэффициентов преобразования первой области могут считываться в вертикальном или горизонтальном направлении в соответствии с режимом интра-предсказания текущего блока и компоноваться в одной размерности. Например, в случае режима интра-предсказания в горизонтальном направлении (режимы от 2 до 34 на фиг. 8) на основе диагонального направления (режим 34 на фиг. 8), коэффициенты преобразования могут быть скомпонованы в горизонтальном направлении, то есть, в направлении сначала по строке, как показано на фиг. 6(a). В случае режима интра-предсказания в вертикальном направлении (режимы от 35 до 66 на фиг. 8) на основе диагонального направления, коэффициенты преобразования могут быть скомпонованы в вертикальном направлении, то есть, в направлении сначала по столбцу, как показано на фиг. 6(b).
[374] В одном примере, LFNST может выполняться на основе упрощенной матрицы преобразования или матрицы ядра преобразования, и упрощенная матрица преобразование может быть неквадратной матрицей, в которой число строк меньше, чем число столбцов.
[375] В одном варианте осуществления, S1640 может включать в себя определение, удовлетворяются ли условия для применения LFNST, генерацию и кодирование индекса LFNST на основе определения, выбор матрицы ядра преобразования и применение LFNST к остаточным выборкам на основе выбранной матрицы ядра преобразования и/или коэффициента упрощения, когда условия для применения LFNST удовлетворяются. В этом случае, размер упрощенной матрицы преобразования может определяться на основе коэффициента упрощения.
[376] Со ссылкой на S1640, может быть подтверждено, что коэффициенты преобразования для целевого блока выводятся на основе LFNST для остаточных выборок. Касательно размера матрицы ядра преобразования, размер обычной матрицы ядра преобразования составляет N×N, в то время как размер упрощенной матрицы преобразования сокращен до R×N, тем самым позволяя сократить занятость памяти в отношении R/N при выполнении RST по сравнению с выполнением обычного преобразования. Кроме того, по сравнению с числом операций умножения, N×N, при использовании обычной матрицы ядра преобразования, можно сократить число операций умножения в отношении R/N (до R×N), когда используется упрощенная матрица ядра преобразования. Кроме того, поскольку выводится только R коэффициентов преобразования, когда применяется RST, общее число коэффициентов преобразования для целевого блока может быть сокращено с N до R, по сравнению с тем, когда применяется обычное преобразование, в котором выводятся N коэффициентов преобразования, тем самым сокращая объем данных, передаваемых устройством 100 кодирования на устройство 200 декодирования. То есть, в соответствии с S1640, эффективность преобразования и эффективность кодирования устройства 100 кодирования могут быть повышены посредством LFNST.
[377] Между тем, в соответствии с примером, устройство кодирования может обнулять вторую область текущего блока, в которой не существуют модифицированные коэффициенты преобразования (S1650).
[378] Как показано на фиг. 12 и 13, все оставшиеся области текущего блока, в которых не существуют модифицированные коэффициенты преобразования, могут обрабатываться как нули. Вследствие обнуления, объем вычислений, требуемых для выполнения всего процесса преобразования, сокращается, и объем вычислений, требуемых для всего процесса преобразования, сокращается, тем самым снижая энергопотребление, требуемое для выполнения преобразования. Кроме того, эффективность кодирования изображения может быть повышена за счет снижения времени ожидания, связанного с процессом преобразования.
[379] С другой стороны, когда LFNST не применяется, только основанная на MTS процедура первичного преобразования может применяться в процедуре преобразования, как описано выше. То есть, устройство кодирования может определять, применяется ли LFNST к текущему блоку, как в вышеописанном варианте осуществления, и когда LFNST не применяется, устройство кодирования может выводить коэффициенты преобразования из остаточных выборок посредством первичного преобразования.
[380] Эта процедура первичного преобразования может упоминаться как процедура первичного преобразования или процедура MTS преобразования. Такая основанная на MTS процедура первичного преобразования может также опускаться в некоторых случаях.
[381] Устройство кодирования в соответствии с примером может конфигурировать информацию изображения таким образом, что индекс LFNST, указывающий матрицу LFNST, анализируется, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, равен 0, позиция последнего значимого коэффициента в подблоке равна 0 или более и не имеется значимого коэффициента во второй области (S1660).
[382] То есть, устройство кодирования в соответствии с примером может конфигурировать информацию изображения так, что индекс LFNST, указывающий матрицу LFNST, анализируется, когда значимый коэффициент существует в области, исключая DC область текущего блока, и вышеописанное обнуление выполняется.
[383] Устройство кодирования может конфигурировать информацию изображения таким образом, что информация изображения, показанная в Таблицах 6 и 8, может анализироваться устройством декодирования.
[384] В соответствии с примером, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, равен 0, и позиция последнего значимого коэффициента в подблоке больше, чем 0, определяется, что значимый коэффициент существует в области иной, чем DC область, и информация изображения может быть сконфигурирована так, что индекс LFNST передается или сигнализируется. В настоящем документе, первой позицией в порядке сканирования может быть 0.
[385] Кроме того, в соответствии с примером, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, больше, чем 0, и ширина и высота текущего блока равны 4 или более, определяется, что это ясно указывает, что LFNST не применяется, и информация изображения может быть сконфигурирована так, что индекс LFNST не сигнализируется.
[386] Кроме того, в соответствии с примером, когда размер текущего блока составляет 4×4 или 8×8, и началом позиции в порядке сканирования является 0, позиция последнего значимого коэффициента больше, чем 7, устройство кодирования может определять, что это ясно указывает, что LFNST не применяется, и конфигурировать информацию изображения так, что индекс LFNST не сигнализируется.
[387] То есть, устройство кодирования может конфигурировать информацию изображения так, что индекс LFNST может анализироваться в соответствии со значением выведенной переменной после того, как переменная LfnstDcOnly, соответствующая первой флаговой информации, и переменная LfnstZeroOutSigCoeffFlag, соответствующая второй флаговой информации, выведены в устройстве декодирования.
[388] Например, устройство кодирования устанавливает первую флаговую информацию, указывающую является ли позиция последнего значимого коэффициента большей, чем 0, в подблоке, имеющем индекс 0, в 1, когда позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, больше, чем 0, первая флаговая информация изменяется в 0. В этом случае, индекс LFNST может быть закодирован.
[389] Кроме того, устройство кодирования устанавливает вторую флаговую информацию, указывающую, существует ли значимый коэффициент во второй области за исключением первой области, в 1, когда значимый коэффициент не существует во второй области, вторая флаговая информация может быть оставлена как 1. В этом случае, индекс LFNST может быть закодирован.
[390] С другой стороны, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, больше, чем 0, и ширина и высота текущего блока равны 4 или более, устройство кодирования может изменить вторую флаговую информацию в 0, или когда размер текущего блока составляет 4×4 или 8×8, и позицией последнего значимого коэффициента является 8 или более, устройство кодирования может изменить вторую флаговую информацию в 0. В этом случае, поскольку информация изображения сконфигурирована таким образом, что индекс LFNST не анализируется, индекс LFNST не кодируется.
[391] Устройство 100 кодирования в соответствии с вариантом осуществления может выводить квантованные коэффициенты преобразования путем выполнения квантования на основе модифицированных коэффициентов преобразования для целевого блока и может кодировать и выводить информацию изображения, включающую в себя информацию о квантованных коэффициентах преобразования и индекс LFNST (S1670).
[392] То есть, устройство кодирования может генерировать остаточную информацию, включающую в себя информацию о квантованных коэффициентах преобразования. Остаточная информация может включать в себя вышеописанную связанную с преобразованием информацию/синтаксический элемент. Устройство кодирования может кодировать информацию изображения/видео, включая остаточную информацию, и выводить закодированную информацию изображения/видео в форме битового потока.
[393] Более конкретно, устройство 100 кодирования может генерировать информацию о квантованных коэффициентах преобразования и кодировать информацию о сгенерированных квантованных коэффициентах преобразования.
[394] В одном примере, информация о квантованных коэффициентах преобразования может включать в себя по меньшей мере одно из информации о том, применяется ли LFNST, информации о коэффициенте упрощения, информации о минимальном размере преобразования, для которого применяется LFNST, и информации о максимальном размере преобразования, для которого применяется LFNST.
[395] Также, устройство 100 кодирования может кодировать информацию о размере максимального применяемого блока преобразования, например, синтаксическую информацию о размере блока преобразования, такую как sps_log2_max_luma_transform_size_minus5, или флаговую информацию, такую как sps_max_luma_transform_size_64_flag, на уровне набора параметров последовательности.
[396] В настоящем раскрытии, по меньшей мере одно из квантования/деквантования и/или преобразования/обратного преобразования может быть опущено. Когда квантование/деквантование опущено, квантованный коэффициент преобразования может упоминаться как коэффициент преобразования. Когда преобразование/обратное преобразование опущено, коэффициент преобразования может упоминаться как коэффициент или остаточный коэффициент или все еще может упоминаться как коэффициент преобразования в целях непротиворечивости выражения.
[397] Кроме того, в настоящем раскрытии, квантованный коэффициент преобразования и коэффициент преобразования могут упоминаться как коэффициент преобразования и масштабированный коэффициент преобразования, соответственно. В этом случае, остаточная информация может включать в себя информацию о коэффициенте(ах) преобразования, и информация о коэффициенте(ах) преобразования может сигнализироваться посредством синтаксиса кодирования остатка. Коэффициенты преобразования могут быть выведены на основе остаточной информации (или информации о коэффициенте(ах) преобразования), и масштабированные коэффициенты преобразования могут быть выведены посредством обратного преобразования (масштабирования) коэффициентов преобразования. Остаточные выборки могут быть выведены на основе обратного преобразования (преобразования) масштабированных коэффициентов преобразования. Эти детали также могут быть применены/выражены в других частях настоящего раскрытия.
[398] В вышеописанных вариантах осуществления, способы поясняются на основе блок-схем последовательностей операций, с помощью последовательности этапов или блоков, но настоящее раскрытие не ограничено этим порядком этапов или блоков, и определенный этап может выполняться в порядке ином, чем описано выше, или одновременно с другим этапом. Дополнительно, специалисту в данной области техники должно быть понятно, что этапы, показанные в блок-схеме последовательности операций выше, не являются исключительными, что дополнительные этапы могут быть включены или что один или несколько этапов в блок-схеме последовательности операций могут быть удалены без влияния на объем настоящего раскрытия.
[399] Вышеописанные способы в соответствии с настоящим раскрытием могут быть реализованы в форме программного обеспечения, и устройство кодирования и/или устройство декодирования в соответствии с настоящим раскрытием могут быть включены в устройство для обработки изображения, такое как телевизор, компьютер, смартфон, телевизионную приставку, дисплейное устройство и т.д.
[400] Когда варианты осуществления настоящего раскрытия реализованы в программном обеспечении, вышеописанные способы могут быть реализованы как модули (процессы, функции и т.д.) для выполнения вышеописанных функций. Модули могут храниться в памяти и могут исполняться процессором. Память может быть внутренней или внешней по отношению к процессору и может быть соединена с процессором различными хорошо известными средствами. Процессор может включать в себя специализированную интегральную схему (ASIC), другие чипсеты, логическую схему и/или устройство обработки данных. Память может включать в себя постоянную память (ROM), память с произвольным доступом (RAM), флэш-память, карту памяти, носитель хранения и/или другое устройство хранения. То есть, варианты осуществления, описанные в настоящем раскрытии, могут реализовываться и выполняться на процессоре, микропроцессоре, контроллере или чипе. Например, функциональные блоки, показанные на каждом чертеже, могут реализовываться и выполняться на компьютере, процессоре, микропроцессоре, контроллере или чипе.
[401] Кроме того, устройство декодирования и устройство кодирования, к которым применяется настоящее раскрытие, могут быть включены в приемопередатчик мультимедийного вещания, мобильный терминал связи, устройство домашнего кинотеатра, устройство цифрового кинотеатра, камеру наблюдения, устройство для разговора по видео, устройство связи в реальном времени, такой как видеосвязь, мобильное устройство стриминга, носитель хранения, камеру-регистратор, устройство обеспечения услуги видео по требованию (VoD), устройство доставки видео непосредственно от провайдера контента (OTT), устройство обеспечения услуги Интернет-стриминга, устройство трехмерного (3D) видео, устройство видео-телеконференции и медицинское видео-устройство, и могут использоваться для обработки сигнала видео и сигнала данных. Например, видео-устройство OTT может включать в себя игровую консоль, blue-ray плеер, телевизор с Интернет-доступом, систему домашнего кинотеатра, смартфон, планшетный PC, цифровой рекордер видео (DVR) и тому подобное.
[402] Кроме того, способ обработки, к которому применяется настоящее раскрытие, может выполняться в форме программы, исполняемой компьютером, и может храниться в считываемом компьютером носителе записи. Мультимедийные данные, имеющие структуру данных в соответствии с настоящим раскрытием, могут также храниться в считываемых компьютером носителях записи. Считываемый компьютером носитель записи включает в себя все типы устройств хранения и распределенных устройств хранения, в которых хранятся считываемые компьютером данные. Считываемые компьютером носители записи могут включать в себя, например, Blu-ray диск (BD), универсальную последовательную шину (USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, магнитную ленту, флоппи-диск и устройство оптического хранения данных. Дополнительно, считываемый компьютером носитель записи включает в себя носители, реализуемые в форме несущей волны (например, передача через Интернет). Кроме того, битовый поток, сгенерированный способом кодирования, может храниться в считываемом компьютером носителе записи или может передаваться по сетям проводной или беспроводной связи. Дополнительно, варианты осуществления настоящего раскрытия могут быть реализованы как компьютерный программный продукт посредством программных кодов, и программные коды могут исполняться на компьютере посредством вариантов осуществления настоящего раскрытия. Программные коды могут храниться на считываемом компьютером носителе.
[403] Фиг. 17 схематично иллюстрирует пример системы кодирования видео/изображения, в которой применимо настоящее раскрытие.
[404] Со ссылкой на фиг. 17, система кодирования видео/изображения может включать в себя первое устройство (устройство-источник) и второе устройство (устройство приема). Устройство-источник может доставлять закодированную информацию или данные видео/изображения в форме файла или потоковой передачи (стриминга) на устройство приема через цифровой носитель хранения или сеть.
[405] Устройство-источник может включать в себя источник видео, устройство кодирования и передатчик. Устройство приема может включать в себя приемник, устройство декодирования и устройство рендеринга (визуализации). Устройство кодирования может называться устройством кодирования видео/изображения, и устройство декодирования может называться устройством декодирования видео/изображения. Передатчик может быть включен в устройство кодирования. Приемник может быть включен в устройство декодирования. Устройство визуализации может включать в себя дисплей, и дисплей может быть сконфигурирован как отдельное устройство или внешний компонент.
[406] Источник видео может получать видео/изображение через процесс захвата, синтеза или генерации видео/изображения. Источник видео может включать в себя устройство захвата видео/изображения и/или устройство генерации видео/изображения. Устройство захвата видео/изображения может включать в себя, например, одну или более камер, архивы видео/изображений, включающие в себя ранее захваченные видео/изображения, и тому подобное. Устройство генерации видео/изображения может включать в себя, например, компьютер, планшет и смартфон и может (электронным способом) генерировать видео/изображения. Например, виртуальное видео/изображение может генерироваться через компьютер или тому подобное. В этом случае, процесс захвата видео/изображения может быть заменен на процесс генерации связанных данных.
[407] Устройство кодирования может кодировать введенное видео/изображение. Устройство кодирования может выполнять последовательность процедур, таких как предсказание, преобразование и квантование для эффективности сжатия и кодирования. Закодированные данные (закодированная информация видео/изображения) могут выводиться в форме битового потока.
[408] Передатчик может передавать закодированную информацию или данные видео/изображения, выведенные в форме битового потока, на приемник устройства приема через цифровой носитель хранения или сеть в форме файла или потоковой передачи. Цифровой носитель хранения может включать в себя различные носители хранения, такие как USB, SD, CD, DVD, Blu-ray, HDD, SSD и тому подобное. Передатчик может включать в себя элемент для генерации медиа-файла посредством предопределенного формата файла и может включать в себя элемент для передачи через сеть вещания/связи. Приемник может принимать/извлекать битовый поток и передавать принятый/извлеченный битовый поток на устройство декодирования.
[409] Устройство декодирования может декодировать видео/изображение путем выполнения последовательности процедур, таких как деквантование, обратное преобразование и предсказание, соответствующих операции устройства кодирования.
[410] Устройство визуализации может визуализировать декодированное видео/изображение. Визуализированное видео/ изображение может воспроизводиться посредством дисплея.
[411] Фиг. 18 показывает пример системы стриминга контента, в которой применимо настоящее раскрытие.
[412] Система стриминга контента, в которой применяется настоящее раскрытие, может в широком смысле включать в себя сервер кодирования, стриминговый сервер, веб-сервер, медиа-хранилище, пользовательское оборудование и устройство мультимедийного ввода.
[413] Сервер кодирования функционирует для сжатия цифровых данных контента, введенного из устройств мультимедийного ввода, таких как смартфон, камера, камера-регистратор и т.д., в цифровые данные, чтобы сгенерировать битовый поток и передать его на стриминговый сервер. В качестве другого примера, когда устройство мультимедийного ввода, такое как смартфон, камера, камера-регистратор и т.д., непосредственно генерирует битовый поток, сервер кодирования может опускаться. Битовый поток может генерироваться способом кодирования или способом генерации битового потока, в котором применяется настоящее раскрытие, и стриминговый сервер может временно хранить битовый поток в процессе передачи или приема битового потока.
[414] Стриминговый сервер передает мультимедийные данные на пользовательское оборудование на основе запроса пользователя через веб-сервер, который функционирует как инструмент, который информирует пользователя об услуге. Когда пользователь запрашивает желаемую услугу, веб-сервер переносит запрос на стриминговый сервер, и стриминговый сервер передает мультимедийные данные пользователю. В этом отношении, система стриминга контента может включать в себя отдельный сервер управления, и в этом случае, сервер управления функционирует, чтобы управлять командами/откликами между соответствующими оборудованиями в системе стриминга контента.
[415] Стриминговый сервер может принимать контент из медиа-хранилища и/или сервера кодирования. Например, когда контент принимается от сервера кодирования, контент может приниматься в реальном времени. В этом случае, чтобы обеспечить плавную стриминговую услугу, стриминговый сервер может хранить битовый поток в течение предопределенного периода времени.
[416] Например, пользовательское оборудование может включать в себя мобильный телефон, смартфон, ноутбук, терминал цифрового вещания, персональный цифровой помощник (PDA), портативный мультимедийный плеер (PMP), навигатор, тонкий PC, планшетный PC, ультрабук, носимое устройство (например, терминал типа часов (умные часы), терминал типа очков (умные очки), наголовный дисплей (HMD)), цифровой телевизор, настольный компьютер, цифровой указатель и тому подобное. Каждый сервер в системе стриминга контента может работать как распределенный сервер, и в этом случае, данные, принятые от каждого сервера, могут обрабатываться распределенным образом.
[417] Пункты формулы изобретения, раскрытые в настоящем документе, могут комбинироваться различным образом. Например, технические признаки пунктов формулы изобретения на способ в настоящем раскрытии могут комбинироваться для реализации или выполнения в устройстве, и технические признаки пунктов формулы изобретения на устройство могут комбинироваться для реализации или выполнения в способе. Кроме того, технические признаки пунктов формулы на способ и пунктов формулы изобретения на устройство могут комбинироваться для реализации или выполнения в устройстве, и технические признаки пунктов формулы на способ и пунктов формулы изобретения на устройство могут комбинироваться для реализации или выполнения в способе.
Claims (51)
1. Способ декодирования изображения, выполняемый устройством декодирования, причем способ содержит:
получение остаточной информации из битового потока;
выведение позиции последнего значимого коэффициента в текущем блоке и коэффициентов преобразования для текущего блока на основе остаточной информации;
определение того, является ли индекс подблока, включающего в себя последний значимый коэффициент, равным 0 и позиция последнего значимого коэффициента в подблоке больше 0;
определение того, существует ли значимый коэффициент во второй области, иной чем первая область сверху слева текущего блока;
получение, посредством анализа, индекса LFNST из битового потока, когда определено, что позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, больше 0 и значимый коэффициент не существует во второй области;
выведение модифицированных коэффициентов преобразования путем применения матрицы LFNST, выведенной на основе индекса LFNST, к коэффициентам преобразования в первой области;
выведение остаточных дискретных отсчетов для текущего блока на основе обратного первичного преобразования для модифицированных коэффициентов преобразования; и
генерирование восстановленного кадра на основе остаточных дискретных отсчетов для текущего блока.
2. Способ декодирования изображения по п.1, дополнительно содержащий установку первой флаговой информации, относящейся к тому, является ли позиция последнего значимого коэффициента большей 0 в подблоке, имеющем индекс 0, в 1, причем на основе того, что позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, больше 0, изменяют первую флаговую информацию в 0 и получают, посредством анализа, индекс LFNST.
3. Способ декодирования изображения по п.1, дополнительно содержащий установку второй флаговой информации, относящейся к тому, существует ли значимый коэффициент во второй области за исключением первой области, в 1, причем, когда не имеется значимого коэффициента во второй области, сохраняют вторую флаговую информацию как 1 и получают, посредством анализа, индекс LFNST.
4. Способ декодирования изображения по п.3, в котором вторая флаговая информация выводится как 0 на основе того, что индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, больше 0 и ширина и высота текущего блока равны 4 или более, причем анализ в отношении индекса LFNST не выполняют на основе того, что вторая флаговая информация равна 0.
5. Способ декодирования изображения по п.3, в котором вторая флаговая информация выводится как 0 на основе того, что размер текущего блока составляет 4×4 или 8×8 и позиция последнего значимого коэффициента больше или равна 8, причем анализ в отношении индекса LFNST не выполняют на основе того, что вторая флаговая информация равна 0.
6. Способ декодирования изображения по п.1, в котором первая область выводится на основе размера текущего блока,
при этом на основе того, что размер текущего блока составляет 4×4 или 8×8, первая область представляет собой от положения сверху слева текущего блока до позиции 8-го дискретного отсчета в направлении сканирования, и
причем на основе того, что размер текущего блока не составляет 4×4 или 8×8, первая область представляет собой область 4×4 сверху слева текущего блока.
7. Способ декодирования изображения по п.1, в котором заранее определенное число модифицированных коэффициентов преобразования выводится на основе размера текущего блока,
при этом на основе того, что высота и ширина текущего блока больше или равны 8, выводятся 48 модифицированных коэффициентов преобразования, и
причем на основе того, что ширина и высота текущего блока равны 4 или более и ширина или высота текущего блока меньше 8, выводятся 16 модифицированных коэффициентов преобразования.
8. Способ декодирования изображения по п.4, в котором 48 модифицированных коэффициентов преобразования компонуются в верхней левой, верхней правой и нижней левой областях 4×4 в верхней левой области 8×8 текущего блока, причем 16 модифицированных коэффициентов преобразования компонуются в верхней левой области 4×4 текущего блока.
9. Способ кодирования изображения, выполняемый устройством кодирования изображения, причем способ содержит:
выведение дискретных отсчетов предсказания для текущего блока;
выведение остаточных дискретных отсчетов для текущего блока на основе дискретных отсчетов предсказания;
выведение коэффициентов преобразования для текущего блока на основе первичного преобразования для остаточных дискретных отсчетов;
выведение модифицированных коэффициентов преобразования для текущего блока на основе коэффициентов преобразования первой области сверху слева текущего блока и заранее определенной матрицы LFNST;
обнуление второй области текущего блока, в которой модифицированные коэффициенты преобразования не существуют;
формирование информации изображения таким образом, что индекс LFNST, относящийся к матрице LFNST, передается, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, равен 0, позиция последнего значимого коэффициента в подблоке больше 0 и значимый коэффициент не существует во второй области, и
вывод информации изображения, включающей в себя остаточную информацию, выведенную посредством квантования модифицированных коэффициентов преобразования, и индекс LFNST.
10. Способ кодирования изображения по п.9, в котором формирование информации изображения содержит:
установку первой флаговой информации, относящейся к тому, является ли позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, большей 0, в 1;
изменение первой флаговой информации в 0 на основе того, что позиция последнего значимого коэффициента в подблоке, имеющем индекс 0, больше 0; и
кодирование индекса LFNST.
11. Способ кодирования изображения по п.9, в котором формирование информации изображения содержит:
установку второй флаговой информации, относящейся к тому, существует ли значимый коэффициент во второй области за исключением первой области, в 1;
сохранение второй флаговой информации как 1, когда не имеется значимого коэффициента во второй области; и
кодирование индекса LFNST.
12. Способ кодирования изображения по п.11, в котором вторая флаговая информация изменяется в 0 на основе того, что индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, больше 0 и ширина и высота текущего блока равны 4 или более, причем информация изображения сконфигурирована таким образом, что индекс LFNST не передается на основе того, что вторая флаговая информация равна 0.
13. Способ кодирования изображения по п.11, в котором вторая флаговая информация изменяется как 0 на основе того, что размер текущего блока составляет 4×4 или 8×8 и позиция последнего значимого коэффициента больше или равна 8, причем информация изображения сконфигурирована таким образом, что индекс LFNST не передается на основе того, что вторая флаговая информация равна 0.
14. Способ кодирования изображения по п.9, в котором первая область выводится на основе размера текущего блока,
при этом на основе того, что высота и ширина текущего блока больше или равны 8, первая область представляет собой верхнюю левую, верхнюю правую и нижнюю левую области 4×4 в пределах верхней левой области 8×8 текущего блока, и
причем на основе того, что ширина и высота текущего блока равны 4 или более и ширина или высота текущего блока меньше чем 8, первая область представляет собой верхнюю левую область 4×4 текущего блока.
15. Способ передачи, содержащий этапы, на которых:
получают битовый поток, причем битовый поток генерируется посредством:
выведения дискретных отсчетов предсказания для текущего блока,
выведения остаточных дискретных отсчетов для текущего блока на основе дискретных отсчетов предсказания,
выведения коэффициентов преобразования для текущего блока на основе первичного преобразования для остаточных дискретных отсчетов,
выведения модифицированных коэффициентов преобразования для текущего блока на основе коэффициентов преобразования первой области сверху слева текущего блока и заранее определенной матрицы LFNST,
обнуления второй области текущего блока, в которой модифицированные коэффициенты преобразования не существуют,
формирования информации изображения таким образом, что индекс LFNST, относящийся к матрице LFNST, передается, когда индекс подблока, включающего в себя последний значимый коэффициент в текущем блоке, равен 0, позиция последнего значимого коэффициента в подблоке больше 0 и значимый коэффициент не существует во второй области, и
вывода информации изображения, включающей в себя остаточную информацию, выведенную посредством квантования модифицированных коэффициентов преобразования, и индекс LFNST, чтобы сгенерировать битовый поток; и
передают битовый поток информации изображения, включающей в себя выведенную остаточную информацию.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/873,820 | 2019-07-12 | ||
US62/873,897 | 2019-07-13 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2023117461A Division RU2812248C2 (ru) | 2019-07-12 | 2020-07-10 | Способ кодирования изображения на основе преобразования и устройство для его осуществления |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2799629C1 true RU2799629C1 (ru) | 2023-07-07 |
Family
ID=
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2008105046A (ru) * | 2005-08-12 | 2009-08-20 | Майкрософт Корпорейшн (Us) | Эффективное кодирование и декодирование блоков преобразования |
WO2018026118A1 (ko) * | 2016-08-01 | 2018-02-08 | 한국전자통신연구원 | 영상 부호화/복호화 방법 |
RU2667715C1 (ru) * | 2012-04-13 | 2018-09-24 | Кэнон Кабусики Кайся | Способ, устройство и система для кодирования и декодирования поднабора единиц преобразования кодированных видеоданных |
US10306229B2 (en) * | 2015-01-26 | 2019-05-28 | Qualcomm Incorporated | Enhanced multiple transforms for prediction residual |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2008105046A (ru) * | 2005-08-12 | 2009-08-20 | Майкрософт Корпорейшн (Us) | Эффективное кодирование и декодирование блоков преобразования |
RU2667715C1 (ru) * | 2012-04-13 | 2018-09-24 | Кэнон Кабусики Кайся | Способ, устройство и система для кодирования и декодирования поднабора единиц преобразования кодированных видеоданных |
US10306229B2 (en) * | 2015-01-26 | 2019-05-28 | Qualcomm Incorporated | Enhanced multiple transforms for prediction residual |
WO2018026118A1 (ko) * | 2016-08-01 | 2018-02-08 | 한국전자통신연구원 | 영상 부호화/복호화 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114731434A (zh) | 基于变换的图像编码方法及其装置 | |
US11831918B2 (en) | Image coding using transform index | |
US11831912B2 (en) | Transform for matrix-based intra-prediction in image coding | |
US11516484B2 (en) | Transform-based image coding method, and apparatus therefor | |
EP4376411A2 (en) | Transform in intra prediction-based image coding | |
US20220417518A1 (en) | Transform-based image coding method and device | |
JP7488399B2 (ja) | 変換カーネルセットに関する情報に対するコーディング | |
US20240283976A1 (en) | Transform-based video coding method, and device therefor | |
AU2024203547A1 (en) | Image coding method based on transform, and device therefor | |
US12022094B2 (en) | Transform-based image coding method and device for same | |
KR20220024500A (ko) | 변환에 기반한 영상 코딩 방법 및 그 장치 | |
CN114009023A (zh) | 基于变换的图像编码方法及其装置 | |
US11563979B2 (en) | Image coding method on basis of transform, and apparatus therefor | |
CN114846799A (zh) | 基于变换的图像编码方法及其设备 | |
RU2799629C1 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
RU2812248C2 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
RU2824183C1 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
RU2803184C1 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
RU2811986C2 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
US11611776B2 (en) | Method and apparatus for coding image on basis of transform | |
RU2795932C1 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
US12132902B2 (en) | Transform-based image coding method and device for same | |
RU2793775C1 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
RU2806283C2 (ru) | Способ кодирования изображения на основе преобразования и устройство для его осуществления | |
US12063366B2 (en) | Transform-based image coding method, and device therefor |