СПОСОБ И УСТРОЙСТВО ОБРАБОТКИ ВИДЕОСИГНАЛА
METHOD AND DEVICE FOR PROCESSING VIDEO SIGNAL

Область техники, к которой относится изобретение
[0001] Настоящее изобретение относится к способу и устройству обработки видеосигнала.
Уровень техники
[0002] В последнее время в различных областях возросли потребности в изображениях высокого разрешения и высокого качества, например, в изображениях высокой четкости (англ. high definition (HD)) и сверхвысокой четкости (англ. ultra-high definition (UHD)). Однако, чем выше разрешение и качество изображения, тем больше количество данных по сравнению с данными обычного изображения. Поэтому возрастают затраты на передачу и хранение данных изображений при их передаче посредством таких традиционных физических сред, как проводные или беспроводные широкополосные сети, или их хранении на традиционном носителе. Решить проблемы, возникающие в связи с увеличением разрешения и качества данных изображений, позволяют высокоэффективные способы
кодирования/декодирования изображений.
[0003] Технология сжатия изображений включает в себя разнообразные способы, в том числе: способ межкадрового предсказания значения пикселя, входящего в состав текущего изображения, по изображению, предшествующему текущему изображению или следующему за ним; способ внутрикадрового предсказания значения пикселя, входящего в состав текущего изображения, на основе информации о пикселях в текущем изображении; способ энтропийного кодирования, состоящий в присвоении короткого кода значению с высокой частотой появления и присвоении длинного кода значению с низкой частотой появления; и т.п. Указанная технология сжатия изображений позволяет эффективно сжимать видеоданные, а также передавать и хранить их.
[0004] С ростом потребностей в изображениях высокого разрешения также возросли потребности в части содержимого стереографических изображений - новой услуги передачи изображений. В настоящее время обсуждается способ сжатия видеоизображений для эффективного создания содержимого стереографического изображения с высоким разрешением и сверхвысоким разрешением.
Раскрытие сущности изобретения
Техническая задача
[0005] Настоящее изобретение направлено на создание способа и устройства кодирования/декодирования остаточных данных на основе множества преобразований.
[0006] Настоящее изобретение направлено на создание способа и устройства выполнения вторичного преобразования в отношении частичной области блока, в отношении которого было выполнено первичное преобразование.
[0007] Технические задачи, которые можно решить с помощью настоящего изобретения, не ограничены вышеуказанной задачей, при этом после ознакомления с нижеследующим описанием специалистам в области техники настоящего изобретения станут ясны и другие, не указанные здесь, технические задачи.
Техническое решение
[0008] Способ и устройство декодирования видеосигнала по настоящему изобретению позволяют получать остаточные коэффициенты текущего блока, выполнять обратное квантование остаточных коэффициентов, выполнять вторичное обратное преобразование в отношении обратно-квантованных остаточных коэффициентов, и выполнять первичное обратное преобразование в отношении результата выполнения вторичного обратного преобразования. В данном случае, вторичное обратное преобразование выполняют в отношении частичной области текущего блока.
[0009] Способ и устройство кодирования видеосигнала по настоящему изобретению позволяют выполнять первичное преобразование в отношении остаточных отсчетов, выполнять вторичное преобразование первично-преобразованных коэффициентов, сгенерированных в результате первичного преобразования, квантовать вторично-преобразованные коэффициенты, сгенерированные в результате вторичного преобразования, и кодировать квантованные преобразованные коэффициенты. В данном случае, вторичное преобразование выполняют в отношении частичной области текущего блока.
[0010] В способе и устройстве кодирования/декодирования видеосигнала по настоящему изобретению вторичное преобразование/обратное преобразование выполняют с применением матрицы преобразований и одномерной матрицы, сгенерированных путем упорядочивания обратно-квантованных остаточных коэффициентов, входящих в частичную область в одном измерении.
[0011] В способе и устройстве кодирования/декодирования видеосигнала по настоящему изобретению число строк или столбцов матрицы преобразований меньше числа отсчетов, входящих в частичную область.
[0012] В способе и устройстве кодирования/декодирования видеосигнала по настоящему изобретению размер или форму частичной области определяют на основе размера или формы текущего блока.
[0013] В способе и устройстве кодирования/декодирования видеосигнала по настоящему изобретению тип преобразования/обратного преобразования для первичного обратного преобразования определяют на основе информации об индексе, сообщенной посредством битового потока.
[0014] В способе и устройстве кодирования/декодирования видеосигнала по настоящему изобретению информация об индексе указывает любой из множества наборов преобразований, при этом первый потенциальный тип преобразования, входящий в набор преобразований, определяют как горизонтально-направленный тип преобразования текущего блока, а второй потенциальный тип преобразования, входящий в набор преобразований, определяют как вертикально-направленный тип преобразования текущего блока.
[0015] В способе и устройстве кодирования/декодирования видеосигнала по настоящему изобретению тип преобразования для первичного преобразования/обратного преобразования определяют на основе результата сравнения ширины текущего блока и высоты текущего блока.
[0016] Следует понимать, что кратко раскрытые выше признаки представляют собой примеры аспектов настоящего изобретения, осуществление которого раскрыто ниже, не ограничивающие объем настоящего изобретения.
Полезные эффекты
[0017] Настоящее изобретение позволяет улучшить эффективность кодирования/декодирования остаточных данных путем выполнения множества преобразований в отношении остаточных данных.
[0018] Настоящее изобретение позволяет улучшить эффективность кодирования/декодирования путем выполнения вторичного преобразования в отношении частичной области блока, в отношении которого было выполнено первичное преобразование.
[0019] Эффекты, которые может обеспечить настоящее изобретение, могут не быть ограничены вышеуказанными, при этом после ознакомления с нижеследующим описанием специалистам в области техники настоящего изобретения станут ясны и другие, не указанные здесь, эффекты. Краткое описание чертежей
[0020] ФИГ. 1 - блок-схема, иллюстрирующая устройство кодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
[0021] ФИГ. 2 - блок-схема, иллюстрирующая устройство декодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
[0022] ФИГ. 3 - схема, иллюстрирующая потенциальные режимы разбиения с возможностью применения к блоку кодирования в случае кодирования блока кодирования путем межкадрового предсказания.
[0023] ФИГ. 4 - схема, иллюстрирующая пример иерархического разбиения блока кодирования на основе древовидной структуры по одному из вариантов осуществления настоящего изобретения.
[0024] ФИГ. 5 - схема, иллюстрирующая тип сегмента, при котором разрешено разбиение на основе двоичного дерева по одному из вариантов осуществления настоящего изобретения.
[0025] ФИГ. 6 - схема, иллюстрирующая тип разбиения на основе троичного дерева.
[0026] ФИГ. 7 - схема, иллюстрирующая пример, в котором разрешен только конкретный тип разбиения на основе двоичного дерева.
[0027] ФИГ. 8 - схема, иллюстрирующая пример, в котором информацию, относящуюся к разрешенному количеству раз разбиения на основе двоичного дерева, кодируют/декодируют по одному из вариантов осуществления настоящего изобретения.
[0028] ФИГ. 9 - блок-схема, иллюстрирующая процесс кодирования остаточных отсчетов по одному из вариантов осуществления настоящего изобретения.
[0029] ФИГ. 11 - схема, иллюстрирующая то, являются ли набор преобразований в вертикальном направлении и набор преобразований в горизонтальном направлении одинаковыми для 33 режимов внутрикадрового предсказания.
[0030] ФИГ. 12 - схема, иллюстрирующая область выполнения вторичного преобразования.
Осуществление изобретения
[0031] Разнообразные изменения могут быть внесены в настоящее изобретение, несколько вариантов осуществления которого будут раскрыты ниже на примерах чертежей и подробно описаны. При этом настоящее изобретение не ограничено данными примерами осуществления, которые можно рассматривать как включающие в себя все изменения, эквивалентные решения или замены в отношении технического замысла и технического объема настоящего изобретения. Аналогичные номера позиций обозначают аналогичные элементы на чертежах.
[0032] Такие слова как «первый», «второй» и т.п. в тексте описания могут служить для описания различных компонентов, однако их не следует толковать как ограничивающие эти компоненты. Эти слова служат только для проведения различия между одним компонентом и другими компонентами. Например, «первый» компонент может быть назван «вторым» компонентом без отступления от объема настоящего изобретения, при этом «второй» компонент может, аналогичным образом, быть назван «первым» компонентом. Выражение «и/или» означает наличие комбинации множества единиц или любого из множества терминов.
[0033] Если в настоящем раскрытии сказано, что элемент «связан» или «соединен» с другим элементом, это может означать не только то, что этот элемент непосредственно связан или соединен с таким другим элементом, но и то, что между ними может быть еще один элемент. При этом если сказано, что элемент «непосредственно связан» или «непосредственно соединен» с другим элементом, это значит, что между ними отсутствует какой-либо другой элемент.
[0034] Термины в тексте настоящего описания служат исключительно для раскрытия частных вариантов осуществления и не предназначены для ограничения настоящего изобретения. Выражение в единственном числе включает в себя значение множественного числа, если иное явно не следует из контекста. Следует понимать, что в настоящем описании такие выражения, как «включающий в себя», «имеющий» и т.п.служат для указания наличия признаков, количеств, этапов, действий, элементов, частей или их комбинаций, раскрытых в описании, но не исключают возможности наличия или добавления одного или нескольких других признаков, количеств, этапов, действий, элементов, частей или их комбинаций.
[0035] Далее будут подробно раскрыты предпочтительные варианты осуществления настоящего изобретения на примерах прилагаемых чертежей. Далее по тексту одни и те же составные части на чертежах обозначены одними и теми же номерами позиций, при этом одни и те элементы не будут раскрываться повторно.
[0036]
[0037] ФИГ. 1 - блок-схема, иллюстрирующая устройство кодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
[0038] Устройство 100 кодирования видеоинформации на ФИГ. 1 может включать в себя: модуль 110 разбиения изображения, модули 120 и 125 предсказания, модуль 130 преобразования, модуль 135 квантования, модуль 160 переупорядочивания, модуль 165 энтропийного кодирования, модуль 140 обратного квантования, модуль 145 обратного преобразования, модуль 150 фильтрации и запоминающее устройство 155.
[0039] Составные части на ФИГ. 1 изображены по отдельности, чтобы представить их характерные функции, отличные друг от друга, в устройстве кодирования видеоинформации. Однако это не означает, что каждая составная часть выполнена в виде составной единицы обособленного аппаратного или программного средства. Иными словами, каждая составная часть условно включает в себя каждую из перечисленных составных частей. То есть по меньшей мере две составные части каждой составной части могут быть объединены с образованием одной составной части или одна составная часть может быть поделена на множество составных частей для выполнения каждой функции. Варианты осуществления, в которых каждая составная часть является объединенной или одна составная часть является поделенной, также входят в объем настоящего изобретения, если это не является отступлением от его сущности.
[0040] Кроме того, некоторые составляющие могут быть не обязательными составляющими, выполняющими основные функции по настоящему изобретению, а выборочными составляющими, только улучшающими показатели работы. Настоящее изобретение можно реализовать посредством только обязательных составных частей для реализации сущности настоящего изобретения, исключив составляющие, служащие для улучшения показателей работы. Структура, включающая в себя только обязательные составляющие и не включающая в себя выборочные составляющие, служащие только для улучшения показателей работы, также входит в объем настоящего изобретения.
[0041] Модуль 110 разбиения изображения выполнен с возможностью разбиения вводного изображения на одну или несколько единиц обработки. В данном случае, единица обработки может представлять собой единицу предсказания (ЕП, англ. prediction unit (PU)), единицу преобразования (ЕПр, англ. transform unit (TU)) или единицу кодирования (ЕК, англ. coding unit (CU)). Модуль 110 разбиения изображения выполнен с возможностью разбиения одного изображения на комбинации нескольких единиц кодирования, единиц предсказания и единиц преобразования и с возможностью кодирования изображения путем выбора одной комбинации единиц кодирования, единиц предсказания и единиц преобразования по заранее заданному критерию (например, функции стоимости).
[0042] Например, одно изображение можно разбить на несколько единиц кодирования. Разбиение изображения на единицы кодирования можно осуществлять посредством рекурсивно-древовидной структуры, например, квадродревовидной структуры. Единицу кодирования, разбиваемую на другие единицы кодирования, с одним изображением или наибольшую единицу кодирования в качестве корня можно разбить посредством дочерних узлов, соответствующих числу сегментов единиц кодирования. Единица кодирования, не разбиваемая далее при достижении заранее определенного предела, представляет собой листовой узел. То есть, если для одной единицы кодирования возможно только квадратное разбиение, одну единицу кодирования можно разбить не более чем на четыре другие единицы кодирования.
[0043] Далее по тексту описания варианта осуществления настоящего изобретения «единица кодирования» может означать единицу выполнения кодирования или единицу выполнения декодирования.
[0044] Единица предсказания может представлять собой один из сегментов квадратной или прямоугольной структуры с одинаковым размером отдельной единицы кодирования или один из сегментов, полученный в результате разбиения таким образом, чтобы отдельные единицы кодирования имели разную форму / размер.
[0045] Если единица предсказания для внутрикадрового предсказания сгенерирована на основе единицы кодирования, а единица кодирования не является наименьшей единицей кодирования, внутрикадровое предсказание можно осуществлять без разбиения единицы кодирования на несколько единиц предсказания N×N.
[0046] В число модулей 120 и 125 предсказания могут входить модуль 120 межкадрового предсказания, осуществляющий межкадровое предсказание, и модуль 125 внутрикадрового предсказания, осуществляющий внутрикадровое предсказание. Можно определить то, какое предсказание - межкадровое или внутрикадровое - следует выполнить в отношении данной единицы предсказания, а также детальную информацию (например, режим внутрикадрового предсказания, вектор движения, опорное изображение и т.п.) в зависимости от способа предсказания. В данном случае единица обработки, являющаяся объектом предсказания, может быть отлична от единицы обработки, для которой определяют способ предсказания и детальное содержание. Например, способ предсказания, режим предсказания и т.п.можно определять посредством единицы предсказания, а предсказание выполнять посредством единицы преобразования. Остаточное значение (остаточный блок), представляющее собой разность между сгенерированным блоком предсказания и исходным блоком, можно ввести в модуль 130 преобразования. Кроме того, информацию о режиме предсказания, информацию о векторе движения и т.п., используемую для предсказания, можно закодировать с остаточным значением посредством модуля 165 энтропийного кодирования и передать в устройство декодирования видеоинформации. При применении того или иного режима кодирования, передачу в устройство декодирования видеоинформации можно осуществлять, кодируя исходный блок как таковой, без генерирования блока предсказания посредством модулей 120 и 125 предсказания.
[0047] Модуль 120 межкадрового предсказания выполнен с возможностью предсказания единицы предсказания на основе информации о, по меньшей мере, изображении, предшествующем текущему изображению или следующем за ним, или, в некоторых случаях, на основе информации о некоторых закодированных областях в текущем изображении. Модуль 120 межкадрового предсказания может включать в себя модуль интерполяции опорного изображения, модуль предсказания движения и модуль компенсации движения.
[0048] Модуль интерполяции опорного изображения выполнен с возможностью приема информации опорного изображения из запоминающего устройства 155 и генерирования информации о целочисленном пикселе или пикселе меньше целочисленного из опорного изображения. В случае пикселей яркости, возможно применение 8-отводного интерполяционного фильтра на основе дискретного косинусного преобразования (ДКП, англ. discrete cosine transform (DCT)) с разными коэффициентами фильтра для генерирования информации о целочисленном пикселе или пикселе меньше целочисленного в единицах, составляющих 1/4 пикселя. В случае сигналов цветности, возможно применение 4-отводного интерполяционного фильтра на основе ДКП с другим коэффициентом фильтра для генерирования информации о целочисленном пикселе или пикселе меньше целочисленного в единицах, составляющих 1/8 пикселя.
[0049] Модуль предсказания движения выполнен с возможностью предсказания движения на основе опорного изображения, интерполированного модулем интерполяции опорного изображения. Возможно применение различных способов вычисления вектора движения, например, алгоритма сопоставления блоков с полным поиском (англ. full search-based block matching algorithm (FBMA)), трехступенчатого поиска (англ. three step search (TSS)), алгоритма нового трехступенчатого поиска (англ. new three-step search algorithm (NTS)) и т.п. Вектор движения может иметь значение вектора движения в единицах, составляющих 1/2 пикселя или 1/4 пикселя в зависимости от интерполированного пикселя. Модуль предсказания движения выполнен с возможностью предсказания для текущей единицы предсказания путем изменения способа предсказания движения. Возможно применение различных способов предсказания движения, например, способ пропуска, способ слияния, способ AMVP (улучшенного предсказания вектора движения, англ. Advanced Motion Vector Prediction), способ внутриблокового копирования и т.п.
[0050] Модуль 125 внутрикадрового предсказания выполнен с возможностью генерирования единицы предсказания на основе опорной информации о пикселях по соседству с текущим блоком, т.е. информации о пикселях в текущем изображении. Если соседний блок текущей единицы предсказания является блоком-объектом межкадрового предсказания, в связи с чем опорный пиксель является пикселем-объектом межкадрового предсказания, опорный пиксель, входящий в состав блока-объекта межкадрового предсказания, можно заменить опорной информацией о пикселях соседнего блока-объекта внутрикадрового предсказания. То есть, если опорный пиксель непригоден, по меньшей мере один опорный пиксель из пригодных опорных пикселей можно использовать вместо непригодной опорной информации о пикселях.
[0051] В число режимов внутрикадрового предсказания могут входить режим направленного предсказания с использованием опорной информации о пикселях в зависимости от направления предсказания и режим ненаправленного предсказания без использования информации о направлении при выполнении предсказания. Режим для предсказания яркостной информации может быть отличен от режима для предсказания цветностной информации, при этом для предсказания цветностной информации можно использовать информацию режима внутрикадрового предсказания, применяемую для предсказания яркостной информации или предсказанную информацию сигнала яркости.
[0052] Если при выполнении внутрикадрового предсказания размер единицы предсказания тождествен размеру единицы преобразования, внутрикадровое предсказание в отношении единицы предсказания можно выполнять на основе пикселей, расположенных слева, слева сверху и сверху от единицы предсказания. При этом, если при выполнении внутрикадрового предсказания размер единицы предсказания отличен от размера единицы преобразования, внутрикадровое предсказание можно выполнять с использованием опорного пикселя на основе единицы преобразования. Кроме того, внутрикадровое предсказание с разбиением N×N можно применять только в отношении наименьшей единицы кодирования.
[0053] Согласно способу внутрикадрового предсказания, блок предсказания можно сгенерировать после применения фильтра ABC (адаптивного внутреннего сглаживания, англ. Adaptive Intra Smoothing (AIS)) к опорному пикселю в зависимости от режимов предсказания. К опорному пикселю можно применять фильтры ABC разных типов. Для выполнения способа внутрикадрового предсказания, режим внутрикадрового предсказания текущей единицы предсказания можно предсказывать по режиму внутрикадрового предсказания единицы предсказания по соседству с текущей единицей предсказания. При предсказании режима предсказания текущей единицы предсказания путем применения информации о режиме, предсказанной по соседней единице предсказания, если режим внутрикадрового предсказания текущей единицы предсказания является тем же, что и режим внутрикадрового предсказания соседней единицы предсказания, для передачи информации, указывающей, что режимы предсказания текущей единицы предсказания и соседней единицы предсказания одинаковы, можно использовать заранее определенную сигнальную информацию. Если режим предсказания текущей единицы предсказания отличен от режима предсказания соседней единицы предсказания, можно выполнить энтропийное кодирование для кодирования информации о режиме предсказания текущего блока.
[0054] Кроме того, можно сгенерировать остаточный блок, включающий в себя информацию об остаточном значении, представляющем собой разность между единицей предсказания - объектом предсказания и исходным блоком единицы предсказания, на основе единиц предсказания, сгенерированных модулями 120 и 125 предсказания. Сгенерированный остаточный блок можно ввести в модуль 130 преобразования.
[0055] Модуль 130 преобразования выполнен с возможностью преобразования остаточного блока, включающего в себя информацию об остаточном значении, представляющем собой разность между исходным блоком и единицей предсказания, сгенерированной модулями 120 и 125 предсказания, путем применения способа преобразования, например, дискретного косинусного преобразования (ДКП), дискретного синусного преобразования (ДСП, англ. discrete sine transform (DST)) и преобразования Карунена-Лоэва (ПКЛ, англ. Karhunen-Loeve transform (KLT)). To, какой из способов - ДКП, ДСП или ПКЛ - применить для преобразования остаточного блока, можно определять в зависимости от информации о режиме внутрикадрового предсказания единицы предсказания, применяемой для генерирования остаточного блока.
[0056] Модуль 135 квантования выполнен с возможностью квантования значений, преобразованных в частотную область модулем 130 преобразования. Возможно применение разных коэффициентов квантования в зависимости от блока или важности изображения. Значения, вычисленные модулем 135 квантования, можно вводить в модуль 140 обратного квантования и модуль 160 переупорядочивания.
[0057] Модуль 160 переупорядочивания выполнен с возможностью переупорядочивания коэффициентов квантованных остаточных значений.
[0058] Модуль 160 переупорядочивания выполнен с возможностью видоизменения коэффициента в форме двумерного блока в коэффициент в форме одномерного вектора способом считывания коэффициентов. Например, модуль 160 переупорядочивания выполнен с возможностью считывания в диапазоне от коэффициента прямого кодирования (англ. DC - Direct coding) до коэффициента в высокочастотной области способом зигзагообразного считывания для видоизменения коэффициентов в форму одномерных векторов. В зависимости от размера единицы преобразования и режима внутрикадрового предсказания, вместо зигзагообразного считывания возможно считывание в вертикальном направлении, при котором коэффициенты в форме двумерных блоков считывают в направлении вертикального ряда, или считывания в горизонтальном направлении, при котором коэффициенты в форме двумерных блоков считывают в направлении горизонтального ряда. Таким образом, способ считывания - зигзагообразное считывание, считывание в вертикальном направлении или считывание в горизонтальном направлении - для применения можно определять в зависимости от размера единицы преобразования и режима внутрикадрового предсказания.
[0059] Модуль 165 энтропийного кодирования выполнен с возможностью выполнения энтропийного кодирования на основе значений, вычисленных модулем 160 переупорядочивания. При энтропийном кодировании возможно применение различных способов кодирования, например, экспоненциального кодирования Голомба, контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (англ. context-adaptive variable length coding (CAVLC)) и контекстно-зависимого двоичного арифметического кодирования (англ. context-adaptive binary arithmetic coding (CABAC)).
[0060] Модуль 165 энтропийного кодирования выполнен с возможностью кодирования разнообразной информации, например, информации о коэффициенте остаточного значения и информации о типе блока единицы кодирования, информации о режиме предсказания, информации о единице разбиения, информации о единице предсказания, информации о единице преобразования, информации о векторе движения, информации об опорном кадре, информации об интерполяции блока, информации о фильтрации и т.п.от модуля 160 переупорядочивания и модулей 120 и 125 предсказания.
[0061] Модуль 165 энтропийного кодирования выполнен с возможностью энтропийного кодирования коэффициентов единицы кодирования, введенных из модуля 160 переупорядочивания.
[0062] Модуль 140 обратного квантования выполнен с возможностью обратного квантования значений, квантованных модулем 135 квантования, а модуль 145 обратного преобразования - с возможностью обратного преобразования значений, преобразованных модулем 130 преобразования. Остаточное значение, сгенерированное модулем 140 обратного квантования и модулем 145 обратного преобразования, можно скомбинировать с единицей предсказания, предсказанной модулем оценки движения, модулем компенсации движения и модулем внутрикадрового предсказания модулей 120 и 125 предсказания, с возможностью генерирования восстановленного блока.
[0063] Модуль 150 фильтрации может включать в себя по меньшей мере одно из следующего: фильтр удаления блочности, узел коррекции смещения и адаптивный контурный фильтр (АКФ, англ. adaptive loop filter (ALF)).
[0064] Фильтр удаления блочности выполнен с возможностью устранения видимой блочности структуры ТВ-изображения, обусловленной наличием границ между блоками в восстановленном изображении. Основанием для определения того, нужно ли выполнить удаление блочности, т.е. нужно ли применить фильтр удаления блочности к текущему блоку, могут служить пиксели, входящие в несколько горизонтальных или вертикальных рядов в блоке. Применение фильтра удаления блочности к блоку может включать в себя применение строгого фильтра или нестрогого фильтра в зависимости от нужной строгости фильтрации для удаления блочности. Кроме того, при применении фильтра удаления блочности, обработка горизонтальной фильтрации и вертикальной фильтрации может происходить параллельно.
[0065] Модуль коррекции смещения выполнен с возможностью коррекции смещения относительно исходного изображения в единицах пикселя в изображении, в котором удаляют блочность. Для выполнения коррекции смещения на конкретном изображении можно применить способ, при котором применяют смещение с учетом информации о краях каждого пикселя, или способ, при котором пиксели изображения разбивают на заранее определенное число областей, определяют область для выполнения смещения и применяют смещение к указанной определенной области.
[0066] Адаптивную контурную фильтрацию (АКФ) можно выполнять на основе значения, определенного путем сравнения отфильтрованного восстановленного изображения и исходного изображения. Пиксели, входящие в состав изображения, можно поделить на заранее определенные группы, определить фильтр для применения к каждой из групп и выполнить фильтрацию индивидуально для каждой группы. Передача информации о том, применять ли АКФ, и сигнала яркости может происходить посредством единиц кодирования (ЕК). Форма и коэффициент фильтра для АКФ могут быть разными для каждого блока. Кроме того, возможно применение фильтра для АКФ одной и той же формы (постоянной формы) независимо от назначения целевого блока.
[0067] Запоминающее устройство 155 выполнено с возможностью хранения восстановленного блока или изображения, вычисленного посредством модуля 150 фильтрации. Сохраненный восстановленный блок или изображение могут быть введены в модули 120 и 125 предсказания при выполнении межкадрового предсказания.
[0068]
[0069] ФИГ. 2 - блок-схема, иллюстрирующая устройство декодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
[0070] Устройство 200 декодирования видеоинформации ФИГ. 2 может включать в себя: модуль 210 энтропийного декодирования, модуль 215 переупорядочивания, модуль 220 обратного квантования, модуль 225 обратного преобразования, модули 230 и 235 предсказания, модуль 240 фильтрации и запоминающее устройство 245.
[0071] Когда происходит ввод битового видеопотока от устройства кодирования видеоинформации, процесс декодирования входного битового потока может быть обратен тому, что происходит в устройстве кодирования видеоинформации.
[0072] Модуль 210 энтропийного декодирования выполнен с возможностью осуществления процесса энтропийного декодирования, обратного процессу энтропийного кодирования модулем энтропийного кодирования устройства кодирования видеоинформации. Например, возможно применение таких способов, как экспоненциальное кодирование Голомба, контекстно-зависимое адаптивное кодирование с переменной длиной кодового слова (CAVLC) и контекстно-зависимое двоичное арифметическое кодирование (САВАС), в соответствии со способами, выполняемыми устройством кодирования видеоинформации.
[0073] Модуль 210 энтропийного декодирования выполнен с возможностью декодирования информации, относящейся к внутрикадровому предсказанию и межкадровому предсказанию, выполняемым устройством кодирования видеоинформации.
[0074] Модуль 215 переупорядочивания выполнен с возможностью переупорядочивания битового потока, энтропийно декодированного модулем 210 энтропийного декодирования, в зависимости от способа переупорядочивания, применяемого в устройстве кодирования видеоинформации. Модуль переупорядочивания выполнен с возможностью восстановления и переупорядочивания коэффициентов в форме одномерных векторов в коэффициенты в форме двумерных блоков. Модуль 215 переупорядочивания выполнен с возможностью приема информации, относящейся к считыванию коэффициентов, выполненному в устройстве кодирования видеоинформации, и переупорядочивания способом, состоящим в считывании указанных коэффициентов в порядке, обратном порядку считывания в устройстве кодирования видеоинформации.
[0075] Модуль 220 обратного квантования выполнен с возможностью обратного квантования на основе параметра квантования, полученного от устройства кодирования видеоинформации, и переупорядоченных коэффициентов блока.
[0076] Модуль 225 обратного преобразования выполнен с возможностью обратного преобразования, т.е. обратного ДКП, обратного ДСП и обратного ПКЛ - процессов, обратных процессам преобразования, т.е. ДКП, ДСП и ПКЛ, выполняемым модулем преобразования в отношении результата квантования устройством кодирования видеоинформации. Обратное преобразование можно выполнять на основе единицы преобразования, определенной устройством кодирования видеоинформации. Модуль 225 обратного преобразования устройства декодирования видеоинформации может выборочно выполнять схемы преобразования (например, ДКП, ДСП и ПКЛ) с учетом множества сведений, например, способа предсказания, размера текущего блока, направления предсказания и т.п.
[0077] Модули 230 и 235 предсказания выполнены с возможностью генерирования блока предсказания на основе информации о генерировании блока предсказания, полученной от модуля 210 энтропийного декодирования и информации о ранее декодированном блоке или изображении, полученной из запоминающего устройства 245.
[0078] Аналогично работе устройства кодирования видеоинформации, раскрытой выше, если при выполнении внутрикадрового предсказания размер единицы предсказания тождествен размеру единицы преобразования, внутрикадровое предсказание в отношении единицы предсказания можно выполнять на основе пикселей, расположенных слева, слева сверху и сверху от единицы предсказания. Если при выполнении внутрикадрового предсказания размер единицы предсказания отличен от размера единицы преобразования, внутрикадровое предсказание можно выполнять с использованием опорного пикселя на основе единицы преобразования. Кроме того, внутрикадровое предсказание с разбиением N×N можно применять только в отношении наименьшей единицы кодирования.
[0079] Модули 230 и 235 предсказания могут включать в себя модуль определения единицы предсказания, модуль межкадрового предсказания и модуль внутрикадрового предсказания. Модуль определения единицы предсказания выполнен с возможностью приема разнообразной информации, например, информации о единице предсказания, информации о режиме предсказания способа внутрикадрового предсказания, информации о предсказании движения способа межкадрового предсказания и т.п.от модуля 210 энтропийного декодирования, с возможностью деления текущей единицы кодирования на единицы предсказания и определения того, какое именно предсказание - межкадровое или внутрикадровое - выполняют в отношении единицы предсказания. Применение информации, нужной для межкадрового предсказания текущей единицы предсказания, принятой от устройства кодирования видеоинформации, обеспечивает возможность выполнения модулем 230 межкадрового предсказания межкадрового предсказания в отношении текущей единицы предсказания на основе информации по меньшей мере одного из изображений - предшествующего текущему изображению, содержащему текущую единицу предсказания, или следующего за ним. В качестве альтернативы, межкадровое предсказание можно выполнять на основе информации некоторых заранее восстановленных областей в текущем изображении, содержащем текущую единицу предсказания.
[0080] Для выполнения межкадрового предсказания можно определять, какой из режимов - режим пропуска, режим слияния, режим улучшенного предсказания вектора движения (AMVP) или режим внутриблокового копирования - используется для единицы кодирования в качестве способа предсказания движения единицы предсказания, входящей в состав единицы кодирования.
[0081] Модуль 235 внутрикадрового предсказания выполнен с возможностью генерирования блока предсказания на основе информации о пикселях в текущем изображении. Если единица предсказания представляет собой единицу предсказания - объект внутрикадрового предсказания, внутрикадровое предсказание можно выполнять на основе информации о режиме внутрикадрового предсказания единицы предсказания, принятой от устройства кодирования видеоинформации. Модуль 235 внутрикадрового предсказания может включать в себя фильтр адаптивного внутреннего сглаживания (ABC), модуль интерполяции опорного пикселя и фильтр прямого кодирования. Фильтр ABC осуществляет фильтрацию в отношении опорного пикселя текущего блока, при этом определять то, нужно ли применить данный фильтр, можно в зависимости от режима предсказания текущей единицы предсказания. Фильтрацию с ABC в отношении опорного пикселя текущего блока можно выполнять путем применения информации о режиме предсказания единицы предсказания и фильтре ABC, принятой от устройства кодирования видеоинформации. Если режим предсказания текущего блока представляет собой режим без применения фильтра ABC, фильтр ABC можно не применять.
[0082] Если режим предсказания единицы предсказания представляет собой режим предсказания, в котором внутрикадровое предсказание осуществляют на основе значения пикселя, определенного путем интерполяции опорного пикселя, модуль интерполяции опорного пикселя может интерполировать опорный пиксель для генерирования опорного пикселя в виде целочисленного пикселя или пикселя меньше целочисленного. Если режим предсказания текущей единицы предсказания представляет собой режим предсказания, в котором блок предсказания генерируют без интерполяции опорного пикселя, опорный пиксель можно не интерполировать. Фильтр прямого кодирования выполнен с возможностью генерирования блока предсказания путем фильтрации, если режим предсказания текущего блока представляет собой режим прямого кодирования.
[0083] Восстановленный блок или изображение можно ввести в модуль 240 фильтрации. Модуль 240 фильтрации может включать в себя фильтр удаления блочности, модуль коррекции смещения и АКФ.
[0084] Информация о том, применяется ли фильтр удаления блочности к соответствующему блоку или изображению, и информацию о том, какой фильтр - строгий или нестрогий - применяется в случае применения фильтра удаления блочности, может быть принята от устройства кодирования видеоинформации. Фильтр удаления блочности устройства декодирования видеоинформации выполнен с возможностью приема информации о фильтре удаления блочности от устройства кодирования видеоинформации и фильтрации для удаления блочности в отношении соответствующего блока.
[0085] Модуль коррекции смещения выполнен с возможностью коррекции смещения в отношении восстановленного изображения на основе информации от типе коррекции смещения и значении смещения, примененных к изображению при кодировании.
[0086] АКФ можно применять к единице кодирования на основе информации о том, нужно ли применять АКФ, информации о коэффициенте АКФ и т.п., принятой от устройства кодирования видеоинформации. Информация об АКФ может быть предоставлена в составе частного набора параметров.
[0087] Запоминающее устройство 245 выполнено с возможностью хранения восстановленного изображения или блока для применения в качестве опорного изображения или блока и предоставления восстановленного изображения в модуль вывода.
[0088] Как сказано выше, в описании варианта осуществления настоящего изобретения термин «единица кодирования» для удобства раскрытия обозначает единицу для кодирования, которая, при этом, также может служить единицей для выполнения декодирования.
[0089] Кроме того, текущий блок может представлять собой целевой блок, подлежащий кодированию/декодированию. Текущий блок также может представлять собой блок дерева кодирования (или единицу дерева кодирования), блок кодирования (или единицу кодирования), блок преобразования (или единицу преобразования), блок предсказания (или единицу предсказания) или нечто подобное в зависимости от этапа кодирования/декодирования. В настоящем описании слово «единица» может означать базовую единицу для выполнения конкретного процесса кодирования/декодирования, а «блок» может означать массив отсчетов заранее определенного размера. Если между ними не проведено различие, слова «блок» и «единица» могут употребляться как синонимы. Например, следует понимать, что в раскрытых ниже вариантах осуществления значения выражений «блок кодирования» и «единица кодирования» взаимно эквивалентны.
[0090]
[0091] Кодирование/декодирование одного изображения можно осуществлять путем деления на базовые блоки квадратной или неквадратной формы. На данном этапе базовый блок может именоваться «единица дерева кодирования». Единицу дерева кодирования можно охарактеризовать как единицу кодирования наибольшего размера, разрешенного в пределах последовательности или сектора. Информацию о том, имеет ли единица дерева кодирования квадратную форму или неквадратную форму, или информацию о размере единицы дерева кодирования можно сообщать посредством набора параметров последовательности, набора параметров изображения или заголовка сектора. Единицу дерева кодирования можно поделить с получением сегментов меньшего размера. На данном этапе глубину разбиения в результате деления единицы дерева кодирования принимают равной 1, при этом глубину разбиения в результате деления сегмента с глубиной 1 можно принять равной 2. То есть глубину сегмента, сгенерированного путем деления сегмента с глубиной k в единице дерева кодирования, можно определить как k+1.
[0092] Сегмент произвольного размера, сгенерированный путем деления единицы дерева кодирования, можно охарактеризовать как «единицу кодирования». Единицу кодирования можно рекурсивно делить или делить на базовые единицы для выполнения предсказания, квантования, преобразования или внутри контурной фильтрации и т.п. Например, сегмент произвольного размера, сгенерированный путем деления единицы кодирования, можно охарактеризовать как единицу кодирования, или единицу преобразования, или единицу предсказания, представляющую собой базовую единицу для выполнения предсказания, квантования, преобразования или внутриконтурной фильтрации и т.п.
[0093] В качестве альтернативы, блок предсказания того же размера, что и блок кодирования, или меньшего размера, чем блок кодирования, можно определять путем разбиения блока кодирования для предсказания. Для разбиения блока кодирования для предсказания можно указать один из потенциальных режимов разбиения (Part_mode). Информацию для определения индекса разбиения, указывающего один из потенциальных режимов разбиения можно сообщать посредством битового потока. В качестве альтернативы, индекс разбиения блока кодирования можно определять на основе по меньшей мере одного из следующего: размера, формы или режима кодирования текущего блока. Размер или форму блока предсказания можно определять на основе режима разбиения, указанного индексом разбиения. В число потенциальных режимов разбиения может входить асимметричный тип разбиения (например, nl_×2N, nR×2N, 2N×nU, 2N×nD). Число или тип потенциальных режимов асимметричного разбиения, пригодных для блока кодирования, можно определять на основе размера, формы или режима кодирования текущего блока.
[0094] ФИГ. 3 иллюстрирует потенциальные режимы разбиения с возможностью применения к блоку кодирования в случае кодирования блока кодирования путем межкадрового предсказания.
[0095] В случае кодирования блока кодирования путем межкадрового предсказания, к блоку кодирования можно применить любой из восьми потенциальных режимов разбиения на ФИГ. 3.
[0096] При этом, в случае кодирования блока кодирования путем внутрикадрового предсказания, к блоку кодирования можно применить только разбиение на квадраты. Иными словами, в случае кодирования блока кодирования путем внутрикадрового предсказания, к блоку кодирования применяют режим PART_2N×2N или PART_N×N.
[0097] Режим разбиения PART_N×N применяют, если блок кодирования имеет минимальный размер. В данном случае минимальный размер блока кодирования может быть заранее задан в кодере и в декодере. В качестве альтернативы, информацию о минимальном размере блока кодирования можно сообщать посредством битового потока. Например, минимальный размер блока кодирования можно сообщить посредством заголовка сектора. Следовательно, можно определить разные минимальные размеры блока кодирования для соответствующих секторов.
[0098] В другом примере потенциальные режимы разбиения, пригодные для применения блоком кодирования, можно устанавливать по-разному в зависимости от, по меньшей мере, размера или формы блока кодирования. Например, число или типы потенциальных режимов разбиения, пригодных для применения блоком кодирования, можно устанавливать по-разному в зависимости от, по меньшей мере, размера или формы блока кодирования.
[0099] В качестве альтернативы, в зависимости от размера или формы блока кодирования, можно определять типы или число потенциальных режимов асимметричного разбиения, пригодных для применения блоком кодирования. Число или типы потенциальных режимов асимметричного разбиения, пригодных для применения блоком кодирования, можно устанавливать по-разному в зависимости от, по меньшей мере, размера или формы блока кодирования. Например, если блок кодирования имеет неквадратную форму, при которой ширина больше высоты, по меньшей мере один из следующих режимов разбиения: PART_2N×N, PART_2N×nU или PART_2N×nD не применяют в качестве потенциального режима разбиения блока кодирования. Если блок кодирования имеет неквадратную форму, при которой высота больше ширины, по меньшей мере один из следующих режимов разбиения: PART_N×2N, PART_nl_×2N или PART_nR×2N не применяют в качестве потенциального режима разбиения блока кодирования.
[00100] Обычно размер блока предсказания может составлять от 4×4 до 64×64. При этом, в случае кодирования блока кодирования путем межкадрового предсказания, для уменьшения ширины полосы пропускания запоминающего устройства при выполнении компенсации движения, размер блока предсказания задают так, чтобы он не составлял 4×4.
[00101] Блок кодирования можно рекурсивно разбивать в соответствии с режимом разбиения. Иными словами, в соответствии с режимом разбиения, определенном индексом разбиения, блок кодирования можно разбить, а каждый сегмент, сгенерированный путем разбиения блока кодирования, можно задать в качестве блока кодирования.
[00102] Далее будет подробнее раскрыт способ разбиения единицы кодирования. В нижеследующем примере выражение «единица кодирования» может означать единицу дерева кодирования или единицу кодирования, входящую в состав единицы дерева кодирования. Кроме того, «сегменты», сгенерированные путем разбиения блока кодирования, могут именоваться «блоки кодирования». Раскрытый ниже способ разбиения можно применять, если блок кодирования разбивают на множество блоков предсказания или блоков преобразования.
[00103] Единицу кодирования можно разбить по меньшей мере одной линией. В этом случае угол линии, разбивающей единицу кодирования, может составлять значение в диапазоне от 0 до 360 градусов. Например, угол горизонтальной линии может составлять 0 градусов, угол вертикальной линии может составлять 90 градусов, угол диагональной линии в направлении вправо вверх может составлять 45 градусов, а угол диагональной линии в направлении влево вверх - 135 градусов.
[00104] Если единица кодирования разбита множеством линий, все линии множества проходят под одинаковым углом. В качестве альтернативы, угол по меньшей мере одной из линий множества может быть отличен от углов других линий. В качестве альтернативы, для множества линий, разбивающих единицу дерева кодирования или единицу кодирования, может быть заранее задана разность углов (например, 90 градусов).
[00105] Информацию о линии, разбивающей единицу кодирования, можно определять по режиму разбиения. В качестве альтернативы, информация о, по меньшей мере, одном из следующего: числе, направлении, угле или положении линии в блоке можно закодировать.
[00106] Для удобства раскрытия, в нижеследующем примере принято, что единица кодирования разбита на множество единиц кодирования, по меньшей мере, вертикальной линией или горизонтальной линией.
[00107] Число вертикальных линий или горизонтальных линий, разбивающих единицу кодирования, может составлять по меньшей мере одну. Например, единицу кодирования можно разбить на два сегмента посредством одной вертикальной линии или одной горизонтальной линии. В качестве альтернативы, единицу кодирования можно разбить на три сегмента посредством двух вертикальных линий или двух горизонтальных линий. В качестве альтернативы, посредством одной вертикальной линии или одной горизонтальной линии единицу кодирования можно разбить на четыре сегмента, ширина и высота каждого из которых составляет 1/2 ширины и высоты единицы кодирования.
[00108] В случае разбиения единицы кодирования на множество сегментов посредством по меньшей мере одной вертикальной линии или по меньшей мере одной горизонтальной линии, размеры сегментов являются единообразными. В качестве альтернативы, размер любого сегмента может быть отличен от размеров других сегментов, либо размеры всех сегментов могут быть соответствующим образом отличны друг от друга. Например, в случае разбиения единицы кодирования двумя горизонтальными линиями или двумя вертикальными линиями, единица кодирования будет разбита на три сегмента. В этом случае соотношение ширины или высоты трех сегментов может составлять n:2n:n, 2n:n:n или n:n:2n.
[00109] В раскрытых ниже вариантах осуществления разбиение единицы кодирования на четыре сегмента именуется «разбиение на основе квадродерева». Кроме того, разбиение единицы кодирования на два сегмента именуется «разбиение на основе двоичного дерева». Кроме того, разбиение единицы кодирования на три сегмента именуется «разбиение на основе троичного дерева».
[00110] На раскрытых ниже чертежах показано, что единица кодирования разбита одной вертикальной линией и/или одной горизонтальной линией. При этом в объем настоящего изобретения также входит применение большего, чем показано на чертежах, числа вертикальных линий и/или горизонтальных линий для разбиения единицы кодирования на большее или меньшее, чем показано на чертежах, число сегментов.
[00111] ФИГ. 4 - схема, иллюстрирующая пример иерархического разбиения блока кодирования на основе древовидной структуры по одному из вариантов осуществления настоящего изобретения.
[00112] Входной видеосигнал декодируют в заранее определенных единицах блока. Такой единицей по умолчанию для декодирования входного видеосигнала является блок кодирования. Блок кодирования может представлять собой единицу выполнения внутри-/межкадрового предсказания, преобразования и квантования. Кроме того, режим предсказания (например, режим внутрикадрового предсказания или режим межкадрового предсказания) определяют в единицах блока кодирования, при этом определенный таким образом режим предсказания может быть одинаковыми для блоков предсказания, входящих в состав блока кодирования. Блок кодирования может представлять собой квадратный или неквадратный блок произвольного размера в диапазоне от 8×8 до 64×64, либо квадратный или неквадратный блок размером 128×128, 256×256 или более.
[00113] В частности, иерархическое разбиение блока кодирования можно осуществлять по меньшей мере одним из следующих способов: разбиения на основе квадродерева, на основе двоичного дерева или на основе троичного дерева. Разбиение на основе квадродерева может означать способ, при котором блок кодирования 2N×2N разбивают на четыре блока кодирования N×N. Разбиение на основе двоичного дерева может означать способ, при котором один блок кодирования разбивают на два блока кодирования. Разбиение на основе троичного дерева может означать способ, при котором один блок кодирования разбивают на три блока кодирования. Даже в случае разбиения на основе двоичного или троичного дерева, на большей глубине может существовать квадратный блок кодирования.
[00114] Сегменты, генерируемые путем разбиения на основе двоичного дерева, могут быть симметричными или асимметричными. Кроме того, блок кодирования, разбитый на основе двоичного дерева, может представлять собой квадратный блок или неквадратный блок (например, прямоугольник).
[00115] ФИГ. 5 - схема, иллюстрирующая типы разбиения блока кодирования на основе двоичного дерева. Форма разбиения блока кодирования на основе двоичного дерева может быть симметричного типа, например, 2N×N (единица кодирования, неквадратная в горизонтальном направлении) или N×2N (единица кодирования, неквадратная в вертикальном направлении) и т.п., или асимметричного типа, например, nl_×2N, nR×2N, 2N×nU, 2N×nD и т.п. Любой из типов - симметричный или асимметричный - разрешен в качестве типа разбиения блока кодирования.
[00116] В число типов разбиения на основе троичного дерева может входить по меньшей мере один тип, при котором блок кодирования разбит двумя вертикальными линиями, или тип, при котором блок кодирования разбит двумя горизонтальными линиями. Три неквадратных сегмента можно сгенерировать путем разбиения на основе троичного дерева.
[00117] ФИГ. 6 - схема, иллюстрирующая тип разбиения на основе троичного дерева.
[00118] Разбиение на основе троичного дерева может включать в себя тип разбиения блока кодирования двумя горизонтальными линиями или тип разбиения блока кодирования двумя вертикальными линиями. Соотношение ширины или высоты сегментов, сгенерированных путем разбиения блока кодирования, может составлять n:2n:n, 2n:n:n или n:n:2n.
[00119] Положение сегмента с наибольшей из трех сегментов шириной или высотой может быть заранее задано в кодере и декодере. В качестве альтернативы, информацию, указывающую сегмент с наибольшей из трех сегментов шириной или высотой, можно сообщить посредством битового потока.
[00120] Разрешенными формами разбиения для единицы кодирования могут быть только квадратная и неквадратная симметричная формы. В данном случае, разбиение единицы кодирования на квадратные сегменты может соответствовать разбиению ЕК на основе квадродерева, а разбиение единицы кодирования на симметричные неквадратные сегменты может соответствовать разбиению на основе двоичного дерева. Разбиение единицы дерева кодирования на квадратные сегменты и симметричные неквадратные сегменты может соответствовать разбиению ЕК на основе квадродерева и двоичного дерева (КДДД, англ. QTBT).
[00121] Разбиение на основе двоичного дерева или троичного дерева можно осуществлять для блока кодирования, для которого не осуществляют дальнейшее разбиение на основе квадродерева. Блок кодирования, сгенерированный путем разбиения на основе двоичного дерева или троичного дерева, можно разбить на более мелкие блоки кодирования. В данном случае, блок кодирования может быть настроен так, чтобы к нему не применяли по меньшей мере одно из следующего: разбиение на основе квадродерева, разбиение на основе троичного дерева или разбиение на основе двоичного дерева. В качестве альтернативы, для блока кодирования может не быть разрешено разбиение на основе двоичного дерева в заранее определенном направлении или разбиение на основе троичного дерева в заранее определенном направлении. Например, может не быть разрешено разбиение на основе квадродерева и разбиение на основе троичного дерева для блока кодирования, сгенерированного путем разбиения на основе двоичного дерева или троичного дерева. Для такого блока кодирования может быть разрешено только разбиение на основе двоичного дерева.
[00122] В качестве альтернативы, только наибольший из трех блоков кодирования, сгенерированных путем разбиения на основе троичного дерева, можно разбить на блоки кодирования меньшего размера. В качестве альтернативы, разбиение на основе двоичного дерева или разбиение на основе троичного дерева могут быть разрешены только для наибольшего из трех блоков кодирования, сгенерированных путем разбиения на основе троичного дерева.
[00123] Кроме того, тип разбиения сегмента дочерней глубины можно определять в зависимости от типа разбиения сегмента родительской глубины. Например, в случае разбиения родительского сегмента и дочернего сегмента на основе двоичного дерева, в сегменте дочерней глубины разрешено только разбиение на основе двоичного дерева того же типа, что и разбиение сегмента родительской глубины на основе двоичного дерева. Например, если тип разбиения на основе двоичного дерева сегмента родительской глубины представляет собой тип 2N×N, то для сегмента дочерней глубины также принимают тип разбиения на основе двоичного дерева 2N×N. В качестве альтернативы, если тип разбиения на основе двоичного дерева сегмента родительской глубины представляет собой тип N×2N, то для сегмента дочерней глубины также принимают тип разбиения N×2N.
[00124] В качестве альтернативы, наибольший из сегментов, сгенерированных в результате разбиения на основе троичного дерева, можно сгенерировать так, чтобы не было разрешено разбиение на основе двоичного дерева в том же направлении, что и направление разбиения сегмента родительской глубины, или разбиение на основе троичного дерева в том же направлении, что и направление разбиения сегмента родительской глубины.
[00125] В качестве альтернативы, тип разбиения сегмента дочерней глубины можно определять с учетом типа разбиения сегмента родительской глубины и типа разбиения соседнего сегмента дочерней глубины. В частности, в случае разбиения сегмента родительской глубины на основе двоичного дерева, тип разбиения сегмента дочерней глубины определяют так, чтобы не был получен тот же результат, что и при разбиении сегмента родительской глубины на основе квадродерева. Например, если тип разбиения сегмента родительской глубины представляет собой 2N×N, а тип разбиения соседнего сегмента дочерней глубины представляет собой N×2N, для текущего сегмента дочерней глубины не принимают тип разбиения N×2N. Это обусловлено тем, что если тип разбиения текущего сегмента дочерней глубины будет N×2N, будет получен тот же результат, что и при разбиении сегмента родительской глубины типа N×N на основе квадродерева. Если тип разбиения сегмента родительской глубины представляет собой N×2N, а тип разбиения соседнего сегмента дочерней глубины - 2N×N, для текущего сегмента дочерней глубины не принимают тип разбиения 2N×N. То есть, если тип разбиения на основе двоичного дерева сегмента родительской глубины отличен от типа разбиения на основе двоичного дерева соседнего сегмента дочерней глубины, для текущего сегмента дочерней глубины принимают тот же тип разбиения на основе двоичного дерева, что и тип разбиения на основе двоичного дерева сегмента родительской глубины.
[00126] В качестве альтернативы, для сегмента дочерней глубины может быть принят тип разбиения на основе двоичного дерева, отличный от типа разбиения на основе двоичного дерева сегмента родительской глубины.
[00127] Допустимый тип разбиения на основе двоичного дерева можно определять на уровне последовательности, сектора или единицы кодирования. Например, допустимый тип разбиения на основе двоичного дерева для единицы дерева кодирования может быть ограничен типом 2N×N или N×2N. Допустимый тип разбиения может быть заранее задан в кодере или в декодере. В качестве альтернативы, информацию о допустимом типе разбиения или недопустимом типе разбиения можно кодировать и сообщать посредством битового потока.
[00128] ФИГ. 7 - схема, иллюстрирующая пример, в котором разрешен только конкретный тип разбиения на основе двоичного дерева.
[00129] Схема (а) на ФИГ. 7 изображает пример, в котором разрешен только тип N×2N разбиения на основе двоичного дерева, а схема (b) на ФИГ. 7 - пример, в котором разрешен только тип 2N×N разбиения на основе двоичного дерева.
[00130] Различные типы разбиения могут быть представлены посредством информации о разбиении на основе квадродерева, информации о разбиении на основе двоичного дерева или информации о разбиении на основе троичного дерева. Информация о разбиении на основе квадродерева может включать в себя по меньшей мере одно из следующего: информацию, указывающую то, выполняют ли разбиение на основе квадродерева, или информацию о размере/глубине блока кодирования, в котором разрешено разбиение на основе квадродерева. Информация о разбиении на основе двоичного дерева может включать в себя по меньшей мере одно из следующего: информацию, указывающую то, выполняют ли разбиение на основе двоичного дерева, информацию о направлении разбиения на основе двоичного дерева - вертикальном или горизонтальном, информацию о размере/глубине блока кодирования, в котором разрешено разбиение на основе двоичного дерева, или информацию о размере/глубине блока кодирования, в котором разбиение на основе двоичного дерева не разрешено. Информация о разбиении на основе троичного дерева может включать в себя по меньшей мере одно из следующего: информацию, указывающую то, выполняют ли разбиение на основе троичного дерева, информацию о направлении разбиения на основе троичного дерева - вертикальном или горизонтальном, информацию о размере/глубине блока кодирования, в котором разбиение на основе троичного дерева разрешено, или информацию о размере/глубине блока кодирования, в котором разбиение на основе троичного дерева не разрешено. Информация о размере блока кодирования может включать в себя по меньшей мере одно минимальное или максимальное значение ширины, высоты, произведения ширины и высоты или соотношения ширины и высоты блока кодирования.
[00131] Например, если ширина или высота блока кодирования меньше минимального размера, при котором разрешено разбиение на основе двоичного дерева, или если глубина разбиения блока кодирования больше максимальной глубины, разрешенной для разбиения на основе двоичного дерева, разбиение на основе двоичного дерева может не быть разрешено для этого блока кодирования.
[00132] Например, если ширина или высота блока кодирования меньше минимального размера, при котором разрешено разбиение на основе троичного дерева, или если глубина разбиения блока кодирования больше максимальной глубины, разрешенной для разбиения на основе троичного дерева, разбиение на основе троичного дерева может не быть разрешено для этого блока кодирования.
[00133] Информацию об условии, при котором разрешено разбиение на основе двоичного дерева или троичного дерева, можно сообщать посредством битового потока. Информацию можно закодировать в единице последовательности, изображении или частичном изображении. «Частичное изображение» может означать по меньшей мере одно из следующего: сектор, группу плиток, плитку, визуальную конструкцию, блок кодирования, блок предсказания или блок преобразования.
[00134] Например, синтаксическую конструкцию 'max_mtt_depth_idx_minus1', указывающую разрешенную максимальную глубину разбиения на основе двоичного дерева/троичного дерева, можно закодировать/декодировать посредством битового потока. В данном случае, max_mtt_depth_idx_minus1+1 может указывать разрешенную максимальная глубину разбиения на основе двоичного дерева/троичного дерева.
[00135] Например, по меньшей мере одно из следующего: разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенную максимальную глубину разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева можно сообщать на уровне последовательности или сектора. Следовательно, по меньшей мере одно из следующего: разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенная максимальная глубина разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева могут быть разными для первого сектора и второго сектора. Например, в первом секторе может быть разрешена только одна глубина разбиения на основе двоичного дерева/троичного дерева, при этом во втором секторе могут быть разрешены две глубины разбиения на основе двоичного дерева/троичного дерева.
[00136] В примере на ФИГ. 8 разбиение на основе двоичного дерева выполнено для единицы кодирования с глубиной 2 и единицы кодирования с глубиной 3. Следовательно, по меньшей мере одно из следующего: информацию, указывающую число раз (т.е. 2 раза) разбиения на основе двоичного дерева в единице дерева кодирования, информацию, указывающую максимальную глубину (т.е. глубину 3) сегмента, сгенерированного путем разбиения на основе двоичного дерева в единице дерева кодирования, или информацию, представляющую число глубин (т.е. 2 глубины, глубина 2 и глубина 3) разбиения на основе двоичного дерева, примененных в единице дерева кодирования, можно закодировать/декодировать посредством битового потока.
[00137] В качестве альтернативы, разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенная глубина разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева могут быть заранее заданы в кодере и декодере. В качестве альтернативы, разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенную глубину разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева можно определять на основе по меньшей мере одно из следующего: индекса последовательности или сектора или размера/формы единицы кодирования. Например, в первом секторе может быть разрешена только одна глубина разбиение на основе двоичного/троичного дерева, а во втором секторе могут быть разрешены две глубины разбиения на основе двоичного/троичного дерева.
[00138] В другом примере разрешенное число раз разбиения на основе двоичного дерева, разрешенную глубину разбиения на основе двоичного дерева или разрешенное число глубин разбиения на основе двоичного дерева можно задавать по-разному в соответствии с временным идентификатором уровня (TemporalID) сектора или изображения. В данном случае временной идентификатор уровня (TemporalID) служит для идентификации каждого из множества слоев видеоизображения с возможностью масштабирования по меньшей мере по одному из следующего: по виду, в пространстве, во времени или по качеству.
[00139] На ФИГ. 4 показано, что первый блок 300 кодирования с глубиной k разбиения (глубиной дробления) можно разбить на несколько вторых блоков кодирования на основе квадродерева. Например, вторые блоки 310-340 кодирования могут представлять собой квадратные блоки с шириной и высотой, составляющими половину ширины и высоты первого блока кодирования, при этом глубину разбиения второго блока кодирования можно увеличить до k+1.
[00140] Второй блок 310 кодирования с глубиной k+1 разбиения можно разбить на несколько третьих блоков кодирования с глубиной k+2 разбиения. Разбиение второго блока 310 кодирования можно выполнить путем выборочного применения квадродерева или двоичного дерева в зависимости от способа разбиения. В этом случае способ разбиения можно определять на основе по меньшей мере одного из следующего: информации, указывающей разбиение на основе квадродерева, или информации, указывающей разбиение на основе двоичного дерева.
[00141] В случае разбиения второго блока 310 кодирования на основе квадродерева, возможно разбиение второго блока 310 кодирования на четыре третьих блока 310а кодирования с шириной и высотой, составляющими половину ширины и высоты второго блока кодирования, при этом глубину разбиения третьего блока 310а кодирования можно увеличить до k+2. При этом в случае разбиения второго блока 310 кодирования на основе двоичного дерева, возможно разбиение второго блока 310 кодирования на два третьих блока кодирования. В этом случае каждый из двух третьих блоков кодирования может представлять собой неквадратный блок с шириной или высотой, составляющей половину ширины или высоты, соответственно, второго блока кодирования, при этом глубину разбиения можно увеличить до k+2. Второй блок кодирования можно охарактеризовать как неквадратный блок в горизонтальном или в вертикальном направлении в соответствии с направлением разбиения, при этом направление разбиения можно определять на основе информации о том, как выполняют разбиение на основе двоичного дерева: в вертикальном направлении или в горизонтальном направлении.
[00142] Второй блок 310 кодирования можно принять в качестве листового блока кодирования, дальнейшее разбиение которого на основе квадродерева или двоичного дерева не выполняют. В данном случае, листовой блок кодирования может служить в качестве блока предсказания или блока преобразования.
[00143] Как и в случае разбиения второго блока 310 кодирования, третий блок 310а кодирования можно принять в качестве листового блока кодирования, либо разбить его далее на основе квадродерева или двоичного дерева.
[00144] При этом третий блок 310b кодирования, разбитый на основе двоичного дерева, можно разбить далее на блоки 310b-2 кодирования в вертикальном направлении или блоки 310b-3 кодирования в горизонтальном направлении на основе двоичного дерева, при этом глубину разбиения соответствующего блока кодирования можно увеличить до k+3. В качестве альтернативы, третий блок 310b кодирования можно принять в качестве листового блока 310b-1 кодирования, дальнейшее разбиение которого на основе двоичного дерева не выполняют. В данном случае, блок 310b-1 кодирования может служить в качестве блока предсказания или блока преобразования. При этом раскрытый выше процесс разбиения можно выполнять ограниченно на основе по меньшей мере одного из следующего: информации о размере/глубине блока кодирования, при которых разрешено разбиение на основе квадродерева, информации о размере/глубине блока кодирования, при которых разрешено разбиение на основе двоичного дерева, или информации о размере/глубине блока кодирования, при которых разбиение на основе двоичного дерева не разрешено.
[00145] Число потенциальных размеров можно ограничить заранее определенным числом, либо размер блока кодирования в заранее определенной единице может иметь фиксированное значение. Например, можно принудительно задать один из следующих размеров блока кодирования в последовательности или изображении: 256×256, 128×128 или 32×32. Информацию, указывающую размер блока кодирования в последовательности или изображении, можно сообщать посредством заголовка последовательности или заголовка изображения.
[00146] Результат разбиения на основе квадродерева и двоичного дерева может представлять собой единицу кодирования в квадратной или прямоугольной форме произвольного размера.
[00147] На ФИГ. 4 показано, что первый блок 300 кодирования с глубиной к разбиения (глубиной дробления) можно разбить на несколько вторых блоков кодирования на основе квадродерева. Например, вторые блоки 310-340 кодирования могут представлять собой квадратные блоки с шириной и высотой, составляющими половину ширины и высоты первого блока кодирования, при этом глубину разбиения второго блока кодирования можно увеличить до k+1.
[00148] Второй блок 310 кодирования с глубиной разбиения k+1 можно разбить на несколько третьих блоков кодирования с глубиной разбиения k+2. Разбиение второго блока 310 кодирования можно выполнить путем выборочного применения квадродерева или двоичного дерева в зависимости от способа разбиения. В этом случае способ разбиения можно определять на основе по меньшей мере одного из следующего: информации, указывающей разбиение на основе квадродерева, или информации, указывающей разбиение на основе двоичного дерева.
[00149] В случае разбиения второго блока 310 кодирования на основе квадродерева, возможно разбиение второго блока 310 кодирования на четыре третьих блока 310а кодирования с шириной и высотой, составляющими половину ширины и высоты второго блока кодирования, при этом глубину разбиения третьего блока 310а кодирования можно увеличить до k+2. При этом, в случае разбиения второго блока 310 кодирования на основе двоичного дерева, возможно разбиение второго блока 310 кодирования на два третьих блока кодирования. В этом случае каждый их двух третьих блоков кодирования может представлять собой неквадратный блок с шириной или высотой, составляющей половину ширины или высоты, соответственно, второго блока кодирования, при этом глубину разбиения можно увеличить до k+2. Второй блок кодирования можно охарактеризовать как неквадратный блок в горизонтальном или вертикальном направлении в соответствии с направлением разбиения, при этом направление разбиения можно определять на основе информации о том, как выполняют разбиение на основе двоичного дерева: в вертикальном направлении или в горизонтальном направлении.
[00150] При этом, второй блок 310 кодирования можно принять в качестве листового блока кодирования, дальнейшее разбиение которого на основе квадродерева или двоичного дерева не выполняют. В данном случае, листовой блок кодирования может служить в качестве блока предсказания или блока преобразования.
[00151] Как и в случае разбиения второго блока 310 кодирования, третий блок 310а кодирования можно принять в качестве листового блока кодирования, либо разбить его далее на основе квадродерева или двоичного дерева.
[00152] При этом третий блок 310b кодирования, разбитый на основе двоичного дерева, можно разбить далее на блоки 310b-2 кодирования в вертикальном направлении или блоки 310b-3 кодирования в горизонтальном направлении на основе двоичного дерева, при этом глубину разбиения соответствующего блока кодирования можно увеличить до k+3. В качестве альтернативы, третий блок 310b кодирования можно принять в качестве листового блока 310b-1 кодирования, дальнейшее разбиение которого на основе двоичного дерева не выполняют. В данном случае блок 310b-1 кодирования может служить в качестве блока предсказания или блока преобразования. При этом раскрытый выше процесс разбиения можно выполнять ограниченно на основе по меньшей мере одно из следующего: информации о размере/глубине блока кодирования, при которых разрешено разбиение на основе квадродерева, информации о размере/глубине блока кодирования, при которых разрешено разбиение на основе двоичного дерева, или информации о размере/глубине блока кодирования, при которых не разрешено разбиение на основе двоичного дерева.
[00153] Число потенциальных размеров можно ограничить заранее определенным числом, либо размер блока кодирования в заранее определенной единице может иметь фиксированное значение. Например, можно принудительно задать один из следующих размеров блока кодирования в последовательности или изображении: 256×256, 128×128 или 32×32. Информацию, указывающую размер блока кодирования в последовательности или изображении, можно сообщать посредством заголовка последовательности или заголовка изображения.
[00154] Результат разбиения на основе квадродерева и двоичного дерева может представлять собой единицу кодирования в квадратной или прямоугольной форме произвольного размера.
[00155] Полученный в результате разбиения на основе квадродерева, двоичного дерева или троичного дерева блок кодирования, дальнейшее разбиение которого не выполняют, может служить в качестве блока предсказания или блока преобразования. То есть он может служить в качестве блока кодирования, сгенерированного в результате разбиения на основе квадродерева или разбиение на основе двоичного дерева, блока предсказания или блока преобразования. Например, можно сгенерировать предсказательное изображение на основе отдельно взятого блока кодирования, при этом остаточный сигнал, представляющий собой разность между исходным изображением и предсказательным изображением, можно преобразовывать на основе отдельно взятого блока кодирования. Для генерирования предсказательного изображения на основе отдельно взятого блока кодирования, можно определять информацию о движении на основе блока кодирования, либо можно определять режим внутрикадрового предсказания на основе блока кодирования. Следовательно, для кодирования блока кодирования можно применить по меньшей мере одно из следующего: режим пропуска, внутрикадровое предсказание или межкадровое предсказание.
[00156] В качестве альтернативы, для множества блоков кодирования, сгенерированных путем разбиения блока кодирования, можно задать совместное применение по меньшей мере одного из следующего: информации о движении, кандидатов на слияние, опорных отсчетов, строк опорных отсчетов или режимов внутрикадрового предсказания. Например, в случае разбиения блока кодирования на основе троичного дерева, для сегментов, сгенерированных путем разбиения блока кодирования, возможно совместное применение по меньшей мере одно из следующего: информации о движении, кандидатов на слияние, опорных отсчетов, строк опорных отсчетов или режимов внутрикадрового предсказания в соответствии с размером или формой блока кодирования. В качестве альтернативы, можно задать совместное применение указанной информации только для некоторых из множества блоков кодирования, а для остальных блоков кодирования можно задать отсутствие совместного применения указанной информации.
[00157] В другом примере возможно применение блока предсказания или блока преобразования, меньшего, чем блок кодирования, путем разбиения блока кодирования.
[00158] Далее будет подробно раскрыт способ выполнения преобразования в отношении блока кодирования или блока преобразования, сгенерированных путем разбиения блока кодирования. В раскрытом ниже варианте осуществления текущий блок может представлять собой блок преобразования или блок кодирования в качестве базовой единицы, в которой выполняют преобразование и квантование.
[00159]
[00160] ФИГ. 9 - блок-схема, иллюстрирующая процесс кодирования остаточных отсчетов по одному из вариантов осуществления настоящего изобретения.
[00161] Остаточный отсчет можно получить путем вычитания предсказанного отсчета из исходного отсчета.
[00162] Когда остаточный отсчет будет получен, можно определить то, нужно ли пропустить преобразование для полученного остаточного отсчета (S910). Кодер может закодировать информацию, указывающую то, имеет ли место пропуск преобразования для текущего блока. Например, 'transform_skip_flag' указывает то, имеет ли место пропуск преобразования для текущего блока. Значение transform_skip_flag, равное 1, указывает, что преобразование для текущего блока пропускают, а значение transform_skip_flag, равное 0, указывает, что преобразование для текущего блока не пропускают.
[00163] Кодер выполнен с возможностью кодирования информации для определения размер блока, при котором разрешен пропуск преобразования. Например,'log2_transform_skip_max_size_minus2' представляет максимальный размер блока, при котором разрешен пропуск преобразования. Кодер может кодировать transform_skip_flag только в том случае, если текущий блок не больше максимального размера, при котором разрешен пропуск преобразования.
[00164] В качестве альтернативы, то, нужно ли пропустить преобразование, можно определять индивидуально для горизонтального направления и вертикального направления. Кодер выполнен с возможностью кодирования по меньшей мере одного из следующего: информации о том, нужно ли пропустить преобразование для горизонтального направления, или информации, указывающей то, нужно ли пропустить преобразование для вертикального направления. Например, можно закодировать по меньшей мере одно из следующего: 'hor_transform_skip_flag', указывающий, нужно ли пропустить преобразование для горизонтального направления, или 'ver_transform_skip_flag', указывающий, нужно ли пропустить преобразование для вертикального направления.
[00165] Если будет определено, что пропуск преобразования к текущему блоку не применяют, можно выполнить первичное преобразование в отношении текущего блока (S920). Первичное преобразование можно выполнять на основе ядра преобразования, например, ДКП или ДСП. Ядро преобразования можно определять на основе типа преобразования текущего блока. Кодер выполнен с возможностью кодирования информации для определения типа преобразования текущего блока. В качестве альтернативы, тип преобразования текущего блока можно косвенно вывести по правилу, заранее определенному в кодере и декодере. Например, тип преобразования текущего блока можно определять на основе по меньшей мере одного из следующего: размера текущего блока, формы текущего блока, режима кодирования текущего блока или режима внутрикадрового предсказания текущего блока.
[00166] Вторичное преобразование можно выполнять в отношении первично-преобразованных коэффициентов (S930). Вторичное преобразование можно выборочно выполнять только в случае выполнения первичного преобразования выполняют в отношении текущего блока. То, нужно ли выполнять вторичное преобразование, можно определять на основе по меньшей мере одного из следующего: размера, формы, типа преобразования, режима кодирования или режима внутрикадрового предсказания текущего блока. В качестве альтернативы, кодер может закодировать информацию, указывающую, нужно ли выполнить вторичное преобразование.
[00167] Вторичное преобразование можно выполнять в отношении частичной области текущего блока. Местоположение и/или размер области выполнения вторичного преобразования могут быть заранее заданы в кодере и декодере. В качестве альтернативы, информацию, указывающую область выполнения вторичного преобразования, можно закодировать в битовом потоке. В качестве альтернативы, область выполнения вторичного преобразования можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока.
[00168] Если будет определено, что преобразование для текущего блока пропускают, можно масштабировать остаточный отсчет текущего блока (S940). Для масштабирования можно применять параметр масштабирования. Параметр масштабирования можно определять на основе ширины, высоты или размера текущего блока.
[00169] Преобразованные коэффициенты, сгенерированные путем преобразования остаточного коэффициента или масштабированного остаточного коэффициента, сгенерированного путем масштабирования остаточного коэффициента, можно квантовать (S950). Остаточные коэффициенты, сгенерированные в результате квантования, можно упорядочить в одном измерении, при этом остаточные коэффициенты можно закодировать (S960). Порядок упорядочивания остаточных коэффициентов может соответствовать по меньшей мере одному из следующих: считывание по диагонали, зигзагообразное считывание, считывание вверх вправо, вертикальное считывание или горизонтальное считывание.
[00170] ФИГ. 10 - блок-схема, иллюстрирующая процесс декодирования остаточного отсчета по одному из вариантов осуществления настоящего изобретения.
[00171] Сначала можно получить остаточный коэффициент текущего блока (S1010). Декодер может получить остаточный коэффициент путем считывания коэффициентов. Считывание коэффициентов можно выполнять на основе по меньшей мере одного из следующего: считывания по диагонали, зигзагообразного считывания, считывания вверх вправо, вертикального считывания или горизонтального считывания. Порядок считывания текущего блока можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока. В результате считывания коэффициентов можно получить остаточный коэффициент в форме двумерного блока.
[00172] В отношении остаточного коэффициента текущего блока можно выполнить обратное квантование (S1020).
[00173] Можно определить то, нужно ли пропустить обратное преобразование в обратно-квантованном остаточном коэффициенте текущего блока (S1030). Информацию, указывающую то, то пропускают ли обратное преобразование для текущего блока, можно сообщать посредством битового потока. Например, 'transform_skip_flag' указывает то, пропускают ли обратное преобразование для текущего блока. Значение transform_skip_flag, равное 1, указывает, что обратное преобразование для текущего блока пропускают, а значение transform_skip_flag, равное 0, указывает, что обратное преобразование текущего блока не пропускают.
[00174] Информацию для определения размера блока, при котором разрешен пропуск обратного преобразования, можно сообщать посредством битового потока. Например, 'log2_transform_skip_max_размер_minus2' представляет максимальный размер блока, при котором разрешен пропуск обратного преобразования. Закодировать transform_skip_flag можно только в том случае, если текущий блок не больше максимального размера, при котором разрешен пропуск обратного преобразования. Если кодирование transform_skip_flag не выполняют, значение transform_skip_flag можно получить в качестве заранее заданного значения. Заранее заданное значение может быть равно 0. Соответственно, если размер текущего блока больше максимального размера, при котором разрешен пропуск обратного преобразования, в отношении текущего блока можно выполнить обратное преобразование.
[00175] В качестве альтернативы, то, нужно ли пропустить обратное преобразование, можно определять индивидуально для горизонтального направления и вертикального направления. По меньшей мере одно из следующего: информацию, указывающую, нужно ли пропустить обратное преобразование для горизонтального направления, или информацию, указывающую, нужно ли пропустить обратное преобразование для вертикального направления, можно сообщать посредством битового потока. Например, по меньшей мере одно из следующего: 'hor_transform_skip_flag', указывающий, нужно ли пропустить обратное преобразование для горизонтального направления, или 'ver_transform_skip_flag', указывающий, нужно ли пропустить обратное преобразование для вертикального направления, можно сообщать посредством битового потока.
[00176] Закодировать hor_transform_skip_flag и ver_transform_skip_flag можно только в том случае, если текущий блок меньше максимального размера, при котором разрешен пропуск обратного преобразования. Например, hor_transform_skip_flag можно закодировать только в том случае, если ширина текущего блока меньше максимального размера, при котором разрешен пропуск обратного преобразования. Кроме того, ver_transform_skip_flag можно закодировать только в том случае, если высота текущего блока меньше максимального размера, при котором разрешен пропуск обратного преобразования.
[00177] В качестве альтернативы, то, нужно ли кодировать hor_transform_skip_flag и ver_transform_skip_flag, можно определять на основе формы текущего блока. Например, hor_transform_skip_flag можно закодировать только в том случае, если текущий блок представляет собой неквадратный блок, ширина которого больше его высоты. Кроме того, ver_transform_skip_flag можно закодировать только в том случае, если текущий блок представляет собой неквадратный блок, высота которого больше его ширины.
[00178] Если кодирование информации не выполняют, значение информации можно получить в качестве заранее заданного значения. Заранее заданное значение может быть равно 0.
[00179] Если будет определено, что в отношении текущего блока обратное преобразование выполняют, можно выполнить обратное преобразование в отношении обратно-квантованного остаточного коэффициента текущего блока (S1040, S1050). Обратное преобразование можно выполнять в порядке вторичного обратного преобразования и первичного обратного преобразования. Вторичное обратное преобразование можно выполнять в отношении частичной области текущего блока. На основе размера области, к которой применяют вторичное обратное преобразование, можно определить матрицу преобразований для вторичного обратного преобразования.
[00180] Вторичное обратное преобразование можно выполнять выборочно. Иными словами, можно выполнить первичное обратное преобразование, при этом не выполняя вторичное обратное преобразование. То, нужно ли выполнить вторичное обратное преобразование, можно определять на основе по меньшей мере одного из следующего: размера, формы, типа преобразования, режима кодирования или режима внутрикадрового предсказания текущего блока. В качестве альтернативы, информацию, указывающую то, нужно ли выполнить вторичное обратное преобразование, можно сообщить посредством битового потока.
[00181] Первичное обратное преобразование можно выполнять на основе ядра преобразования, например, ДКП или ДСП. Кодер выполнен с возможностью кодирования информации для определения типа преобразования текущего блока. В качестве альтернативы, тип преобразования текущего блока можно определять согласно правилу, заранее определенному кодером и декодером. Например, тип преобразования текущего блока можно определять на основе по меньшей мере одного из следующего: размера текущего блока, формы текущего блока, режима кодирования текущего блока или режима внутрикадрового предсказания текущего блока.
[00182] В результате выполнения обратного преобразования можно получить остаточный отсчет текущего блока.
[00183] Если будет определено, что обратное преобразование пропускают в текущем блоке, можно масштабировать обратно-квантованный остаточный коэффициент текущего блока (S1060). Для масштабирования можно применить параметр масштабирования. Параметр масштабирования можно определять на основе ширины, высоты или размера текущего блока. Остаточный коэффициент текущего блока можно получить путем масштабирования обратно-квантованного остаточного коэффициента на основе параметра масштабирования.
[00184]
[00185] Преобразование в по меньшей мере одном из следующих направлений: вертикальном направлении или горизонтальном направлении можно пропустить. Если пропуск преобразования применяют только в горизонтальном направлении, преобразование можно не выполнять в горизонтальном направлении, но можно выполнять в вертикальном направлении. Если пропуск преобразования применяют только в вертикальном направлении, преобразование можно не выполнять в вертикальном направлении, но можно выполнять в горизонтальном направлении.
[00186] То, можно ли применять методику пропуска преобразования для текущего блока, можно определять в зависимости от типа разбиения блока узла-родителя. Например, если текущий блок сгенерирован путем разбиения на основе двоичного дерева, методика пропуска преобразования может не быть разрешена для текущего блока. То есть, если текущий блок сгенерирован путем разбиения на основе двоичного дерева, остаточный отсчет текущего блока можно получить путем преобразования обратно-квантованного остаточного коэффициента. Если текущий блок сгенерирован путем разбиения на основе двоичного дерева, можно не выполнять кодирование/декодирование информации, указывающей, пропускают ли преобразование (например, по меньшей мере одно из следующего: transform_skip_flag, hor_transform_skip_flag или ver_transform_skip_flag).
[00187] В качестве альтернативы, если текущий блок сгенерирован путем разбиения на основе двоичного дерева, методика пропуска преобразования может быть разрешена только в горизонтальном направлении или вертикальном направлении. Направление, в котором методика пропуска преобразования не разрешена, можно определять на основе по меньшей мере одного из следующего: информации, сообщенной посредством битового потока, размера текущего блока, формы текущего блока или режима внутрикадрового предсказания текущего блока. Например, если текущий блок имеет неквадратную форму, при которой ширина больше высоты, методика пропуска преобразования может быть разрешена только в вертикальном направлении. То есть, если текущий блок имеет форму 2N×N, преобразование можно выполнять в горизонтальном направлении и можно выполнять выборочно в вертикальном направлении. В качестве альтернативы, если текущий блок имеет неквадратную форму, при которой высота больше ширины, методика пропуска преобразования может быть разрешена только в горизонтальном направлении. То есть, если текущий блок имеет форму N×2N, преобразование можно выполнять в вертикальном направлении и можно выполнять выборочно в горизонтальном направлении. В отличие от раскрытого выше примера, если текущий блок представляет собой неквадратный блок, ширина которого больше его высоты, методика пропуска преобразования разрешена только в горизонтальном направлении, при этом, если текущий блок представляет собой неквадратный блок, высота которого больше его ширины, методика пропуска преобразования разрешена только в вертикальном направлении.
[00188] В качестве альтернативы, то, нужно ли пропустить преобразование текущего блока, можно определять в зависимости от типа разбиения блока узла-родителя. Например, если текущий блок сгенерирован путем разбиения на основе двоичного дерева, преобразование в горизонтальном направлении или вертикальном направлении можно не выполнять. То есть, если текущий блок сгенерирован путем разбиения на основе двоичного дерева, преобразование в по меньшей мере одном из следующих направлений: горизонтальном направлении или вертикальном направлении текущего блока можно пропустить без кодирования/декодирования информации, указывающей то, пропускают ли преобразование текущего блока (например, transform_skip_flag, hor_transform_skip_flag, ver_transform_skip_flag).
[00189]
[00190] Далее будет подробно раскрыто первичное преобразование/обратное преобразование и вторичное преобразование/обратное преобразование. Здесь и далее, признаки, раскрытые в отношении первичного преобразования и вторичного преобразования, можно в расширенном смысле применить к первичному обратному преобразованию и вторичному обратному преобразованию.
4
4
T
[00191] Первичное преобразование можно выполнять на основе ядра преобразования, например ДКП или ДСП. Например, Уравнение 1 описывает матрицу А преобразований на основе ДСП-VII. Обратное преобразование на основе ДСП-VII можно выполнять на основе A.
[00192] [Уравнение 1]
8
8
T
[00193] Уравнение 2 описывает матрицу Т преобразований на основе ДКП-II. Обратное преобразование на основе ДКП-II можно выполнять на основе T.
[00194] [Уравнение 2]
[00195] Ядро преобразования текущего блока можно определять на основе типа преобразования текущего блока. Тип преобразования текущего блока можно напрямую определять на основе информации, сообщаемой посредством битового потока. Эта информация может представлять собой информацию об индексе, указывающую тип преобразования для горизонтального направления и тип преобразования для вертикального направления. Таблица 1 изображает пример, в котором тип преобразования горизонтального направления и тип преобразования вертикального направления определяют на основе информации об индексе.
[00196]
[00197] В Таблице 1 HorTrType представляет тип преобразования горизонтального направления, a VerTrType представляет тип преобразования вертикального направления.
[00198] Информацию, указывающую то, сообщают ли информацию об индексе для определения типа преобразования для горизонтального направления и вертикального направления, можно закодировать. Информацию можно сообщать посредством набора параметров изображения или набора параметров последовательности. Если информацию об индексе не сообщают, тип преобразования для горизонтального направления и вертикального направления можно косвенно определить на основе по меньшей мере одного из следующего: размера, формы или режима внутрикадрового предсказания текущего блока.
[00199] Например, в случае кодирования текущего блока путем межкадрового предсказания, тип преобразования горизонтального направления и вертикального направления можно определять на основе размера или формы текущего блока. В частности, если текущий блок имеет неквадратную форму, при которой ширина больше высоты, при этом ширина текущего блока входит в заранее заданный диапазон, то можно определить, что типом преобразования горизонтального направления текущего блока является ДКП-II. Если вышеуказанное условие не соблюдено, можно определить, что типом преобразования горизонтального направления текущего блока является ДСП-VII. Кроме того, если текущий блок имеет неквадратную форму, при которой высота больше ширины, при этом высота текущего блока входит в заранее заданный диапазон, можно определить, что типом преобразования вертикального направления текущего блока является ДКП-II. Если вышеуказанное условие не соблюдено, можно определить, что типом преобразования вертикального направления текущего блока является ДСП-VII. Заранее заданный диапазон может быть задан в виде N или более и/или M или менее. N и M представляют собой разные натуральные числа и могут составлять 4, 8, 16 или 32.
[00200] В случае кодирования текущего блока путем внутрикадрового предсказания, тип преобразования горизонтального направления и тип преобразования вертикального направления можно определять на основе по меньшей мере одного из следующего: размера, формы или режима внутрикадрового предсказания текущего блока. Например, если режимом внутрикадрового предсказания текущего блока является режим прямого кодирования (ПК, англ. Direct Coding (DC)), то можно определить, что типом преобразования горизонтального направления и типом преобразования вертикального направления текущего блока является ДСП-VII.
[00201] Если режимом внутрикадрового предсказания текущего блока является планарный режим, то тип преобразования горизонтального направления и тип преобразования вертикального направления текущего блока можно определять, исходя из того, входит ли ширина и высота текущего блока в соответствующий заранее заданный диапазон. Например, если ширина текущего блока входит в заранее заданный диапазон, то можно определить, что типом преобразования горизонтального направления текущего блока является ДКП-II. При этом, если ширина текущего блока не входит в заранее заданный диапазон, то можно определить, что типом преобразования горизонтального направления текущего блока является ДСП-VII. Если высота текущего блока входит в заранее заданный диапазон, то можно определить, что типом преобразования вертикального направления текущего блока является ДКП-II. При этом, если высота текущего блока не входит в заранее заданный диапазон, то можно определить, что типом преобразования вертикального направления текущего блока является ДСП-VII.
[00202] Если режим внутрикадрового предсказания текущего блока представляет собой направленный режим первого направления, то можно определить, что типом преобразования горизонтального направления текущего блока является ДСП-VII. Если режим внутрикадрового предсказания текущего блока представляет собой первый направленный режим, то можно определить, что типом преобразования вертикального направления текущего блока является ДСП-VII или ДКП-II в зависимости от того, входит ли высота текущего блока в заранее заданный диапазон
[00203] Если режим внутрикадрового предсказания текущего блока представляет собой направленный режим второго направления, то можно определить, что типом преобразования горизонтального направления текущего блока является ДСП-VII или ДКП-II в зависимости от того, входит ли ширина текущего блока в заранее заданный диапазон. Если режим внутрикадрового предсказания текущего блока представляет собой второй направленный режим, то можно определить, что типом преобразования вертикального направления текущего блока является ДСП-VII. Первое направление и второе направление могут быть отличны друг от друга.
[00204]
[00205] В качестве альтернативы, тип преобразования текущего блока можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока, при этом тип преобразования вертикального направления и тип преобразования горизонтального направления можно принять одинаковыми.
[00206] Например, если текущий блок представляет собой блок 4×4, кодируемый во внутрикадровом режиме, возможно применение матрицы преобразований на основе ДСП (в частности, ДСП-VII). Если текущий блок не соответствует вышеуказанному условию, возможно применение матрицы преобразований на основе ДКП (в частности, ДКП-II).
[00207] В качестве альтернативы, тип преобразования текущего блока можно определять на основе по меньшей мере одного из следующего: режима внутрикадрового предсказания текущего блока или числа отсчетов, входящих в текущий блок. Значение числа отсчетов для определения типа преобразования может быть заранее задано кодером и декодером. В качестве альтернативы, информацию для определения числа отсчетов можно сообщить посредством битового потока. Информацию можно сообщать посредством блока, заголовка сектора или набора параметров изображения.
[00208] Если число отсчетов составляет 16, режимом кодирования текущего блока является режим внутрикадрового предсказания, а число отсчетов, входящих в текущий блок, составляет 16 или менее, к текущему блоку можно применить матрицу преобразований на основе ДСП. Например, матрицу преобразований на основе ДСП можно применить к блоку размером 4×4, 2×8 или 8×2, кодируемому путем внутрикадрового предсказания. При этом, если текущий блок не соответствует вышеуказанному условию, можно применить матрицу преобразований на основе ДКП.
[00209] Для каждой последовательности, сектора или блока можно задать разные условия для определения типа преобразования. Например, в секторе 0, если размер блока преобразования, кодируемого во внутрикадровом режиме, составляет 4×4, можно выбрать ДСП. При этом, в секторе 1, если размер блока преобразования, кодируемого во внутрикадровом режиме, составляет 8×8 или менее 8×8, можно выбрать ДСП.
[00210] В другом примере тип преобразования текущего блока можно определять на основе набора преобразований. Информацию об индексе, указывающую тип преобразования текущего блока, можно сообщить посредством битового потока. В качестве альтернативы, тип преобразования текущего блока можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока. Набор преобразований можно определять для блока кодирования или блока преобразования. Соответственно, наборы преобразований для блоков кодирования и блоков преобразования могут быть отличны друг от друга. В качестве альтернативы, один набор преобразований может быть общим для множества блоков преобразования. Множество блоков преобразования может входить в состав блока кодирования заранее определенного размера или заранее определенной формы.
[00211] Таблица 2 иллюстрирует множество наборов преобразований.
[00212]
[00213] Набор преобразовании может включать в себя по меньшей мере один потенциальный тип преобразования. По меньшей мере одно из следующего: число потенциальных типов преобразования или тип потенциальных типов преобразования, входящих в каждый из множества наборов преобразований, могут быть разными. То есть, по меньшей мере одно из следующего: число потенциальных типов преобразования или тип потенциальных типов преобразования, входящих в один набор преобразований, могут быть отличны от числа и типа в другом наборе преобразований.
[00214] Из Таблицы 1 видно, что каждый набор преобразований включает в себя два потенциальных типа преобразования. Можно задать набор преобразований, включающий в себя один, три, четыре или более потенциальных типов преобразования. В качестве альтернативы, потенциальный тип 0 преобразования и потенциальный тип 1 преобразования могут обозначать одинаковый набор преобразований.
[00215] В качестве альтернативы, максимальное число потенциальных типов преобразования, входящих в набор преобразований, можно сообщать посредством битового потока. Число потенциальных типов преобразования, входящих в каждый набор преобразований, может быть не больше максимального числа, сообщаемого посредством битового потока. Данную информацию можно сообщать посредством заголовка сектора или заголовка последовательности.
[00216] Любой из потенциальных типов преобразования, входящих в набор преобразований, можно определять в качестве типа преобразования текущего блока. Тип преобразования текущего блока можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока. Режим внутрикадрового предсказания представляет собой режим внутрикадрового предсказания блока предсказания или блока кодирования, соответствующего блоку преобразования.
[00217] Например, если текущий блок представляет собой блок размером 4×4, кодируемый во внутрикадровом режиме, в качестве типа преобразования текущего блока можно определить потенциальный тип 0 преобразования в наборе преобразований. При этом, если текущий блок не соответствует вышеуказанному условию, в качестве типа преобразования текущего блока можно определить потенциальный тип 1 преобразования в наборе преобразований.
[00218] В частном примере, если набор преобразований с индексом 0 определяют в качестве набора преобразований текущего блока, а текущий блок представляет собой блок размером 4×4, кодируемый во внутрикадровом режиме, то преобразование можно выполнить на основе ДСП-VII. При этом, если текущий блок не соответствует вышеуказанному условию, преобразование можно выполнить на основе ДКП-II Если набор преобразований с индексом 2 определяют в качестве набора преобразований текущего блока, а текущий блок представляет собой блок размером 4×4 или 8×8, кодируемый во внутрикадровом режиме, преобразование можно выполнить на основе ДСП-VII. Если текущий блок не соответствует вышеуказанному условию, преобразование можно выполнить на основе ДКП-VIII.
[00219] Условие для выбора потенциальных типов преобразования можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания блока кодирования. Например, если размер блока кодирования не больше 32×32, применение потенциального типа 0 преобразования возможно только в том случае, если блок преобразования кодируют во внутрикадровом режиме и размер блока преобразования составляет 4×4. При этом, если размер блока кодирования больше, чем 32×32, применение потенциального типа 0 преобразования возможно только в том случае, если блок преобразования кодируют во внутрикадровом режиме и размер блока преобразования составляет 8×8 или менее.
[00220] В качестве альтернативы, информацию для указания любого из множества потенциальных типов преобразования можно сообщать посредством битового потока.
[00221] Пропуск преобразования можно задать в качестве потенциального типа преобразования. Возможность применения пропуска преобразования в качестве потенциального типа преобразования можно определять исходя из того, разрешен ли пропуск преобразования в текущем блоке. В зависимости от того, возможно ли применение пропуска преобразования в качестве потенциального типа преобразования, по меньшей мере одно из следующего: тип потенциальных типов преобразования или число потенциальных типов преобразования в наборе преобразований могут быть заданы по-разному.
[00222] В Таблице 3 представлено множество наборов преобразований, в которых пропуск преобразования задан в качестве потенциального типа преобразования.
[00223]
[00224] Если значение transform_skip_enabled_flag, указывающего то, нужно ли разрешить пропуск преобразования в пределах заранее определенного изображения, составляет 1, как видно из Таблицы 3, возможно применение набора преобразований, дополнительно содержащего пропуск преобразования в качестве потенциального типа преобразования. При этом, если значение transform_skip_enabled_flag составляет 0, как видно из Таблицы 2, возможно применение набора преобразований, не содержащего пропуск преобразования в качестве потенциального типа преобразования.
[00225] Можно задать одинаковые типы преобразования для горизонтального направления и для вертикального направления текущего блока. Например, при определении типа преобразования текущего блока, определенный тип преобразования можно будет применить и к определенному горизонтальному преобразованию, и к определенному вертикальному преобразованию. В качестве альтернативы, можно задать разные типы преобразования для горизонтального направления и для вертикального направления текущего блока. Например, при определении набора преобразований текущего блока, потенциальный тип О преобразования можно определить в качестве типа преобразования для горизонтального направления, а потенциальный тип 1 преобразования можно определить в качестве типа преобразования для вертикального направления.
[00226] В другом примере набор преобразований для горизонтального направления и набор преобразований для вертикального направления можно определять индивидуально. Для этого, первый индекс набора преобразований для указания набора преобразований в горизонтальном направлении и второй индекс набора преобразований для указания набора преобразований в вертикальном направлении можно сообщить посредством битового потока. В качестве типа преобразования в горизонтальном направлении можно определить любой из потенциальных типов преобразования, входящих в первый набор преобразований, указанный первым индексом набора преобразований. В качестве типа преобразования в вертикальном направлении можно определить любой из потенциальных типов преобразования, входящих во второй набор преобразований, указанный вторым индексом набора преобразований.
[00227] Например, предположим, что набор преобразований, соответствующий индексу 0 набора преобразований, определяют в качестве набора преобразований горизонтального направления, а набор преобразований, соответствующий индексу 1 набора преобразований, определяют в качестве набора преобразований для вертикального направления. Если текущий блок не кодируют путем внутрикадрового предсказания, или размер текущего блока не составляет 4×4, в качестве типа преобразования текущего блока можно определить потенциальный тип 1 преобразования. То есть, как и в случае типа вертикального преобразования, потенциальный тип 1 преобразования (т.е. ДКП-II), входящий в набор преобразований с индексом 0, определяют в качестве типа преобразования горизонтального направления, а потенциальный тип 1 преобразования, входящий в набора преобразований с индексом 1 (т.е. ДСП-I), можно определить в качестве типа преобразования вертикального направления.
[00228] Первый индекс набора преобразований и второй индекс набора преобразований могут обозначать одинаковый набор преобразований. В качестве альтернативы, второй индекс набора преобразований может указывать один из остаточных наборов преобразований за вычетом набора преобразований, указанного первым индексом набора преобразований.
[00229] То, являются ли набор преобразований для горизонтального направления и набор преобразований для вертикального направления одинаковыми, можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока. Для удобства разъяснения, набор преобразований для горизонтального преобразования означает набор преобразований горизонтального направления, а набор преобразований для вертикального преобразования означает набор преобразований вертикального направления. Например, если режим внутрикадрового предсказания текущего блока представляет собой режим внутрикадрового предсказания, схожий с горизонтальным направлением, или режим внутрикадрового предсказания, схожий с вертикальным направлением, набор преобразований горизонтального направления и набор преобразований вертикального направления могут быть отличны друг от друга. В данном случае, «режим внутрикадрового предсказания, схожий с горизонтальным направлением», может означать режим внутрикадрового предсказания, при котором отличие значения режима от горизонтального направления или горизонтально-направленного режима внутрикадрового предсказания находится в пределах заранее заданного значения. Кроме того, «режим внутрикадрового предсказания, схожий с вертикальным направлением» может означать режим внутрикадрового предсказания, при котором отличие значения режима от вертикального направления или вертикально-направленного режима внутрикадрового предсказания находится в пределах заранее заданного значения.
[00230] При этом, если режим внутрикадрового предсказания текущего блока представляет собой ненаправленный режим или направленный режим, не соответствующий вышеуказанному условию, набор преобразований горизонтального направления и набор преобразований вертикального направления могут быть одинаковыми. Если задан одинаковый набор преобразований для горизонтального направления и вертикального направления, по меньшей мере одно из следующего: первую информацию об индексе для указания набора преобразований горизонтального направления или вторую информацию об индексе для указания набора преобразований вертикального направления можно опустить.
[00231] В качестве альтернативы, если режим внутрикадрового предсказания текущего блока представляет собой ненаправленный режим, можно задать отличные друг от друга набор преобразований горизонтального направления и набор преобразований вертикального направления текущего блока.
[00232] ФИГ. 11 - схема, иллюстрирующая то, являются ли набор преобразований в вертикальном направлении и набор преобразований в горизонтальном направлении одинаковыми для 33 режимов внутрикадрового предсказания.
[00233] В примере на ФИГ. 11 показано, что, если режим внутрикадрового предсказания текущего блока находится в диапазоне 7-13 или 23-29, набор преобразований горизонтального направления и набор преобразований вертикального направления отличны друг от друга. При этом показано, что, если режим внутрикадрового предсказания текущего блока представляет собой направленный режим, не входящий в указанный диапазон, набор преобразований горизонтального направления и набор преобразований вертикального направления являются одинаковыми.
[00234] Если в заранее определенном блоке существует блок с тем же режимом внутрикадрового предсказания, что и текущий блок, набор преобразований текущего блока можно приравнять к набору преобразований блока с тем же режимом внутрикадрового предсказания, что и у текущего блока. В данном случае, заранее определенный блок может представлять собой блок кодирования, блок дерева кодирования или блок заранее определенного размера.
[00235] Например, предположим, что направление режима внутрикадрового предсказания, соответствующего первому блоку преобразования в блоке кодирования, является вертикальным (например, режим номер 26), набор преобразований горизонтального направления имеет индекс 2, а набор преобразований вертикального направления имеет индекс 0. В данном случае, порядок блоков преобразования можно определять согласно порядку считывания блока кодирования.
[00236] Если в блоке кодирования дополнительно существует блок преобразования с режимом внутрикадрового предсказания вертикального направления, можно не сообщать значение индекса набора преобразований во вновь считываемый блок преобразования. Вместо этого, к набору преобразований вновь считываемого блока преобразования можно применить набор преобразований блока преобразования с режимом внутрикадрового предсказания вертикального направления. То есть можно определить, что значения индексов набора преобразований горизонтального направления и набора преобразований вертикального направления вновь считываемого блока преобразования составляют соответственно 2 и 0.
[00237] В другом примере, если в заранее определенном блоке существует блок с режимом внутрикадрового предсказания, схожим с режимом текущего блока, набор преобразований текущего блока можно приравнять к набору преобразований блока с режимом внутрикадрового предсказания, схожим с режимом текущего блока. В данном случае режим внутрикадрового предсказания, схожий с режимом текущего блока, может означать стандартный режим внутрикадрового предсказания или режим внутрикадрового предсказания, при котором отличие значения режима от стандартного режима внутрикадрового предсказания не больше заранее заданного значения. Стандартный режим внутрикадрового предсказания может представлять собой режим внутрикадрового предсказания горизонтального направления или режим внутрикадрового предсказания вертикального направления.
[00238] Например, предположим, что направление режима внутрикадрового предсказания, соответствующего первому блоку преобразования в блоке кодирования, является вертикальным (например, режим номер 26), набор преобразований горизонтального направления имеет индекс 2, а набор преобразований вертикального направления имеет индекс 0.
[00239] Если в блоке кодирования существует блок преобразования с режимом внутрикадрового предсказания (например, режимом номер 27), схожим с вертикальным направлением, значение индекса набора преобразований можно не сообщать во вновь считываемый блок преобразования. Вместо этого, к набору преобразований вновь считываемого блока преобразования можно применить набор преобразований блока преобразования с режимом внутрикадрового предсказания текущего блока. То есть можно определить, что значение индекса набора преобразований горизонтального направления вновь считываемого блока преобразования составляет 2, а значение индекса набора преобразований вертикального направления составляет 0.
[00240] На основе режима внутрикадрового предсказания текущего блока можно определять набор преобразований для горизонтального направления и/или набор преобразований для вертикального направления. В Таблице 4 показан набор преобразований горизонтального направления и набор преобразований вертикального направления согласно режиму внутрикадрового предсказания текущего блока.
[00241]
[00242] Если текущий блок кодируют путем межкадрового предсказания, для текущего блока возможно применение заранее заданного набора преобразований. Заранее заданный набор преобразований может представлять собой набор преобразований с индексом 0.
[00243] В качестве альтернативы, если блок кодирования кодируют путем межкадрового предсказания, для блока кодирования выбирают набор преобразований, при этом для блоков преобразования в пределах блока кодирования возможно применение потенциальных типов преобразования, входящих в набор преобразований блока кодирования. В данном случае, тип преобразования каждого блока преобразования можно определять по размеру и/или форме блока преобразования, либо информацию для определения типа преобразования, выбранного каждым блоком преобразования, можно сообщать посредством битового потока.
[00244] Выбор типа преобразования текущего блока из множества потенциальных типов преобразования можно охарактеризовать как адаптивное многократное преобразование (АМП, англ. adaptive multiple transform (АМТ)). Применение адаптивного многократного преобразования к текущему блоку можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока. Информацию для определения по меньшей мере одно из следующего: размера или формы блока, при которых разрешено адаптивное многократное преобразование, можно сообщать посредством битового потока. Информация о размере может включать в себя по меньшей мере одно из следующего: максимальный размер или минимальный размер, при котором разрешено многократное преобразование. Размер блока, при котором разрешено многократное преобразование, и/или информацию для определения этого размера блока можно сообщать посредством по меньшей мере одного из следующего: блока, заголовка сектора или заголовка последовательности.
[00245]
[00246] Далее будет раскрыто вторичное преобразование.
[00247] После выполнения первичного преобразования в отношении текущего блока, кодер может выполнить вторичное преобразование. После выполнения вторичного обратного преобразования в отношении текущего блока, декодер может выполнить первичное обратное преобразование.
[00248] Применение вторичного преобразования к текущему блоку можно определять на основе по меньшей мере одного из следующего: размера, формы, типа преобразования или размера параметра квантования текущего блока. Например, если по меньшей мере одно из следующего: ширина или высота текущего блока меньше заранее заданного значения, вторичное преобразование можно не выполнять в отношении текущего блока.
[00249] Вторичное преобразование можно выполнять в отношении всей области текущего блока или частичной области текущего блока. ФИГ. 12 - схема, иллюстрирующая область выполнения вторичного преобразования.
[00250] Несмотря на то, что первичное преобразование выполняют в отношении всей области текущего блока, вторичное преобразование можно выполнять в отношении частичной области текущего блока.
[00251] Местоположение и/или размер области, в которой выполняют вторичное преобразование, могут быть заранее заданы в кодере и декодере. Например, размер области может составлять M×N, а местоположение верхнего левого угла области может совпадать с верхним левым углом текущего блока. Значения M и N могут составлять 2, 4, 8 или 16. M и N могут иметь одинаковые или разные значения. Например, возможно применение вторичного преобразования к блоку 4×4.
[00252] В качестве альтернативы, местоположение и/или размер области, где выполняют вторичное преобразование, можно определять на основе по меньшей мере одного из следующего: размера, формы, типа преобразования, размера параметра квантования, или того, выполняют ли остаточное переворачивание текущего блока. Например, если по меньшей мере одно из следующего: высота или ширина текущего блока не больше порогового значения, можно выполнить вторичное преобразование в отношении блока 4×4. Если высота и ширина текущего блока больше порогового значения, вторичное преобразование можно выполнить в отношении блока 8×8. В данном случае, пороговое значение может представлять собой натуральное число, например, 4, 8 или 16.
[00253] В качестве альтернативы, информацию для определения местоположения и/или размера области, в которой выполняют вторичное преобразование, можно сообщить посредством битового потока. Информацию можно сообщать посредством сектора, изображения или последовательности.
[00254] Вторичное преобразование может представлять собой сепарабельное преобразование (англ. separable transformation (separable transform)) или несепарабельное преобразование (англ. non-separable transformation (non-separable transform)). Сепарабельное преобразование и несепарабельное преобразование можно классифицировать в зависимости от того, выполняют ли преобразование для горизонтального направления и преобразование для вертикального направления по отдельности во время выполнения вторичного преобразования.
[00255] В частности, сепарабельное преобразование означает то, что преобразование для горизонтального направления и преобразование для вертикального направления выполняют по отдельности для блока размером M×N. Несепарабельное преобразование означает то, что для блока размером M×N преобразование для горизонтального направления и преобразование для вертикального направления не разделяют.
Т
[00256] Несепарабельное преобразование можно выполнять на основе одномерной матрицы, в которой матрица T преобразований и преобразованные коэффициенты, входящих в блок размером M×N, упорядочены в одном измерении. В частности, матрицу (M×N)×1 можно создать путем упорядочивания преобразованных коэффициентов, входящих в блок размером M×N, в одном измерении, при этом преобразованные коэффициенты размером K×1 можно сгенерировать путем умножения матрицы T преобразований размером K×(M×N) на указанную одномерную матрицу. Декодер может применить матрицу Тпреобразований для выполнения вторичного обратного преобразования.
[00257] Матрицу T преобразований можно определить на основе типа вторичного преобразования. Информацию для определения типа вторичного преобразования можно сообщать посредством битового потока. В качестве альтернативы, тип вторичного преобразования можно определять на основе по меньшей мере одного из следующего: размера, ширины, режима кодирования или режима внутрикадрового предсказания текущего блока.
[00258] Уравнение 3 демонстрирует преобразованные коэффициенты, входящие в блок 4×4, а Уравнение 4 изображает пример, в котором преобразованные коэффициенты, входящие в блок 4×4, упорядочены в одном измерении.
[00259] [Уравнение 3]
[00260] [Уравнение 4]
[00261] Матрицу  размером 16×1 можно получить путем упорядочивания преобразованных коэффициентов, входящих в блок размером 4×4, в строке. Порядок упорядочивания преобразованных коэффициентов может соответствовать порядку считывания текущего блока. То есть, порядок упорядочивания преобразованных коэффициентов может соответствовать по меньшей мере одному из следующих: вертикальному считыванию, горизонтальному считыванию, растровому считыванию, зигзагообразному считыванию или считыванию по диагонали.
[00262] Уравнение 5 изображает пример, в котором вторичное преобразование выполняют на основе одномерной матрицы  и матрицы T преобразований.
[00263] [Уравнение 5]
[00264] Если размер матрицы T преобразований составляет 16×16, можно сгенерировать матрицу  размером 16×1 в результате вторичного преобразования.
[00265] Выполнение несепарабельного преобразования в отношении только некоторых областей блока преобразования может именоваться «несепарабельное субпреобразование». Уравнение 6 описывает несепарабельное субпреобразование.
[00266] [Уравнение 6]
i
i
[00267] T' представляет матрицу преобразований, а X' представляет матрицу, в которой преобразованные коэффициенты, входящие в субблок, упорядочены в одном измерении. F' представляет несепарабельно преобразованные коэффициенты, сгенерированные в результате выполнения несепарабельного преобразования. Несепарабельно преобразованные коэффициенты области, где несепарабельное преобразование не выполняют, можно принять равными заранее заданному значению. Заранее заданное значение может представлять собой целое число, в том числе 0.
i
i
[00268] Размер каждой матрицы можно определять на основе размера субблока, в отношении которого выполняют несепарабельное преобразование. Например, предположим, что несепарабельное преобразование выполняют только в области, соответствующей субблоку размером 2×2 блока преобразования размером 4×4. X' представляет матрицу 4×1, в которой преобразованные коэффициенты, входящие в субблок 2×2 упорядочены в одном измерении, а T' представляет матрицу преобразований 16×4. F' представляет матрицу 16×1 преобразованных коэффициентов, сгенерированных в результате выполнения несепарабельного преобразования.
i
i
[00269] Например, предположим, что несепарабельное преобразование выполняют только в области, соответствующей субблоку размером 8×4 блока преобразования размером 8×8. X' представляет матрицу 32×1, в которой преобразованные коэффициенты, входящие в субблок 8×4, упорядочены в одном измерении, а Т' представляет матрицу преобразований 64×32. F' представляет матрицу размером 64×1 преобразованных коэффициентов, сгенерированных в результате выполнения несепарабельного преобразования.
i
i
[00270] Например, предположим, что несепарабельное преобразование выполняют только в области, соответствующей субблоку размером 4×4 блока преобразования размером 8×8. X' представляет матрицу 16×1, в которой преобразованные коэффициенты, входящие в субблок 4×4, упорядочены в одном измерении, а T' представляет матрицу преобразований 64×16. F' представляет матрицу размером 64×1 преобразованных коэффициентов, сгенерированных в результате выполнения несепарабельного преобразования.
[00271] Область, в которой выполняют вторичное преобразование, не обязательно должна быть квадратной. Например, неквадратную область размером 2×8 или 8×2 или многоугольную область, в которой скомбинированы три блока размером 4×4, можно определить в качестве области выполнения вторичного преобразования.
[00272] Размер или область области, в которой выполняют вторичное преобразование, можно определять в зависимости от размера, формы, режима кодирования или режима внутрикадрового предсказания текущего блока. Например, если текущий блок представляет собой квадрат, область, в которой выполняют вторичное преобразование, можно принять квадратной. Если текущий блок не является квадратом, область, в которой выполняют вторичное преобразование, можно принять неквадратной.
[00273] Несепарабельное преобразование может состоять из множества несепарабельных субпреобразований. Уравнение 7 описывает множество несепарабельных преобразований.
[00274] [Уравнение 7]
n
n
[00275] В Уравнении 7 X' представляет матрицу, в которой преобразованные коэффициенты, входящие в N-ый субблок, упорядочены в одном измерении. Несепарабельно-преобразованный коэффициент F' для N-ого субблока можно сгенерировать путем несепарабельного субпреобразования.
[00276] Набор несепарабельно-преобразованных коэффициентов каждого субблока можно принять в качестве несепарабельно-преобразованных коэффициентов текущего блока. Уравнение 8 описывает несепарабельно-преобразованный коэффициент F текущего блока.
[00277] [Уравнение 8]
[00278] Размер матрицы T преобразований можно определять на основе размера области, к которой применяют вторичное преобразование. Например, если вторичное преобразование применяют к блоку 4×4, возможно применение матрицы преобразований 16×16, а если вторичное преобразование применяют к блоку 8×8, возможно применение матрицы преобразований 64×64.
[00279] В качестве альтернативы, возможно применение приведенной матрицы преобразований, в которой число строк или столбцов меньше числа отсчетов, входящих в область, к которой применяют вторичное преобразование. Например, для блока 4×4 вторичное преобразование можно выполнять, применяя приведенную матрицу преобразований 4×16 вместо матрицы преобразований 16×16. В случае применения приведенной матрицы преобразований, можно получить четыре преобразованных коэффициента в результате выполнения вторичного преобразования. Эти четыре отсчета можно отобразить на блок размером 2×2 в верхней левой части блока, а преобразованные коэффициенты остаточной области можно принять равными 0.
[00280] В качестве альтернативы, для блока 8×8, вторичное преобразование можно выполнять, применяя приведенную матрицу преобразований 16×64 вместо матрицы преобразований 64×64. В случае применения приведенной матрицы преобразований, можно получить 16 преобразованных коэффициентов в результате выполнения вторичного преобразования. Эти 16 отсчетов можно отобразить на блок размером 4×4 в верхней левой части блока, а преобразованные коэффициенты остаточной области можно принять равными 0.
[00281] Информацию для определения размера приведенной матрицы преобразований можно сообщать посредством битового потока. Информация может указывать параметр приведения. Число столбцов или строк приведенной матрицы преобразований можно определять путем масштабирования числа отсчетов, входящих в область выполнения вторичного преобразования, используя параметр приведения.
[00282] Применение приведенной матрицы преобразований можно определять на основе по меньшей мере одного из следующего: размера, формы, режима кодирования, режима внутрикадрового предсказания или режима преобразования текущего блока. Например, если по меньшей мере одно условие случая, в котором ширина и/или высота текущего блока не меньше порогового значения, или случая, в котором текущий блок кодируют путем внутрикадрового предсказания, соблюдено, можно разрешить вторичное преобразование на основе приведенной матрицы преобразований.
[00283] В качестве альтернативы, информацию, указывающую то, разрешена ли приведенная матрица преобразований, можно сообщать посредством битового потока.
[00284] В раскрытом выше варианте осуществления остаточные коэффициенты кодируют в следующем порядке: первичное преобразование, вторичное преобразование и квантование. В отличие от раскрытого примера, остаточные коэффициенты можно кодировать в следующем порядке: первичное преобразование, квантование и вторичное преобразование.
[00285]
[00286] Применение вариантов осуществления, раскрытых выше для процесса декодирования или процесса кодирования, к процессу кодирования или к процессу декодирования соответственно входит в объем настоящего изобретения. Изменение заранее определенного порядка, раскрытого в вариантах осуществления, на другой порядок также входит в объем настоящего изобретения.
[00287] Несмотря на то, что варианты осуществления были раскрыты выше на примерах ряда этапов или принципиальных схем, они не предназначены для ограничения порядка временной последовательности по настоящему изобретению, при этом, при необходимости, их можно выполнять одновременно или в каком-либо другом порядке. Кроме того, каждый из компонентов (например, единиц, модулей и т.п.) в составе блок-схемы раскрытого выше варианта осуществления может быть реализован в виде аппаратного устройства или программного средства и множества компонентов. Или же множество компонентов можно скомбинировать и реализовать посредством единственного аппаратного устройства или программного средства. Раскрытые выше варианты осуществления могут быть реализованы в виде программных инструкций с возможностью их исполнения посредством разнообразных электронно-вычислительных компонентов и записи в машиночитаемом носителе записей. Машиночитаемый носитель записи может включать в себя что-либо одно из следующего или комбинацию следующего: программных команд, файлов данных, структур данных и т.п.В число примеров машиночитаемых носителей входят: магнитные носители, например, жесткие диски, гибкие диски и магнитные ленты, оптические носители записи, например, постоянные запоминающие устройства на компакт-дисках (англ. compact disk read-only memory (CD-ROM)) и универсальные цифровые диски (англ. digital versatile disks (DVD)), магнитооптические носители, например, гибкие магнитооптические диски, носители и аппаратные устройства, специально выполненные с возможностью хранения и исполнения программных инструкций, например, постоянное запоминающее устройство (ПЗУ, англ. read-only memory (ROM)), оперативное запоминающее устройство (ОЗУ, англ. random-access memory (RAM)), флеш-память и т.п. Аппаратное устройство может быть выполнено с возможностью работы в качестве одного или нескольких программных модулей для выполнения способа по настоящему изобретению и наоборот.
Промышленная применимость
Настоящее изобретение может найти применение в электронных устройствах, выполненных с возможностью кодирования/декодирования видеоинформации.