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

Область техники, к которой относится изобретение
Настоящее изобретение относится к способу и устройству обработки видеосигнала.
Уровень техники
В последнее время в различных областях возросли потребности в изображениях высокого разрешения и высокого качества, например, в изображениях высокой четкости (англ. high definition (HD)) и сверхвысокой четкости (англ. ultra-high definition (UHD)). Однако, чем выше разрешение и качество изображения, тем больше количество данных по сравнению с данными обычного изображения. Поэтому возрастают затраты на передачу и хранение данных изображений при их передаче посредством таких традиционных физических сред, как проводные или беспроводные широкополосные сети, или их хранении на традиционном носителе. Решить проблемы, возникающие в связи с увеличением разрешения и качества данных изображений, позволяют высокоэффективные способы кодирования/декодирования изображений.
Технология сжатия изображений включает в себя разнообразные способы, в том числе: способ межкадрового предсказания значения пикселя, входящего в состав текущего изображения, по изображению, предшествующему текущему изображению или следующему за ним; способ внутрикадрового предсказания значения пикселя, входящего в состав текущего изображения, на основе информации о пикселях в текущем изображении; способ энтропийного кодирования, состоящий в присвоении короткого кода значению с высокой частотой появления и присвоении длинного кода значению с низкой частотой появления; и т.п. Указанная технология сжатия изображений позволяет эффективно сжимать видеоданные, а также передавать и хранить их.
С ростом потребностей в изображениях высокого разрешения также возросли потребности в части содержимого стереографических изображений -новой услуги передачи изображений. В настоящее время обсуждается способ сжатия видеоизображений для эффективного создания содержимого стереографического изображения с высоким разрешением и сверхвысоким разрешением.
Раскрытие сущности изобретения Техническая проблема
Настоящее изобретение направлено на создание способа и устройства для эффективного выполнения межкадрового предсказания для кодируемого/декодируемого целевого блока при кодировании/декодировании видеосигнала.
Настоящее изобретение направлено на создание способа и устройство для выполнения компенсации движения путем применения множества списков кандидатов на слияние при кодировании/декодировании видеосигнала.
Настоящее изобретение направлено на создание способа и устройства для выполнения компенсации движения на основе аффинной модели при кодировании/декодировании видеосигнала.
Настоящее изобретение направлено на создание способа и устройства получения вектора движения угла на основе соседнего блока или не-соседнего блока текущего блока при кодировании/декодировании видеосигнала.
Технические задачи, которые можно решить с помощью настоящего изобретения, не ограничены вышеуказанной задачей, при этом после ознакомления с нижеследующим описанием средним специалистам в области техники настоящего изобретения станут ясны и другие, не указанные здесь, технические задачи.
Техническое решение
Способ и устройство декодирования видеосигнала по настоящему изобретению позволяют получить кандидата на слияние на основе блока-кандидата, сгенерировать первый список кандидатов на слияние, включающий в себя указанного кандидата на слияние, обозначить одного из множество кандидатов на слияние, входящих в первый список кандидатов на слияние, получить аффинные векторы текущего блока на основе информации о движении обозначенного кандидата на слияние, получить вектор движения подблока в текущем блоке на основе аффинных векторов и выполнить компенсацию движения для подблока на основе вектора движения.
Способ и устройство кодирования видеосигнала по настоящему изобретению позволяют получить кандидата на слияние на основе блока-кандидата, сгенерировать первый список кандидатов на слияние, включающий в себя указанного кандидата на слияние, обозначить одного из множества кандидатов на слияние, входящих в первый список кандидатов на слияние, получить аффинные векторы текущего блока на основе информации о движении обозначенного кандидата на слияние, получить вектор движения подблока в текущем блоке на основе аффинных векторов и выполнить компенсацию движения для подблока на основе вектора движения.
Для способа и устройства кодирования/декодирования видеосигнала по настоящему изобретению, в случае кодирования блока-кандидата с использованием аффинного межкадрового предсказания, аффинные векторы кандидата на слияние можно получать на основе аффинных векторов блока-кандидата.
Для способа и устройства кодирования/декодирования видеосигнала по настоящему изобретению, положения аффинных векторов блока-кандидата могут быть разными в зависимости от того, входят ли текущий блок и блок-кандидат в одну и ту же единицу дерева кодирования (ЕДК, англ. Coding Tree Unit (CTU)).
Для способа и устройства кодирования/декодирования видеосигнала по настоящему изобретению, аффинные векторы кандидата на слияние можно получать путем сведения векторов поступательного движения множества блоков-кандидатов.
Для способа и устройства кодирования/декодирования видеосигнала по настоящему изобретению, если число кандидатов на слияние, входящих в первый список кандидатов на слияние, меньше максимального числа, в первый список кандидатов на слияние можно включить кандидата на слияние, входящего во второй список кандидатов на слияние.
Для способа и устройства кодирования/декодирования видеосигнала по настоящему изобретению, число аффинных параметров текущего блока можно определять в зависимости от размера и/или формы текущего блока.
Для способа и устройства кодирования/декодирования видеосигнала по настоящему изобретению, блок-кандидат может включать в себя по меньшей мере одно из соседнего блока текущего блока и не-соседнего блока на той же линии, что и соседний блок.
Следует понимать, что кратко раскрытые выше признаки представляют собой примеры аспектов настоящего изобретения, осуществление которого раскрыто ниже, не ограничивающие объем настоящего изобретения.
Полезные эффекты
Настоящее изобретение позволяет повысить эффективность межкадрового предсказания за счет выполнения компенсации движения путем применения множества списков кандидатов на слияние.
Настоящее изобретение позволяет повысить эффективность межкадрового предсказания за счет определения информации о движении на основе множества кандидатов на слияние.
Настоящее изобретение позволяет повысить эффективность межкадрового предсказания за счет выполнения компенсации движения на основе аффинной модели.
Настоящее изобретение позволяет повысить эффективность межкадрового предсказания путем получения вектора движения угла на основе соседнего блока или не-соседнего блока текущего блока.
Эффекты, которые может обеспечить настоящее изобретение, могут не быть ограничены вышеуказанными, при этом после ознакомления с нижеследующим описанием средним специалистам в области техники настоящего изобретения станут ясны и другие, не указанные здесь, эффекты.
Краткое описание чертежей
ФИГ. 1 - блок-схема, иллюстрирующая устройство кодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
ФИГ. 2 - блок-схема, иллюстрирующая устройство декодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
ФИГ. 3 - схема, иллюстрирующая кандидата на режим разбиения с возможностью применения к кодируемому блоку в случае кодирования блока кодирования путем межкадрового предсказания.
ФИГ. 4 изображает пример иерархического разбиения кодируемого блока на основе древовидной структуры в качестве варианта применения настоящего изобретения.
ФИГ. 5 - схема, иллюстрирующая форму сегмента, при которой разрешено разбиение на основе двоичного дерева, в качестве варианта применения настоящего изобретения.
ФИГ. 6 иллюстрирует форму разбиения на основе троичного дерева.
ФИГ. 7 - схема, иллюстрирующая пример, в котором разрешена только конкретная форма разбиения на основе двоичного дерева.
ФИГ. 8 - схема для раскрытия примера, в котором информацию, относящуюся к разрешенному количеству операций разбиения на основе двоичного дерева, кодируют/декодируют по одному из вариантов осуществления настоящего изобретения.
ФИГ. 9 - принципиальная схема способа межкадрового предсказания в качестве варианта применения настоящего изобретения.
ФИГ. 10 - схема, иллюстрирующая процедуру получения информации о движении текущего блока в случае применения режима слияния к текущему блоку.
ФИГ. 11 - схема, иллюстрирующая пример пространственного соседнего блока.
ФИГ. 12 - схема, иллюстрирующая пример получения вектора движения временного кандидата на слияние.
ФИГ. 13 - схема, иллюстрирующая положение блоков-кандидатов с возможностью применения в качестве совмещенного блока.
ФИ Г. 14 - схема, иллюстрирующая процесс получения информации о движении текущего блока в случае применения режима улучшенного предсказания вектора движения (англ. Advanced Motion Vector Prediction (AMVP)) к текущему блоку.
ФИГ. 15 - схема, иллюстрирующая пример получения кандидата на слияние на основе второго блока-кандидата на слияние, если первый блок-кандидат на слияние непригоден.
ФИГ. 16 - схема, иллюстрирующая пример получения кандидата на слияние на основе второго блока-кандидата на слияние, расположенного на той же линии, что и первый блок-кандидат на слияние.
ФИГ. с 17 по 20 - схемы, иллюстрирующие порядок поиска блоков-кандидатов на слияние.
ФИГ. 21 - схема, иллюстрирующая пример, в котором кандидата на слияние неквадратного блока получают на основе квадратного блока.
ФИГ. 22 - схема, иллюстрирующая пример получения кандидата на слияние на основе блока вышестоящего узла.
ФИГ. 23 - схема, иллюстрирующая пример определения пригодности пространственного соседнего блока по области оценки слияния.
ФИГ. 24 - схема, иллюстрирующая пример, в котором кандидата на слияние получают на основе области оценки слияния.
ФИГ. 25 - схема, иллюстрирующая модель движения.
ФИГ. 26 - схема, иллюстрирующая аффинную модель движения с использованием векторов движения угла.
ФИГ. 27 - схема, иллюстрирующая пример, в котором вектор движения определяют в единице подблока.
ФИГ. 28 - схема, иллюстрирующая пример, в котором положение угла определяют на основе формы текущего блока.
ФИГ. 29 принципиальная схема процесса компенсации движения в аффинном межкадровом режиме.
ФИГ. 30 и ФИГ. 31 изображают схему, иллюстрирующую пример получения аффинного вектора текущего блока на основе вектора движения соседнего блока.
ФИГ. 32 - схема, иллюстрирующая блоки-кандидаты для получения пространственного кандидата на слияние.
ФИГ. 33 изображает пример получения аффинных векторов текущего блока на основе аффинных векторов блока-кандидата.
Осуществление изобретения
Разнообразные изменения могут быть внесены в настоящее изобретение, несколько вариантов осуществления которого будут раскрыты ниже на примерах чертежей и подробно описаны. При этом настоящее изобретение не ограничено данными примерами осуществления, которые можно рассматривать как включающие в себя все изменения, эквивалентные решения или замены в отношении технического замысла и технического объема настоящего изобретения. Аналогичные номера позиций обозначают аналогичные элементы на чертежах.
Такие слова как «первый», «второй» и т.п. в тексте описания могут служить для описания различных компонентов, однако их не следует толковать как ограничивающие эти компоненты. Эти слова служат только для проведения различия между одним компонентом и другими компонентами. Например, «первый» компонент может быть назван «вторым» компонентом без отступления от объема настоящего изобретения, при этом «второй» компонент может, аналогичным образом, быть назван «первым» компонентом. Выражение «и/или» означает наличие комбинации множества единиц или любой из множества единиц.
Если в настоящем раскрытии сказано, что элемент «связан» или «соединен» с другим элементом, это может означать не только то, что этот элемент непосредственно связан или соединен с таким другим элементом, но и то, что между ними может быть еще один элемент. Если сказано, что элемент «непосредственно связан» или «непосредственно соединен» с другим элементом, это значит, что между ними отсутствуют какой-либо другой элемент.
Слова в тексте настоящего описания служат исключительно для раскрытия частных вариантов осуществления и не предназначены для ограничения настоящего изобретения. Выражение в единственном числе включает в себя значение множественного числа, если иное явно не следует из контекста. Следует понимать, что в настоящем описании такие слова, как «включающий в себя», «имеющий» и т.п. служат для указания наличия признаков, количеств, этапов, действий, элементов, частей или их комбинаций, раскрытых в описании, но не исключают возможности наличия или добавления одного или нескольких других признаков, количеств, этапов, действий, элементов, частей или их комбинаций.
Далее будут подробно раскрыты предпочтительные варианты осуществления настоящего изобретения на примерах прилагаемых чертежей. Далее по тексту одни и те же составные части на чертежах обозначены одними и теми же номерами позиций, при этом одни и те элементы не будут раскрываться повторно.
ФИГ. 1 - блок-схема, иллюстрирующая устройство кодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
Устройство 100 кодирования видеоинформации на ФИГ. 1 может включать в себя: модуль 110 разбиения изображения, модули 120 и 125 предсказания, модуль 130 преобразования, модуль 135 квантования, модуль 160 переупорядочивания, модуль 165 энтропийного кодирования, модуль 140 обратного квантования, модуль 145 обратного преобразования, модуль 150 фильтрации и запоминающее устройство 155.
Составные части на ФИГ. 1 изображены по отдельности, чтобы представить их характерные функции, отличные друг от друга, в устройстве кодирования видеоинформации. Однако это не означает, что каждая составная часть выполнена в виде составной единицы отдельного аппаратного или программного средства. Иными словами, каждая составная часть условно включает в себя каждую из перечисленных составных частей. То есть по меньшей мере две составные части каждой составной части могут быть объединены с образованием одной составной части или одна составная часть может быть поделена на множество составных частей для выполнения каждой функции. Варианты осуществления, в которых каждая составная часть является объединенной или одна составная часть является поделенной, также входят в объем настоящего изобретения, если это не является отступлением от его сущности.
Кроме того, некоторые составляющие могут быть не обязательными составляющими, выполняющими основные функции по настоящему изобретению, а выборочными составляющими, только улучшающими показатели работы. Настоящее изобретение можно реализовать посредством только обязательных составных частей для реализации сущности настоящего изобретения, исключив составляющие, служащие для улучшения показателей работы. Структура, включающая в себя только обязательные составляющие и не включающая в себя выборочные составляющие, служащие только для улучшения показателей работы, также входит в объем настоящего изобретения.
Модуль 110 разбиения изображения выполнен с возможностью разбиения вводного изображения на одну или несколько единиц обработки. В данном случае, единица обработки может представлять собой единицу предсказания (ЕП, англ. prediction unit (PU)), единицу преобразования (ЕПр, англ. transform unit (TU)) или единицу кодирования (ЕК, англ. coding unit (CU). Модуль 110 разбиения изображения выполнен с возможностью разбиения одного изображения на комбинации нескольких единиц кодирования, единиц предсказания и единиц преобразования и с возможностью кодирования изображения путем выбора одной комбинации единиц кодирования, единиц предсказания и единиц преобразования по заранее заданному критерию (например, функции стоимости).
Например, одно изображение можно разбить на несколько единиц кодирования. Разбиение изображения на единицы кодирования можно осуществлять посредством рекурсивно-древовидной структуры, например, квадродревовидной структуры. Единицу кодирования, разбиваемую на другие единицы кодирования, с одним изображением или наибольшую единицу кодирования в качестве корня можно разбить посредством дочерних узлов, соответствующих числу сегментов единиц кодирования. Единица кодирования, не разбиваемая далее при достижении заранее определенного предела, представляет собой листовой узел. То есть если для одной единицы кодирования возможно только квадратное разбиение, одну единицу кодирования можно разбить не более чем на четыре другие единицы кодирования.
Далее по тексту описания варианта осуществления настоящего изобретения «единица кодирования» может означать единицу выполнения кодирования или единицу выполнения декодирования.
Единица предсказания может представлять собой один из сегментов квадратной или прямоугольной структуры с одинаковым размером отдельной единицы кодирования или один из сегментов, полученный в результате разбиения таким образом, чтобы отдельные единицы кодирования имели разную форму / размер.
Если единица предсказания для внутрикадрового предсказания сгенерирована на основе единицы кодирования, а единица кодирования не является наименьшей единицей кодирования, внутрикадровое предсказание можно осуществлять без разбиения единицы кодирования на несколько единиц предсказания N×N.
В число модулей 120 и 125 предсказания могут входить: модуль 120 межкадрового предсказания, осуществляющий межкадровое предсказание, и модуль 125 внутрикадрового предсказания, осуществляющий внутрикадровое предсказание. Можно определить то, какое предсказание - межкадровое или внутрикадровое - следует выполнить в отношении данной единицы предсказания, а также детальную информацию (например, режим внутрикадрового предсказания, вектор движения, опорное изображение и т.п.) в зависимости от способа предсказания. В данном случае единица обработки для предсказания может быть отлична от единицы обработки, для которой определяют способ предсказания и детальное содержание. Например, способ предсказания, режим предсказания и т.п. можно определять для единицы предсказания, а предсказание выполнять в отношении единицы преобразования. Остаточное значение (остаточный блок), представляющее собой разность между сгенерированным блоком предсказания и исходным блоком, можно ввести в модуль 130 преобразования. Кроме того, информацию о режиме предсказания, информацию о векторе движения и т.п., используемую для предсказания, можно закодировать с остаточным значением посредством модуля 165 энтропийного кодирования и передать в устройство декодирования видеоинформации. При применении того или иного режима кодирования, передачу в устройство декодирования видеоинформации можно осуществлять, кодируя исходный блок как таковой, без генерирования блока предсказания посредством модулей 120 и 125 предсказания.
Модуль 120 межкадрового предсказания выполнен с возможностью предсказания единицы предсказания на основе информации по меньшей мере о изображении, предшествующем текущему изображению или следующем за ним, или, в некоторых случаях, на основе информации о некоторых закодированных областях в текущем изображении. Модуль 120 межкадрового предсказания может включать в себя модуль интерполяции опорного изображения, модуль предсказания движения и модуль компенсации движения.
Модуль интерполяции опорного изображения выполнен с возможностью приема информации опорного изображения из запоминающего устройства 155 и генерирования информации о целочисленном пикселе или пикселе меньше целочисленного из опорного изображения. В случае пикселей яркости, возможно применение 8-отводного интерполяционного фильтра на основе дискретного косинусного преобразования (ДКП, англ. descrete cosine transform (DCT)) с разными коэффициентами фильтра для генерирования информации о целочисленном пикселе или пикселе меньше целочисленного в единицах, составляющих 1/4 пикселя. В случае сигналов цветности, возможно применение 4-отводного интерполяционного фильтра на основе ДКП с другим коэффициентом фильтра для генерирования информации о целочисленном пикселе или пикселе меньше целочисленного в единицах, составляющих 1/8 пикселя.
Модуль предсказания движения выполнен с возможностью предсказания движения на основе опорного изображения, интерполированного модулем интерполяции опорного изображения. Возможно применение различных способов вычисления вектора движения, например, алгоритма сопоставления блоков с полным поиском (англ. full search-based block matching algorithm (FBMA)), трехступенчатого поиска (англ. three step search (TSS)), алгоритма нового трехступенчатого поиска (англ. new three-step search algorithm (NTS)) и т.п. Вектор движения может иметь значение вектора движения в единицах, составляющих 1/2 пикселя или 1/4 пикселя в зависимости от интерполированного пикселя. Модуль предсказания движения выполнен с возможностью предсказания для текущей единицы предсказания путем изменения способа предсказания движения. Возможно применение различных способов предсказания движения, например, способ пропуска, способ слияния, способ AMVP (улучшенного предсказания вектора движения), способ внутриблокового копирования и т.п.
Модуль 125 внутрикадрового предсказания выполнен с возможностью генерирования единицы предсказания на основе опорной информации о пикселях по соседству с текущим блоком, т.е. информации о пикселях в текущем изображении. Если соседний блок текущей единицы предсказания является блоком-объектом межкадрового предсказания, в связи с чем опорный пиксель является пикселем-объектом межкадрового предсказания, опорный пиксель, входящий в состав блока-объекта межкадрового предсказания, можно заменить опорной информацией о пикселях соседнего блока-объекта внутрикадрового предсказания. То есть, если опорный пиксель непригоден, по меньшей мере один опорный пиксель из имеющихся опорных пикселей можно использовать вместо непригодной опорной информации о пикселях.
В число режимов внутрикадрового предсказания могут входить режим направленного предсказания с использованием опорной информации о пикселях в зависимости от направления предсказания и режим ненаправленного предсказания без использования информации о направлении при выполнении предсказания. Режим для предсказания яркостной информации может быть отличен от режима для предсказания цветностной информации, при этом для предсказания цветностной информации можно использовать информацию режима внутрикадрового предсказания, применяемую для предсказания яркостной информации или предсказанную информацию сигнала яркости.
Если при выполнении внутрикадрового предсказания размер единицы предсказания тождествен размеру единицы преобразования, внутрикадровое предсказание в отношении единицы предсказания можно выполнять на основе пикселей, расположенных слева, слева сверху и сверху от единицы предсказания. При этом, если при выполнении внутрикадрового предсказания размер единицы предсказания отличен от размера единицы преобразования, внутрикадровое предсказание можно выполнять с использованием опорного пикселя на основе единицы преобразования. Кроме того, внутрикадровое предсказание с разбиением N×N можно применять только в отношении наименьшей единицы кодирования.
Согласно способу внутрикадрового предсказания, блок предсказания можно сгенерировать после применения фильтра ABC (адаптивного внутреннего сглаживания, англ. Adaptive Intra Smoothing (AIS)) к опорному пикселю в зависимости от режимов предсказания. К опорному пикселю можно применять фильтры ABC разных типов. Для выполнения способа внутрикадрового предсказания, режим внутрикадрового предсказания текущей единицы предсказания можно предсказывать по режиму внутрикадрового предсказания единицы предсказания по соседству с текущей единицей предсказания. При предсказании режима предсказания текущей единицы предсказания путем применения информации о режиме, предсказанной по соседней единице предсказания, если режим внутрикадрового предсказания текущей единицы предсказания является тем же, что и режим внутрикадрового предсказания соседней единицы предсказания, для передачи информации, указывающей, что режимы предсказания текущей единицы предсказания и соседней единицы предсказания одинаковы, можно использовать заранее определенную сигнальную информацию. Если режим предсказания текущей единицы предсказания отличен от режима предсказания соседней единицы предсказания, можно выполнить энтропийное кодирование для кодирования информации о режиме предсказания текущего блока.
Кроме того, можно сгенерировать остаточный блок, включающий в себя информацию об остаточном значении, представляющем собой разность между единицей предсказания - объектом предсказания и исходным блоком единицы предсказания, на основе единиц предсказания, сгенерированных модулями 120 и 125 предсказания. Сгенерированный остаточный блок можно ввести в модуль 130 преобразования.
Модуль 130 преобразования выполнен с возможностью преобразования остаточного блока, включающего в себя информацию об остаточном значении, представляющем собой разность между исходным блоком и единицей предсказания, сгенерированной модулями 120 и 125 предсказания, путем применения способа преобразования, например, дискретного косинусного преобразования (ДКП), дискретного синусного преобразования (ДСП, англ. discrete sine transform (DST)) и преобразование Карунена - Лоэва (ПКЛ, англ. Karhunen - Loeve transform (KLT)). To, какой из способов - ДКП, ДСП или ПКЛ - применить для преобразования остаточного блока, можно определять в зависимости от информации о режиме внутрикадрового предсказания единицы предсказания, применяемой для генерирования остаточного блока.
Модуль 135 квантования выполнен с возможностью квантования значений, преобразованных в частотную область модулем 130 преобразования. Возможно применение разных коэффициентов квантования в зависимости от блока или важности изображения. Значения, вычисленные модулем 135 квантования, можно вводить в модуль 140 обратного квантования и модуль 160 переупорядочивания.
Модуль 160 переупорядочивания выполнен с возможностью переупорядочивания коэффициентов квантованных остаточных значений.
Модуль 160 переупорядочивания выполнен с возможностью видоизменения коэффициента в форме двумерного блока в коэффициент в форме одномерного вектора способом считывания коэффициентов. Например, модуль 160 переупорядочивания выполнен с возможностью считывания в диапазоне от коэффициента постоянного тока (англ. DC - Direct current) до коэффициента в высокочастотной области способом зигзагообразного считывания для видоизменения коэффициентов в форму одномерных векторов. В зависимости от размера единицы преобразования и режима внутрикадрового предсказания, вместо зигзагообразного считывания возможно считывание в вертикальном направлении, при котором коэффициенты в форме двумерных блоков считывают в направлении вертикального ряда, или считывания в горизонтальном направлении, при котором коэффициенты в форме двумерных блоков считывают в направлении горизонтального ряда. Таким образом, способ считывания - зигзагообразное считывание, считывание в вертикальном направлении или считывание в горизонтальном направлении - для применения можно определять в зависимости от размера единицы преобразования и режима внутрикадрового предсказания.
Модуль 165 энтропийного кодирования выполнен с возможностью выполнения энтропийного кодирования на основе значений, вычисленных модулем 160 переупорядочивания. При энтропийном кодировании возможно применение различных способов кодирования, например, экспоненциального кодирования Голомба, контекстно-зависимого адаптивного кодирования с переменной длиной кодового слова (англ. context-adaptive variable length coding (CAVLC)) и контекстно-зависимого двоичного арифметического кодирования (англ. context-adaptive binary arithmetic coding (CABAC)).
Модуль 165 энтропийного кодирования выполнен с возможностью кодирования разнообразной информации, например, информации о коэффициенте остаточного значения и информации о типе блока единицы кодирования, информации о режиме предсказания, информации о единице разбиения, информации о единице предсказания, информации о единице преобразования, информации о векторе движения, информация об опорном кадре, информации об интерполяции блока, информации о фильтрации и т.п. от модуля 160 переупорядочивания и модулей 120 и 125 предсказания.
Модуль 165 энтропийного кодирования выполнен с возможностью энтропийного кодирования коэффициентов единицы кодирования, введенных из модуля 160 переупорядочивания.
Модуль 140 обратного квантования выполнен с возможностью обратного квантования значений, квантованных модулем 135 квантования, а модуль 145 обратного преобразования - с возможностью обратного преобразования значений, преобразованных модулем 130 преобразования. Остаточное значение, сгенерированное модулем 140 обратного квантования и модулем 145 обратного преобразования, можно скомбинировать с единицей предсказания, предсказанной модулем оценки движения, модулем компенсации движения и модулем внутрикадрового предсказания модулей 120 и 125 предсказания, с возможностью генерирования восстановленного блока.
Модуль 150 фильтрации может включать в себя по меньшей мере одно из следующего: фильтр удаления блочности, узел коррекции смещения и адаптивный контурный фильтр (АКФ, англ. adaptive loop filter (ALF)).
Фильтр удаления блочности выполнен с возможностью устранений видимой блочности структуры ТВ-изображения, обусловленной наличием границ между блоками в восстановленном изображении. Основанием для определения того, нужно ли выполнить удаление блочности, т.е. нужно ли применить фильтр удаления блочности к текущему блоку, могут служить пиксели, входящие в несколько горизонтальных или вертикальных рядов в блоке. Применение фильтра удаления блочности к блоку может включать в себя применение строгого фильтра или нестрогого фильтра в зависимости от нужной строгости фильтрации для удаления блочности. Кроме того, при применении фильтра удаления блочности, обработка горизонтальной фильтрации и вертикальной фильтрации может происходить параллельно.
Модуль коррекции смещения выполнен с возможностью коррекции смещения относительно исходного изображения в единицах пикселя в изображении, подвергаемом процессу удаления блочности. Для выполнения коррекции смещения на конкретном изображении можно применить способ, при котором применяют смещение с учетом информации о краях каждого пикселя, или способ, при котором пиксели изображения разбивают на заранее определенное число областей, определяют область для выполнения смещения и применяют смещение к указанной определенной области.
Адаптивную контурную фильтрацию (АКФ) можно выполнять на основе значения, определенного путем сравнения отфильтрованного восстановленного изображения и исходного изображения. Пиксели, входящие в состав изображения, можно поделить на заранее определенные группы, определить фильтр для применения к каждой из групп и выполнить фильтрацию индивидуально для каждой группы. Передача информации о том, применять ли АКФ, и сигнала яркости может происходить посредством единицы кодирования(CU). Форма и коэффициент фильтра для АКФ могут быть разными для каждого блока. Кроме того, возможно применение фильтра для АКФ одной и той же формы (постоянной формы) независимо от назначения целевого блока.
Запоминающее устройство 155 выполнено с возможностью хранения восстановленного блока или изображения, вычисленного посредством модуля 150 фильтрации. Сохраненный восстановленный блок или изображение могут быть введены в модули 120 и 125 предсказания при выполнении межкадрового предсказания.
ФИГ. 2 - блок-схема, иллюстрирующая устройство декодирования видеоинформации по одному из вариантов осуществления настоящего изобретения.
Устройство 200 декодирования видеоинформации ФИГ. 2 может включать в себя: модуль 210 энтропийного декодирования, модуль 215 переупорядочивания, модуль 220 обратного квантования, модуль 225 обратного преобразования, модули 230 и 235 предсказания, модуль 240 фильтрации и запоминающее устройство 245.
Когда происходит ввод битового видеопотока от устройства кодирования видеоинформации, процесс декодирования входного битового потока может быть обратен тому, что происходит в устройстве кодирования видеоинформации.
Модуль 210 энтропийного декодирования выполнен с возможностью осуществления процесса энтропийного декодирования, обратного процессу энтропийного кодирования модулем энтропийного кодирования устройства кодирования видеоинформации. Например, возможно применение таких способов, как экспоненциальное кодирование Голомба, контекстно-зависимое адаптивное кодирование с переменной длиной кодового слова (CAVLC) и контекстно-зависимое двоичное арифметическое кодирование (САВАС), в соответствии со способами, выполняемыми устройством кодирования видеоинформации.
Модуль 210 энтропийного декодирования выполнен с возможностью декодирования информации, относящейся к внутрикадровому предсказанию и межкадровому предсказанию, выполняемым устройством кодирования видеоинформации.
Модуль 215 переупорядочивания выполнен с возможностью переупорядочивания битового потока, энтропийно закодированного модулем 210 энтропийного декодирования, в зависимости от способа переупорядочивания, применяемого в устройстве кодирования видеоинформации. Модуль переупорядочивания выполнен с возможностью восстановления и переупорядочивания коэффициентов в форме одномерных векторов в коэффициенты в форме двумерных блоков. Модуль 215 переупорядочивания выполнен с возможностью приема информации, относящейся к считыванию коэффициентов, выполненному в устройстве кодирования видеоинформации, и переупорядочивания способом, состоящим в считывании указанных коэффициентов в порядке, обратном порядку считывания, выполняемого в устройстве кодирования видеоинформации.
Модуль 220 обратного квантования выполнен с возможностью обратного квантования на основе параметра квантования, полученного от устройства кодирования видеоинформации, и переупорядоченных коэффициентов блока.
Модуль 225 обратного преобразования выполнен с возможностью обратного преобразования, т.е. обратного ДКП, обратного ДСП и обратного ПКЛ - процессов, обратных процессам преобразования, т.е. ДКП, ДСП и ПКЛ, выполняемым модулем преобразования в отношении результата квантования устройством кодирования видеоинформации. Обратное преобразование можно выполнять на основе единицы преобразования, определенной устройством кодирования видеоинформации. Модуль 225 обратного преобразования устройства декодирования видеоинформации может выборочно выполнять схемы преобразования (например, ДКП, ДСП и ПКЛ) с учетом множества сведений, например, способа предсказания, размера текущего блока, направления предсказания и т.п.
Модули 230 и 235 предсказания выполнены с возможностью генерирования блока предсказания на основе информации о генерировании блока предсказания, определенной от модуля 210 энтропийного декодирования и информации о ранее декодированном блоке или изображении, определенной из запоминающего устройства 245.
Как раскрыто выше, аналогично работе устройства кодирования видеоинформации, если при выполнении внутрикадрового предсказания размер единицы предсказания тождествен размеру единицы преобразования, внутрикадровое предсказание в отношении единицы предсказания можно выполнять на основе пикселей, расположенных слева, слева сверху и сверху от единицы предсказания. Если при выполнении внутрикадрового предсказания размер единицы предсказания отличен от размера единицы преобразования, внутрикадровое предсказание можно выполнять с использованием опорного пикселя на основе единицы преобразования. Кроме того, внутрикадровое предсказание с разбиением N×N можно применять только в отношении наименьшей единицы кодирования.
Модули 230 и 235 предсказания могут включать в себя модуль определения единицы предсказания, модуль межкадрового предсказания и модуль внутрикадрового предсказания. Модуль определения единицы предсказания выполнен с возможностью приема разнообразной информации, например, информации о единице предсказания, информации о режиме предсказания способа внутрикадрового предсказания, информации о предсказании движения способа межкадрового предсказания и т.п. от модуля 210 энтропийного декодирования, с возможностью деления текущей единицы кодирования на единицы предсказания и определения того, какое именно предсказание - межкадровое или внутрикадровое - выполняют в отношении единицы предсказания. Применении информации, нужной для межкадрового предсказания текущей единицы предсказания, принятой от устройства кодирования видеоинформации, обеспечивает возможность выполнения модулем 230 межкадрового предсказания межкадрового предсказания в отношении текущей единицы предсказания на основе информации по меньшей мере одного из изображений - предшествующего текущему изображению, содержащему текущую единицу предсказания, или следующего за ним. В качестве альтернативы, межкадровое предсказание можно выполнять на основе информации некоторых заранее восстановленных областей в текущем изображении, содержащем текущую единицу предсказания.
Для выполнения межкадрового предсказания можно определять, какой из режимов - режим пропуска, режим слияния, режим улучшенного предсказания вектора движения (AMVP) или режим внутриблокового копирования - используется для единицы кодирования в качестве способа предсказания движения единицы предсказания, входящей в состав единицы кодирования.
Модуль 235 внутрикадрового предсказания выполнен с возможностью генерирования блока предсказания на основе информации о пикселях в текущем изображении. Если единица предсказания представляет собой единицу предсказания - объект внутрикадрового предсказания, внутрикадровое предсказание можно выполнять на основе информации о режиме внутрикадрового предсказания единицы предсказания, принятой от устройства кодирования видеоинформации. Модуль 235 внутрикадрового предсказания может включать в себя фильтр адаптивного внутреннего сглаживания (ABC), модуль интерполяции опорного пикселя и фильтр постоянного тока. Фильтр ABC осуществляет фильтрацию в отношении опорного пикселя текущего блока, при этом определять то, нужно ли применить данный фильтр, можно в зависимости от режима предсказания текущей единицы предсказания. Фильтрацию с ABC в отношении опорного пикселя текущего блока можно выполнять путем применения информации о режиме предсказания единицы предсказания и фильтре ABC, принятой от устройства кодирования видеоинформации. Если режим предсказания текущего блока представляет собой режим без применения фильтра ABC, фильтр ABC можно не применять.
Если режим предсказания единицы предсказания представляет собой режим предсказания, в котором внутрикадровое предсказание осуществляют на основе значения пикселя, определенного путем интерполяции опорного пикселя, модуль интерполяции опорного пикселя может интерполировать опорный пиксель для генерирования опорного пикселя в виде целочисленного пикселя или пикселя меньше целочисленного. Если режим предсказания текущей единицы предсказания представляет собой режим предсказания, в котором блок предсказания генерируют без интерполяции опорного пикселя, опорный пиксель можно не интерполировать. Фильтр постоянного тока выполнен с возможностью генерирования блока предсказания путем фильтрации, если режим предсказания текущего блока представляет собой режим постоянного тока.
Восстановленный блок или изображение можно ввести в модуль 240 фильтрации. Модуль 240 фильтрации может включать в себя фильтр удаления блочности, модуль коррекции смещения и АКФ.
Информация о том, применяется ли фильтр удаления блочности к соответствующему блоку или изображению, и информацию о том, какой фильтр - строгий или нестрогий - применяется в случае применения фильтра удаления блочности, может быть принята от устройства кодирования видеоинформации. Фильтр удаления блочности устройства декодирования видеоинформации выполнен с возможностью приема информации о фильтре удаления блочности от устройства кодирования видеоинформации и фильтрации для удаления блочности в отношении соответствующего блока.
Модуль коррекции смещения выполнен с возможностью коррекции смещения в отношении восстановленного изображения на основе информации от типе коррекции смещения и значении смещения, примененных к изображению при кодировании.
АКФ можно применять к единице кодирования на основе информации о том, нужно ли применять АКФ, информации о коэффициенте АКФ и т.п., принятой от устройства кодирования видеоинформации. Информация об АКФ может быть предоставлена в составе особого набора параметров.
Запоминающее устройство 245 выполнено с возможностью хранения восстановленного изображения или блока для применения в качестве опорного изображения или блока и предоставления восстановленного изображения в модуль вывода.
Как сказано выше, в описании варианта осуществления настоящего изобретения термин «единица кодирования» для удобства раскрытия обозначает единицу для кодирования, которая, при этом, также может служить единицей для выполнения декодирования.
Кроме того, текущий блок может представлять собой целевой блок, подлежащий кодированию/декодированию. Текущий блок также может представлять собой блок дерева кодирования (или единицу дерева кодирования), блок кодирования (или единицу кодирования), блок преобразования (или единицу преобразования), блок предсказания (или единицу предсказания) или нечто подобное в зависимости от этапа кодирования/декодирования. В настоящем описании слово «единица» может означать базовую единицу для выполнения конкретного процесса кодирования/декодирования, а «блок» может означать массив отсчетов заранее определенного размера. Если особо не указано иное, слова «блок» и «единица» могут употребляться в одинаковом значении. В приведенном ниже примере можно понять, что «блок кодирования» и «единица кодирования» имеют одинаковое значение.
Кодирование/декодирование одного изображения можно осуществлять путем деления на базовые блоки квадратной или неквадратной формы. На данном этапе базовый блок может именоваться «единица дерева кодирования». Единицу дерева кодирования можно охарактеризовать как единицу кодирования наибольшего размера, разрешенного в пределах последовательности или сектора. Информацию о том, имеет ли единица дерева кодирования квадратную форму или неквадратную форму, или информацию о размере единицы дерева кодирования можно сообщать посредством набора параметров последовательности, набора параметров изображения или заголовка сектора. Единицу дерева кодирования можно поделить с получением сегментов меньшего размера. На данном этапе глубину разбиения в результате деления единицы дерева кодирования принимают равной 1, при этом глубину разбиения в результате деления сегмента с глубиной 1 можно принять равной 2. То есть глубину сегмента, сгенерированного путем деления сегмента с глубиной к в единице дерева кодирования, можно определить как k+1.
Сегмент произвольного размера, сгенерированный путем деления единицы дерева кодирования, можно охарактеризовать как «единицу кодирования». Единицу кодирования можно рекурсивно делить или делить на базовые единицы для выполнения предсказания, квантования, преобразования или внутриконтурной фильтрации и т.п. Например, сегмент произвольного размера, сгенерированный путем деления единицы кодирования, можно охарактеризовать как единицу кодирования, или единицу преобразования, или единицу предсказания, представляющую собой базовую единицу для выполнения предсказания, квантования, преобразования или внутриконтурной фильтрации и т.п.
В качестве альтернативы, блок предсказания того же размера, что и блок кодирования, или меньшего размера, чем блок кодирования, можно определять путем разбиения блока кодирования для предсказания. Для разбиения блока кодирования для предсказания можно обозначить любого из кандидатов на режим разбиения (Part_mode), форма которого соответствует форме разбиения блока кодирования. Информацию для определения индекса разбиения, указывающего любого одного из кандидатов на режим разбиения, можно сообщать посредством битового потока. В качестве альтернативы, индекс разбиения блока кодирования можно определять на основе по меньшей мере одного из следующего: размера, формы или режима кодирования блока кодирования. Размер или форму блока предсказания можно определять на основе режима разбиения, обозначенного индексом разбиения. В число кандидатов на режим разбиения могут входить те, что имеют асимметричную форму разбиения (например, n1_×2N, nR×2N, 2N×nU, 2N×nD). Число и тип асимметричных кандидатов на режим разбиения, пригодных для блока кодирования, можно определять на основе по меньшей мере одного из следующего: размера, формы или режима кодирования блока кодирования.
ФИГ. 3-схема, иллюстрирующая кандидата на режим разбиения с возможностью применения к кодируемому блоку, в случае кодирования блока кодирования путем межкадрового предсказания.
В случае кодирования блока кодирования путем межкадрового предсказания, к блоку кодирования можно применить любого из 8 кандидатов на режим разбиения на ФИГ. 3.
При этом, в случае кодирования блока кодирования путем внутрикадрового предсказания, к блоку кодирования можно применить только разбиение на квадраты. Иными словами, в случае кодирования блока кодирования путем внутрикадрового предсказания, к блоку кодирования можно применить режим разбиения PART_2N×2N или PART_N×N.
PART_N×N можно применять, если блок кодирования имеет минимальный размер. В данном случае минимальный размер блока кодирования может быть заранее задан в кодере и в декодере. В качестве альтернативы, информацию о минимальном размере блока кодирования можно сообщать посредством битового потока. В одном примере минимальный размер блока кодирования можно сообщить посредством заголовка сектора. Следовательно, может быть определен разный минимальный размер блока кодирования для каждого сектора.
В другом примере кандидата на режим разбиения, пригодного для блока кодирования, можно определять по-разному в зависимости от размера и/или формы блока кодирования. В одном примере число или тип кандидатов на режим разбиения, пригодных для блока кодирования, можно определять по-разному в зависимости от размера и/или формы блока кодирования.
В качестве альтернативы, тип или число асимметричных кандидатов на режим разбиения, пригодных для блока кодирования, можно определять в зависимости от размера или формы блока кодирования. Число или тип асимметричных кандидатов на режим разбиения, пригодных для блока кодирования, можно определять по-разному в зависимости от размера и/или формы блока кодирования. В одном примере, блок кодирования имеет неквадратную форму, при которой ширина больше высоты, по меньшей мере один из следующих: PART_2N×N, PART_2N×nU или PART_2N×nD не может быть кандидатом на режим разбиения блока кодирования. Если блок кодирования имеет неквадратную форму, при которой высота больше ширины, по меньшей мере один из следующих: PART_N×2N, PART_n1_×2N, PART_nR×2N не может быть кандидатом на режим разбиения блока кодирования.
Обычно размер блока предсказания может составлять от 4×4 до 64×64. При этом, в случае кодирования блока кодирования путем межкадрового предсказания, размер блока предсказания можно ограничить так, чтобы он не составлял 4×4, для уменьшения ширины полосы пропускания запоминающего устройства при выполнении компенсации движения.
Блок кодирования можно рекурсивно разбивать в соответствии с режимом разбиения. Иными словами, в соответствии с режимом разбиения, определенном индексом разбиения, блок кодирования можно разбить, а каждый сегмент, сгенерированный путем разбиения блока кодирования, можно задать в качестве блока кодирования.
Далее будет подробнее раскрыт способ разбиения единицы кодирования. В нижеследующем примере выражение «единица кодирования» может означать единицу дерева кодирования или единицу кодирования, входящую в состав единицы дерева кодирования. Кроме того, «сегмент», сгенерированный путем разбиения блока кодирования, может означать «блок кодирования». Раскрытый ниже способ разбиения можно применять, если блок кодирования разбивают на множество блоков предсказания или блоков преобразования.
Единицу кодирования можно разбить по меньшей мере одной линией. В этом случае угол линии, разбивающей единицу кодирования, может составлять значение в диапазоне от 0 до 360 градусов. Например, угол горизонтальной линии может составлять 0 градусов, угол вертикальной линии может составлять 90 градусов, угол диагональной линии в направлении вправо вверх может составлять 45 градусов, а угол диагональной линии в направлении влево вверх - 135 градусов.
Если единица кодирования разбита множеством линий, все линии множества могут проходить под одним и тем же углом. В качестве альтернативы, угол по меньшей мере одной из линий множества может быть отличен от углов других линий. В качестве альтернативы, для множества линий, разбивающих единицу дерева кодирования или единицу кодирования, может быть заранее задана разность углов (например, 90 градусов).
Информацию о линии, разбивающей единицу кодирования, можно определять по режиму разбиения. В качестве альтернативы, информация о по меньшей мере одном из следующего: числе, направлении, угле или положении линии в блоке, можно закодировать.
Для удобства раскрытия, в нижеследующем примере принято, что единица кодирования разбита на множество единиц кодирования вертикальной линией и/или горизонтальной линией.
Число вертикальных линий или горизонтальных линий, разбивающих единицу кодирования, может составлять по меньшей мере одну или более. В одном примере единицу кодирования можно разбить на 2 сегмента посредством одной вертикальной линии или одной горизонтальной линии. В качестве альтернативы, единицу кодирования можно разбить на 3 сегмента посредством двух вертикальных линий или двух горизонтальных линий. В качестве альтернативы, единицу кодирования можно разбить на 4 сегмента, шириной и высотой, равными половине единицы кодирования, посредством одной вертикальной линии или одной горизонтальной линии.
В случае разбиения единицы кодирования на множество сегментов посредством по меньшей мере одной вертикальной линии или по меньшей мере одной горизонтальной линии, размер сегментов может быть единообразным. В качестве альтернативы, размер одного сегмента может быть отличен от размеров других сегментов, либо размеры всех сегментов могут быть отличны друг от друга. В одном примере, в случае разбиения единицы кодирования двумя горизонтальными линиями или двумя вертикальными линиями, единицу кодирования можно разбить на 3 сегмента. В этом случае соотношение ширины или высоты 3 сегментов может составлять n:2n:n, 2n:n:n или n:n:2n.
В нижеследующих примерах разбиение блока кодирования на 4 сегмента именуется «разбиение на основе квадродерева». При этом разбиение блока кодирования на 2 сегмента именуется «разбиение на основе двоичного дерева». Разбиение блока кодирования на 3 сегмента именуется «разбиение на основе троичного дерева».
На раскрытом ниже чертеже показано, что единица кодирования разбита одной вертикальной линией и/или одной горизонтальной линией, однако далее будет также раскрыто, что разбиение единицы кодирования на большее число сегментов посредством большего числа вертикальных линий и/или большего числа горизонтальных линий, чем показано, или разбиение единицы кодирования на меньшее число сегментов, чем показано, также входит в объем настоящего изобретения.
ФИГ. 4 изображает пример иерархического разбиения кодируемого блока на основе древовидной структуры в качестве варианта применения настоящего изобретения.
Входной видеосигнал декодируют в заранее определенной единице блока, при этом базовая единица для декодирования входного видеосигнала именуется «блок кодирования». Блок кодирования может представлять собой единицу выполнения внутри-/межкадрового предсказания, преобразования и квантования. Кроме того, режим предсказания (например, режим внутрикадрового предсказания или режим межкадрового предсказания) можно определять в единице блока кодирования, либо режим предсказания для блоков предсказания, входящих в состав блока кодирования, может быть одним и тем же. Блок кодирования может представлять собой квадратный или неквадратный блок произвольного размера в диапазоне от 8×8 до 64×64, либо квадратный или неквадратный блок размером 128×128, 256×256 или более.
В частности, иерархическое разбиение блока кодирования можно осуществлять по меньшей мере одним из следующих способов: разбиения на основе квадродерева, на основе двоичного дерева или на основе троичного дерева. Разбиение на основе квадродерева может означать способ, при котором блок кодирования 2N×2N разбивают на четыре блока кодирования N×N. Разбиение на основе двоичного дерева может означать способ, при котором один блок кодирования разбивают на два блока кодирования. Разбиение на основе троичного дерева может означать способ, при котором один блок кодирования разбивают на три блока кодирования. Даже если разбиение осуществляют на основе троичного или двоичного дерева, на большей глубине может существовать квадратный блок кодирования.
Сегменты, генерируемые путем разбиения на основе двоичного дерева, могут быть симметричными или асимметричными. Кроме того, блок кодирования, разбитый на основе двоичного дерева, может представлять собой квадратный блок или неквадратный блок (например, прямоугольник).
ФИГ. 5 - схема, иллюстрирующая форму разбиения блока кодирования на основе двоичного дерева. Форма разбиения блока кодирования на основе двоичного дерева быть симметричного типа, например, 2N×N (единица кодирования, неквадратная в горизонтальном направлении) или N×2N (единица кодирования, неквадратная в вертикальном направлении) и т.п., или асимметричного типа, например, n1_×2N, nR×2N, 2N×nU или 2N×nD и т.п. Только один из типов - симметричный или асимметричный - может быть разрешен в качестве формы разбиения блока кодирования.
Форма разбиения на основе троичного дерева может включать в себя по меньшей мере одну из следующих форм: форму разбиение блока кодирования на 2 вертикальные линии или форму разбиения блока кодирования на 2 горизонтальные линии. 3 неквадратных сегмента можно сгенерировать путем разбиения на основе троичного дерева.
ФИГ. 6 иллюстрирует форму разбиения на основе троичного дерева.
Форма разбиения на основе троичного дерева может представлять собой форму разбиения блока кодирования на 2 горизонтальные линии или форму разбиения блока кодирования на 2 вертикальные линии. Соотношение ширины или высоты сегментов, сгенерированных путем разбиения блока кодирования, может составлять n:2n:n, 2n:n:n или n:n:2n.
Положение сегмента с наибольшей из 3 сегментов шириной или высотой может быть заранее задано в кодере и декодере. В качестве альтернативы, информацию, указывающую сегмент с наибольшей из 3 сегментов шириной или высотой, можно сообщать посредством битового потока.
Разрешенными формами разбиения для единицы кодирования могут быть только квадратная и неквадратная симметричная формы. В этом случае разбиение единицы кодирования на квадратные сегменты может соответствовать разбиению ЕК на основе квадродерева, а разбиение единицы кодирования на неквадратные сегменты симметричной формы может соответствовать разбиению на основе двоичного дерева. Разбиение единицы дерева кодирования на квадратные сегменты и неквадратные сегменты симметричной формы может соответствовать разбиению ЕК на основе квадродерева и двоичного дерева (КДДД).
Разбиение на основе двоичного дерева или троичного дерева можно осуществлять для блока кодирования, в котором не осуществляют дальнейшее разбиение на основе квадродерева. Блок кодирования, сгенерированный путем разбиения на основе двоичного дерева или троичного дерева, можно разбить на более мелкие блоки кодирования. В этом случае может быть задан запрет применения по меньшей мере одного из следующего: разбиения на основе квадродерева, разбиения на основе троичного дерева или разбиения на основе двоичного дерева к блоку кодирования. В качестве альтернативы, для блока кодирования может не быть разрешено разбиение на основе двоичного дерева в заранее определенном направлении или разбиение на основе троичного дерева в заранее определенном направлении. В одном примере может быть не быть разрешено разбиение на основе квадродерева и разбиение на основе троичного дерева для блока кодирования, сгенерированного путем разбиения на основе двоичного дерева или троичного дерева. Для такого блока кодирования может быть разрешено только разбиение на основе двоичного дерева.
В качестве альтернативы, только наибольший из 3 блоков кодирования, сгенерированных путем разбиения на основе троичного дерева, можно разбить на более мелкие блоки кодирования. В качестве альтернативы, разбиение на основе двоичного дерева или разбиение на основе троичного дерева могут быть разрешены только для наибольшего из 3 блоков кодирования, сгенерированных путем разбиения на основе троичного дерева.
Форму разбиения сегмента более низкой глубины можно определять в зависимости от формы разбиения сегмента более высокой глубины. В одном примере, в случае разбиения верхнего сегмента и нижнего сегмента на основе двоичного дерева, для сегмента более низкой глубины может быть разрешено только разбиение на основе двоичного дерева в той же форме, что и разбиение сегмента более высокой глубины на основе двоичного дерева. Например, если форма разбиения сегмента более высокой глубины на основе двоичного дерева представляет собой 2N×N, для сегмента более низкой глубины также может быть задана форма разбиения на основе двоичного дерева 2N×N. В качестве альтернативы, если форма разбиения сегмента более высокой глубины на основе двоичного дерева представляет собой N×2N, для сегмента более низкой глубины также может быть задана форма разбиения N×2N.
В качестве альтернативы, может не быть разрешено разбиение на основе двоичного дерева в том же направлении разбиения, что и для сегмента более высокой глубины, или разбиения на основе троичного дерева в том же направлении разбиения, что и для сегмента более высокой глубины, для наибольшего из сегментов, сгенерированных путем разбиения на основе троичного дерева.
В качестве альтернативы, форму разбиения сегмента более низкой глубины можно определять с учетом формы разбиения сегмента более высокой глубины и формы разбиения соседнего сегмента более низкой глубины. А именно, если разбиение сегмента более высокой глубины осуществляют на основе двоичного дерева, форму разбиения сегмента более низкой глубины можно определять так, чтобы не был получен тот же результат, что и в результате разбиения сегмента более высокой глубины на основе квадродерева. В одном примере, если форма разбиения сегмента более высокой глубины представляет собой 2N×N, а форма разбиения соседнего сегмента более низкой глубины представляет собой N×2N, нельзя задать форму разбиения текущего сегмента более низкой глубины в виде N×2N. Это обусловлено тем, что, если форма разбиения текущего сегмента более низкой глубины представляет собой N×2N, то будет определен тот же результат, что и в результате разбиения сегмента более высокой глубины на основе квадродерева формы N×N. Если форма разбиения сегмента более высокой глубины представляет собой N×2N, а форма разбиения соседнего сегмента более низкой глубины - 2N×N, нельзя задать форму разбиения текущего сегмента более низкой глубины в виде 2N×N. Иными словами, если форма разбиения сегмента более высокой глубины на основе двоичного дерева отлична от формы разбиения соседнего сегмента более низкой глубины на основе двоичного дерева, можно задать форму разбиения текущего сегмента более низкой глубины на основе двоичного дерева такой же, как форма разбиения сегмента более высокой глубины на основе двоичного дерева.
В качестве альтернативы, можно задать форму разбиения сегмента более низкой глубины на основе двоичного дерева, отличную от формы разбиения сегмента более высокой глубины на основе двоичного дерева.
Форму сегмента, при которой разрешено разбиение на основе двоичного дерева можно определять в единице последовательности, секторе или единице кодирования. В одном примере допустимые формы разбиения на основе двоичного дерева для единицы дерева кодирования могут быть ограничены формами 2N×N или N×2N. Допустимая форма разбиения может быть заранее задана в кодере или в декодере. В качестве альтернативы, информацию о допустимой форме разбиения или недопустимой форме разбиения можно закодировать и сообщить посредством битового потока.
ФИГ. 7 - схема, иллюстрирующая пример, в котором разрешена только конкретная форма разбиения на основе двоичного дерева.
На ФИГ. 7 (а) представлен пример, в котором разрешена только форма N×2N разбиения на основе двоичного дерева, а на ФИГ. 7 (b) - пример, в котором разрешена только форма 2N×N разбиения на основе двоичного дерева.
Различные формы разбиения могут быть представлены посредством информация о разбиении на основе квадродерева, информации о разбиении на основе двоичного дерева или информации о разбиении на основе троичного дерева. Информация о разбиении на основе квадродерева может включать в себя по меньшей мере одно из следующего: информацию, указывающую то, выполняют ли разбиение на основе квадродерева, или информацию о размере/глубине блока кодирования, в котором разрешено разбиение на основе квадродерева. Информация о разбиении на основе двоичного дерева может включать в себя по меньшей мере одно из следующего: информацию, указывающую то, выполняют ли разбиение на основе двоичного дерева, информацию о направлении разбиения на основе двоичного дерева -вертикальном или горизонтальном, информацию о размере/глубине блока кодирования, в котором разрешено разбиение на основе двоичного дерева, или информацию о размере/глубине блока кодирования, в котором разбиение на основе двоичного дерева не разрешено. Информация о разбиении на основе троичного дерева может включать в себя по меньшей мере одно из следующего: информацию, указывающую то, выполняют ли разбиение на основе троичного дерева, информацию о направлении разбиения на основе троичного дерева - вертикальном или горизонтальном, информацию о размере/глубине блока кодирования, в котором разбиение на основе троичного дерева разрешено, или информацию о размере/глубине блока кодирования, в котором разбиение на основе троичного дерева не разрешено. Информация о размере блока кодирования может включать в себя по меньшей мере одно минимальное или максимальное значение ширины, высоты, произведение ширины и высоты или соотношение ширины и высоты блока кодирования.
В одном примере, если ширина или высота блока кодирования меньше минимального размера, в котором разрешено разбиение на основе двоичного дерева, или если глубина разбиения блока кодирования больше разрешенной максимальной глубины разбиения на основе двоичного дерева, разбиение на основе двоичного дерева может не быть разрешено для этого блока кодирования.
В одном примере, если ширина или высота блока кодирования меньше минимального размера, в котором разрешено разбиение на основе троичного дерева, или если глубина разбиения блока кодирования больше разрешенной максимальной глубины разбиения на основе троичного дерева, разбиение на основе троичного дерева может не быть разрешено для этого блока кодирования.
Информацию о состоянии, в котором разрешено разбиение на основе двоичного дерева или троичного дерева, можно сообщать посредством битового потока. Информацию можно закодировать в единице последовательности, изображении или частичном изображении. «Частичное изображение» может означать по меньшей мере одно из следующего: сектор, группу плиток, плитку, визуальную конструкцию, блок кодирования, блок предсказания или блок преобразования.
В одном примере синтаксическую конструкцию
'max_mtt_depth_idx_minus1', представляющую разрешенную максимальную глубину разбиения на основе двоичного дерева/троичного дерева, можно закодировать/декодировать посредством битового потока. В этом случае max_mtt_depth_idx_minus1+1 может указывать разрешенную максимальная глубину разбиения на основе двоичного дерева/троичного дерева.
В одном примере по меньшей мере одно из следующего: разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенную максимальную глубину разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева можно сообщать на уровне последовательности или сектора. Следовательно, по меньшей мере одно из следующего: разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенная максимальная глубина разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева могут быть разными для первого сектора и второго сектора. В одном примере, несмотря на то, что для первого сектора может быть разрешена только одна глубина разбиения на основе двоичного дерева/троичного дерева, для второго сектора могут быть разрешены две глубины разбиения на основе двоичного дерева/троичного дерева.
В примере на ФИГ. 8 показано, что разбиение на основе двоичного дерева выполняют для единицы кодирования с глубиной 2 и единицы кодирования с глубиной 3. Следовательно, по меньшей мере одно из следующего: информацию, представляющую число раз (2 раза) разбиения на основе двоичного дерева в единице дерева кодирования, информацию, представляющую максимальную глубину (глубина 3) сегмента, сгенерированного путем разбиения на основе двоичного дерева в единице дерева кодирования, или информацию, представляющую число глубин (2 глубины, глубина 2 и глубина 3) разбиения на основе двоичного дерева, применяемых в единице дерева кодирования, можно закодировать/декодировать посредством битового потока.
В качестве альтернативы, разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенная глубина разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева могут быть заранее заданы в кодере и декодере. В качестве альтернативы, разрешенное число раз разбиения на основе двоичного дерева/троичного дерева, разрешенная глубина разбиения на основе двоичного дерева/троичного дерева или разрешенное число глубин разбиения на основе двоичного дерева/троичного дерева можно определять на основе по меньшей мере одно из следующего: индекса последовательности или сектора или размера/формы единицы кодирования. В одном примере для первого сектора можно разрешить одну глубину разбиения на основе двоичного дерева/троичного дерева, а для второго сектора можно разрешить две глубины разбиения на основе двоичного дерева/троичного дерева.
В другом примере по меньшей мере одно из следующего: разрешенное число раз разбиения на основе двоичного дерева, разрешенную глубину разбиения на основе двоичного дерева или разрешенное число глубин разбиения на основе двоичного дерева можно задавать по-разному в соответствии с временным идентификатором уровня (TemporallD) сектора или изображения. В данном случае временной идентификатор уровня (TemporallD) служит для идентификации каждого из множества слоев в изображении, имеющем по меньшей мере одну или несколько возможностей масштабирования по виду, в пространстве, во времени или по качеству.
На ФИГ. 4 показано, что первый блок 300 кодирования с глубиной к разбиения (глубиной дробления) можно разбить на несколько вторых блоков кодирования на основе квадродерева. Например, вторые блоки 310-340 кодирования могут представлять собой квадратный блок с шириной и высотой, составляющими половину ширины и высоты первого блока кодирования, при этом глубину разбиения второго блока кодирования можно увеличить до k+1.
Второй блок 310 кодирования с глубиной k+1 разбиения можно разбить на несколько третьих блоков кодирования с глубиной k+2 разбиения. Разбиение второго блока 310 кодирования можно выполнить путем выборочного применения квадродерева или двоичного дерева в зависимости от способа разбиения. В этом случае способ разбиения можно определять на основе по меньшей мере одного из следующего: информации, указывающей разбиение на основе квадродерева, или информации, указывающей разбиение на основе двоичного дерева.
Если второй блок 310 кодирования разбивают на основе квадродерева, второй блок 310 кодирования можно разбить на четыре третьих блока 310а кодирования с шириной и высотой, составляющими половину ширины и высоты второго блока кодирования, при этом глубину разбиения третьего блока 310а кодирования можно увеличить до k+2. При этом, если второй блок 310 кодирования разбивают на основе двоичного дерева, второй блок 310 кодирования можно разбить на два третьих блока кодирования. В этом случае каждый из двух третьих блоков кодирования может представлять собой неквадратный блок с шириной или высотой, составляющей половину ширины или высоты, соответственно, второго блока кодирования, при этом глубину разбиения можно увеличить до k+2. Второй блок кодирования можно охарактеризовать как неквадратный блок в горизонтальном или в вертикальном направлении в соответствии с направлением разбиения, при этом направление разбиения можно определять на основе информации о том, как выполняют разбиение на основе двоичного дерева: в вертикальном направлении или в горизонтальном направлении.
Второй блок 310 кодирования можно принять в качестве листового блока кодирования, дальнейшее разбиение которого на основе квадродерева или двоичного дерева не выполняют, и в этом случае соответствующий блок кодирования может служить в качестве блока предсказания или блока преобразования.
Как и в случае разбиения второго блока 310 кодирования, третий блок 310а кодирования можно принять в качестве листового блока кодирования, либо разбить его далее на основе квадродерева или двоичного дерева.
При этом третий блок 310b кодирования, разбитый на основе двоичного дерева, можно разбить далее на блоки 310b-2 кодирования в вертикальном направлении или блоки 310b-3 кодирования в горизонтальном направлении на основе двоичного дерева, при этом глубину разбиения соответствующего блока кодирования можно увеличить до k+3. В качестве альтернативы, третий блок 310b кодирования можно принять в качестве листового блока 310b-1 кодирования, дальнейшее разбиение которого на основе двоичного дерева не выполняют, и в этом случае соответствующий блок 310b-1 кодирования может служить в качестве блока предсказания или блока преобразования. При этом раскрытый выше процесс разбиения можно выполнять ограниченно на основе по меньшей мере одно из следующего: информации о разрешенном размере/глубине блока кодирования для разбиения на основе квадродерева, информации о разрешенном размере/глубине блока кодирования для разбиения на основе двоичного дерева или информации о размере/глубине блока кодирования, при которых разбиение на основе двоичного дерева не разрешено.
Число кандидатов, представляющих размер блока кодирования, может быть ограничено заранее определенным числом, либо размер блока кодирования в заранее определенной единице может иметь фиксированное значение. В одном примере размер блока кодирования в последовательности или изображении может быть ограничен любым из следующих: 256×256, 128×128 или 32×32. Информацию, представляющую размер блока кодирования в последовательности или изображении, можно сообщать посредством заголовка последовательности или заголовка изображения.
В результате разбиения на основе квадродерева и двоичного дерева, можно определить единицу кодирования квадратной или прямоугольной формы произвольного размера.
На ФИГ. 4 показано, что первый блок 300 кодирования с глубиной к разбиения (глубиной дробления) можно разбить на несколько вторых блоков кодирования на основе квадродерева. Например, вторые блоки 310-340 кодирования могут представлять собой квадратный блок с шириной и высотой, составляющими половину ширины и высоты первого блока кодирования, при этом глубину разбиения второго блока кодирования можно увеличить до k+1.
Второй блок 310 кодирования с глубиной k+1 разбиения можно разбить на несколько третьих блоков кодирования с глубиной k+2 разбиения. Разбиение второго блока 310 кодирования можно выполнить путем выборочного применения квадродерева или двоичного дерева в зависимости от способа разбиения. В этом случае способ разбиения можно определять на основе по меньшей мере одного из следующего: информации, указывающей разбиение на основе квадродерева, или информации, указывающей разбиение на основе двоичного дерева.
Если второй блок 310 кодирования разбивают на основе квадродерева, второй блок 310 кодирования можно разбить на четыре третьих блоков 310а кодирования с шириной и высотой, составляющими половину ширины и высоты второго блока кодирования, при этом глубину разбиения третьего блока 310а кодирования можно увеличить до k+2. При этом, если второй блок 310 кодирования разбивают на основе двоичного дерева, второй блок 310 кодирования можно разбить на два третьих блока кодирования. В этом случае каждый их двух третьих блоков кодирования может представлять собой неквадратный блок с шириной или высотой, составляющей половину ширины или высоты, соответственно, второго блока кодирования, при этом глубину разбиения можно увеличить до k+2. Второй блок кодирования можно охарактеризовать как неквадратный блок в горизонтальном или вертикальном направлении в соответствии с направлением разбиения, при этом направление разбиения можно определять на основе информации о том, как выполняют разбиение на основе двоичного дерева: в вертикальном направлении или в горизонтальном направлении.
Второй блок 310 кодирования можно принять в качестве листового блока кодирования, дальнейшее разбиение которого на основе квадродерева или двоичного дерева не выполняют, и в этом случае соответствующий блок кодирования может служить в качестве блока предсказания или блока преобразования.
Как и в случае разбиения второго блока 310 кодирования, третий блок 310а кодирования можно принять в качестве листового блока кодирования, либо разбить его далее на основе квадродерева или двоичного дерева.
При этом третий блок 310b кодирования, разбитый на основе двоичного дерева, можно разбить далее на блоки 310b-2 кодирования в вертикальном направлении или блоки 310b-3 кодирования в горизонтальном направлении на основе двоичного дерева, при этом глубину разбиения соответствующего блока кодирования можно увеличить до k+3. В качестве альтернативы, третий блок 310b кодирования можно принять в качестве листового блока 310b-1 кодирования, дальнейшее разбиение которого на основе двоичного дерева не выполняют, и в этом случае соответствующий блок 310b-1 кодирования может служить в качестве блока предсказания или блока преобразования. При этом раскрытый выше процесс разбиения можно выполнять ограниченно на основе по меньшей мере одно из следующего: информации о разрешенном размере/глубине блока кодирования для разбиения на основе квадродерева, информации о разрешенном размере/глубине блока кодирования для разбиения на основе двоичного дерева или информации о размере/глубине блока кодирования, при которых разбиение на основе двоичного дерева не разрешено.
Число кандидатов, представляющих размер блока кодирования, может быть ограничено заранее определенным числом, либо размер блока кодирования в заранее определенной единице может иметь фиксированное значение. В одном примере размер блока кодирования в последовательности или изображении может быть ограничен любым из следующих: 256×256, 128×128 или 32×32. Информацию, представляющую размер блока кодирования в последовательности или изображении, можно сообщать посредством заголовка последовательности или заголовка изображения.
В результате разбиения на основе квадродерева и двоичного дерева, можно определить единицу кодирования квадратной или прямоугольной формы произвольного размера.
Может быть задан запрет применения пропуска преобразования для единицы кодирования, сгенерированной путем разбиения на основе двоичного дерева или разбиения на основе троичного дерева, может не быть разрешено. В качестве альтернативы, можно задать применение пропуска преобразования к по меньшей мере одному из следующего: вертикальное направление или горизонтальное направление в неквадратной единице кодирования. В одном примере, в случае применения пропуска преобразования к горизонтальному направлению, в горизонтальном направлении выполняют только масштабирование без преобразования / обратного преобразования, а преобразование / обратное преобразование способом ДКП или ДСП выполняют в вертикальном направлении. Если пропуск преобразования применяют к вертикальному направлению, в вертикальном направлении выполняют только масштабирование без преобразования / обратного преобразования, а преобразование / обратное преобразование способом ДКП или ДСП выполняют в горизонтальном направлении.
Информацию о пропуске обратного преобразования для горизонтального направления или информацию о пропуске обратного преобразования для вертикального направления можно сообщать посредством битового потока. В одном примере информация о пропуске обратного преобразования для горизонтального направления может представлять собой 1-битовый флаг 'hor_transform_skip_flag', а информация о пропуске обратного преобразования для вертикального направления может представлять собой 1-битовый флаг, 'ver_transform_skip_flag\
Кодер может определять, закодирован ли 'hor_transform_skip_flag' или 'ver_transform_skip_flag\ по размеру и/или форме текущего блока. В одном примере, если форма текущего блока представляет собой N×2N, можно закодировать hor_transform_skip_flag, а кодирование ver_transform_skip_flag можно опустить. Если форма текущего блока представляет собой 2N×N, можно закодировать ver_transform_skip_flag, a hor_transform_skip_flag можно опустить.
В качестве альтернативы, по размеру и/или форме текущего блока можно определять, выполняют ли пропуск преобразования для горизонтального направления или пропуск преобразования для вертикального направления. В одном примере, если форма текущего блока представляет собой N×2N, возможно применение пропуска преобразования к горизонтальному направлению и выполнение преобразования / обратного преобразования для вертикального направления. Если форма текущего блока представляет собой 2N×N, возможно применение пропуска преобразования к вертикальному направлению и выполнение преобразования / обратного преобразования для горизонтального направления. Преобразование / обратное преобразование можно выполнять на основе по меньшей мере одного из следующих способов: ДКП или ДСП.
Сгенерированный в результате разбиения на основе квадродерева, двоичного дерева или троичного дерева блок кодирования, дальнейшее разбиение которого не выполняют, может служить в качестве блока предсказания или блока преобразования. Иными словами, блок кодирования, сгенерированный путем разбиения на основе квадродерева или разбиения на основе двоичного дерева, может служить в качестве блока предсказания или блока преобразования. В одном примере предсказательное изображение можно сгенерировать в единице блока кодирования, при этом разностный сигнал -разность между исходным изображением и предсказательным изображением -можно преобразовать в единице блока кодирования. Чтобы сгенерировать предсказательное изображение в единице блока кодирования, можно определить информацию о движении на основе блока кодирования или определить режим внутрикадрового предсказания на основе блока кодирования. Следовательно, для кодирования блока кодирования можно применить по меньшей мере одно из следующего: режим пропуска, внутрикадровое предсказание или межкадровое предсказание.
В качестве альтернативы, для множества блоков кодирования, сгенерированных путем разбиения блока кодирования, можно задать совместное применение по меньшей мере одного из следующего: информации о движении, кандидата на слияние, опорного отсчета, строки опорных отсчетов или режима внутрикадрового предсказания. В одном примере, если блок кодирования разбивают на основе троичного дерева, для сегментов, сгенерированных путем разбиения блока кодирования, возможно совместное применение по меньшей мере одно из следующего: информации о движении, кандидата на слияние, опорного отсчета, строки опорных отсчетов или режима внутрикадрового предсказания в соответствии с размером или формой блока кодирования. В качестве альтернативы, можно задать совместное применение указанной информации только для части множества блоков кодирования, а для остальных блоков кодирования можно задать отсутствие совместного применения указанной информации.
В другом примере возможно применение блока предсказания или блока преобразования меньшего, чем блок кодирования, путем разбиения блока кодирования.
Далее будет подробно раскрыт способ выполнения межкадрового предсказания для блока кодирования или блока предсказания, сгенерированного путем разбиения блока кодирования.
ФИГ. 9 - это принципиальная схема способа межкадрового предсказания в качестве варианта применения настоящего изобретения.
В примере на ФИГ. 9 информацию о движении текущего блока можно определить на этапе S910. Информация о движении текущего блока может включать в себя по меньшей мере одно из следующего: вектор движения текущего блока, индекс опорного изображения текущего блока, направление межкадрового предсказания или вес взвешенного предсказания текущего блока. Вес взвешенного предсказания может представлять собой вес, применяемый к опорному блоку L0, и вес, применяемый к опорному блоку L1.
Вектор движения текущего блока можно определять на основе информации, сообщаемой посредством битового потока. Точность вектора движения представляет собой базовую единицу, характеризующую вектор движения текущего блока. Например, точность вектора движения текущего блока можно определять в виде одного из следующего: целочисленного пэла, 1/2 пэла, 1/4 пэла или 1/8 пэла. Точность вектора движения можно определять на уровне изображения, на уровне сектора, на уровне группы плиток, на уровне плитки или на уровне блока. Блок может представлять собой единицу дерева кодирования, единицу кодирования, единицу предсказания или единицу преобразования.
Информацию о движении текущего блока можно определять на основе по меньшей мере одного из следующего: информации, сообщаемой посредством битового потока, или информация о движении блока, соседнего текущему блоку.
ФИГ. 10 - схема, иллюстрирующая процедуру получения информации о движении текущего блока в случае применения режима слияния к текущему блоку.
Режим слияния представляет собой способ получения информации о движении текущего блока на основе соседнего блока.
В случае применения к текущему блоку режима слияния, на этапе S1010 можно получить пространственного кандидата на слияние на основе пространственного блока, соседнего текущему блоку. Пространственный соседний блок может включать в себя по меньшей мере один из следующих: блок, примыкающий к верхней границе, левой границе или углу (например, по меньшей мере одному из следующих: верхнему левому углу, правому верхнему углу или левому нижнему углу) текущего блока.
ФИГ. 11 - схема, иллюстрирующая пример пространственного соседнего блока.
1
0
0
2
1
0
0
2
В примере на ФИГ. 11 пространственный соседний блок может включать в себя по меньшей мере один из следующих: соседний блок примыкающий к левой стороне текущего блока, соседний блок В, примыкающий к верху текущего блока, соседний блок А, примыкающий нижнему левому углу текущего блока, соседний блок В, примыкающий к верхнему правому углу текущего блока, и соседний блок В, примыкающий к верхнему левому углу текущего блока. Например, примем положение отсчета в верхнем левом углу текущего блока равным (0, 0), ширину текущего блока равной W, а высоту текущего блока равной Н. Блок А-] может включать в себя отсчет в положении (-1, Н-1). Блок В может включать в себя отсчет в положении (W-1, -1). Блок Аможет включать в себя отсчет в положении (-1, Н). Блок В может включать в себя отсчет в положении (W, -1). Блок В может включать в себя отсчет в положении (-1, -1).
Далее, в примере на ФИГ. 11 пространственного кандидата на слияние можно получить на основе блока, примыкающего к верхнему левому отсчету текущего блока, или блока, примыкающего к верхнему центральному отсчету текущего блока. Например, блок, соседний верхнему левому отсчету текущего блока, может представлять собой по меньшей мере блок, включающий в себя отсчет в положении (0, -1), или блок, включающий в себя отсчет в положении (-1, 0). Или же пространственного простого кандидата можно получить на основе по меньшей мере одно из следующего: блока, соседнего верхнему центральному отсчету текущего блока, или блока, соседнего левому центральному отсчету текущего блока. Например, блок, соседний верхнему центральному отсчету текущего блока, может включать в себя отсчет в положении (W/2, -1). Блок, соседний левому центральному отсчету текущего блока, может включать в себя отсчет в положении (-1, Н/2).
В зависимости от размера и/или формы текущего блока можно определять положение верхнего соседнего блока и/или левого соседнего блока, на основе которых получают пространственного кандидата на слияние. В одном примере, если размер текущего блока больше порогового значения, пространственных кандидатов на слияние можно получать на основе блока, соседнего верхнему центральному отсчету текущего блока, и блока, соседнего левому центральному отсчету текущего блока. При этом, если размер текущего блока меньше порогового значения, пространственных кандидатов на слияние можно получать на основе блока, соседнего верхнему правому отсчету текущего блока, и блока, соседнего нижнему левому отсчету текущего блока. В данном случае размер текущего блока может быть выражен в виде по меньшей мере одного из следующего: ширины, высоты, суммы ширины и высоты, произведения ширины и высоты или соотношения ширины и высоты. Пороговое значение может представлять собой целое число, например, 2, 4, 8, 16, 32 или 128.
В зависимости от формы текущего блока можно определять пригодность увеличенного пространственного соседнего блока. В одном примере, если текущий блок представляет собой неквадратный блок, ширина которого больше его высоты, можно определить непригодность блока, примыкающего к верхнему левому отсчету текущего блока, блока, примыкающего к левому центральному отсчету, или блока, примыкающего к нижнему левому отсчету текущего блока. При этом если текущий блок представляет собой блок, высота которого больше его ширины, можно определить непригодность блока, примыкающего к верхнему левому отсчету текущего блока, блока, примыкающего к верхнему центральному отсчету или блока, примыкающего к верхнему правому отсчету текущего блока.
Информацию о движении пространственного кандидата на слияние можно принять идентичной информации о движении пространственного соседнего блока.
1
1
0
0
2
2
1
1
0
0
Пространственного кандидата на слияние можно получать путем поиска соседних блоков в заранее определенном порядке. В одном примере на ФИГ. 11 поиск для получения пространственного кандидата на слияние можно выполнить в порядке блоков: А, B, В, А и В. Блок В можно использовать в по меньшей мере одном из следующих случаев: остальные блоки (т.е. А, В, В и А) непригодны, либо по меньшей мере один закодирован в режиме внутрикадрового предсказания.
Порядок поиска пространственного кандидата на слияние может быть заранее задан в кодере/декодере. В качестве альтернативы, порядок поиска пространственного кандидата на слияние можно получать адаптивно в зависимости от размера или формы текущего блока. В качестве альтернативы, порядок поиска пространственного кандидата на слияние можно получать на основе информации, сообщаемой посредством битового потока.
Временного кандидата на слияние можно получить на основе временного соседнего блока текущего блока на этапе S1020. «Временной соседний блок» может означать совмещенный блок, входящий в состав совмещенного изображения. Совмещенное изображение имеет порядковый номер кадра (англ. Picture Order Count (РОС)), отличный от порядкового номера кадра текущего изображения, включающего в себя текущий блок. Совмещенное изображение можно принять в качестве изображения с заранее заданным индексом в списке опорных изображений или изображения с минимальной разницей порядковых номеров кадров между ним и текущим изображением. В качестве альтернативы, совмещенное изображение можно определять на основе информации, сообщаемой посредством битового потока. Информация, сообщаемая посредством битового потока, может включать в себя по меньшей мере одно из следующего: информацию, указывающую список опорных изображений (например, список опорных изображений L0 или список опорных изображений L1), включающий в себя совмещенное изображение и индекс, указывающий совмещенное изображение в списке опорных изображений. Информацию для определения совмещенного изображения можно сообщать в по меньшей мере одном из следующего: наборе параметров изображения, заголовке сектора и уровне блока.
Информацию о движении временного кандидата на слияние можно получать на основе информации о движении совмещенного блока. В одном примере вектор движения временного кандидата на слияние можно получать на основе вектора движения совмещенного блока. Например, вектор движения временного кандидата на слияние может быть принят идентичным вектору движения совмещенного блока. В качестве альтернативы, вектор движения временного кандидата на слияние можно получить путем масштабирования вектора движения совмещенного блока на основе по меньшей мере одно из следующего: разницы порядковых номеров кадров между текущим изображением и опорным изображением текущего блока и разницы порядковых номеров кадров совмещенного изображения и опорного изображения совмещенного блока.
ФИГ. 12 - схема, иллюстрирующая пример получения вектора движения временного кандидата на слияние.
В примере на ФИГ. 12 tb представляет разницу порядковых номеров кадров текущего изображения curr_pic и опорного изображения curr_ref текущего изображения, a td представляет разницу порядковых номеров кадров совмещенного изображения col_pic и опорного изображения col_ref совмещенного блока. Вектор движения временного кандидата на слияние можно получить путем масштабирования вектора движения совмещенного блока col_PU на основе tb и/или td.
В качестве альтернативы, с учетом того, пригоден ли совмещенный блок для применения или нет, вектор движения совмещенного блока и вектор движения, полученный путем масштабирования вектора движения совмещенного блока, можно применять в качестве вектора движения временного кандидата на слияние. В одном примере вектор движения совмещенного блока принимают в качестве вектора движения первого временного кандидата на слияние, а значение, определенное путем масштабирования вектора движения совмещенного блока, можно принять в качестве вектора движения второго временного кандидата на слияние.
Направление межкадрового предсказания временного кандидата на слияние может быть принято идентичным направлению межкадрового предсказания временного соседнего блока. При этом индекс опорного изображения временного кандидата на слияние может иметь фиксированное значение. В одном примере индекс опорного изображения временного кандидата на слияние может быть принят равным "0". В качестве альтернативы, индекс опорного изображения временного кандидата на слияние можно получать адаптивно на основе по меньшей мере одного из следующего: индекса опорного изображения пространственного кандидата на слияние, индекса опорного изображения текущего изображения.
Конкретный блок, положение и размер которого являются такими же, как и положение и размер текущего блока в пределах совмещенного изображения, или блок, примыкающий к блоку, примыкающему к блоку, положение и размер которого являются такими же, как и положение и размер текущего блока, можно принять в качестве совмещенный блок.
ФИГ. 13 - схема, иллюстрирующая положение блоков-кандидатов с возможностью применения в качестве совмещенного блока.
Блок-кандидат может включать в себя по меньшей мере один из следующих: блок, примыкающий к положению верхнего левого угла текущего блока в пределах совмещенного изображения, блок, примыкающий к положению центрального отсчета текущего блока в пределах совмещенного изображения, и блок, примыкающий к положению нижнего левого угла текущего блока в пределах совмещенного изображения.
В одном примере блок-кандидат может включать в себя по меньшей мере один из следующих: блок TL, включающий в себя положение верхнего левого отсчета текущего блока в пределах совмещенного изображения, блок BR, включающий в себя положение нижнего правого отсчета текущего блока в пределах совмещенного изображения, блок Н, примыкающий к нижнему правому углу текущего блока в пределах совмещенного изображения, блок С3, включающий в себя положение центрального отсчета текущего блока в пределах совмещенного изображения, и блок СО, примыкающий к центральному отсчету текущего блока (например, блок, включающий в себя положение отсчета, отстоящего от центрального отсчета текущего блока на (-1, -1)) в пределах совмещенного изображения.
В дополнение к примеру на ФИГ. 13, блок, включающий в себя положение соседнего блока, примыкающего к заранее определенной границе текущего блока в пределах совмещенного изображения, может быть выбран в качестве совмещенного блока.
Число временных кандидатов на слияние может составлять 1 или более. В одном примере по меньшей мере одного временного кандидата на слияние можно получить на основе по меньшей мере одного совмещенного блока.
Информацию о максимальном числе временных кандидатов на слияние можно закодировать и сообщить посредством кодера. В качестве альтернативы, максимальное число временных кандидатов на слияние можно получить на основе максимального числа кандидатов на слияние и/или максимального числа возможных пространственных кандидатов на слияние, входящих в список кандидатов на слияние. В качестве альтернативы, максимальное число временных кандидатов на слияние можно получать на основе числа пригодных для применения совмещенных блоков.
То, пригодны ли блоки-кандидаты для применения или нет, можно определять согласно заранее определенному приоритету, при этом по меньшей мере один совмещенный блок можно определять по результату вышеуказанного определения и максимальному числу временных кандидатов на слияние. В одном примере, если блок С3, включающий в себя положение центрального отсчета текущего блока, и блок Н, примыкающий к нижнему правому углу текущего блока, являются блоками-кандидатами, любой из них -блок С3 или блок Н - можно принять в качестве совмещенного блока. Если блок Н пригоден, блок Н можно принять в качестве совмещенного блока. При этом, если блок Н непригоден (например, если блок Н закодирован способом внутрикадрового предсказания, если блок Н не пригоден для применения или если блок Н расположен за пределами наибольшей единицы кодирования (НЕК, англ. largest coding unit (LCU) и т.п.), блок С3 можно принять в качестве совмещенного блока.
В другом примере, если по меньшей мере один из множества блоков, примыкающих к положению нижнего правого угла текущего блока в пределах совмещенного изображения, непригоден (например, блок Н и/или блок BR), непригодный блок можно заменить другим пригодным блоком. Другой пригодный блок, заменяемый непригодным блоком, может включать в себя по меньшей мере один блок (например, СО и/или С3), примыкающий к положению центрального отсчета текущего блока в пределах совмещенного изображения, и блок (например, TL), примыкающий нижнему левому углу текущего блока в пределах совмещенного изображения.
Если непригоден по меньшей мере один из множества блоков, примыкающих к положению центрального отсчета текущего блока в пределах совмещенного изображения, или если непригоден по меньшей мере один из множества блоков, примыкающих к положению верхнего левого угла текущего блока в пределах совмещенного изображения, непригодный блок можно заменить другим пригодным блоком.
Далее, на этапе S1030 можно сгенерировать список кандидатов на слияние, включающий в себя пространственного кандидата на слияние и временного кандидата на слияние. Конфигурирование списка кандидатов на слияние может включать в себя удаление кандидата на слияние с информацией о движении, идентичной информации о движении существующего кандидата на слияние, из списка кандидатов на слияние.
Информацию о максимальном числе кандидатов на слияние можно сообщать посредством битового потока. В одном примере информацию, указывающую максимальное число кандидатов на слияние, можно сообщать посредством параметра последовательности или параметра изображения. В одном примере, если максимальное число кандидатов на слияние составляет шесть, можно выбрать всего шесть из числа пространственных кандидатов на слияние и временных кандидатов на слияние. Например, можно выбрать пять пространственных кандидатов на слияние из пяти кандидатов на слияние и одного временного кандидата на слияние из двух временных кандидатов на слияние.
В качестве альтернативы, максимальное число кандидатов на слияние может быть заранее задано в кодере и декодере. Например, максимальное число кандидатов на слияние может составлять два, три, четыре, пять или шесть. В качестве альтернативы, максимальное число кандидатов на слияние можно получать на основе по меньшей мере одного из следующего: выполняют ли слияние в режиме с разностью векторов движения (англ. Motion Vector Difference (MVD)) (средней величиной разности векторов (англ. Mean Magnitude of Vector Difference (MMVD)), выполняют ли комбинированное предсказание, или выполняют ли треугольное разбиение.
Если число кандидатов на слияние, входящих в список кандидатов на слияние, меньше максимального числа кандидатов на слияние, в список кандидатов на слияние можно добавить кандидата на слияние, входящего во второй список кандидатов на слияние.
Второй список кандидатов на слияние может включать в себя кандидата на слияние, полученного на основе информации о движении блока, закодированного/декодированного путем межкадрового предсказания прежде, чем текущий блок. В одном примере, если выполняют компенсацию движения для блока, режимом кодирования которого является межкадровое предсказание, кандидата на слияние, полученного на основе информации о движении блока, можно добавить во второй список кандидатов на слияние. Если кодирование/декодирование текущего блока выполнено, информацию о движении текущего блока можно добавить во второй список кандидатов на слияние для межкадрового предсказания последующего блока.
Второй список кандидатов на слияние можно начать в единице ЕДК, плитки или сектора. Максимальное число кандидатов на слияние, которые могут входить во второй список кандидатов на слияние, может быть заранее задано в кодере и декодере. В качестве альтернативы, информацию, представляющую максимальное число кандидатов на слияние, которые могут входить во второй список кандидатов на слияние, можно сообщать посредством битового потока.
Индексы кандидатов на слияние, входящих во второй список кандидатов на слияние, можно определять на основе порядка добавления во второй список кандидатов на слияние. В одном примере значение индекса, присвоенного N-ному кандидату на слияние, добавленному во второй список кандидатов на слияние, может быть меньше значения индекса, присвоенного N+1-ому кандидату на слияние, добавленному во второй список кандидатов на слияние. Например, индекс N+1-го кандидата на слияние может быть принят равным значению, увеличенному на 1 относительно индекса N-ого кандидата на слияние. В качестве альтернативы, индекс N-ого кандидата на слияние может быть принят равным индексу N+1-ого кандидата на слияние, при этом из значения индекса N-ого кандидата на слияние может можно вычесть 1.
В качестве альтернативы, значение индекса, присвоенного N-ому кандидату на слияние, добавленному во второй список кандидатов на слияние, может быть больше индекса, присвоенного N+1-ому кандидату на слияние, добавленному во второй список кандидатов на слияние. Например, индекс N-ого кандидата на слияние может быть принят равным индексу N+1-ого кандидата на слияние, при этом значение индекса N-ого кандидата на слияние может быть увеличено на 1.
На основании того, что информация о движении блока, в отношении которого выполняют компенсацию движения, тождественна информации о движении кандидата на слияние, входящего во второй список кандидатов на слияние, можно определять то, добавлен ли кандидат на слияние, полученный на основе блока, во второй список кандидатов на слияние. В одном примере, если кандидат на слияние с информацией о движении, тождественной информации о движении блока, входит во второй список кандидатов на слияние, кандидата на слияние, полученного на основе информации о движении блока, нельзя добавить во второй список кандидатов на слияние. В качестве альтернативы, если кандидат на слияние с информацией о движении, тождественной информации о движении блока, входит во второй список кандидатов на слияние, кандидата на слияние можно удалить из второго списка кандидатов на слияние, а кандидата на слияние, полученного на основе информации о движении блока, можно добавить во второй список кандидатов на слияние.
Если число кандидатов на слияние, входящих во второй список кандидатов на слияние, равно максимальному числу кандидатов на слияние, кандидата на слияние с самым низким индексом или кандидата на слияние с самым высоким индексом можно удалить из второго списка кандидатов на слияние, а кандидат на слияние, полученного на основе информации о движении блока, можно добавить во второй список кандидатов на слияние. Иными словами, после удаления самого старого из кандидатов на слияние, входящих во второй список кандидатов на слияние, кандидата на слияние, полученного на основе информации о движении блока, можно добавить во второй список кандидатов на слияние.
Если число кандидатов на слияние, входящих в список кандидатов на слияние, еще не достигло максимального числа кандидатов на слияние, в список кандидатов на слияние можно включить комбинированного кандидата слияние, полученного путем комбинирования двух или более кандидатов на слияние, или кандидата на слияние с вектором движения (0,0) (нулевым вектором движения).
В качестве альтернативы, в список кандидатов на слияние можно добавить среднего кандидата слияние, полученного путем выведения среднего значения вектора движения двух или более кандидатов на слияние. Среднего кандидата на слияние можно получить путем выведения среднего значения вектора движения двух или более кандидатов на слияние, входящих в список кандидатов на слияние. В одном примере, если в список кандидатов на слияние добавляют первого кандидата на слияние и второго кандидата на слияние, можно вычислить среднее значение вектора движения первого кандидата на слияние и вектора движения второго кандидата на слияние для получения среднего кандидата на слияние. А именно, вектор L0 движения среднего кандидата на слияние можно получить путем вычисления среднего значения вектора L0 движения первого кандидата на слияние и вектора L0 движения второго кандидата на слияние, а вектор L1 движения среднего кандидата на слияние можно получить путем вычисления среднего значения вектора L1 движения первого кандидата на слияние и вектора L1 движения второго кандидата на слияние. В случае применения двунаправленного предсказания к любому из первого кандидата на слияние и второго кандидата на слияние и выполнения однонаправленного предсказания в отношении другого из них, вектор движения двунаправленного кандидата на слияние можно принять тождественным вектору L0 движения или вектору L1 движения среднего кандидата на слияние. В одном примере, если предсказания в направлении L0 и направлении L1 выполняют в отношении первого кандидата на слияние, а предсказание в направлении L0 - в отношении второго кандидата на слияние, вектор L0 движения среднего кандидата на слияние можно получить путем вычисления среднего значения вектора L0 движения первого кандидата на слияние и вектора L0 движения второго кандидата на слияние. При этом вектор L1 движения среднего кандидата на слияние можно получить как вектор L1 движения первого кандидата на слияние.
Если опорное изображение первого кандидата на слияние отлично от второго кандидата на слияние, вектор движения первого кандидата на слияние или второго кандидата на слияние можно масштабировать согласно расстоянию (т.е. разнице порядковых номеров кадров) между опорными изображениями соответствующих кандидатов на слияние и текущим изображением. Например, после масштабирования вектора движения второго кандидата на слияние, среднего кандидата на слияние можно получить путем вычисления среднего значения вектора движения первого кандидата на слияние и масштабированного вектора движения второго кандидата на слияние. В данном случае приоритеты можно задать на основе значения индекса опорного изображения каждого кандидата на слияние, расстояния между опорным изображением каждого кандидата на слияние и текущего блока, или того, применяют ли или нет двунаправленное предсказание, при этом масштабирование можно применять к вектору движения кандидата на слияние с высоким (или низким) приоритетом.
Индекс опорного изображения среднего кандидата на слияние можно задать для указания опорного изображения в конкретном положении в списке опорных изображений. В одном примере индекс опорного изображения среднего кандидата на слияние может указывать первое или последнее опорное изображение в списке опорных изображений. В качестве альтернативы, индекс опорного изображения среднего кандидата на слияние можно задать идентичным индексу опорного изображения первого кандидата на слияние или второго кандидата на слияние. В одном примере, если индекс опорного изображения первого кандидата на слияние идентичен индексу второго кандидата на слияние, индекс опорного изображения среднего кандидата на слияние можно задать идентичным индексу опорного изображения первого кандидата на слияние и второго кандидата на слияние. Если индекс опорного изображения первого кандидата на слияние отличен от индекса второго кандидата на слияние, приоритеты можно установить на основе значения индекса опорного изображения каждого кандидата на слияние, расстояния между опорным изображением каждого кандидата на слияние и текущего блока, или того, применяют ли двунаправленное предсказание или нет, при этом индекс опорного изображения кандидата на слияние с высоким (или низким) приоритетом можно принять в качестве индекса опорного изображения среднего кандидата на слияние. В одном примере, если двунаправленное предсказание применяют к первому кандидату на слияние, а однонаправленное предсказание применяют ко второму кандидату на слияние, индекс опорного изображения первого кандидата на слияние, к которому применяют двунаправленное предсказание, можно принять в качестве индекса опорного изображения среднего кандидата на слияние.
На основе приоритетов комбинаций кандидатов на слияние можно получить последовательность комбинаций для генерирования среднего кандидата на слияние. Приоритеты могут быть заранее заданы в кодере и декодере. В качестве альтернативы, последовательность комбинаций можно определить на основе того, выполняют ли двунаправленное предсказание кандидата на слияние. Например, для комбинации кандидатов на слияние, кодируемой с использованием двунаправленного предсказания, может быть установлен более высокий приоритет, чем для комбинации кандидатов на слияние, кодируемой с использованием однонаправленного предсказания. В качестве альтернативы, последовательность комбинаций можно определять на основе опорного изображения кандидата на слияние. Например, приоритет комбинации кандидатов на слияние с одним и тем же опорным изображением может быть выше, чем у комбинации кандидатов на слияние с разными опорными изображениями.
Включение кандидата на слияние в список кандидатов на слияние может происходить согласно заранее установленному приоритету. Кандидату на слияние с высоким приоритетом можно назначить малое значение индекса. В одном примере пространственного кандидата на слияние можно добавить в список кандидатов на слияние прежде, чем временного кандидата на слияние. Кроме того, пространственных кандидатов на слияние можно добавлять в список кандидатов на слияние в следующем порядке: пространственный кандидат на слияние левого соседнего блока, пространственный кандидат на слияние верхнего соседнего блока, пространственный кандидат на слияние блока, примыкающего к верхнему правому углу, пространственный кандидат на слияние блока, примыкающего к нижнему левому углу, и пространственный кандидат на слияние блока, примыкающего к верхнему левому углу. В качестве альтернативы, можно задать порядок, при котором добавление пространственного кандидата на слияние, полученного на основе соседнего блока, примыкающего к верхнему левому углу текущего блока (В2 на ФИГ. 11), в список кандидатов на слияние происходит позднее, чем добавление временного кандидата на слияние.
В другом примере приоритеты кандидатов на слияние можно определять согласно размеру или форме текущего блока. В одном примере, если текущий блок имеет форму прямоугольника, ширина которого больше его высоты, пространственного кандидата на слияние левого соседнего блока можно добавить в список кандидатов на слияние прежде, чем пространственного кандидата на слияние верхнего соседнего блока. При этом, если текущий блок имеет форму прямоугольника, в котором высота больше ширины, пространственного кандидата на слияние верхнего соседнего блока можно добавить в список кандидатов на слияние прежде, чем пространственного кандидата на слияние левого соседнего блока.
В другом примере приоритеты кандидатов на слияние можно определять согласно информации о движении соответствующих кандидатов на слияние. В одном примере приоритет кандидата на слияние с двунаправленной информацией о движении может быть выше, чем у кандидата на слияние с однонаправленной информацией о движении. Следовательно, кандидата на слияние с двунаправленной информацией о движении можно добавить в список кандидатов на слияние прежде, чем кандидата на слияние с однонаправленной информацией о движении.
В другом примере список кандидатов на слияние можно сгенерировать согласно заранее установленному приоритету, а затем кандидатов на слияние можно переупорядочить. Переупорядочивание можно выполнить на основе информации о движении кандидатов на слияние. В одном примере переупорядочивание можно выполнить на основе того, имеет ли кандидат на слияние двунаправленную информацию о движении или нет, а также размера вектора движения, точности вектора движения, или разницы порядковых номеров кадров между текущим изображением и опорным изображением кандидата на слияние. А именно, переупорядочивание можно выполнить так, чтобы кандидат на слияние с двунаправленной информацией о движении имел более высокий приоритет, чем кандидат на слияние с однонаправленной информацией о движении. В качестве альтернативы, переупорядочивание можно выполнить так, чтобы приоритет кандидата на слияние с вектором движения со значением точности в дробных пикселях был выше, чем у кандидата на слияние с вектором движения с точностью в целочисленных пикселях.
Когда список кандидатов на слияние будет сгенерирован, на этапе S1040 можно обозначить по меньшей мере одного кандидата на слияние, входящего в список кандидатов на слияние, на основе индекса кандидата на слияние.
На этапе S1050 информацию о движении текущего блока можно принять идентичной информации о движении кандидата на слияние, обозначенного посредством индекса кандидата на слияние. В одном примере, если пространственного кандидата на слияние выбирают по индексу кандидата на слияние, информацию о движении текущего блока можно принять идентичной информации о движении пространственного соседнего блока. В качестве альтернативы, если временного кандидата на слияние выбирают по индексу кандидата на слияние, информацию о движении текущего блока можно принять идентичной информации о движении временного соседнего блока.
ФИГ. 14 - схема, иллюстрирующая процесс получения информации о движении текущего блока в случае применения к текущему блоку режима улучшенного предсказания вектора движения (AMVP).
В случае применения к текущему блоку режима улучшенного предсказания вектора движения (AMVP), на этапе S1410 из битового потока можно декодировать по меньшей мере одно из следующего: направление межкадрового предсказания текущего блока и индекс опорного изображения. Иными словами, в случае применения режима улучшенного предсказания вектора движения (AMVP), по меньшей мере одно из следующего: направление межкадрового предсказания текущего блока и индекс опорного изображения можно определять на основе информации, закодированной посредством битового потока.
Пространственный вектор-кандидат движения можно получить на основе вектора движения пространственного соседнего блока текущего блока на этапе S1420. Пространственный вектор-кандидат движения может включать в себя по меньшей мере один из следующих: первый пространственный вектор-кандидат движения, полученный на основе верхнего соседнего блока текущего блока, и второй пространственный вектор-кандидат движения, полученный на основе левого соседнего блока текущего блока. В данном случае верхний соседний блок может включать в себя по меньшей мере один из блоков, примыкающих к верху и верхнему правому углу текущего блока, при этом левый соседний блок текущего блока включает в себя по меньшей мере один из блоков, примыкающих к левой стороне и левому нижнему углу текущего блока. Блок, примыкающий к левому верхнему углу текущего блока, может служить в качестве верхнего соседнего блока или левого соседнего блока.
В качестве альтернативы, пространственный вектор-кандидат движения можно получить на основе пространственного не-соседнего блока, не примыкающего к текущему блоку. В одном примере пространственный вектор-кандидат движения текущего блока можно получить путем применения по меньшей мере одного из следующего: блока, расположенного у той же вертикальной линии, что и блок, примыкающий к верху, верхнему правому углу или верхнему левому углу текущего блока; блока, расположенного у той же горизонтальной линии, что и блок, примыкающий к левой стороне, нижнему левому углу или верхнему левому углу текущего блока; и блока, расположенного у той же диагональной линии, что и блок, примыкающий к углу текущего блока. Если пространственный соседний блок непригоден, пространственный вектор-кандидат движения можно получить путем применения пространственного не-соседнего блока.
В другом примере по меньшей мере два пространственных вектора-кандидата движения можно получить путем применения пространственного соседнего блока и пространственных не-соседних блоков. В одном примере первый пространственный вектор-кандидат движения и второй пространственный вектор-кандидат движения можно получить путем применения соседних блоков, примыкающих к текущему блоку. При этом третий пространственный вектор-кандидат движения и/или четвертый пространственный вектор-кандидат движения можно получить на основе блоков, примыкающих не к текущему блоку, а к вышеуказанным соседним блокам.
Если текущий блок отличен, в части опорного изображения, от пространственного соседнего блока, пространственный вектор движения можно получить путем выполнения масштабирования для вектора движения пространственного соседнего блока. Временной вектор-кандидат движения можно получить на этапе S1430 на основе вектора движения временного соседнего блока текущего блока. Если текущий блок отличен, в части опорного изображения, от временного соседнего блока, временной вектор движения можно получить путем выполнения масштабирования вектора движения временного соседнего блока. В данном случае, если число пространственных векторов-кандидатов движения не превышает заранее определенное число, можно получить временной вектор-кандидат движения.
На этапе S1440 можно сгенерировать список векторов-кандидатов движения, включающий в себя пространственный вектор-кандидат движения и временной вектор-кандидат движения.
Когда список векторов-кандидатов движения будет сгенерирован, на этапе S1450 можно обозначить по меньшей мере один из векторов-кандидатов движения, входящих в список векторов-кандидатов движения, на основе информации, указывающей по меньшей мере один список векторов-кандидатов движения.
Вектор-кандидат движения, обозначенный посредством информации, можно принять в качестве значения предсказания вектора движения текущего блока, при этом вектор движения текущего блока можно получить путем прибавления остаточного значения вектора движения к значению предсказания вектора движения на этапе S1460. В данном случае остаточное значение вектора движения можно преобразовать в машиночитаемую форму посредством битового потока.
Когда будет получена информация о движении текущего блока, на этапе S920 можно выполнить компенсацию движения для текущего блока на основе полученной информации о движении. А именно, компенсацию движения для текущего блока можно выполнить на основе направления межкадрового предсказания, индекса опорного изображения и вектора движения текущего блока. Направление межкадрового предсказания отражает то, какое предсказание выполнено: предсказание L0, предсказание L1 или двунаправленное предсказание. Если текущий блок закодирован путем двунаправленного предсказания, блок предсказания текущего блока можно определить на основе операции взвешенной суммы или операции усреднения опорного блока L0 и опорного блока L1.
Когда предсказанный отсчет будет получен путем выполнения компенсации движения, можно восстановить текущий блок на основе сгенерированного предсказанного отсчета. А именно, восстановленный отсчет можно определить путем суммирования предсказанного отсчета текущего блока и остаточного отсчета.
Как и в раскрытом выше примере, на основе информации о движении блока, закодированного/декодированного с использованием межкадрового предсказания прежде, чем текущий блок, можно получить кандидата на слияние текущего блока. Например, на основе информации о движении соседнего блока в заранее заданном положении, примыкающем к текущему блоку, можно получить кандидата на слияние текущего блока. В число примеров соседнего блока может входить по меньшей мере один из следующих: блок, примыкающий к левой стороне текущего блока, блок, примыкающий к верху текущего блока, блок, примыкающий к верхнему левому углу текущего блока, блок, примыкающий к верхнему правому углу текущего блока, и блок, примыкающий к нижнему левому углу текущего блока.
Кандидата на слияние текущего блока можно получить на основе информации о движении блока, не являющегося соседним блоком. Для удобства раскрытия, соседний блок в заранее заданном положении, примыкающий к текущему блоку, именуется «первый блок-кандидат на слияние», а блок в положении, отличном от положения первого блока-кандидата на слияние, именуется «второй блок-кандидат на слияние».
Второй блок-кандидат на слияние может включать в себя по меньшей мере один из следующих: блок, закодированный/декодированный с использованием межкадрового предсказания прежде, чем текущий блок, блок, примыкающий к первому блоку-кандидату на слияние или блоку, расположенному на той же линии, что и первый блок-кандидат на слияние. На ФИГ. 15 изображен второй блок-кандидат на слияние, примыкающий к первому блоку-кандидату на слияние, а на ФИГ. 16 - второй блок-кандидат на слияние, расположенный на той же линии, что и первый блок-кандидат на слияние.
Если первый блок-кандидат на слияние непригоден, в список кандидатов на слияние добавляют кандидата на слияние, полученного на основе информации о движении второго блока-кандидата на слияние. В качестве альтернативы, даже в случае добавления по меньшей мере пространственного кандидата на слияние или временного кандидата на слияние в список кандидатов на слияние, если число кандидатов на слияние, входящих в список кандидатов на слияние, меньше максимального числа кандидатов на слияние, в список кандидатов на слияние добавляют кандидата на слияние, полученного на основе информации о движении второго блока-кандидата на слияние.
ФИГ. 15 - схема, иллюстрирующая пример получения кандидата на слияние на основе второго блока-кандидата на слияние, если первый блок-кандидат на слияние непригоден.
Если первый блок-кандидат AN на слияние (в данном случае N составляет от 0 до 4) непригоден, а кандидата на слияние текущего блока получают на основе информации о движении второго блока-кандидата ВМ на слияние (в данном случае М составляет от 0 до 6). Т.е. кандидата на слияние текущего блока можно получить путем замены непригодного первого блока-кандидата на слияние вторым блоком-кандидатом на слияние.
Из блоков, примыкающих к первому блоку-кандидату на слияние, в качестве второго блока-кандидата на слияние можно принять блок, расположенный в заранее заданном направлении от первого блока-кандидата на слияние. Заранее заданным направлением может быть направление влево, направление вправо, направление вверх, направление вниз или направление по диагонали. Заранее заданное направление может быть задано для каждого первого блока-кандидата на слияние. Например, заранее заданным направлением первого блока-кандидата на слияние, примыкающего к левой стороне текущего блока, может быть направление влево. Заранее заданным направлением первого блока-кандидата на слияние, примыкающего к верху текущего блока, может быть направление вверх. Заранее заданным направлением первого блока-кандидата на слияние, примыкающего к углу текущего блока, может быть по меньшей мере одно из следующих: направление влево, направление вверх или направление по диагонали.
Например, если А0, примыкающий к левой стороне текущего блока, непригоден, кандидата на слияние текущего блока получают на основе В0, примыкающего к А1. Если А1, примыкающий к верху текущего блока непригоден, кандидата на слияние текущего блока получают на основе В1, примыкающего к А1. Если А2, примыкающий к верхнему правому углу текущего блока непригоден, кандидата на слияние текущего блока получают на основе В2, примыкающего к А2. Если A3, примыкающий к нижнему левому углу текущего блока непригоден, кандидата на слияние текущего блока получают на основе В3, примыкающего к A3. Если А4, примыкающий к верхнему левому углу текущего блока непригоден, кандидата на слияние текущего блока получают на основе по меньшей мере одного из блоков В4 - В6, примыкающих к А4.
Пример на ФИГ. 15 служит исключительно для раскрытия одного из вариантов осуществления настоящего изобретения, но не ограничивает его. Положение второго блока-кандидата на слияние можно задать отличным от образца на ФИГ. 15. Например, второй блок-кандидат на слияние, примыкающий к первому блоку-кандидату на слияние, примыкающему к левой стороне текущего блока, может быть расположен в направлении вверх или направлении вниз от первого блока-кандидата на слияние. В качестве альтернативы, второй блок-кандидат на слияние, примыкающий к первому блоку-кандидату на слияние, примыкающему к верху текущего блока, может быть расположен в направлении влево или направлении вправо от первого блока-кандидата на слияние.
ФИГ. 16 - схема, иллюстрирующая пример получения кандидата на слияние на основе второго блока-кандидата на слияние, расположенного на той же линии, что и первый блок-кандидат на слияние.
Блок, расположенный на той же линии, что и первый блок-кандидат на слияние, может включать в себя по меньшей мере один из следующих: блок, расположенный на той же горизонтальной линии, что и первый блок-кандидат на слияние, блок, расположенный на той же вертикальной линии, что и первый блок-кандидат на слияние, или блок, расположенный на той же диагональной линии, что и первый блок-кандидат на слияние. Координаты положения по оси у блоков, расположенных на одной и той же горизонтальной линии, тождественны. Координаты положения по оси х блоков, расположенных на одной и той же вертикальной линии, тождественны. Значение разности между координатами положений по оси х блоков, расположенных на одной и той же диагональной линии, тождественно значению разности между координатами положений по оси у.
Предполагается, что верхний левый отсчет текущего блока расположен у (0,0), а ширина и высота текущего блока - это W и Н соответственно. На ФИГ. 18 было показано, что положение вторых блоков-кандидатов на слияние (например, В4, С6), расположенных на той же вертикальной линии, что и первый блок-кандидат на слияние, определяют по крайнему правому блоку сверху от блока кодирования (например, блоку А1, включающему в себя координату (W-1, -1)). Кроме того, на ФИГ. 18 было показано, что положение вторых блоков-кандидатов на слияние (например, В1, С1), расположенных на той же горизонтальной линии, что и первый блок-кандидат на слияние, определяют по самому нижнему блоку слева от блока кодирования (например, блоку АО, включающему в себя координату (-1, Н-1)).
В другом примере положение вторых блоков-кандидатов на слияние можно получать по крайнему левому блоку сверху от блока кодирования (например, блоку, включающему в себя координату (0, -1)) или блоку, расположенному сверху по центру блока кодирования (например, блоку, включающему в себя координату (W/2, -1)). Кроме того, положение вторых блоков-кандидатов на слияние можно получать по самому верхнему блоку слева от блока кодирования (например, блоку, включающему в себя координату (-1, 0)) или блоку, расположенному слева по центру блока кодирования (например, блоку, включающему в себя координату (-1, Н/2)).
В другом примере, при наличии множества верхних соседних блоков, примыкающих к верху текущего блока, второй блок-кандидат на слияние можно получать путем применения всех или нескольких из множества верхних соседних блоков. В одном примере второй блок-кандидат на слияние можно получать путем применения блока в конкретном положении (например, по меньшей мере одного из следующих: верхнего соседнего блока, расположенного крайним с левой стороны, верхнего соседнего блока, расположенного крайним с правой стороны, или верхнего соседнего блока, расположенного в центре) из множества верхних соседних блоков. Число верхних соседних блоков, применяемых для определения второго блока-кандидата на слияние из множества верхних соседних блоков, может составлять 1, 2, 3 или более. Кроме того, при наличии множества левых соседних блоков, примыкающих к левой стороне текущего блока, второй блок-кандидат на слияние можно получать путем применения всех или нескольких из множества левых соседних блоков. В одном примере второй блок-кандидат на слияние можно получать путем применения блока в конкретном положении (например, по меньшей мере одного из следующих: левого соседнего блока, расположенного крайним снизу, левого соседнего блока, расположенного крайним сверху, или левого соседнего блока, расположенного в центре) из множества левых соседних блоков. Число левых соседних блоков, применяемых для определения второго блока-кандидата на слияние из множества левых соседних блоков, может составлять 1, 2, 3 или более.
В зависимости от размера и/или формы текущего блока, положение и/или число верхних соседних блоков и/или левых соседних блоков, применяемых для определения второго блока-кандидата на слияние, можно определять по-разному. В одном примере, если размер текущего блока больше порогового значения, второй блок-кандидат на слияние можно получать по верхнему по центру блоку и/или левому по центру блоку. При этом, если размер текущего блока меньше порогового значения, второй блок-кандидат на слияние можно получать по крайнему правому сверху блоку и/или крайнему нижнему слева блоку. Пороговое значение может представлять собой целое число, например, 8, 16, 32, 64 или 128.
Можно построить первый список кандидатов на слияние и второй список кандидатов на слияние и выполнить компенсацию движения текущего блока на основе по меньшей мере одного из следующего: первого списка кандидатов на слияние или второго списка кандидатов на слияние.
Первый список кандидатов на слияние может включать в себя по меньшей мере одного из следующих: пространственного кандидата на слияние, полученного на основе информации о движении соседнего блока в заранее заданном положении, примыкающем к текущему блоку, или временного кандидата на слияние, полученного на основе информации о движении совмещенного блока.
Второй список кандидатов на слияние может включать в себя кандидата на слияние, полученного на основе информации о движении второго блока-кандидата на слияние.
В одном из вариантов осуществления настоящего изобретения первый список кандидатов на слияние можно построить с включением в него кандидата на слияние, полученного на основе первого блока-кандидата на слияние, а второй список кандидатов на слияние можно построить с включением в него кандидата на слияние, полученного на основе второго блока-кандидата на слияние. В одном примере на ФИГ. 15, кандидатов на слияние, полученных на основе блоков А0 - А4, можно добавить в первый список кандидатов на слияние, а кандидатов на слияние, полученных на основе блоков В0 - В6, можно добавить во второй список кандидатов на слияние. В одном примере на ФИГ. 16, кандидатов на слияние, полученных на основе блоков А0 - А4, можно добавить в первый список кандидатов на слияние, а кандидатов на слияние, полученных на основе блоков В0 - В5, С0 - С7, можно добавить во второй список кандидатов на слияние.
В качестве альтернативы, второй список кандидатов на слияние может включать в себя кандидата на слияние, полученного на основе информации о движении блока, закодированного/декодированного с использованием межкадрового предсказания прежде, чем текущий блок. Например, если выполняют компенсацию движения для блока, кодируемого в режиме межкадрового предсказания, кандидата на слияние, полученного на основе информации о движении блока, добавляют во второй список кандидатов на слияние. Когда кодирование/декодирование текущего блока будет выполнено, информацию о движении текущего блока добавляют во второй список кандидатов на слияние для межкадрового предсказания последующего блока.
Индексы кандидатов на слияние, входящих во второй список кандидатов на слияние, можно определять по порядку добавления кандидатов на слияние во второй список кандидатов на слияние. Например, значение индекса, назначенного N-ому кандидату на слияние, добавленному во второй список кандидатов на слияние, может быть ниже, чем значение индекса, назначенного N+1-ому кандидату на слияние, добавленному во второй список кандидатов на слияние. Например, индекс N+1-ого кандидата на слияние может быть задан таким образом, чтобы его значение было на единицу выше значения индекса N-ого кандидата на слияние. В качестве альтернативы, индекс N-ого кандидата на слияние может быть задан равным индексу N+1-ого кандидата на слияние, при этом значение индекса N-ого кандидата на слияние уменьшают путем вычитания единицы.
В качестве альтернативы, значение индекса, назначенного N-ому кандидату на слияние, добавленному во второй список кандидатов на слияние, может быть выше значения индекса, назначенного N+1-ому кандидату на слияние, добавленному во второй список кандидатов на слияние. Например, индекс N-ого кандидата на слияние может быть задан равным индексу N+1-ого кандидата на слияние, при этом значение индекса N-ого кандидата на слияние уменьшают путем вычитания единицы.
В зависимости от того, тождественна ли информация о движении блока -объекта компенсации движения информации о движении кандидата на слияние, входящего во второй список кандидатов на слияние, можно определять, добавлять ли кандидата на слияние, полученного на основе блока, во второй список кандидатов на слияние. Например, если кандидат на слияние с информацией о движении, тождественной информации блока, входит во второй список кандидатов на слияние, кандидата на слияние, полученного на основе информации о движении блока, не добавляют во второй список кандидатов на слияние. В качестве альтернативы, если кандидат на слияние с информацией о движении, тождественной информации блока, входит во второй список кандидатов на слияние, кандидата на слияние удаляют из второго списка кандидатов на слияние, а кандидата на слияние, полученного на основе информации о движении блока, добавляют во второй список кандидатов на слияние.
Если число кандидатов на слияние, входящих во второй список кандидатов на слияние, равно максимальному числу кандидатов на слияние, кандидата на слияние с самым низким индексом или кандидата на слияние с самым высоким индексом удаляют из второго списка кандидатов на слияние, а кандидата на слияние, полученного на основе информации о движении блока, добавляют во второй список кандидатов на слияние. Т.е. после удаления самого старого из кандидатов на слияние, входящих во второй список кандидатов на слияние, в него можно добавить кандидата на слияние, полученного на основе информации о движении блока.
Второй список кандидатов на слияние можно начать в единице ЕДК, плитки или сектора. Иными словами, блок, входящий в состав ЕДК, плитки или сектора, отличный от текущего блока, может быть принят непригодным в качестве второго блока-кандидата на слияние. Максимальное число кандидатов на слияние, которых можно включить во второй список кандидатов на слияние, может быть заранее задано в кодере и декодере. В качестве альтернативы, информацию, отражающую максимальное число кандидатов на слияние, которых можно включить во второй список кандидатов на слияние, можно сообщать посредством битового потока.
Можно выбрать либо первый список кандидатов на слияние, либо второй список кандидатов на слияние и выполнить межкадровое предсказание текущего блока, используя выбранный список кандидатов на слияние. В частности, на основе информации об индексах можно выбрать любого из кандидатов на слияние, входящих в список кандидатов на слияние, и определить информацию о движении текущего блока от кандидата на слияние.
Информацию, указывающую либо первый список кандидатов на слияние, либо второй список кандидатов на слияние, можно сообщать посредством битового потока. На основе этой информации декодер может выбрать либо первый список кандидатов на слияние, либо второй список кандидатов на слияние.
В качестве альтернативы, из первого списка кандидатов на слияние и второго списка кандидатов на слияние можно выбрать тот, в котором число пригодных кандидатов на слияние больше.
В качестве альтернативы, первый список кандидатов на слияние или второй список кандидатов на слияние можно выбрать в зависимости от по меньшей мере одного из следующего: размера, формы и глубины разбиения текущего блока.
В качестве альтернативы, список кандидатов на слияние конфигурируют путем добавления (или присоединения) какого-либо списка кандидатов на слияние - первого или второго - к другому списку кандидатов на слияние.
Например, межкадровое предсказание можно выполнить на основе списка кандидатов на слияние, включающего в себя по меньшей мере одного кандидата на слияние, входящего в первый список кандидатов на слияние, и по меньшей мере одного кандидата на слияние, входящего во второй список кандидатов на слияние.
Например, кандидата на слияние, входящего во второй список кандидатов на слияние, можно добавить в первый список кандидатов на слияние. В качестве альтернативы, кандидата на слияние, входящего в первый список кандидатов на слияние, можно добавить во второй список кандидатов на слияние.
Если число кандидатов на слияние, входящих в первый список кандидатов на слияние, меньше максимального числа, или если первый блок-кандидат на слияние непригоден, кандидата на слияние, входящего во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние.
В качестве альтернативы, если первый блок-кандидат на слияние непригоден, кандидата на слияние, полученного на основе блока, примыкающего к первому блоку-кандидату на слияние, из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние. В примере на ФИГ. 15, если А0 непригоден, кандидата на слияние, полученного на основе информации о движении В0, из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние. Если А1 непригоден, кандидата на слияние, полученного на основе информации о движении В1, из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние. Если А2 непригоден, кандидата на слияние, полученного на основе информации о движении В2, из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние. Если A3 непригоден, кандидата на слияние, полученного на основе информации о движении В3, из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние. Если А4 непригоден, кандидата на слияние, полученного на основе информации о движении В4, В5 или В6 из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние.
В качестве альтернативы, кандидата на слияние для добавления в первый список кандидатов на слияние можно определять согласно приоритетам кандидатов на слияние, входящих во второй список кандидатов на слияние. Приоритеты можно определять по значению индекса, присвоенного каждому из кандидатов на слияние. Например, если число кандидатов на слияние, входящих в первый список кандидатов на слияние, меньше максимального числа, или если первый блок-кандидат на слияние непригоден, кандидата на слияние с наименьшим значением индекса или кандидата на слияние с наибольшим значением индекса из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, добавляют в первый список кандидатов на слияние.
Если кандидат на слияние с информацией о движении, тождественной информации кандидата на слияние с самым высоким из кандидатов на слияние, входящих во второй список кандидатов на слияние, приоритетом входит в первый список кандидатов на слияние, то кандидата на слияние с самым высоким приоритетом нельзя добавить в первый список кандидатов на слияние. При этом можно определить, можно ли добавить в первый список кандидатов на слияние кандидата на слияние с ближайшим приоритетом (например, кандидата на слияние, которому присвоено значение индекса, превышающее на 1 значение индекса, присвоенное кандидату на слияние с самым высоким приоритетом, или кандидата на слияние, которому присвоено значение индекса меньше на 1, чем значение индекса, присвоенное кандидату на слияние с самым высоким приоритетом).
В качестве альтернативы, можно сгенерировать список кандидатов на слияние, включающий в себя кандидата на слияние, полученного на основе информации о движении первого блока-кандидата на слияние, и кандидата на слияние, полученного на основе информации о движении второго блока-кандидата на слияние. Этот список кандидатов на слияние может представлять собой комбинацию первого списка кандидатов на слияние и второго списка кандидатов на слияние.
Например, согласно заранее определенному порядку поиска, можно сгенерировать список кандидатов на слияние путем поиска первого блока-кандидата на слияние и второго блока-кандидата на слияние.
ФИГ. 17 - 20 - схемы, иллюстрирующие порядок поиска блоков-кандидатов на слияние.
На ФИГ. 17-20 раскрыт следующий порядок поиска кандидатов на слияние.
А0 → А1 → А2 → A3 → А4 → В0 → В1 → В2 → В3 → В4 → (В5) → (В6)
Поиск блоков В5 и В6 может происходить только тогда, когда блок В4 непригоден или если число кандидатов на слияние, входящих в список кандидатов на слияние, не превышает заранее установленное число.
Может быть задан порядок поиска, отличный от примеров на ФИГ. 17-20.
Можно сгенерировать комбинированный список кандидатов на слияние, включающий в себя по меньшей мере одного кандидата на слияние, входящего в первый список кандидатов на слияние, и по меньшей мере одного кандидата на слияние, входящего во второй список кандидатов на слияние. Например, комбинированный список кандидатов на слияние может включать в себя N кандидатов на слияние, входящих в первый список кандидатов на слияние, и М кандидатов на слияние, входящих в второй список кандидатов на слияние. Буквы «N» и «М» могут обозначать одно и то число или разные числа. В качестве альтернативы, по меньшей мере одно из чисел N и М можно определять на основе по меньшей мере одного из следующих: числа кандидатов на слияние, входящих в первый список кандидатов на слияние, и числа кандидатов на слияние, входящих во второй список кандидатов на слияние. В качестве альтернативы, информацию для определения по меньшей мере одного из чисел N и М можно сообщать посредством битового потока. Любое из чисел N и М можно получить путем вычитания другого из них из максимального числа кандидатов на слияние в комбинированном списке кандидатов на слияние.
Кандидатов на слияние для добавления в комбинированный список кандидатов на слияние можно получать согласно заранее устновленному приоритету. Заранее устновленный приоритет можно определять на основе индексов, назначенных кандидатам на слияние.
В качестве альтернативы, кандидата на слияние для добавления в комбинированный список кандидатов на слияние можно получать на основе взаимосвязи кандидатов на слияние. Например, если А0, входящий в первый список кандидатов на слияние, добавляют в комбинированный список кандидатов на слияние, кандидата на слияние (например, В0) в положении, примыкающем к А0, не добавляют в комбинированный список кандидатов на слияние.
Если число кандидатов на слияние, входящих в первый список кандидатов на слияние, меньше N, в комбинированный список кандидатов на слияние добавляют кандидатов на слияние из числа кандидатов на слияние, входящих во второй список кандидатов на слияние, числом более М. Например, если N равно четырем, а М равно двум, в комбинированный список кандидатов на слияние добавляют четырех кандидатов на слияние, входящих в первый список кандидатов на слияние, и двух кандидатов на слияние, входящих в второй список кандидатов на слияние. Если число кандидатов на слияние, входящих в первый список кандидатов на слияние, меньше четырех, в комбинированный список кандидатов на слияние добавляют двух или более кандидатов на слияние из числа кандидатов на слияние, входящих во второй список кандидатов на слияние. Если число кандидатов на слияние, входящих во второй список кандидатов на слияние меньше двух, в комбинированный список кандидатов на слияние добавляют четырех или более кандидатов на слияние, входящих в первый список кандидатов на слияние.
Т.е. значение N или М можно корректировать в зависимости от числа кандидатов на слияние, входящих в каждый из списков кандидатов на слияние. Коррекция значения N или М позволяет зафиксировать общее число кандидатов на слияние, входящих в комбинированный список кандидатов на слияние. Если общее число кандидатов на слияние, входящих в комбинированный список кандидатов на слияние, меньше максимального числа кандидатов на слияние, добавляют комбинированного кандидата на слияние, среднего кандидата на слияние или нулевой вектор-кандидат движения.
Компенсацию движения текущего блока можно выполнить путем применения по меньшей мере одно из следующего: кандидатов на слияние, входящих в первый список кандидатов на слияние и второй список кандидатов на слияние. Кодер выполнен с возможностью кодирования информации об индексах для обозначения любого из множества кандидатов на слияние. В одном примере 'merge_idx' позволяет обозначить любого из множества кандидатов на слияние. В одном примере в Таблице 1 представлен индекс слияния каждого кандидата на слияние, полученного на основе первых блоков-кандидатов на слияние и вторых блоков-кандидатов на слияние на ФИГ. 16.
Однако, по мере увеличения числа кандидатов на слияние, входящих в список кандидатов на слияние, происходит удлинение кодового слова для кодирования индекса слияния. Следовательно, возникает проблема снижения эффективности кодирования/декодирования. Для уменьшения длины кодового слова, индекс слияния можно определять путем применения префикса и суффикса. В одном примере индекс слияния можно определять путем применения merge_idx_prefix, представляющего собой префикс индекса слияния, и merge_idx_suffix, представляющего собой суффикс индекса слияния.
В Таблице 2 представлены значение префикса индекса слияния и значение суффикса индекса слияния для каждого индекса слияния, а в Таблице 3 представлен процесс определения индекса слияния по значению префикса индекса слияния и значению суффикса индекса слияния.
Как раскрыто в Таблицах 2 и 3, если значение префикса индекса слияния меньше порогового значения, индекс слияния может быть принят тем же, что и значение префикса индекса слияния. При этом, если значение префикса индекса слияния больше порогового значения, индекс слияния можно определять путем вычитания базового значения из префикса индекса слияния и прибавления суффикса индекса слияния к значению, сдвигающему тот результат. Базовым значением может быть пороговое значение или значение, полученное путем вычитания 1 из порогового значения.
В Таблицах 2 и 3 показано, что пороговым значением является 4. Пороговое значение можно определять на основе по меньшей мере одного из следующего: числа кандидатов на слияние, входящих в список кандидатов на слияние, числа вторых блоков-кандидатов на слияние или числа линий, в которые входят вторые блоки-кандидаты на слияние. В качестве альтернативы, пороговое значение может быть заранее задано в кодере и декодере.
Определять то, применяются ли префикс и суффикс для определения индекс слияния, можно по числу кандидатов на слияние, входящих в список кандидатов на слияние, или максимальному числу кандидатов на слияние, которых можно включить во список кандидатов на слияние. В одном примере, если максимальное число кандидатов на слияние, могущих входить в список кандидатов на слияние, больше порогового значения, можно сообщить префикс индекса слияния и суффикс индекса слияния, применяемые для определения индекса слияния. При этом если максимальное число кандидатов на слияние меньше порогового значения, можно сообщить индекс слияния.
Прямоугольный блок можно разбить на множество треугольных блоков. Кандидатов на слияние треугольных блоков можно получать на основе прямоугольного блока, включающего в себя треугольные блоки. Один и тот же кандидат на слияние может быть общим для треугольных блоков.
Индекс слияния можно сообщать для каждого треугольного блока. В этом случае можно установить запрет на применение одного и того же кандидата на слияние для треугольных блоков. В одном примере кандидат на слияние, применяемый для первого треугольного блока, не может быть кандидатом на слияние второго треугольного блока. Следовательно, индекс слияния второго треугольного блока может обозначать любого из остальных кандидатов на слияние, кроме кандидата на слияние, выбранного для первого треугольного блока.
Кандидата на слияние можно получить на основе блока заранее определенной формы или размера не меньше заранее определенного размера. Если форма текущего блока отлична от заранее определенной формы или если размер текущего блока меньше заранее определенного размера, кандидата на слияние текущего блока получают на основе блока, включающего в себя текущий блок и имеющего форму, являющуюся заранее определенной формой, или размер не меньше заранее определенного размера. Заранее определенная форма может представлять собой квадратную форму или неквадратную форму.
Если заранее определенная форма представляет собой квадратную форму, кандидата на слияние для единицы кодирования в неквадратной форме получают на основе единицы кодирования в квадратной форме, включающей в себя эту единицу кодирования в неквадратной форме.
ФИГ. 21 - схема, иллюстрирующая пример, в котором кандидата на слияние неквадратного блока получают на основе квадратного блока.
Кандидата на слияние неквадратного блока можно получить на основе квадратного блока, включающего в себя этот неквадратный блок. Например, кандидата на слияние блока 0 кодирования в неквадратной форме и блока 1 кодирования в неквадратной форме можно получить на основе блока в квадратной форме, включающего в себя блок 0 кодирования и блок 1 кодирования. Т.е. положение пространственного соседнего блока можно получить на основе положения, ширины/высоты или размера блока в квадратной форме. Кандидата на слияние блока 0 кодирования и блока 1 кодирования можно получить на основе по меньшей мере одного из пространственных соседних блоков А0, А1, А2, A3 и А4, примыкающих к блоку в квадратной форме.
Временного кандидата на слияние можно получать на основе блока в квадратной форме. Т.е. временной соседний блок можно определять на основе положения, ширины/высоты или размера блока в квадратной форме. Например, кандидата на слияние блока 0 кодирования и блока 1 кодирования можно получить на основе временного соседнего блока, определенного на основе блока в квадратной форме.
В качестве альтернативы, любого из кандидатов на слияние -пространственного или временного - можно получить на основе квадратного блока, а другого кандидата на слияние можно получить на основе неквадратного блока. Например, пространственного кандидата на слияние блока 0 кодирования можно получить на основе квадратного блока, а временного кандидата на слияние блока 0 кодирования можно получить на основе блока 0 кодирования.
Несколько блоков, входящих в блок заранее определенной формы или размера не меньше заранее определенного размера, могут иметь общего кандидата на слияние. Например, в примере на ФИГ. 21, по меньшей мере один из кандидатов на слияние - пространственный или временный - блока 0 кодирования и блока 1 кодирования может быть одним м тем же.
Заранее определенная форма может представлять собой неквадратную форму, например, 2N×N, N×2N и т.п. Если заранее определенная форма представляет собой неквадратную форму, кандидата на слияние текущего блока можно получить на основе неквадратного блока, включающего в себя текущий блок. Например, если форма текущего блока представляет собой 2N×n (в данном случае n - это 1/2N), кандидата на слияние текущего блока получают на основе неквадратного блока в форме 2N×N. В качестве альтернативы, если форма текущего блока представляет собой n×2N, кандидата на слияние текущего блока получают на основе не квадратного блока в форме N×2N.
Информацию, указывающую заранее определенную форму или заранее определенный размер, можно сообщать посредством битового потока. Например, посредством битового потока можно сообщать информацию, указывающую любую из форм - неквадратную или квадратную.
В качестве альтернативы, заранее определенную форму или заранее определенный размер можно определять согласно правилу, заранее заданному в кодере и декодере.
Если дочерний узел не удовлетворяет заранее заданному условию, кандидата на слияние дочернего узла получают на основе узла-родителя, удовлетворяющего данному заранее заданному условию. В данном случае заранее заданное условие может включать в себя по меньшей мере одно из следующих: является ли блок блоком, сгенерированным в результате разбиения на основе квадродерева, имеет ли место превышение размера блока, формы блока и границы изображения, и превышает ли разность глубин дочернего узла и узла-родителя заранее определенное значение или равна ли она ему.
Например, заранее заданные условия могут включать в себя следующие: является ли блок блоком, сгенерированным в результате разбиения на основе квадродерева, и является ли блок блоком кодирования квадратной формы и размером не меньше заранее определенного размера. Если текущий блок сгенерирован путем разбиения на основе двоичного дерева или разбиения на основе троичного дерева, кандидата на слияние текущего блока получают на основе блока вышестоящего узла, включающего в себя текущий блок и удовлетворяющего заранее заданным условиям. Если блок вышестоящего узла, удовлетворяющий заранее заданным условиям отсутствует, кандидата на слияние текущего блока получают на основе текущего блока, блока, включающего в себя текущий блок и имеющего размер не меньше заранее определенного размера, или блока вышестоящего узла, включающего в себя текущий блок и имеющего разность глубин с текущим блоком, равную единице.
ФИГ. 22 - схема, иллюстрирующая пример получения кандидата на слияние на основе блока вышестоящего узла.
Блок 0 и блок 1 генерируют путем разбиения квадратного блока на основе двоичного дерева. Кандидата на слияние блока 0 и блока 1 можно получить на основе соседнего блока (т.е. по меньшей мере одного из А0, А1, А2, A3 и А4), определяемого на основе блока вышестоящего узла, включающего в себя блок 0 и блок 1. В результате, возможно применение одного и того же пространственного кандидата на слияние для блока 0 и блока 1.
Блок вышестоящего узла, включающий в себя блок 2 и блок 3, а также блок 4, можно сгенерировать путем разбиения квадратного блока на основе двоичного дерева. Кроме того, блок 2 и блок 3 можно сгенерировать путем разбиения блока в неквадратной форме на основе двоичного дерева. Кандидата на слияние блока 2, блока 3 и блока 4 в неквадратных формах можно получить на основе блока вышестоящего узла, включающего их в себя. Т.е. кандидата на слияние можно получить на основе соседнего блока (например, по меньшей мере одного из В0, В1, В2, В3 и В4), определяемого на основе положения, ширины/высоты или размера квадратного блока, включающего в себя блок 2, блок 3 и блок 4. В результате, возможно применение одного и того же пространственного кандидата на слияние для блока 2, блока 3 и блока 4.
Временного кандидата на слияние для блока в неквадратной форме можно получить на основе блока вышестоящего узла. Например, временного кандидата на слияние для блока 0 и блока 1 можно получить на основе квадратного блока, включающего в себя блок 0 и блок 1. Временного кандидата на слияние для блока 2, блока 3 и блока 4 можно получить на основе квадратного блока, включающего в себя блок 2, блок 3 и блок 4. При этом возможно применение одного и того же временного кандидата на слияние, полученного на основе временного соседнего блока, определенного на основе блока квадродерева.
Для блоков нижестоящего узла, входящих в блок вышестоящего узла, по меньшей мере пространственный кандидат на слияние или временный кандидат на слияние может быть одним и тем же. Например, возможно применение одного и того же списка кандидатов на слияние для блоков нижестоящего узла, входящих в блок вышестоящего узла.
В качестве альтернативы, по меньшей мере пространственного кандидата на слияние или временного кандидата на слияние можно получить на основе блока нижестоящего узла, а другого из них можно получить на основе блока вышестоящего узла. Например, пространственного кандидата на слияние для блока 0 и блока 1 можно получить на основе блока вышестоящего узла. При этом временного кандидата на слияние для блока 0 можно получить на основе блока 0, а временного кандидата на слияние для блока 1 можно получить на основе блока 1.
В качестве альтернативы, если число отсчетов, входящих в блок нижестоящего узла, меньше заранее заданного числа, кандидата на слияние получают на основе блока вышестоящего узла, включающего в себя отсчеты числом не меньше заранее заданного числа. Например, в по меньшей мере одном из следующих случаев, когда соблюдены следующие условия: случай, в котором имеет место по меньшей мере одно из следующего: блоки нижестоящего узла, сгенерированные путем по меньшей мере одного из следующего: разбиения на основе квадродерева, разбиения на основе двоичного дерева и разбиения на основе троичного дерева, меньше заранее заданного размера; случай, в котором имеет место по меньшей мере одно из следующего: блоки нижестоящего узла представляют собой неквадратный блок; случай, в котором блок вышестоящего узла не выходит за границу изображения; и случай, в котором ширина или высота блока вышестоящего узла не меньше заранее заданного значения, кандидата на слияние получают на основе блока вышестоящего узла в квадратной или неквадратной форме, включающего в себя отсчеты числом не менее заранее заданного числа (например, 64, 128 или 256 отсчетов). Кандидаты на слияние, полученные на основе блока вышестоящего узла, могут быть общими для блоков нижестоящего узла, входящих в блок вышестоящего узла.
Кандидата на слияние можно получить на основе любого из блоков нижестоящего узла, при этом можно задать применение прочими блоками нижестоящего узла этого кандидата на слияние. Блоки нижестоящего узла могут входить в блок заранее определенной формы или размера не меньше заранее определенного размера. Например, возможно применение для блоков нижестоящего узла одного и того же списка кандидатов на слияние, полученного на основе любого из блоков нижестоящего узла. Информацию для блока нижестоящего узла, являющегося основой для получения кандидата на слияние, можно сообщать посредством битового потока. Информация может представлять собой информацию об индексе, указывающую любой из блоков нижестоящего узла. В качестве альтернативы, блок нижестоящего узла, являющийся основой для получения кандидата на слияние, можно определять на основе по меньшей мере одного из следующего: положений, размеров, форм и порядка считывания блоков нижестоящего узла.
Информацию, указывающую то, является ли список кандидатов на слияние, полученный на основе блока вышестоящего узла, общим для блоков нижестоящего узла, можно сообщать посредством битового потока. На основе этой информации можно определять, отлична ли форма кандидата на слияние блока от заранее определенной формы, или меньше ли размер блока, полученного на основе блока вышестоящего узла, включающего в себя блок, заранее определенного размера. В качестве альтернативы, согласно правилу, заранее заданному в кодере и декодере, можно определять то, получен ли кандидат на слияние на основе блока вышестоящего узла.
Если в пределах заранее заданной области присутствует соседний блок, примыкающий к текущему блоку, определяют, что этот соседний блок непригоден в качестве пространственного кандидата на слияние. Заранее заданная область может представлять собой область параллельной обработки, заданную для параллельной обработки нескольких блоков. Область параллельной обработки может именоваться «область оценки слияния (ООС, англ. merge estimation region (MER)). Например, если соседний блок, примыкающий к текущему блоку, входит в ту же область оценки слияния, что и текущий блок, то определяют, что соседний блок непригоден. Можно выполнить операцию сдвига для определения того, входят ли текущий блок и соседний блок в одну и ту же область оценки слияния. В частности, в зависимости от того, тождественно ли значение, определенное путем сдвига положения верхнего левого опорного отсчета текущего блока, значению, определенному путем сдвига положения верхнего левого опорного отсчета соседнего блока, можно определить, входят ли текущий блок и соседний блок в одну и ту же область оценки слияния.
ФИГ. 23 - схема, иллюстрирующая пример определения пригодности пространственного соседнего блока по области оценки слияния.
На ФИГ. 23 показана, что форма области оценки слияния представляет собой N×2N.
Кандидата на слияние блока 1 можно получить на основе пространственного соседнего блока, примыкающего к блоку 1. В число пространственных соседних блоков могут входить В0, В1, В2, В3 и В4. В данном случае можно определить, что пространственные соседние блоки В0 и В3, входящие в ту же область оценки слияния, что и блок 1 непригодны в качестве кандидатов на слияние. Следовательно, кандидата на слияние блока 1 можно получить на основе по меньшей мере одного из пространственных соседних блоков В1, В2, и В4, за исключением пространственных соседних блоков В0 и В3.
Кандидата на слияние блока 3 можно получить на основе пространственного соседнего блока, примыкающего к блоку 3. В число пространственных соседних блоков могут входить С0, С1, С2, С3 и С4. В данном случае можно определить, что пространственный соседний блок С0, входящий в ту же область оценки слияния, что и блок 3 непригоден в качестве кандидата на слияние. Следовательно, кандидата на слияние блока 3 можно получить на основе по меньшей мере одного из пространственных соседних блоков С1, С2, С3 и С4, за исключением пространственного соседнего блока С0.
На основе по меньшей мере одного из следующего: положения, размера, ширины и высоты области оценки слияния, можно получить кандидата на слияние блока, входящего в область оценки слияния. Например, кандидата на слияние нескольких блоков, входящих в область оценки слияния, можно получить на основе по меньшей мере одного из следующих: пространственного соседнего блока и временного соседнего блока, определяемых на основе по меньшей мере одного из следующего: положения, размера, ширины и высоты области оценки слияния. Один и тот же кандидат на слияние может быть общим для блоков, входящих в область оценки слияния.
ФИГ. 24 - схема, иллюстрирующая пример, в котором кандидата на слияние получают на основе области оценки слияния.
Если в область оценки слияния входят несколько единиц кодирования, кандидата на слияние для этих нескольких единиц кодирования можно получить на основе области оценки слияния. Т.е. путем применения области оценки слияния в качестве единицы кодирования, кандидата на слияние можно получить на основе положения, размера или ширины/высоты области оценки слияния.
Например, кандидата на слияние единицы 0 кодирования (ЕК0) и единицы 1 кодирования (ЕК1), и та и другая из которых имеют размер (n/2)×N (в данном случае n - это N/2) и входят в область оценки слияния размером (N/2)×N, можно получить на основе области оценки слияния. Т.е. кандидата на слияние для единицы 0 кодирования и единицы 1 кодирования можно получить на основе по меньшей мере одного из следующих: соседних блоков С0, С1, С2, С3 и С4, примыкающих к области оценки слияния.
Например, кандидата на слияние для единицы 2 кодирования (ЕК2), единицы 3 кодирования (ЕКЗ), единицы 4 кодирования (ЕК4) и единицы 5 кодирования (ЕК5) размером n×n, входящих в область оценки слияния размером N×N, можно получить на основе области оценки слияния. Т.е. кандидата на слияние для единицы 2 кодирования, единицы 3 кодирования, единицы 4 кодирования и единицы 5 кодирования можно получить на основе по меньшей мере одно из соседних блоков С0, С1, С2, С3 и С4, примыкающих к области оценки слияния.
Форма области оценки слияния может быть квадратной или неквадратной. Например, можно определить, что единица кодирования (или единица предсказания) в квадратной форме или единица кодирования (или единица предсказания) в неквадратной форме является областью оценки слияния. Соотношение ширины и высоты области оценки слияния можно ограничить так, чтобы оно не выходило за заранее определенный диапазон. Например, область оценки слияния не может иметь неквадратную форму с соотношением ширины и высоты, превышающим два, или неквадратную форму с соотношением ширины и высоты менее 1/2. Т.е. форма неквадратной области оценки слияния может представлять собой 2N×N или N×2N. Информацию о пределе соотношения ширины и высоты можно сообщать посредством битового потока. В качестве альтернативы, предел соотношения ширины и высоты может быть заранее задан в кодере и декодере.
Информацию, указывающую форму области оценки слияния, и/или информацию, указывающую размер области оценки слияния, можно сообщать посредством битового потока. Например информацию, указывающую форму области оценки слияния, и/или информацию, указывающую размер области оценки слияния, можно сообщать посредством заголовка сектора, заголовка группы плиток, параметра изображения или параметра последовательности.
Форму области оценки слияния или размер области оценки слияния можно обновлять на уровне последовательности, на уровне изображения, на уровне сектора, на уровне группы плиток, на уровне плитки или на уровне блока (ЕДК). Если форма области оценки слияния или размер области оценки слияния отличны от формы или размера предыдущей единицы, информацию, указывающую новую форму области оценки слияния или новый размер области оценки слияния сообщают посредством битового потока.
По меньшей мере один блок может входить в область оценки слияния. Форма блока, входящего в область оценки слияния, может быть квадратной или неквадратной. Можно определить максимальное число или минимальное число блоков, которые область оценки слияния может включать в себя. Например, в область оценки слияния могут входить три, четыре или более единицы кодирования. Определение можно осуществлять на основе информации, сообщаемой посредством битового потока. В качестве альтернативы, максимальное число или минимальное число блоков, которые область оценки слияния может включать в себя, может быть заранее задано в кодере и декодере.
В случае, когда число блоков, входящих в область оценки слияния меньше максимального числа, и/или в случае, когда их число больше минимального числа, можно разрешить параллельную обработку блоков. Например, если число блоков, входящих в область оценки слияния, не больше максимального числа или если число блоков, входящих в область оценки слияния, не меньше минимального числа, кандидата на слияние блоков получают на основе области оценки слияния. Если число блоков, входящих в область оценки слияния, больше максимального числа или если число блоков, входящих в область оценки слияния, меньше минимального значения, кандидата на слияние для каждого из блоков получают на основе размера, положения, ширины или высоты каждого из блоков.
Информация, указывающая форму области оценки слияния, может включать в себя однобитовый флаг. Например, синтаксическая конструкция "isrectagular_mer_flag" может указывать на то, что форма области кандидата на слияние является квадратной или неквадратной. Значение isrectagular_mer_flag, равное единице, может указывать на то, что форма области оценки слияния является неквадратной, а значение isrectagular_mer_flag, равное нулю, может указывать на то, что форма области оценки слияния является квадратной.
Если информация указывает на то, что форма области оценки слияния является неквадратной, то сообщают информацию, указывающую по меньшей мере одно из следующего: ширину, высоту и соотношение ширины и высоты области оценки слияния, посредством битового потока. На ее основе можно определить размер и/или форму области оценки слияния.
Далее будет подробно раскрыт способ межкадрового предсказания на основе аффинной модели движения по одному из вариантов осуществления настоящего раскрытия.
Движение объекта можно отнести к одной из следующих категорий: поступательное движение, вращательное движение и аффинное движение. Поступательное движение представляет собой линейное перемещение объекта. Вращательное движение представляет собой вращение объекта. Аффинное движение означает то, что перемещение, вращение или смещения являются разными для каждой части объекта.
ФИГ. 25 - схема, иллюстрирующая модель движения.
ФИГ. 25 (а) изображает модель поступательного движения. ФИГ. 25 (b) -модель вращательного движения. ФИГ. 25 (с) изображает модель аффинного движения.
В модели поступательного движения линейное движение объекта может характеризовать двумерная координата и/или вектор движения (MVx, MVy).
В модели вращательного движения движение объекта может характеризовать заранее определенный угол поворота.
При этом, поскольку в модели аффинного движения движение объекта является нелинейным, то по меньшей мере одно из следующего: перемещение, вращение или смещение могут быть разными для каждой части объекта. В модели аффинного движения, движение объекта можно охарактеризовать на основе перемещения, вращения или коррекции смещения для каждой части объекта. Например, модель аффинного движения можно представить путем применения заранее определенного параметра (a~f), как в следующем Уравнении 1.
[Уравнение 1]
x
y
В Уравнении 1 x и y представляют положение отсчета, входящего в текущий блок, а x' и y' представляют положение отсчета, входящего в опорный блок. Аффинный вектор движения (V, V), представляющий разность положений отсчета в текущем блоке и отсчета опорного блока, можно представить как в Уравнении 2.
[Уравнение 2]
x
y
Аффинный вектор движения (V, V) можно получить, как в следующем Уравнении 3, путем применения Уравнения 1 и Уравнения 2.
[Уравнение 3]
Сложное движение объекта можно выразить посредством модели аффинного движения. При этом, в случае модели аффинного движения, возможно уменьшение эффективности кодирования/декодирования из-за того, что количество параметров, которые нужно кодировать для выражения движения объекта, больше, чем в случае модели поступательного движения или модели вращательного движения. Устранить данный недостаток позволяет применение вектора движения угла текущего блока при выполнении предсказания движения и/или компенсации движения на основе модели аффинного движения. А именно, после разбиения текущего блока на множество подблоков, можно получить вектор движения каждого полученного в результате разбиения подблока путем применения множества векторов движения угла. Далее будет подробно раскрыт способ аффинного межкадрового предсказания с использованием векторов движения угла.
ФИГ. 26 - схема, иллюстрирующая аффинную модель движения с использованием векторов движения угла.
В модели аффинного движения возможно применение вектора движения по меньшей мере одного из следующего: левого верхнего угла, правого верхнего угла, левого нижнего угла или правого нижнего угла текущего блока. В одном примере предсказание движения и/или компенсацию движения для текущего блока можно выполнить путем применения вектора v0 движения на левом верхнем углу текущего блока и вектора v1 движения на правом верхнем углу текущего блока. В качестве альтернативы, предсказание движения и/или компенсацию движения для текущего блока можно выполнить путем применения вектора v0 движения на левом верхнем углу текущего блока, вектора v1 движения на правом верхнем углу текущего блока и вектора v2 движения на левом нижнем углу текущего блока.
Применение трех векторов движения угла позволяет выразить превращение текущего блока в прямоугольник с двумя сторонами, образованными за счет соединения пикселей в опорном изображении, на что указывают три вектора движения угла текущего блока. Иными словами, можно оценить прямоугольник с двумя сторонами, образованными за счет соединения пикселей в опорном изображении, на что указывают три вектора движения угла, как опорный блок текущего блока.
Применение трех векторов движения угла позволяет получить вектор движения каждого подблока в текущем блоке из следующего Уравнения 4.
[Уравнение 4]
В Уравнении 4 w и h представляют ширину и высоту текущего блока соответственно, х и у представляют положение подблока. Положением подблока может быть положение заранее определенного отсчета в подблоке. Заранее определенным отсчетом может быть левый верхний отсчет, левый нижний отсчет, правый верхний отсчет или центральный отсчет.
В случае применения трех векторов движения угла, вектор движения подблока получают на основе параметров вектора движения общим числом 6. Следовательно, аффинное межкадровое предсказание с применением трех векторов движения угла может именоваться «6-параметровый режим».
Применение двух векторов движения угла позволяет выразить превращение текущего блока в прямоугольник со стороной, образованной за счет соединения пикселей в опорном изображении, на что указывают два вектора движения угла текущего блока. Иными словами, можно оценить прямоугольник со стороной, образованной за счет соединения пикселей в опорном изображении, на что указывают два вектора движения угла текущего блока, как опорный блок текущего блока.
Как и в примере на ФИГ. 26, Уравнение 5 устанавливает связь между вектором движения левого нижнего угла, вектора движения левого верхнего угла и вектором движения правого верхнего угла.
[Уравнение 5]
На основе Уравнения 5, Уравнение 4 можно изменить в соответствии со следующим Уравнением 6.
[Уравнение 6]
Применение двух векторов движения угла позволяет определять вектор движения каждого подблока в текущем блоке на основе Уравнения 6.
Применение двух векторов движения угла позволяет получить вектор движения подблока на основе параметров вектора движения общим числом 4. Следовательно, аффинное межкадровое предсказание с применением двух векторов движения угла может именоваться «4-параметровый режим».
ФИГ. 27 - схема, иллюстрирующая пример, в котором вектор движения определяют в единице подблока.
Текущий блок можно разбить на множество подблоков, при этом вектор движения каждого подблока можно получить на основе векторов движения угла. На основе вектора движения подблока можно выполнять компенсацию движения для подблока.
Число подблоков в текущем блоке можно определять на основе размера и/или формы текущего блока. В этом случае размер текущего блока может быть выражен в виде ширины, высоты, суммы ширины и высоты или произведения ширины и высоты. Форма текущего блока может отражать по меньшей мере одно из следующего: является ли текущий блок квадратным, является ли текущий блок неквадратным, больше ли ширина, чем высота, или соотношение ширины и высоты.
В одном примере, если размер текущего блока меньше порогового значения, текущий блок можно разбить на подблоки первого размера. При этом, если размер текущего блока больше порогового значения, текущий блок можно разбить на подблоки второго размера. В этом случае пороговое значение может представлять собой целое число, например, 8, 16, 32 или 64. Первый размер может составлять 4×4, 8×8 или 16×16, а второй размер может представлять собой значение больше первого размера. В качестве конкретного примера, если размер текущего блока составляет 16×16, текущий блок можно разбить на четыре подблока размером 8×8. При этом, если размер текущего блока больше 16×16 (например, 32×32 или 64×64), текущий блок можно разбить на подблоки размером 16×16.
В качестве альтернативы, возможно применение подблоков фиксированного размера независимо от размера текущего блока. В этом случае число подблоков, входящих в текущий блок, может быть разным в зависимости от размера текущего блока.
В качестве альтернативы, информацию, указывающую размер подблока, можно сообщать посредством битового потока. Информацию можно сообщать на уровне изображения, на уровне сектора или на уровне блока.
Информацию для определения по меньшей мере одно из следующего: положения угла, применяемого для аффинного межкадрового предсказания, или числа параметров вектора движения можно сообщать посредством битового потока. В одном примере информацию, указывающую, составляет ли число параметров вектора движения 4 или 6, можно сообщать посредством битового потока. Если информация указывает, что число параметров вектора движения составляет 4, компенсацию движения можно выполнить путем применения вектора движения левого верхнего угла и вектора движения правого верхнего угла. Если информация указывает, что число параметров вектора движения составляет 6, компенсацию движения можно выполнить путем применения вектора движения левого верхнего угла, вектора движения правого верхнего угла и вектора движения левого нижнего угла.
В качестве альтернативы, информацию для обозначения положения трех из четырех углов текущего блока или информацию для обозначения положения двух из четырех углов текущего блока можно сообщать посредством битового потока.
В другом примере на основе по меньшей мере одного из следующего: размера, формы или режима межкадрового предсказания текущего блока, можно определять число параметров вектора движения. В этом случае размер текущего блока может быть выражен в виде ширины, высоты, суммы ширины и высоты или произведения ширины и высоты. Форма текущего блока может отражать по меньшей мере одно из следующего: является ли текущий блок квадратным, является ли текущий блок неквадратным, больше ли ширина, чем высота, или соотношение ширины и высоты. Режим межкадрового предсказания может включать в себя режим слияния и/или режим улучшенного предсказания вектора движения (AMVP).
В одном примере число параметров вектора движения можно определять по-разному, в зависимости от того, является ли текущий блок квадратным. В одном примере, если текущий блок является квадратным (например, N×N), аффинное предсказание можно выполнить путем применения трех векторов движения угла. Если текущий блок является неквадратным (например, N×2N или 2N×N), аффинное предсказание можно выполнить путем применения двух векторов движения угла.
В качестве альтернативы, число параметров вектора движения можно определять в зависимости от результата сравнения размера текущего блока с пороговым значением. В одном примере, если размер текущего блока больше порогового значения, аффинное предсказание можно выполнить путем применения трех векторов движения угла. Если размер текущего блока меньше порогового значения, аффинное предсказание можно выполнить путем применения двух векторов движения угла. Пороговое значение может представлять собой значение, заранее заданное в кодере/декодере. В качестве альтернативы, информацию, отражающую пороговое значение, можно сообщать посредством битового потока. Информацию можно сообщать на уровне последовательности, на уровне изображения, на уровне сектора или на уровне блока.
В качестве альтернативы, вектор движения левого верхнего угла можно применять по умолчанию, при этом решение о применении вектора движения правого верхнего угла и/или применении вектора движения левого нижнего угла можно принимать исходя из ширины и/или высоты текущего блока. В одном примере, решение о применении вектора движения правого верхнего угла можно принимать в зависимости от того, не меньше ли ширина текущего блока, чем пороговое значение. Кроме того, решение о применении вектора движения левого нижнего угла можно принимать в зависимости от того, не меньше ли ширина текущего блока, чем пороговое значение.
В другом примере положение угла можно определять на основе по меньшей мере одного из следующего: размера, формы или режима межкадрового предсказания текущего блока.
ФИГ. 28 - схема, иллюстрирующая пример, в котором положение угла определяют на основе формы текущего блока.
Если текущий блок имеет форму (N×2N), при которой высота больше ширины, аффинное предсказание можно выполнить путем применения вектора движения левого верхнего угла и вектора движения левого нижнего угла (см. ФИГ. 28 (а)).
Если текущий блок имеет форму (2N×N), при которой ширина больше высоты, аффинное предсказание можно выполнить путем применения вектора движения левого верхнего угла и вектора движения правого верхнего угла (см. ФИГ. 28 (b)).
В вышеуказанных вариантах осуществления вектор движения угла именуется «аффинный вектор». Кроме того, каждый аффинный вектор на множестве углов можно идентифицировать путем прибавления префикса в виде ординального числа к аффинному вектору. В одном примере первый аффинный вектор представляет собой аффинный вектор первого угла, второй аффинный вектор представляет собой аффинный вектор второго угла, а третий аффинный вектор представляет собой аффинный вектор третьего угла. Кроме того, вектор движения каждого подблока, полученный на основе аффинных векторов, именуется «аффинный вектор движения».
Если компенсацию движения для текущего блока (например, блока кодирования или блока предсказания) выполняют на основе аффинного вектора движения, данный режим можно определить как аффинный межкадровый режим.
Определить то, разрешен ли аффинный межкадровый режим, можно на основе размера и/или формы текущего блока. В одном примере, если размер текущего блока меньше порогового значения, аффинный межкадровый режим может не быть разрешен. Или же аффинный межкадровый режим может не быть разрешен, если текущий блок является неквадратным. В одном конкретном примере, аффинный межкадровый режим может быть разрешен, только если текущий блок является квадратным и его размер не меньше 16×16.
Информацию, указывающую то, применяют ли аффинный межкадровый режим к текущему блоку, можно сообщать посредством битового потока. Информацию можно сообщать, если режим кодирования текущего блока определен как межкадровый. Если аффинный межкадровый режим не разрешен для текущего блока, кодирование данной информации можно не выполнять. Информация может представлять собой 1-битовый флаг. В одном конкретном примере, если флаг имеет значение 1, это означает, что аффинный межкадровый режим применяют, а если флаг имеет значение 0, это означает, что аффинный межкадровый режим не применяют. В качестве альтернативы, информация может представлять собой индекс, указывающий любую из множества моделей движения.
Далее будет подробно раскрыт процесс компенсации движения в аффинном межкадровом режиме.
ФИГ. 29 - принципиальная схема процесса компенсации движения в аффинном межкадровом режиме.
На этапе S2910 можно определить по меньшей мере одно из следующего: положение угла для аффинного межкадрового режима или число параметров вектора движения угла. Информацию для определения по меньшей мере одно из следующего: положения угла или числа векторов движения угла можно сообщать посредством битового потока. В качестве альтернативы, на основе по меньшей мере одного из следующего: размера, формы или режима межкадрового предсказания текущего блока, можно определить по меньшей мере одно из следующего: положение угла или число векторов движения угла.
На этапе S2920 можно получить аффинный вектор на каждом углу на основе вектора движения соседнего блока. А именно, аффинный вектор на каждом углу можно получить на основе аффинного вектора соседнего блока или вектора поступательного движения соседнего блока.
ФИГ. 30 и ФИГ. 31 изображают схему, иллюстрирующую пример получения аффинного вектора текущего блока на основе вектора движения соседнего блока.
ФИГ. 30 иллюстрирует 4-параметровый режим, а ФИГ. 31 - 6-параметровый режим. На ФИГ. 30 (а) представлен 4-параметровый режим, в котором применяют аффинный вектор левого верхнего угла и аффинный вектор правого верхнего угла, а на ФИГ. 30 (b) - 4-параметровый режим, в котором применяют аффинный вектор левого верхнего угла и аффинный вектор левого нижнего угла.
Аффинный вектор угла можно получить на основе вектора движения соседнего блока, примыкающего к данному углу. В этом случае соседний блок может включать в себя по меньшей мере один из следующих: соседний блок, примыкающий к верху угла, соседний блок, примыкающий клевой стороне угла или соседний блок, примыкающий к углу по диагонали.
В примере на ФИГ. 30 (а), ФИГ. 30 (b) и ФИГ. 31, аффинный вектор левого верхнего угла можно получить на основе по меньшей мере одного из соседних блоков А, В или С, примыкающего к левому верхнему углу. Аффинный вектор правого верхнего угла можно получить на основе по меньшей мере одного из соседних блоков D или Е, примыкающих к правому верхнему углу. Аффинный вектор левого нижнего угла можно получить на основе по меньшей мере одного из соседних блоков F или G, примыкающих клевому нижнему углу.
Выполнив поиск соседних блоков в заранее определенном порядке, можно получить аффинный вектор угла на основе вектора движения соседнего блока, который будет первым определен как пригодный. В примере на ФИГ. 30 (а), ФИГ. 30 (b) и ФИГ. 31, аффинный вектор левого верхнего угла можно получить на основе вектора движения соседнего блока, который будет первым определен как пригодный в случае последовательного поиска по соседним блокам А, В и С, примыкающим к левому верхнему углу. Аффинный вектор правого верхнего угла можно получить на основе вектора движения соседнего блока, который будет первым определен как пригодный в случае последовательного поиска по соседним блокам D и Е, примыкающим к правому верхнему углу. Аффинный вектор левого нижнего угла можно получить на основе вектора движения соседнего блока, который будет первым определен как пригодный в случае последовательного поиска по соседним блокам F и G, примыкающим клевому нижнему углу.
В качестве альтернативы, информацию для обозначения любого из соседних блоков, примыкающих к каждому из углов, можно сообщать посредством битового потока. В одном примере информацию для идентификации одного из соседних блоков, примыкающих к левому верхнему углу, информацию для идентификации одного из соседних блоков, примыкающих к правому верхнему углу, или информацию для идентификации одного из соседних блоков, примыкающих к левому нижнему углу, можно сообщать посредством битового потока. Аффинный вектор угла можно получить на основе вектора движения соседнего блока, обозначенного посредством данной информации.
Аффинный вектор можно получить на основе не-примыкающего блока, который не примыкает к углу. He-примыкающий блок может включать в себя по меньшей мере один из следующих: блок на той же линии, что и блок, примыкающий к данному углу, или блок, не примыкающий к данному углу, из числа блоков, примыкающих к текущему блоку. В одном примере в примере на ФИГ. 30 и ФИГ. 31 аффинный вектор левого верхнего угла можно получить на основе какого-либо блока, за исключением соседних блоков А, В и С, (например, соседних блоков D, Е, F или G) или блока на той же линии, что и соседний блок А, В или С.
Аффинный вектор угла можно принять тождественным вектору движения соседнего блока. В качестве альтернативы, вектор движения соседнего блока можно принять в качестве значения предсказания вектора движения, а аффинный вектор угла можно получить путем прибавления значения разности векторов движения к значению предсказания вектора движения. Значение разности векторов движения, отражающее разность аффинного вектора и значения предсказания вектора движения, можно сообщать посредством битового потока.
В другом примере второй аффинный вектор можно получить на основе кодирования разности первого аффинного вектора и второго аффинного вектора. Для этого, вектор разности, представляющий разность второго аффинного вектора и первого аффинного вектора, можно закодировать посредством битового потока. Декодер выполнен с возможностью получения второго аффинного вектора путем прибавления вектора разности, декодированного посредством битового потока, к первому аффинному вектору. Применение трех аффинных векторов трех углов позволяет получить третий аффинный вектор на основе кодирования разности третьего аффинного вектора и первого аффинного вектора или кодирования разности третьего аффинного вектора и второго аффинного вектора.
В другом примере, если значение аффинного вектора первого угла тождественно значению аффинного вектора второго угла, или если для получения аффинного вектора первого угла и аффинного вектора второго угла применяют один и тот же соседний блок, аффинный вектор второго угла можно получить на основе блока, который не примыкает ко второму углу. В одном примере в примере на ФИГ. 30 (а), если аффинный вектор левого верхнего угла и аффинный вектор правого верхнего угла тождественны, аффинный вектор правого верхнего угла можно получить на основе вектора движения блока F или G, который не примыкает к правому верхнему углу.
В качестве альтернативы, если значение аффинного вектора первого угла тождественно значению аффинного вектора второго угла, или если соседний блок, применяемый для получения аффинного вектора первого угла, и соседний блок, применяемый для получения аффинного вектора второго угла, являются одним и тем же блоком, аффинный вектор второго угла можно получить на основе аффинного вектора первого угла. А именно, второй аффинный вектор можно получить путем прибавления значения смещения к первому аффинному вектору или вычитания его из него, либо путем масштабирования первого аффинного вектора на основе заранее заданного коэффициента масштабирования.
Информацию, указывающую то, являются ли аффинные векторы тождественными, можно сообщать посредством битового потока. Информация может включать в себя по меньшей мере одно из следующего: флаг, указывающий то, существуют ли аффинные векторы, идентичные друг другу, или индекс для идентификации положения углов, чьи аффинные векторы тождественны друг другу.
Число и/или положение соседних блоков-кандидатов, применяемых для получения аффинного вектора, могут быть разными в зависимости от формы текущего блока. В одном примере конструкция блоков-кандидатов для получения аффинного вектора угла может быть разной в зависимости от формы единицы предсказания (от того, является ли она квадратной или неквадратной). В одном примере, если текущий блок является квадратным, как в примере на ФИГ. 30 (а), аффинный вектор левого верхнего угла можно получить на основе любого из соседних блоков А, В или С. При этом, если текущий блок является неквадратным, как в примере на ФИГ. 30 (b), аффинный вектор левого верхнего угла можно получить на основе любого из соседних блоков А, В или F.
По одному из вариантов осуществления настоящего раскрытия, можно задать аффинный режим слияния для получения аффинных векторов текущего блока. Аффинный режим слияния представляет собой способ определения информации о движении кандидата на слияние, как информации текущего блока. В этом случае информация о движении может включать в себя по меньшей мере одно из следующего: вектор движения, индекс опорного изображения, список опорных изображений или направление предсказания. Кандидат на слияние может включать в себя по меньшей мере одного из следующих: пространственного кандидата на слияние или временного кандидата на слияние. Пространственный кандидат на слияние представляет собой кандидата на слияние, полученного на основе блока, входящего в то же изображение, что и текущий блок, а временной кандидат на слияние -кандидата на слияние, полученного на основе блока, входящего не в то же изображение, что и текущий блок.
ФИГ. 32 - схема, иллюстрирующая блоки-кандидаты для получения пространственного кандидата на слияние.
Пространственного кандидата на слияние можно получать на основе по меньшей мере одного из следующих: соседнего блока, примыкающего к текущему блоку, или блока на той же линии, что и соседний блок. Блок на той же линии, что и соседний блок, может включать в себя по меньшей мере один из следующих: блок на той же горизонтальной линии, блок на той же вертикальной линии или блок на той же диагональной линии, что и соседний блок, примыкающий к текущему блоку.
Кандидат на слияние, полученный на основе блока с информацией об аффинном движении, может именоваться «унаследованный кандидат на слияние». Унаследованного кандидата на слияние можно получить на основе пространственного соседнего блока или временного соседнего блока текущего блока, а полученного унаследованного кандидата на слияние можно добавить в список кандидатов на слияние. В качестве альтернативы, в список кандидатов на слияние можно добавить только унаследованного кандидата на слияние, который будет первым получен в результате поиска в заранее определенном порядке в левых соседних блоках текущего блока, и только унаследованного кандидата на слияние, который будет первым получен в результате поиска в заранее определенном порядке в верхних соседних блоках текущего блока. В этом случае в число левых соседних блоков могут входить А0 и A3, а в число верхних соседних блоков могут входить А1, А2 и А4.
Информацию о движении унаследованного кандидата на слияние можно получать на основе информации о движении блока-кандидата. В одном примере индекс опорного изображения и направление предсказания унаследованного кандидата на слияние можно принять такими же, что и у блока-кандидата. Аффинные векторы унаследованного кандидата на слияние можно получить на основе аффинных векторов блока-кандидата. В этом случае аффинные векторы унаследованного кандидата на слияние могут включать в себя по меньшей мере один из следующих: аффинный вектор левого верхнего угла, аффинный вектор правого верхнего угла или аффинный вектор левого нижнего угла в зависимости от числа параметров. В этом случае возможно применение разных аффинных векторов углов блока-кандидата для получения аффинных векторов унаследованного кандидата на слияние в зависимости от того, примыкает ли блок-кандидат к границе ЕДК. В одном примере, если текущий блок и блок-кандидат принадлежат к одной и той же ЕДК, аффинные векторы кандидата на слияние можно получить на основе аффинного вектора левого верхнего угла блока-кандидата и аффинного вектора правого верхнего угла блока-кандидата. При этом, если текущий блок и блок-кандидат принадлежат к разным ЕДК, аффинные векторы кандидата на слияние можно получить на основе аффинного вектора левого нижнего угла блока-кандидата и аффинного вектора правого нижнего угла блока-кандидата.
Далее сконструированного кандидата на слияние можно добавить в список кандидатов на слияние. Сконструированного кандидата на слияние можно сгенерировать путем комбинирования информации о поступательном движении множества блоков. В одном примере сконструированного кандидата на слияние можно сгенерировать путем комбинирования двух или более блоков-кандидатов на ФИГ. 32. При конструировании сконструированного кандидата на слияние блоки-кандидаты можно комбинировать для получения аффинного вектора угла на основе вектора поступательного движения соседнего блока, примыкающего к углу. В одном примере, в случае 6-параметрового режима, сконструированного кандидата на слияние можно сгенерировать путем комбинирования блока, примыкающего к левому верхнему углу текущего блока, блока, примыкающего к правому верхнему углу текущего блока, и блока, примыкающего к левому нижнему углу текущего блока.
Приоритет комбинаций для генерирования сконструированного кандидата на слияние может быть заранее задан в кодере и декодере. Сконструированного кандидата на слияние можно сгенерировать путем комбинирования множества блоков согласно приоритету комбинаций. В этом случае можно определить, что комбинация блоков, в которой опорное изображение не идентично, непригодна в качестве сконструированного кандидата на слияние.
Когда сконструированный кандидат на слияние будет выбран, вектор поступательного движения каждого блока в составе сконструированного кандидата на слияние можно принять в качестве аффинного вектора примыкающего к нему угла.
При этом аффинного кандидата на слияние можно получить путем применения одного или нескольких временных соседних блоков, принадлежащих к изображению, отличному от текущего изображения. А именно, в случае кодирования временного соседнего блока с использованием аффинного межкадрового предсказания, унаследованного кандидата на слияние можно получить на основе временного соседнего блока.
На основе соседних блоков, примыкающих к текущему блоку, можно построить первый список кандидатов на слияние, при этом, если число кандидатов на слияние, входящих в первый список кандидатов на слияние, меньше максимального числа, в первый список кандидатов на слияние можно добавить кандидата на слияние, входящего во второй список кандидатов на слияние. А именно, в первый список кандидатов на слияние можно добавить кандидата на слияние, не входящего в первый список кандидатов на слияние, из числа кандидатов на слияние, входящих во второй список кандидатов на слияние.
В этом случае первый список кандидатов на слияние может включать в себя унаследованного кандидата на слияние и/или сконструированного кандидата на слияние, полученных на основе соседних блоков, примыкающих к текущему блоку. Второй список кандидатов на слияние может включать в себя унаследованного кандидата на слияние и/или сконструированного кандидата на слияние, полученных на основе блоков, которые не примыкают к текущему блоку. В качестве альтернативы, второй список кандидатов на слияние может включать в себя кандидата на слияние, полученного на основе информации об аффинном движении блока, закодированного/декодированного с использованием аффинного межкадрового предсказания прежде, чем текущий блок. Построение второго списка кандидатов на слияние и добавление кандидата на слияние, входящего во второй список кандидатов на слияние, в первый список кандидатов на слияние могут происходить как в раскрытом выше варианте осуществления.
Кодер выбирает кандидата на слияние (например, пространственного кандидат на слияние и временного кандидата на слияние) с эффективностью кодирования, самой высокой из кандидатов на слияние, входящих в список кандидатов на слияние, и сообщает информацию, указывающую выбранного кандидата на слияние. Декодер может выбрать кандидата на слияние на основе информации, сообщаемой посредством битового потока, и получить информацию о движении текущего блока на основе информации о движении выбранного кандидата на слияние. А именно, информацию о движении текущего блока можно принять тождественной информации о движении кандидата на слияние.
ФИГ. 33 изображает пример получения аффинных векторов текущего блока на основе аффинных векторов блока-кандидата.
Как раскрыто выше, аффинные векторы кандидата на слияние можно получать на основе аффинных векторов блока, закодированного с использованием аффинного межкадрового предсказания. Следовательно, можно рассмотреть возможность выбора кандидата на слияние для получения аффинных векторов текущего блока на основе аффинных векторов блока-кандидата.
В примере на ФИГ. 33, в случае применения А4 в аффинном режиме слияния, можно понять, что по меньшей мере один из аффинных векторов v'0, v'1 или v'2 текущего блока, получают на основе по меньшей мере одного из аффинных векторов v0, v1 или v2 блока, соответствующего А4.
В качестве альтернативы, можно понять, что по меньшей мере один из аффинных векторов v'0, v'1 или v'2 текущего блока получают на основе по меньшей мере одного из аффинных векторов v0, v1 или v2 частичной области, соответствующей блоку А4. В этом случае частичная область может представлять собой сектор, плитку, блок дерева кодирования (БДК, англ. coding tree block (СТВ)), вертикальный ряд БДК, единицу кодирования или ЕП, включающие в себя положение А4 (например, (-1, -1)).
То, разрешен ли аффинный режим слияния, можно определить в зависимости от размера и/или формы текущего блока. В одном примере аффинный режим слияния может быть разрешен, только если размер текущего блока больше порогового значения. Пороговое значение может представлять собой фиксированное значение, заранее заданное в кодере и декодере. В качестве альтернативы, информацию для определения порогового значения можно сообщать посредством битового потока.
Применение аффинного режима слияния для текущего блока можно определить на основе флага, указывающего применение аффинного режима слияния. Флаг можно получить на основе по меньшей мере одного из следующего: размера, формы, глубины разбиения, типа разбиения или типа компонента текущего блока. В качестве альтернативы, флаг можно закодировать и сообщить посредством битового потока.
Если флаг указывает, что аффинный режим слияния не применяют, аффинные векторы текущего блока можно получить путем прибавления значения разности аффинных векторов к значению предсказания аффинного вектора.
Значение предсказания аффинного вектора можно принять тождественным аффинному вектору вектора-кандидата движения. Вектор-кандидат движения можно получить на основе по меньшей мере одного из следующих: соседнего блока или не-примыкающего блока, закодированных с использованием аффинного межкадрового предсказания. В одном примере вектор-кандидат движения можно получить на основе блока, закодированного с использованием аффинного межкадрового предсказания, поиск по которому осуществляют первым во время поиска по левым соседним блокам текущего блока в заранее определенном порядке. Кроме того, вектор-кандидат движения можно получить на основе блока, закодированного с использованием аффинного межкадрового предсказания, поиск по которому осуществляют первым во время поиска по верхним соседним блокам текущего блока в заранее определенном порядке. В этом случае в число левых соседних блоков могут входить А0 и A3, а в число верхних соседних блоков могут входить А1, А2 и А4.
Аффинные векторы вектора-кандидата движения можно получить на основе аффинных векторов блока-кандидата. В этом случае в число аффинных векторов вектора-кандидат движения могут входить по меньшей мере один из следующих: аффинный вектор левого верхнего угла, аффинный вектор правого верхнего угла или аффинный вектор левого нижнего угла в зависимости от числа параметров. Аффинные векторы углов блока-кандидата, применяемые для получения аффинных векторов вектора-кандидата движения, можно определять по-разному в зависимости от того, примыкает ли блок-кандидат к границе ЕДК. В одном примере, если текущий блок и блок-кандидат принадлежат к одной и той же ЕДК, аффинные векторы вектора-кандидата движения можно получить на основе аффинного вектора левого верхнего угла блока-кандидата и аффинного вектора правого верхнего угла блока-кандидата. При этом, если текущий блок и блок-кандидат принадлежат к разным ЕДК, аффинные векторы вектора-кандидата движения можно получить на основе аффинного вектора левого нижнего угла блока-кандидата и аффинного вектора правого нижнего угла блока-кандидата.
Информацию для обозначения любого из множества векторов-кандидатов движения можно сообщать посредством битового потока. Если вектор-кандидат движения выбирают по данной информации, аффинные векторы выбранного вектора-кандидата движения можно принять в качестве значения предсказания аффинного вектора. Аффинный вектор текущего блока можно получить путем прибавления значения разности аффинных векторов, декодированных посредством битового потока, к значению предсказания аффинного вектора.
Когда аффинные векторы текущего блока будут получены, на этапе S2930 можно получить аффинные векторы движения подблоков на основе указанных аффинных векторов. На этапе S2940 на основе полученного аффинного вектора движения можно выполнить компенсацию движения на уровне подблока.
В раскрытом выше примере аффинный режим слияния применяют отдельно от общего режима слияния. По одному из вариантов осуществления настоящего раскрытия можно применять и общий режим слияния, и аффинный режим слияния путем их объединения. В одном примере кандидата на слияние можно получить на основе соседнего блока, примыкающего к текущему блоку, и/или не-примыкающего блока и сгенерировать комбинированный список кандидатов на слияние, включающий в себя этого кандидата на слияние. В этом случае, если блок-кандидат кодируют как модель поступательного движения, кандидат на слияние, полученный на основе этого блока-кандидата, может включать в себя информацию о поступательном движении. При этом, если блок-кандидат кодируют как модель аффинного движения, кандидат на слияние, полученный на основе этого блока-кандидата, может включать в себя информацию об аффинном движении.
Модель движения текущего блока можно определять в зависимости от кандидата на слияние, выбранного из списка кандидатов на слияние. В одном примере, если выбранный кандидат на слияние получен на основе блока, закодированного/декодированного в аффинном режиме, можно выполнить аффинное межкадровое предсказание для текущего блока.
В качестве альтернативы, если режим предсказания соседнего блока, соответствующего выбранному кандидату на слияние, отличен от режима текущего блока, информацию о движении текущего блока можно получить путем применения по меньшей мере только части информации о движении выбранного кандидата на слияние. В этом случае режим предсказания может включать в себя по меньшей мере один из следующих: аффинный режим слияния, аффинный межкадровый режим, режим слияния, режим улучшенного предсказания вектора движения (AMVP) или режим, заранее заданный в кодере и в декодере.
В одном примере, если соседний блок, соответствующий выбранному кандидату на слияние, кодируют в аффинном межкадровом режиме, а текущий блок - в общем режиме слияния, вектор движения текущего блока можно получить путем применения всех (например, v0, v1 и v2) или части (например, v0 и v1) аффинных векторов соседнего блока.
В качестве альтернативы, если соседний блок, соответствующий выбранному кандидату на слияние, кодируют в первом режиме предсказания, а текущий блок - во втором режиме предсказания, можно обратиться к вектору движения в составе информации о движении кандидата на слияние, при этом к индексу опорного изображения можно не обращаться.
Реализация вариантов осуществления, раскрытых выше применительно к процессам декодирования или кодирования, входит в объем настоящего изобретения. Изменение заранее определенного порядка, раскрытого в вариантах осуществления, на другой порядок также входит в объем настоящего изобретения.
Несмотря на то, что варианты осуществления были раскрыты выше на примерах ряда этапов или принципиальных схем, они не предназначены для ограничения порядка временной последовательности по настоящему изобретению, при этом их можно выполнять одновременно или в каком-либо другом порядке. Кроме того, каждый из компонентов (например, единиц, модулей и т.п.) в составе блок-схемы раскрытого выше варианта осуществления может быть реализован в виде аппаратного устройства или программного средства, при этом множество компонентов можно скомбинировать с образованием аппаратного устройства или программного средства. Раскрытые выше варианты осуществления могут быть реализованы в виде программных инструкций с возможностью их исполнения посредством разнообразных электронно-вычислительных компонентов и записи в машиночитаемом носителе записей. Машиночитаемый носитель данных может включать в себя программную инструкцию, файл данных, структуру данных и т.п., либо по-отдельности, либо в комбинации. В число машиночитаемых носителей данных входят магнитные носители записей, например, жесткие диски, гибкие диски и магнитные ленты; оптические носители данных, например, постоянные запоминающие устройства на компакт-дисках (англ. compact disk read-only memory (CD-ROM)) или постоянные запоминающие устройства на универсальных цифровых дисках (англ. digital versatile disk readonly memory (DVD-ROM)); магнитооптические носители, например, гибкие магнитооптические диски; и аппаратные устройства, например, постоянное запоминающее устройство (ПЗУ, англ. read-only memory (ROM)), оперативное запоминающее устройство (ОЗУ, англ. random-access memory (RAM)) и флеш-память, конструктивно выполненные с возможностью хранения и реализации указанной программной инструкции. Аппаратные устройства могут быть выполнены с возможностью управления ими посредством одного или нескольких программных модулей или наоборот для выполнения процессов по настоящему изобретению.
Промышленная применимость
Настоящее изобретение может найти применение в электронном устройстве, выполненном с возможностью кодирования/декодирования изображения.