СПОСОБ И УСТРОЙСТВО ДЛЯ МЕЖКАДРОВОГО ПРЕДСКАЗАНИЯ НА ОСНОВЕ РЕЖИМА СЛИЯНИЯ
METHOD AND DEVICE FOR INTER-FRAME PREDICTION BASED ON THE FUSION MODE

ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
Область техники, к которой относится изобретение
Настоящее изобретение относится к способу и устройству для межкадрового предсказания.
Уровень техники
В последнее время растет спрос на видео высокого разрешения и высокого качества, такое как видео высокой четкости (HD) и видео сверхвысокой четкости (UHD) в различных областях применения, и, соответственно, обсуждается высокоэффективная технология сжатия видео.
Что касается технологии сжатия видео, существуют различные технологии, такие как технология межкадрового предсказания для предсказания значения пикселя, включенного в текущее изображение, из изображения до или после текущего изображения, технология внутрикадрового предсказания для предсказания значения пикселя, включенного в текущее изображение, с использованием информации пикселя в текущем изображении, технология энтропийного кодирования для присвоения короткого кода значению, имеющему высокую частоту появления, и присвоения длинного кода значению, имеющему низкую частоту появления, и т. д., и видеоданные могут быть эффективно сжаты и переданы, или сохранены с использованием такой технологии сжатия видео.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[Техническая задача]
Одной из целей настоящего изобретения является предоставление способа и устройства для межкадрового предсказания.
Одной из целей настоящего изобретения является предоставление способа и устройства для составления списка кандидатов на слияние.
Одной из целей настоящего изобретения является предоставление способа и устройства для компенсации движения в элементах подблоков.
Одной из целей настоящего изобретения является предоставление способа и устройства для определения аффинного кандидата.
Одной из целей настоящего изобретения является предоставление способа и устройства для межкадрового предсказания согласно формату проецирования видео в 360 градусов.
[Решение задачи]
Способ и устройство для кодирования/декодирования видео согласно настоящему изобретению могут составлять список кандидатов на слияние текущего блока, получать информацию о движении текущего блока из списка кандидатов на слияние и выполнять межкадровое предсказание текущего блока с использованием информации о движении.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению список кандидатов на слияние может содержать по меньшей мере одного из пространственного кандидата на слияние, временного кандидата на слияние или комбинированного кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению комбинированный кандидат на слияние может быть получен за счет комбинирования n кандидатов на слияние, принадлежащих к списку кандидатов на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению n кандидатов на слияние могут представлять собой кандидатов на слияние, соответствующих индексам от 0 до (n-1) в списке кандидатов на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению индекс комбинированного кандидата на слияние может быть больше индекса временного кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению n кандидатов на слияние могут содержать первого кандидата на слияние и второго кандидата на слияние, и информация о движении комбинированного кандидата на слияние может быть получена с учетом направления предсказания первого кандидата на слияние и направления предсказания второго кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению информация о движении комбинированного кандидата на слияние может быть получена посредством средневзвешенного значения информации о движении первого кандидата на слияние и информации о движении второго кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению весовой коэффициент средневзвешенного значения может представлять собой любое из [1:1], [1:2], [1:3] или [2:3].
Способ и устройство для кодирования/декодирования видео согласно настоящему изобретению могут генерировать список кандидатов для предсказания информации о движении текущего блока, получать вектор контрольной точки текущего блока на основании списка кандидатов и индекса кандидата, получать вектор движения текущего блока на основании вектора контрольной точки текущего блока и выполнять межкадровое предсказание в отношении текущего блока с использованием вектора движения.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению список кандидатов может содержать множество аффинных кандидатов.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению аффинные кандидаты могут включать по меньшей мере одного из пространственного кандидата, временного кандидата или настроенного кандидата.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению вектор движения текущего блока может быть получен в элементах подблоков текущего блока.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению пространственный кандидат может быть определен с учетом того, находится ли граница текущего блока в контакте с границей блока кодового дерева (границей CTU).
В устройстве для кодирования/декодирования видео согласно настоящему изобретению настроенный кандидат может быть определен на основании комбинации по меньшей мере двух векторов контрольной точки, которые соответствуют соответствующим углам текущего блока.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению, когда опорный участок для межкадрового предсказания содержит границу опорного изображения или границу между прерывистыми поверхностями, все или некоторые из пикселей в опорном участке могут быть получены с использованием данных коррелируемого участка.
[Преимущественные эффекты изобретения]
Согласно настоящему изобретению точность информации о движении может быть повышена за счет использования не только пространственного/временного кандидата на слияние, но также комбинированного кандидата на слияние.
Согласно настоящему изобретению характеристики кодирования/декодирования видео могут быть улучшены за счет межкадрового предсказания на основании аффинной модели.
Согласно настоящему изобретению точность предсказания может быть повышена за счет межкадрового предсказания в элементах подблоков.
Согласно настоящему изобретению эффективность кодирования/декодирования межкадрового предсказания может быть улучшена за счет эффективного определения аффинного кандидата.
Согласно настоящему изобретению эффективность кодирования межкадрового предсказания может быть улучшена за счет настройки опорного участка с учетом корреляции.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На фиг. 1 представлена структурная схема устройства для кодирования видео согласно одному варианту осуществления настоящего изобретения.
На фиг. 2 представлена структурная схема устройства для декодирования видео согласно одному варианту осуществления настоящего изобретения.
На фиг. 3 представлена иллюстративная схема, изображающая древовидную форму блока.
На фиг. 4 представлена иллюстративная схема, изображающая различные типы блоков, которые могут быть получены из секции разбиения блоков согласно настоящему изобретению.
На фиг. 5 изображен процесс разбиения блоков согласно одному варианту осуществления настоящего изобретения.
На фиг. 6 изображен способ выполнения межкадрового предсказания на основании режима слияния на основе блоков в качестве варианта осуществления, к которому применяется настоящее изобретение.
На фиг. 7 изображен способ межкадрового предсказания на основании аффинной модели в качестве варианта осуществления, к которому применяется настоящее изобретение.
Фиг. 8 относится к способу получения аффинного кандидата из векторов контрольной точки пространственного/временного соседнего блока в качестве варианта осуществления, к которому применяется настоящее изобретение.
На фиг. 9 изображен способ получения настроенного кандидата на основании комбинации векторов движения пространственных/временных соседних блоков в качестве варианта осуществления, к которому применяется настоящее изобретение.
На фиг. 10 представлена схема, изображающая способ получения информации о движении временного кандидата на основе подблоков в качестве варианта осуществления, к которому применяется настоящее изобретение.
На фиг. 11 изображен способ межкадрового предсказания в формате проецирования ERP в качестве варианта осуществления, к которому применяется настоящее изобретение.
На фиг. 12 и 15 изображен способ межкадрового предсказания, в формате проецирования CMP в качестве варианта осуществления, к которому применяется настоящее изобретение.
ПОДРОБНОЕ ОПИСАНИЕ
Способ и устройство для кодирования/декодирования видео согласно настоящему изобретению могут составлять список кандидатов на слияние текущего блока, получать информацию о движении текущего блока из списка кандидатов на слияние и выполнять межкадровое предсказание текущего блока с использованием информации о движении.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению список кандидатов на слияние может содержать по меньшей мере одного из пространственного кандидата на слияние, временного кандидата на слияние или комбинированного кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению комбинированный кандидат на слияние может быть получен за счет комбинирования n кандидатов на слияние, принадлежащих к списку кандидатов на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению n кандидатов на слияние могут представлять собой кандидатов на слияние, соответствующих индексам от 0 до (n-1) в списке кандидатов на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению индекс комбинированного кандидата на слияние может быть больше индекса временного кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению n кандидатов на слияние могут содержать первого кандидата на слияние и второго кандидата на слияние, и информация о движении комбинированного кандидата на слияние может быть получена с учетом направления предсказания первого кандидата на слияние и направления предсказания второго кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению информация о движении комбинированного кандидата на слияние может быть получена посредством средневзвешенного значения информации о движении первого кандидата на слияние и информации о движении второго кандидата на слияние.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению весовой коэффициент средневзвешенного значения может представлять собой любое из [1:1], [1:2], [1:3] или [2:3].
Способ и устройство для кодирования/декодирования видео согласно настоящему изобретению могут генерировать список кандидатов для предсказания информации о движении текущего блока, получать вектор контрольной точки текущего блока на основании списка кандидатов и индекса кандидата, получать вектор движения текущего блока на основании вектора контрольной точки текущего блока и выполнять межкадровое предсказание в отношении текущего блока с использованием вектора движения.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению список кандидатов может содержать множество аффинных кандидатов.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению аффинные кандидаты могут включать по меньшей мере одного из пространственного кандидата, временного кандидата или настроенного кандидата.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению вектор движения текущего блока может быть получен в элементах подблоков текущего блока.
В устройстве для кодирования/декодирования видео согласно настоящему изобретению пространственный кандидат может быть определен с учетом того, находится ли граница текущего блока в контакте с границей блока кодового дерева (границей CTU).
В устройстве для кодирования/декодирования видео согласно настоящему изобретению настроенный кандидат может быть определен на основании комбинации по меньшей мере двух векторов контрольной точки, которые соответствуют соответствующим углам текущего блока.
В способе и устройстве для кодирования/декодирования видео согласно настоящему изобретению, когда опорный участок для межкадрового предсказания содержит границу опорного изображения или границу между прерывистыми поверхностями, все или некоторые из пикселей в опорном участке могут быть получены с использованием данных коррелируемого участка.
[Варианты осуществления]
В настоящем изобретении могут быть выполнены различные модификации и могут быть предоставлены различные варианты осуществления, и конкретные варианты осуществления будут изображены на графических материалах и подробно описаны. Однако следует понимать, что настоящее изобретение не ограничено этими конкретными вариантами осуществления, но должно включать все изменения, эквиваленты и замены, которые находятся в пределах сущности и объема настоящего изобретения.
Такие термины, как первый, второй, A и B могут использоваться для описания различных компонентов, но компоненты не должны ограничиваться такими терминами. Эти термины используются только для того, чтобы отличить один компонент от другого компонента. Например, без отклонения от объема настоящего изобретения, первый компонент может называться вторым компонентом, и аналогично второй компонент может называться первым компонентом. Термин «и/или» включает в себя комбинацию множества связанных перечисленных объектов или любого из множества связанных перечисленных объектов.
Когда компонент упоминается как «связанный» или «соединенный» с другим компонентом, компонент может быть напрямую связан или соединен с другим компонентом. Однако следует понимать, что еще один компонент может присутствовать в середине. С другой стороны, когда компонент упоминается как «непосредственно связанный» или «непосредственно соединенный» с другим компонентом, следует понимать, что в середине нет другого компонента.
Термины, используемые в настоящей заявке, используются только для описания конкретных вариантов осуществления и не предназначены для ограничения настоящего изобретения. Формы единственного числа включают в себя формы множественного числа, если контекст явно не указывает иное. В настоящей заявке термин, такой как «включать» или «иметь», предназначен для обозначения наличия признаков, чисел, этапов, действий, компонентов, частей или их комбинаций, описанных в описании, и следует понимать, что этот термин не исключает возможности наличия или добавления одного или более других признаков или чисел, этапов, действий, компонентов, частей или их комбинаций.
Если не указано иное, все используемые в данном документе термины, включая технические или научные термины, означают то же, что обычно понимается специалистом в данной области техники, к которой относится настоящее изобретение. Такие термины, как те, которые определены в обычно используемом словаре, должны интерпретироваться как соответствующие значениям соответствующей технологии и не интерпретироваться как идеальные или чрезмерно формальные значения, если они явно не определены в настоящей заявке.
Устройства для кодирования и декодирования видео могут представлять собой пользовательские терминалы, такие как персональный компьютер (PC), ноутбук, персональный цифровой ассистент (PDA), портативный мультимедийный проигрыватель (PMP), игровую консоль PlayStation Portable (PSP), терминал беспроводной связи, смартфон, телевизор, устройство виртуальной реальности (VR), устройство дополненной реальности (AR), устройство смешанной реальности (MR), наголовный дисплей (HMD) и умные очки, или серверные терминалы, такие как сервер приложений и сервер услуг, и могут включать в себя различные устройства, оснащенные устройством связи, таким как модем связи, для осуществления связи с различными устройствами или сетями проводной/беспроводной связи, запоминающее устройство для хранения различных программ и данных для кодирования или декодирования видео или для выполнения внутрикадрового или межкадрового предсказания для кодирования или декодирования, процессор для выполнения программы для выполнения операций вычисления и управления и т. д. Кроме того, видео, закодированное как битовый поток с помощью устройства для кодирования видео, может быть передано на устройство для декодирования видео в реальном времени или не в реальном времени через проводную или беспроводную сеть, такую как Интернет, локальная сеть беспроводной связи, беспроводная сеть LAN, сеть WiBro или сеть мобильной связи, или через различные интерфейсы связи, такие как кабель и универсальная последовательная шина (USB), декодировано устройством для декодирования видео и восстановлено и воспроизведено как видео.
Кроме того, видео, закодированное как битовый поток с помощью устройства для кодирования видео, может быть передано от устройства для кодирования на устройство для декодирования посредством машиночитаемого носителя информации.
Вышеописанные устройство для кодирования видео и устройство для декодирования видео могут представлять собой отдельные устройства, соответственно. Однако устройства могут быть выполнены как одно устройство для кодирования/декодирования видео согласно реализации. В этом случае некоторые компоненты устройства для кодирования видео представляют собой по существу такие же технические элементы, как некоторые компоненты устройства для декодирования видео, и могут быть реализованы по меньшей мере с такой же конструкцией или выполнять по меньшей мере такую же функцию, как и некоторые компоненты устройства для декодирования видео.
Следовательно, избыточные описания соответствующих технических элементов будут опущены в подробном описании следующих технических элементов и принципов их работы.
Кроме того, поскольку устройство для декодирования видео соответствует вычислительному устройству, которое применяет способ кодирования видео, выполняемый устройством для кодирования видео, к декодированию, следующее описание будет сосредоточено на устройстве для кодирования видео.
Вычислительное устройство может содержать запоминающее устройство, на котором хранится программа или модуль программного обеспечения, реализующий способ кодирования видео и/или способ декодирования видео, и процессор, связанный с запоминающим устройством для выполнения программы. Кроме того, устройство для кодирования видео может называться кодером, а устройство для декодирования видео может называться декодером.
Как правило, видео может содержать последовательность неподвижных картинок, и эти неподвижные картинки могут быть классифицированы по элементам группы изображений (GOP), и каждая неподвижная картинка может называться изображением. В этом случае изображение может представлять одно из кадра или поля в сигнале с прогрессивной разверткой или сигнале с чересстрочной разверткой, и видео может быть выражено как «кадр», когда кодирование/декодирование выполняется на основе кадров, и выражено как «поле», когда кодирование/декодирование выполняется на основе полей. В настоящем изобретении рассматривается и описывается сигнал с прогрессивной разверткой. Однако настоящее изобретение может быть применено и к сигналу с чересстрочной разверткой. В концепции более высокого уровня могут существовать такие элементы, как GOP и последовательность, и каждое изображение может быть разбито на заданные участки, такие как слои, плитки и блоки. Кроме того, одна GOP может содержать элементы, такие как изображение I, изображение P и изображение B. Изображение I может относиться к изображению, которое само закодировано/декодировано без использования опорного изображения, а изображение P и изображение B могут относиться к изображениям, которые закодированы/декодированы за счет выполнения такого процесса, как оценка движения и компенсация движения, с использованием опорного изображения. В целом, изображение I и изображение P могут использоваться в качестве опорных изображений в случае изображения P, причем изображение I и изображение P могут использоваться в качестве опорных изображений в случае изображения B. Однако вышеприведенное определение может быть изменено посредством настройки кодирования/декодирования.
В данном случае изображение упоминается для кодирования/декодирования в качестве опорного изображения, а блок или пиксель упоминаются в качестве опорного блока или опорного пикселя. Кроме того, опорные данные могут представлять собой не только значение пикселя в пространственной области, но также значение коэффициента в частотной области и различные типы информации о кодировании/декодировании, сгенерированной и определенной во время процесса кодирования/декодирования. Их примеры могут соответствовать информации, связанной с внутрикадровым предсказанием, или информации, связанной с движением в секции предсказания, информации, связанной с преобразованием в секции преобразования/секции обратного преобразования, информации, связанной с квантованием в секции квантования/секции обратного квантования, информации, связанной с кодированием/декодированием (контекстная информация) в секции кодирования/секции декодирования, информации, связанной с фильтром в секции фильтрования в контуре, и т. д.
Наименьший элемент, составляющий видео, может представлять собой пиксель, и количество бит, используемых для представления одного пикселя, называется битовой глубиной. В целом, битовая глубина может составлять 8 бит, причем согласно настройкам кодирования может поддерживаться битовая глубина более 8 бит. В качестве битовой глубины может поддерживаться по меньшей мере одна битовая глубина согласно цветовому пространству. Кроме того, по меньшей мере одно цветовое пространство может быть предусмотрено согласно формату цвета видео. Одно или более изображений, имеющих определенный размер, или одно или более изображений, имеющих разные размеры, могут быть предусмотрены согласно формату цвета. Например, в случае YCbCr 4:2:0 могут быть предусмотрены одна компонента яркости (Y в этом примере) и две цветоразностные компоненты (Cb/Cr в этом примере). В этом примере компонентное соотношение цветоразностных компонент и компоненты яркости может представлять собой соотношение 1:2 в ширину и высоту. В качестве другого примера, в случае 4:4:4 ширина и высота могут быть такими же в компонентном соотношении. В случае наличия одного или более цветовых пространств, как в вышеприведенном примере, изображение может быть разбито на соответствующие цветовые пространства.
В настоящем изобретении описание будет приведено на основании некоторых цветовых пространств (Y в этом примере) некоторых форматов цвета (YCbCr в этом примере), и такое же или аналогичное применение (настройка, зависящая от конкретного цветового пространства) может быть применено к другим цветовым пространствам (Cb и Cr в этом примере) согласно формату цвета. Однако в каждое цветовое пространство могут быть внесены некоторые отличия (не зависящие от настройки для конкретного цветового пространства). Другими словами, настройка, зависящая от каждого цветового пространства, может означать наличие настройки, пропорциональной компонентному соотношению каждой компоненты, или зависящей от него (например, 4:2:0, 4:2:2, 4:4:4 и т. д.), а независимая настройка для каждого цветового пространства может означать наличие настройки только соответствующего цветового пространства, не учитывающей или не зависящей от компонентного соотношения каждой компоненты. В настоящем изобретении в зависимости от кодера/декодера некоторые конфигурации могут иметь независимые или зависимые настройки.
Информация о конфигурации или элемент синтаксиса, необходимый в процессе кодирования видео, может быть определен на уровне элементов, таком как видео, последовательность, изображение, слой, плитка, блок и т. д., который включен в битовый поток в элементах, таких как набор параметров видео (VPS), набор параметров последовательности (SPS), набор параметров изображения (PPS), заголовок слоя, заголовок плитки, заголовок блока и т. д., и передается на декодер, и декодер может выполнять анализ в элементах того же уровня для восстановления информации о настройках, переданной от кодера, и использовать восстановленную информацию о настройках в процессе декодирования видео. Кроме того, связанная информация может передаваться как битовый поток в виде информации для дополнительной оптимизации (SEI) или метаданных, и она может быть проанализирована и использована. Каждый набор параметров имеет уникальное значение идентификатора (ID), а нижний набор параметров может иметь значение идентификатора верхнего набора параметров, на который следует ссылаться. Например, нижний набор параметров может относиться к информации верхнего набора параметров, имеющего совпадающее значение идентификатора среди одного или более верхних наборов параметров. Среди примеров различных элементов, упомянутых выше, когда один элемент включает один или более других элементов, соответствующий элемент может называться верхним элементом, а включенный элемент может называться нижним элементом.
Информация о настройках, сгенерированная в элементе, может содержать содержимое для независимой настройки для каждого элемента или содержать содержимое для настройки, зависящей от предыдущего, последующего или верхнего элемента и т. д. В данном случае зависимую настройку можно понимать как указывающую информацию о настройках соответствующего элемента в качестве информации флага, указывающей, что соблюдается настройка предыдущего, последующего или верхнего элемента (например, 1-битовый флаг, настройка соблюдается в случае 1 и не соблюдается в случае 0). Описание информации о настройках в настоящем изобретении будет сосредоточено на примере независимой настройки. Однако может быть включен пример добавления или замены содержимого на основании взаимосвязи, зависящей от информации о настройках предыдущего или последующего элемента относительно текущего элемента, или верхнего элемента.
На фиг. 1 представлена структурная схема устройства для кодирования видео согласно одному варианту осуществления настоящего изобретения. На фиг. 2 представлена структурная схема устройства для декодирования видео согласно одному варианту осуществления настоящего изобретения.
Как показано на фиг. 1, устройство для кодирования видео может содержать секцию предсказания, секцию вычитания, секцию преобразования, секцию квантования, секцию обратного квантования, секцию обратного преобразования, секцию сложения, секцию фильтрования в контуре, запоминающее устройство и/или секцию кодирования. Некоторые из вышеперечисленных компонентов не обязательно могут быть включены, некоторые или все компоненты могут быть включены выборочно в зависимости от реализации, и могут быть включены некоторые дополнительные компоненты, не изображенные на фигуре.
Как показано на фиг. 2, устройство для декодирования видео может содержать секцию декодирования, секцию предсказания, секцию обратного квантования, секцию обратного преобразования, секцию сложения, секцию фильтрования в контуре и/или запоминающее устройство. Некоторые из вышеперечисленных компонентов не обязательно могут быть включены, некоторые или все компоненты могут быть включены выборочно в зависимости от реализации, и могут быть включены некоторые дополнительные компоненты, не изображенные на фигуре.
Устройство для кодирования видео и устройство для декодирования видео могут представлять собой отдельные устройства, соответственно, или могут быть выполнены как одно устройство для кодирования/декодирования видео согласно реализации. В этом случае некоторые компоненты устройства для кодирования видео представляют собой по существу такие же технические элементы, как некоторые компоненты устройства для декодирования видео, и могут быть реализованы по меньшей мере с такой же конструкцией или выполнять по меньшей мере такую же функцию, как и некоторые компоненты устройства для декодирования видео. Следовательно, избыточные описания соответствующих технических элементов будут опущены в подробном описании следующих технических элементов и принципов их работы. Поскольку устройство для декодирования видео соответствует вычислительному устройству, которое применяет способ кодирования видео, выполняемый устройством для кодирования видео, к декодированию, следующее описание будет сосредоточено на устройстве для кодирования видео. Устройство для кодирования видео может называться кодером, а устройство для декодирования видео может называться декодером.
Секция предсказания может включать секцию внутрикадрового предсказания, которая выполняет внутрикадровое предсказание, и секцию межкадрового предсказания, которая выполняет межкадровое предсказание. При внутрикадровом предсказании режим внутрикадрового предсказания может быть определен за счет задания пикселя блока, смежного с текущим блоком, в качестве опорного пикселя, и блок предсказания может быть сгенерирован с использованием режима внутрикадрового предсказания. При межкадровом предсказании блок предсказания может быть сгенерирован за счет определения информации о движении текущего блока с использованием одного или более опорных видео и выполнения компенсации движения с использованием информации о движении. Может быть определено одно из внутрикадрового предсказания и межкадрового предсказания, используемых для текущего блока (элемент кодирования или элемент предсказания), и может быть определена конкретная информация (например, режим внутрикадрового предсказания, вектор движения, опорное видео и т. д.) согласно каждому способу предсказания. В этом случае элемент обработки, в котором выполняется предсказание, и элемент обработки, в котором определяются способ предсказания и конкретное содержимое, могут быть определены согласно настройке кодирования/декодирования. Например, способ предсказания, режим предсказания и т. д. определяются в элементе предсказания (или элементе кодирования), и предсказание выполняется в элементе блока предсказания (или элементе кодирования, или элементе преобразования).
Секция вычитания генерирует остаточный блок за счет вычитания блока предсказания из текущего блока. То есть, секция вычитания вычисляет разницу между значением пикселя каждого пикселя в текущем блоке, который должен быть закодирован, и предсказанным значением пикселя каждого пикселя в блоке предсказания, который сгенерирован посредством секции предсказания, для генерирования остаточного блока, который представляет собой остаточный сигнал в виде блока.
Секция преобразования может преобразовывать сигнал, принадлежащий пространственной области, в сигнал, принадлежащий частотной области, и в это время сигнал, полученный в результате процесса преобразования, называется преобразованным коэффициентом. Например, блок преобразования, имеющий преобразованный коэффициент, может быть получен за счет преобразования остаточного блока, имеющего остаточный сигнал, принятый от секции вычитания, и принятый сигнал определяется согласно настройке кодирования и не ограничен остаточным сигналом.
Секция преобразования может преобразовывать остаточный блок с использованием такой схемы преобразования, как преобразование Адамара, преобразование на основе DST (дискретное синусное преобразование) или преобразование на основе DCT (дискретное косинусное преобразование). Однако схема преобразования не ограничена этим, и можно использовать различные схемы преобразования, полученные путем улучшения и модификации этой схемы преобразования.
Преобразование может выполняться в горизонтальном/вертикальном направлении. Например, используя базисный вектор при преобразовании, полное двумерное преобразование может быть выполнено за счет выполнения одномерного преобразования в горизонтальном направлении и выполнения одномерного преобразования в вертикальном направлении, тем самым преобразуя значение пикселя в пространственной области в значение пикселя в частотной области.
Кроме того, секция преобразования может передавать информацию, необходимую для генерирования блока преобразования, в секцию кодирования, вследствие чего информация кодируется, включать соответствующую информация в битовый поток и передавать информацию в декодер, а секция декодирования декодера может анализировать информацию и использовать информацию для процесса обратного преобразования.
Секция квантования может квантовать входной сигнал, и в это время сигнал, полученный в результате процесса квантования, называется квантованным коэффициентом. Например, блок квантования, имеющий квантованный коэффициент, может быть получен за счет квантования остаточного блока, имеющего остаточный преобразованный коэффициент, принятый от секции преобразования, и входной сигнал определяется согласно настройке кодирования, которая не ограничена остаточным преобразованным коэффициентом.
Секция квантования может квантовать преобразованный остаточный блок с использованием схемы квантования, такой как равномерное пороговое квантование с мертвой зоной и взвешенная матрица квантования. Однако схема квантования не ограничена этим, и можно использовать различные схемы квантования, полученные путем улучшения и модификации этой схемы квантования.
Секция квантования может передавать информацию, необходимую для генерирования блока квантования, в секцию кодирования, вследствие чего информация кодируется, включать соответствующую информация в битовый поток и передавать информацию в декодер, а секция декодирования декодера может анализировать информацию и использовать информацию для процесса обратного квантования.
В вышеприведенном примере описание было сделано с учетом предположения, что остаточный блок подвергнут преобразованию и квантованию посредством секции преобразования и секции квантования. Однако остаточный сигнал остаточного блока может быть преобразован для генерирования остаточного блока, имеющего преобразованный коэффициент, и процесс квантования может не выполняться. Альтернативно остаточный сигнал остаточного блока может быть не преобразован в преобразованный коэффициент, и может выполняться только процесс квантования. Альтернативно может не выполняться ни процесс преобразования, ни процесс квантования. Определение может быть выполнено согласно настройке кодера.
Секция кодирования может сканировать квантованный коэффициент, преобразованный коэффициент, остаточный сигнал и т. д. сгенерированного остаточного блока согласно по меньшей мере одному порядку сканирования (например, зигзагообразное сканирование, вертикальное сканирование, горизонтальное сканирование и т. д.) для генерирования последовательности квантованных коэффициентов, последовательности преобразованных коэффициентов или последовательности сигналов и выполнения кодирования с использованием по меньшей мере одной схемы энтропийного кодирования. В этом случае информация о порядке сканирования может быть определена согласно настройке кодирования (например, режим кодирования, режим предсказания и т. д.), и связанная информация может быть в неявном виде определена или в явном виде сгенерирована. Например, один из множества порядков сканирования может быть выбран согласно режиму внутрикадрового предсказания. В этом случае схема сканирования может быть установлена как одна из различных схем, таких как зигзагообразная схема, диагональные линии и растр.
Кроме того, данные кодирования, включающие информацию кодирования, переданную от каждого компонента, могут быть сгенерированы и выведены в качестве битового потока, который может быть реализован посредством мультиплексора (MUX). В этом случае кодирование может выполняться с использованием в качестве схемы кодирования такого способа, как экспоненциальный способ Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC) или контекстно-адаптивное двоичное арифметическое кодирование (CABAC). Однако схема кодирования не ограничена этим, и можно использовать различные схемы кодирования, полученные путем улучшения и модификации этой схемы кодирования.
При выполнении энтропийного кодирования (с учетом CABAC в этом примере) в отношении данных остаточного блока и элемента синтаксиса, такого как информация, сгенерированная в процессе кодирования/декодирования, устройство для энтропийного кодирования может содержать преобразователь в двоичную форму, средство контекстного моделирования и двоичный арифметический кодер. В этом случае двоичный арифметический кодер может содержать движок для нормального кодирования и движок для обходного кодирования. В этом случае движок для нормального кодирования может представлять собой процесс, выполняемый в отношении средства контекстного моделирования, а движок для обходного кодирования может представлять собой процесс, выполняемый независимо от средства контекстного моделирования.
Поскольку элемент синтаксиса, введенный в устройство для энтропийного кодирования, может не представлять собой двоичное значение, когда элементы синтаксиса не являются двоичными значениями, преобразователь в двоичную форму может преобразовывать в двоичную форму элементы синтаксиса и выводить строку двоичных чисел, содержащую 0 или 1. В этом случае двоичное число представляет собой бит, содержащий 0 или 1, и он может быть закодирован с помощью двоичного арифметического кодера. В этом случае один из движка для нормального кодирования или движка для обходного кодирования может быть выбран на основании вероятности появления 0 и 1, которая может быть определена согласно настройке кодирования/декодирования. Движок для обходного кодирования может использоваться, когда элемент синтаксиса представляет собой данные, в которых частота появления 0 и 1 одинакова, а движок для нормального кодирования может использоваться в иных случаях, на которые можно ссылаться, когда последующий движок для нормального кодирования выполняется посредством контекстного моделирования (или обновления контекстной информации).
В этом случае контекст представляет собой информацию о вероятности появления двоичного числа, и контекстное моделирование представляет собой процесс оценки вероятности двоичного числа, необходимого для двоичного арифметического кодирования с использованием двоичного числа, которое получено в результате преобразования в двоичную форму, в качестве входного значения. Для оценки вероятности может использоваться информация об элементе синтаксиса двоичного числа, индекс, который является положением двоичного числа в строке двоичных чисел, вероятность того, что двоичное число включено в блок, смежный с блоком, и т. д., и для этого может использоваться по меньшей мере одна контекстная таблица. Например, в качестве информации для некоторых флагов может использоваться множество контекстных таблиц в соответствии с комбинацией того, используются ли флаги соседних блоков или нет.
При выполнении преобразования в двоичную форму элемента синтаксиса могут использоваться различные способы. Например, способы могут быть разделены на преобразование в двоичную форму с фиксированной длиной и преобразование в двоичную форму с переменной длиной. В случае преобразования в двоичную форму с переменной длиной можно использовать унарное преобразование в двоичную форму (усеченное унарное преобразование в двоичную форму), преобразование в двоичную форму Райса (усеченное преобразование в двоичную форму Райса), преобразование в двоичную форму по экспоненциальному методу Голомба порядка k, усеченное двоичное преобразование в двоичную форму и т. д. Кроме того, может выполняться знаковое преобразование в двоичную форму или беззнаковое преобразование в двоичную форму согласно диапазону значений элемента синтаксиса. Процесс преобразования в двоичную форму для элемента синтаксиса, осуществляемый в настоящем изобретении, может быть выполнен, включая не только преобразование в двоичную форму, упомянутое в вышеописанном примере, но также другие дополнительные способы преобразования в двоичную форму.
Секция обратного квантования и секция обратного преобразования могут быть реализованы за счет обратного выполнения процессов в секции преобразования и секции квантования. Например, секция обратного квантования может осуществлять обратное квантование квантованного преобразованного коэффициента, сгенерированного посредством секции квантования, а секция обратного преобразования может осуществлять обратное преобразование преобразованного коэффициента, подвергнутого обратному квантованию, для генерирования восстановленного остаточного блока.
Секция сложения восстанавливает текущий блок за счет сложения блока предсказания и восстановленного остаточного блока. Восстановленный блок может храниться в запоминающем устройстве и использоваться в качестве опорных данных (секция предсказания, элемент фильтра и т. д.).
Секция фильтрования в контуре может предусматривать по меньшей мере один процесс фильтрации после обработки, такой как деблочный фильтр, адаптивный к выборке сдвиг (SAO) и адаптивный контурный фильтр (ALF). Деблочный фильтр может удалять искажение блока, возникающее на границе между блоками в восстановленном видео. ALF может выполнять фильтрацию на основании значения, полученного за счет сравнения восстановленного видео и входного видео. Подробнее, после фильтрации блока посредством деблочного фильтра, может быть выполнена фильтрация на основании значения, полученного за счет сравнения восстановленного видео и входного видео. Альтернативно после фильтрации блока посредством SAO, может быть выполнена фильтрация на основании значения, полученного за счет сравнения восстановленного видео и входного видео.
Запоминающее устройство может хранить восстановленный блок или изображение. Восстановленный блок или изображение, хранящиеся в запоминающем устройстве, могут быть предоставлены в секцию предсказания, которая выполняет внутрикадровое предсказание или межкадровое предсказание. Подробнее, пространство хранения в виде очереди битового потока, сжатого кодером, может быть помещено и обработано как буфер кодированных изображений (CPB), а пространство для хранения декодированного видео в элементах изображений может быть помещено и обработано как буфер декодированных изображений (DPB). В случае CPB элементы декодирования сохраняются в соответствии с порядком декодирования, операция декодирования эмулируется в кодере, битовый поток, сжатый во время процесса эмуляции, может быть сохранен, битовый поток, выводимый из CPB, восстанавливается посредством процесса декодирования, восстановленное видео сохраняется в DPB, и изображения, сохраненные в DPB, могут упоминаться в последующем процессе кодирования и декодирования видео.
Секция декодирования может быть реализована за счет выполнения процесса в секции кодирования в обратном порядке. Например, последовательность квантованных коэффициентов, последовательность преобразованных коэффициентов или последовательность сигналов могут быть приняты из битового потока и декодированы, и данные декодирования, включающие информацию декодирования, могут быть проанализированы и переданы в каждый компонент.
Секция разбиения блоков может быть включена в устройство для кодирования видео и устройство для декодирования видео согласно вариантам осуществления настоящего изобретения. Базовый элемент кодирования может означать базовый (или начальный) элемент для предсказания, преобразования, квантования и т. д. в процессе кодирования/декодирования видео. В этом случае элемент кодирования может содержать один блок кодирования яркости и два блока кодирования цветовой разности согласно формату цвета (YCbCr в этом примере), и размер каждого блока может быть определен согласно формату цвета. В примере, который будет описан далее, описание приводится на основании блока (компоненты яркости в этом примере). В этом случае предполагается, что блок представляет собой элемент, который может быть получен после определения каждого элемента, и описание приводится с учетом того, что аналогичные настройки могут быть применены к другим типам блоков.
Секция разбиения блоков может быть настроена в отношении каждого компонента устройства для кодирования видео и устройства для декодирования, и размер и форма блока могут быть определены посредством этого процесса. В этом случае настроенный блок может быть определен по-другому в зависимости от компонента и может соответствовать блоку предсказания в случае секции предсказания, блоку преобразования в случае секции преобразования и блоку квантования в случае секции квантования. Настоящее изобретение не ограничено этим, и дополнительно могут быть определены элементы блока согласно другим компонентам. Размер и форма блока могут быть определены длинами блока в горизонтальном и вертикальном направлениях.
В секции разбиения блоков блок может быть выражен следующим образом: M×N, и максимальное и минимальное значения каждого блока могут быть получены в пределах диапазона. Например, когда форма блока поддерживает квадрат, и максимальное значение блока установлено равным 256×256, а минимальное значение блока установлено равным 8×8, можно получить блок, имеющий размер 2m×2m (в этом примере, m – целое число от 3 до 8, например, 8×8, 16×16, 32×32, 64×64, 128×128 или 256×256), блок, имеющий размер 2m×2m (в этом примере, m – целое число от 4 до 128), или блок, имеющий размер m×m (в этом примере, m – целое число от 8 до 256). Альтернативно, в случае когда форма блока поддерживает квадрат и прямоугольник, и имеет такой же диапазон, как в вышеприведенном примере, можно получить блок, имеющий размер 2m×2n (в этом примере, m и n – целые числа от 3 до 8, например, 8×8, 8×16, 16×8, 16×16, 16×32, 32×16, 32×32, 32×64, 64×32, 64×64, 64×128, 128×64, 128×128, 128×256, 256×128 или 256×256 с учетом того, что соотношение ширины и высоты составляет максимум 2:1, причем может отсутствовать ограничение по соотношению ширины и высоты, или может быть максимальное значение соотношения в зависимости от настройки кодирования/декодирования). Альтернативно можно получить блок, имеющий размер 2m×2n (в этом примере m и n – целые числа от 4 до 128). Альтернативно можно получить блок, имеющий размер m×n (в этом примере m и n – целые числа от 8 до 256).
В секции разбиения блоков входной блок может получить один или более блоков. Например, входной блок может быть выводом без изменения или может быть получен за счет разбиения на два или более подблоков. В этом случае количество подблоков может составлять 2, 3, 4 и т. д. и может быть определено согласно схеме разбиения (типу разбиения). Форма подблока может быть получена на основании блока перед разбиением (в этом примере, входного блока), и различные формы могут быть получены согласно настройке разбиения блоков.
В настоящем изобретении описание приводится на основании схемы разбиения на основе дерева. Однако настоящее изобретение не ограничено ею.
Получаемые блоки могут быть определены согласно настройкам кодирования/декодирования (например, типу блока, схеме разбиения, настройке разбиения и т. д.). Например, блок, имеющий размер 2m×2n, может быть получен в качестве блока кодирования, блок, имеющий размер 2m×2n или m×n может быть получен в качестве блока предсказания, и блок, имеющий размер 2m×2n может быть получен в качестве блока преобразования. Информация о размере блока, диапазоне и т. д. (например, информация, относящаяся к индексу и множителю и т. д.) может быть сгенерирована на основании настройки.
Диапазон (определяемый как максимальное значение и минимальное значение в этом примере) может быть определен согласно типу блока. Кроме того, для некоторых блоков информация о диапазоне блоков может быть сгенерирована в явном виде, а для некоторых блоков информация о диапазоне блоков может быть определена в неявном виде. Например, связанная информация может быть сгенерирована в явном виде в блоке кодирования и преобразования, и связанная информация может быть обработана в неявном виде в блоке предсказания.
В случае с явным видом может быть сгенерирован по меньшей мере один фрагмент информации о диапазоне. Например, в случае блока кодирования информация о максимальном значении и минимальном значении может быть сгенерирована в качестве информации о диапазоне. Альтернативно информация может быть сгенерирована на основании разницы между максимальным значением и предварительно установленным минимальным значением (например, 8) (например, сгенерированной на основании настройки, информации о значении разницы между индексами максимального значения и минимального значения и т. д.). Кроме того, может быть сгенерирована информация о множестве диапазонов для длины в горизонтальном и вертикальном направлении прямоугольного блока.
В случае с неявным видом информация о диапазоне может быть получена на основании настройки кодирования/декодирования (например, тип блока, схема разбиения, настройка разбиения и т. д.). Например, в случае блока предсказания информация о максимальном значении и минимальном значении может быть получена в качестве группы кандидатов (в этом примере, M×N и m/2×n/2), которая может быть получена посредством настройки разбиения блока предсказания (например, разбиение методом квадродерева + глубина разбиения 0) в блоке кодирования (например, максимальный размер блока кодирования составляет M×N, а минимальный размер блока кодирования составляет m×n), который представляет собой верхний элемент.
Размер и форма исходного (или начального) блока секции разбиения блоков могут быть определены из верхнего элемента. Базовый блок кодирования может представлять собой исходный блок в случае блока кодирования, блок кодирования может представлять исходный блок в случае блока предсказания, и блок кодирования или блок предсказания может представлять собой исходный блок в случае блока преобразования, который может быть настроен согласно настройке кодирования/декодирования.
Например, когда режим кодирования является внутрикадровым, блок предсказания может представлять собой верхний элемент блока преобразования, а когда режим кодирования является межкадровым, блок предсказания может представлять собой независимый элемент блока преобразования. Исходный блок может быть разбит на блоки меньших размеров, как начальный элемент разбиения. Когда определены оптимальные размер и форма согласно разбиению каждого блока, блок может быть определен как исходный блок нижнего элемента. Например, блок может представлять собой блок кодирования в первом случае и может представлять собой блок предсказания или блок преобразования в последнем случае (подэлемент). Когда исходный блок нижнего элемента определен как в вышеприведенном примере, может быть выполнен процесс разбиения для нахождения блока, имеющего оптимальные размер и форму, как верхний элемент.
В итоге, секция разбиения блоков может разделять базовый элемент кодирования (или наибольший элемент кодирования) на по меньшей мере один элемент кодирования (или нижний элемент кодирования). Кроме того, элемент кодирования может быть разбит на по меньшей мере один элемент предсказания и может быть разбит на по меньшей мере один элемент преобразования. Элемент кодирования может быть разбит на по меньшей мере один блок кодирования, блок кодирования может быть разбит на по меньшей мере один блок предсказания и может быть разбит на по меньшей мере один блок преобразования. Элемент предсказания может быть разбит на по меньшей мере один блок предсказания и элемент преобразования может быть разбит на по меньшей мере один блок преобразования.
Как в вышеприведенном примере, когда блок, имеющий оптимальные размер и форму, найден посредством процесса определения режима, может быть сгенерирована информация о режиме (например, информация о разбиении и т. д.) для этого блока. Информация о режиме может быть включена в битовый поток вместе с информацией, сгенерированной от компонента, к которому принадлежит блок (например, связанная с предсказанием информация, связанная с преобразованием информация и т. д.), и передана в декодер, и может быть проанализирована в элементе того же уровня в декодере и использована в процессе декодирования видео.
В примере, описанном далее, будет описана схема разбиения, и описание приводится с учетом того, что исходный блок имеет квадратную форму. Однако в случае прямоугольной формы допускается такое же или аналогичное применение.
На фиг. 3 представлена иллюстративная схема, изображающая древовидную форму блока.
Изображены примеры получения блоков, на которых «a» изображает один блок 2N × 2N, который не разбит, «b» изображает два блока 2N × N, полученных посредством флага частичного разбиения (горизонтальное разбиение методом двоичного дерева в этом примере), «c» изображает два блока N × 2N, полученных посредством флага частичного разбиения (вертикальное разбиение методом двоичного дерева в этом примере) и «d» изображает четыре блока N × N, полученных посредством флага частичного разбиения (четыре разбиения методом квадродерева в этом примере). Форма полученного блока может быть определена согласно типу дерева, используемого для разбиения. Например, когда выполняется разбиение методом квадродерева, получаемые кандидатные блоки могут представлять собой блоки «a» и «d». Когда выполняется разбиение методом двоичного дерева, получаемые кандидатные блоки могут представлять собой блоки «a», «b» и «c». В случае квадродерева поддерживается один флаг разбиения. Блок «a» может быть получен, когда флаг разбиения представляет собой «0», а блок «b» может быть получен, когда флаг разбиения представляет собой «1». В случае двоичного дерева поддерживается множество флагов разбиения, один из которых может представлять собой флаг, указывающий, выполняется ли разбиение, и один из которых может представлять собой флаг, указывающий на то, разбиение выполняется горизонтально или вертикально. В случае квадродерева может использоваться базовая схема разбиения на основе дерева. Кроме того, схема разбиения методом дерева (двоичного дерева в этом примере) может быть включена в схему разбиения на основе дерева. Когда флаг, разрешающий дополнительное разбиение методом дерева, активирован в неявном виде или в явном виде, может быть выполнено множество операций разбиения методом дерева. Разбиение на основе дерева может представлять собой способ, который обеспечивает рекурсивное разбиение. То есть, разбитый блок может быть снова установлен как исходный блок для выполнения разбиения на основе дерева, которое может быть определено согласно настройкам разбиения, таким как диапазон разбиения и допустимая глубина разбиения. Эта схема может представлять собой пример иерархической схемы разбиения.
На фиг. 4 представлена иллюстративная схема, изображающая различные типы блоков, которые могут быть получены из секции разбиения блоков согласно настоящему изобретению.
Как показано на фиг. 4, блоки «a»–«s» могут быть получены согласно настройке разбиения и схеме разбиения, и может быть возможна форма дополнительного блока, которая не изображена.
В качестве примера (1) для разбиения на основе дерева может быть разрешено асимметричное разбиение. Например, в случае двоичного дерева могут быть возможны такие блоки, как блоки «b» и «c», или такие блоки, как блоки «b»–«g». Когда флаг, разрешающий асимметричное разбиение, деактивирован в явном виде или в неявном виде согласно настройке кодирования/декодирования, получаемый кандидатный блок может представлять собой блоки «b» или «c», и когда флаг, разрешающий асимметричное разбиение, активирован, получаемый кандидатный блок может представлять собой блоки «b», «d» и «e» (горизонтальное разбиение в этом примере) или блоки «c», «f» и «g» (вертикальное разбиение в этом примере).
В вышеприведенном примере описание дается с учетом того, что соотношение длин левого блока и правого блока или верхнего блока и нижнего блока при асимметричном разбиении составляет 1:3 или 3:1. Однако настоящее изобретение не ограничено этим, и возможно наличие группы кандидатов, имеющих другое соотношение (например, 1:2, 1:4, 2:3, 2:5, 3:5 и т. д.) согласно настройке кодирования.
Далее представлены различные примеры информации о разбиении, сгенерированной при разбиении методом двоичного дерева (группа кандидатов с соотношением 1:1, 1:3 и 3:1 в этом примере).
Например, в дополнение к флагу, указывающему, выполняется ли разбиение, и флагу, указывающему направление разбиения, может быть сгенерирован флаг, указывающий форму разбиения. В этом случае форма разбиения может относиться к симметричному или асимметричному разбиению. Среди этих типов, когда асимметричное разбиение определяется в качестве формы разбиения, может быть сгенерирован флаг, указывающий соотношение разбиения, и может быть присвоен индекс согласно предварительно установленной группе кандидатов. Когда соотношение разбиения 1:3 или 3:1 поддерживается в качестве группы кандидатов, соотношение разбиения может быть выбрано посредством 1-битового флага.
В дополнение к флагу, указывающему, выполняется ли разбиение, и флагу, указывающему направление разбиения, может быть сгенерирован флаг, указывающий соотношение разбиения. В этом примере группа, имеющая симметричное отношение 1:1, может быть включена в качестве группы кандидатов для соотношения разбиения.
В настоящем изобретении предполагается, что разбиение методом двоичного дерева имеет такую же конфигурацию, как и в первом примере (где активирован флаг, разрешающий асимметричное разбиение). Если не указано иное, двоичное дерево относится к симметричному двоичному дереву.
В качестве примера (2) для разбиения на основе дерева может быть разрешено дополнительное разбиение методом дерева. Например, можно выполнить разбиение методом тернарного дерева, квадродерева, октодерева и т. д., посредством чего может быть получено n блоков разбиения (3, 4 и 8 в этом примере, n – целое число). В случае тернарного дерева поддерживаемые блоки (при разбиении на множество блоков в этом примере) могут представлять собой блоки h–m. В случае квадродерева поддерживаемые блоки могут представлять собой блоки n–p. В случае октодерева поддерживаемый блок может представлять собой блок q. Необходимость поддерживания разбиения на основе дерева может быть в неявном виде определена согласно настройке кодирования/декодирования, или связанная информация может быть сгенерирована в явном виде. Кроме того, в зависимости от настройки кодирования/декодирования разбиение может использоваться отдельно или может использоваться в комбинации с разбиением методом двоичного дерева или квадродерева.
Например, в случае двоичного дерева могут быть возможны такие, блоки как блоки b и c. Когда двоичное дерево и тернарное дерево используются в комбинации (в этом примере предполагается, что диапазон использования двоичного дерева и диапазон использования тернарного дерева частично перекрываются), могут быть возможны такие блоки, как блоки b, c, i и l. Когда флаг, разрешающий дополнительное разбиение, отличающееся от существующего дерева, деактивирован в явном виде или в неявном виде согласно настройке кодирования/декодирования, получаемый кандидатный блок может представлять собой блок b или c. Когда флаг активирован, получаемый кандидатный блок может представлять собой блоки b и i или блоки b, h, i и j (горизонтальное разбиение в этом примере), или может представлять собой блоки c и l или блоки c, k, l и m (вертикальное разбиение в этом примере).
В вышеприведенном примере описание дается с учетом того, что соотношение длин левого блока, среднего блока и правого блока или верхнего блока, среднего блока и нижнего блока при разбиении методом тернарного дерева составляет 2:1:1 или 1:2:1, или 1:1:2. Однако настоящее изобретение не ограничено этим, и могут быть возможны другие соотношения в зависимости от настройки кодирования.
Далее представлен пример информации о разбиении, сгенерированной при разбиении методом тернарного дерева (кандидат с соотношением 1:2:1 в этом примере).
Например, флаг, указывающий тип разбиения, может быть сгенерирован в дополнение к флагу, указывающему, выполняется ли разбиение, и флагу, указывающему направление разбиения. В этом случае тип разбиения может относиться к разбиению методом двоичного дерева или разбиению методом тернарного дерева.
В настоящем изобретении можно применить настройку адаптивного кодирования/декодирования согласно схеме разбиения.
В качестве примера схема разбиения может быть определена согласно типу блока. Например, для блока кодирования и блока преобразования может использоваться разбиение методом квадродерева, а для блока предсказания может использоваться схема разбиения методом квадродерева и двоичного дерева (или тернарного дерева и т. д.).
В качестве примера схема разбиения может быть определена согласно размеру блока. Например, для части диапазона (например, от a×b до c×d, когда последний имеет больший размер) между максимальным значением и минимальным значением блока может выполняться разбиение методом квадродерева, а для части диапазона (например, от e×f до g×h) может выполняться разбиение методом двоичного дерева (или тернарного дерева и т. д.). В этом случае информация о диапазоне согласно схеме разбиения может быть в явном виде сгенерирована или может быть в неявном виде определена, и эти диапазоны могут перекрываться.
В качестве примера схема разбиения может быть определена согласно форме блока (или блока до разбиения). Например, когда блок имеет квадратную форму, может выполняться разбиение методом квадродерева и двоичного дерева (или тернарного дерева и т. д.). Альтернативно, когда блок имеет прямоугольную форму, может выполняться разбиение на основе двоичного дерева (или тернарного дерева и т. д.).
В качестве примера настройка разбиения может быть определена согласно типу блока. Например, при разбиении на основе дерева для блока кодирования и блока предсказания может использоваться разбиение методом квадродерева, а для блока преобразования может использоваться разбиение методом двоичного дерева. Альтернативно допустимая глубина разбиения может быть установлена равной m в случае блока кодирования, допустимая глубина разбиения может быть установлена равной n в случае блока предсказания, и допустимая глубина разбиения может быть установлена равной o в случае блока преобразования. Кроме того, m, n и o могут быть или могут не быть одинаковыми.
В качестве примера настройка разбиения может быть определена согласно размеру блока. Например, для части диапазона блока (например, от a×b до c×d) может выполняться разбиение методом квадродерева, для части диапазона (например, от e×f до g×h, в этом примере предполагается, что c×d больше, чем g×h) может выполняться разбиение методом двоичного дерева, и для части диапазона (например, от i×j до k×l, в этом примере предполагается, что g×h больше или равно k×l) может выполняться разбиение методом тернарного дерева. В этом случае диапазон может содержать все диапазоны между максимальным значением и минимальным значением блока, и диапазоны могут быть установлены так, чтобы не перекрываться друг с другом или чтобы перекрываться друг с другом. Например, минимальное значение части диапазона может быть таким же, как максимальное значение части диапазона, или минимальное значение части диапазона может быть меньше максимального значения части диапазона. В случае перекрывающихся диапазонов схема разбиения, имеющая более высокое максимальное значение, может иметь приоритет, или может быть в явном виде сгенерирована информация о том, какую схему разбиения использовать. То есть в схеме разбиения, имеющей приоритет, может быть определено, выполнять или нет схему разбиения, имеющую более низкий приоритет, согласно результату разбиения, или схема разбиения, которая должна быть использована, может быть определена согласно информации о выборе схемы разбиения.
В качестве примера настройка разбиения может быть определена согласно форме блока. Например, когда блок имеет квадратную форму, может выполняться разбиение методом квадродерева. Альтернативно, когда блок имеет прямоугольную форму, может выполняться разбиение методом двоичного дерева или тернарного дерева.
В качестве примера настройка разбиения может быть определена согласно информации о кодировании/декодировании (например, типе слоя, цветовой компоненте, режиме кодирования и т. д.). Например, разбиение методом квадродерева (или двоичного дерева или тернарного дерева) может выполняться в части диапазона (например, от a×b до c×d), когда тип слоя представляет собой I, может выполняться в части диапазона (например, от e×f до g×h), когда тип слоя представляет собой P, и может выполняться в части диапазона (например, от i×j до k×l), когда тип слоя представляет собой B. Кроме того, допустимая глубина разбиения при разбиении методом квадродерева (или двоичного дерева или тернарного дерева) может быть установлена равной m, когда тип слоя представляет собой I, может быть установлена равной n, когда тип слоя представляет собой P, и может быть установлена равной o, когда тип слоя представляет собой B. В данном случае m, n и o могут быть или могут не быть одинаковыми. Некоторые типы слоя могут иметь такую же конфигурацию, как и другие слои (например, слои P и B).
В качестве другого примера допустимая глубина разбиения при разбиении методом квадродерева (или двоичного дерева или тернарного дерева) может быть установлена равной m, когда цветовая компонента представляет собой компоненту яркости, и может быть установлена равной n, когда цветовая компонента представляет собой цветоразностную компоненту, причем m и n могут быть или могут не быть одинаковыми. Кроме того, диапазон разбиения методом квадродерева (или двоичного дерева или тернарного дерева) в случае, если цветовая компонента представляет собой компоненту яркости (например, от a×b до c×d), может быть или может не быть таким же, как диапазон разбиения методом квадродерева (или двоичного дерева или тернарного дерева), в случае, если цветовая компонента представляет собой цветоразностную компоненту (например, от e×f до g×h).
В качестве другого примера допустимая глубина разбиения при разбиении методом квадродерева (или двоичного дерева или тернарного дерева) может представлять собой m, когда режим кодирования является внутрикадровым, и может представлять собой n (в этом примере предполагается, что n больше, чем m), когда режим кодирования является межкадровым. В данном случае m и n могут быть или могут не быть одинаковыми. Кроме того, диапазон разбиения методом квадродерева (или двоичного дерева или тернарного дерева) в случае, если режим кодирования является внутрикадровым, может быть или может не быть таким же, как диапазон разбиения методом квадродерева (или двоичного дерева или тернарного дерева), в случае, если режим кодирования является межкадровым.
В случае вышеприведенного примера информация о том, поддерживать ли конфигурацию группы кандидатов на адаптивное разбиение согласно информации о кодировании/декодировании, может быть в явном виде сгенерирована или может быть в неявном виде определена.
В вышеприведенном примере был описан случай, в котором схема разбиения и настройка разбиения определены согласно настройке кодирования/декодирования. Вышеприведенный пример демонстрирует некоторые случаи согласно каждому элементу, при этом могут быть возможны изменения с получением других случаев. Кроме того, схема разбиения и настройка разбиения могут быть определены согласно комбинации множества элементов. Например, схема разбиения и настройка разбиения могут быть определены согласно типу, размеру, форме, информации о кодировании/декодировании и т. д. блока.
Кроме того, в вышеприведенном примере факторы, связанные со схемой разбиения, настройкой и т. д., могут быть в неявном виде определены или информация может быть в явном виде сгенерирована для определения того, разрешать ли адаптивный случай, как в вышеприведенном примере.
В настройке разбиения глубина разбиения относится к количеству раз пространственного разбиения относительно исходного блока (в этом примере глубина разбиения исходного блока составляет 0), и разбиение на меньшие блоки может выполняться с увеличением глубины разбиения. Связанная с глубиной настройка может варьировать согласно схеме разбиения. Например, среди способов выполнения разбиения на основе дерева, одна общая глубина может использоваться для глубины разбиения двоичного дерева и глубины разбиения тернарного дерева, и различные глубины могут использоваться для глубины разбиения квадродерева и глубины разбиения двоичного дерева. Таким образом, отдельные глубины могут использоваться в зависимости от типа дерева.
В вышеприведенном примере, когда отдельная глубина разбиения используется согласно типу дерева, глубина разбиения может быть установлена равной 0 в начальном положении разбиения (блок до разбиения в этом примере) дерева. Глубина разбиения может быть вычислена на основании положения начала разбиения, а не на основании диапазона разбиения каждого дерева (максимальное значение в этом примере).
На фиг. 5 изображен процесс разбиения блоков согласно одному варианту осуществления настоящего изобретения. Подробнее, на этой фигуре изображен пример размера и формы блока, получаемого согласно одному или более способов разбиения, начиная с базового блока кодирования.
На фигуре жирная сплошная линия представляет базовый блок кодирования, жирная пунктирная линия представляет границу разбиения методом квадродерева, двойная сплошная линия представляет границу симметричного разбиения методом двоичного дерева, сплошная линия представляет границу разбиения методом тернарного дерева, и тонкая пунктирная линия представляет границу асимметричного разбиения методом двоичного дерева. За исключением жирной сплошной линии, каждая линия представляет границу, разделенную согласно каждому способу разбиения. Настройки разбиения (например, тип разбиения, информация о разбиении, порядок конфигурации информации о разбиении и т. д.), описанные ниже, не ограничены случаем соответствующего примера, и могут быть выполнены различные изменения.
Для удобства изложения описание будет приведено с учетом того, что отдельные настройки разбиения блоков установлены для верхнего левого, верхнего правого, нижнего левого и нижнего правого блоков (NxN. 64x64) в отношении базового блока кодирования (2Nx2N. 128x128). Сначала получают четыре подблока за счет одной операции разбиения (глубина разбиения 0 -> 1, то есть глубина разбиения увеличена на 1) в исходном блоке, и максимальный блок кодирования представляет собой 128x128, минимальный блок кодирования представляет собой 8x8, и максимальная глубина разбиения составляет 4 с учетом настройки разбиения для квадродерева, которая, как предполагается, является настройкой, которая обычно применяется к каждому блоку.
(№ 1, верхний левый блок, от A1 до A6)
В этом примере поддерживается разбиение методом одиночного дерева (квадродерева в этом примере), причем могут быть определены размер и форма блока, который может быть получен посредством одной настройки разбиения блоков, такой как максимальный блок кодирования, минимальный блок кодирования и глубина разбиения. Этот пример представляет собой случай, в котором есть один блок, который может быть получен согласно разбиению (разбиение ширины и высоты на две части, соответственно). Информация о разбиении, необходимая для одной операция разбиения (на основании блока 4Mx4N до разбиения, глубина разбиения увеличена на 1), представляет собой флаг, указывающий, выполняется разбиение или нет (в этом примере, разбиение не выполняется, когда флаг представляет собой 0, разбиение выполняется, когда флаг представляет собой 1), и получаемые кандидаты могут представлять собой 4Mx4N и 2Mx2N.
(№ 2, верхний правый блок, от A7 до A11)
Этот пример представляет собой случай, в котором поддерживается разбиение по схеме нескольких деревьев (квадродерева и двоичного дерева в этом примере), причем могут быть определены размер и форма блока, который может быть получен посредством множества настроек разбиения блоков. В этом примере предполагается, что в случае двоичного дерева максимальный блок кодирования представляет собой 64x64, минимальный блок кодирования имеет длину 4, и максимальная глубина разбиения составляет 4.
Поскольку этот пример представляет собой случай, в котором могут быть получены два или более блоков (два или четыре в этом примере), информация о разбиении, необходимая для одной операции разбиения (квадродерево, глубина разбиения увеличена на 1), может представлять собой флаг, указывающий, выполняется ли разбиение, флаг, указывающий тип разбиения, флаг, указывающий форму разбиения, и флаг, указывающий направление разбиения, и получаемые кандидаты могут представлять собой 4Mx4N, 4Mx2N, 2Mx4N, 4MxN/4Mx3N, 4Mx3N/4MxN, Mx4N/3Mx4N и 3Mx4N/Mx4N.
Когда диапазоны разбиения методом квадродерева и двоичного дерева перекрывают друг друга (то есть в диапазоне, где может выполняться как разбиение методом квадродерева, так и разбиение методом двоичного дерева в текущей стадии), и текущий блок (в состоянии до разбиения) представляет собой блок, полученный посредством разбиения методом квадродерева (блок, полученный посредством разбиения методом квадродерева из родительского блока <когда глубина разбиения на 1 меньше текущей>), информация о разбиении может быть разделена на следующие случаи и сконфигурирована. То есть, когда блок, поддерживаемый согласно каждой настройке разбиения, может быть получен посредством множества способов разбиения, информация о разбиении может быть сгенерирована за счет классификации на следующие процессы.
(1) Когда разбиение методом квадродерева и разбиение методом двоичного дерева перекрывают друг друга
[Таблица 1]
В вышеприведенной таблице «a» обозначает флаг, указывающий, выполняется ли разбиение методом квадродерева, и когда флаг представляет собой 1, выполняется разбиение методом квадродерева (QT). Когда флаг представляет собой 0, проверяется «b», который представляет собой флаг, указывающий, выполняется ли разбиение методом двоичного дерева. Когда b представляет собой 0, дальнейшее разбиение не выполняется в блоке (No Split), но, когда b представляет собой 1, выполняется разбиение методом двоичного дерева.
«c» обозначает флаг, указывающий направление разбиения. c = 0 означает горизонтальное разбиение (hor), а c = 1 означает вертикальное разбиение (ver). «d» обозначает флаг, указывающий форму разбиения. d = 0 означает симметричное разбиение (SBT: симметричное двоичное дерево), и d = 1 означает асимметричное разбиение (ABT: асимметричное двоичное дерево). Только когда d представляет собой 1, проверяется информация о детальном соотношении разбиения (1/4 или 3/4) при асимметричном разбиении. Когда d представляет собой 0, в левом/правом или верхнем/нижнем блоках соотношение левого блока и верхнего блока представляет собой 1/4, и соотношение правого блока и нижнего блока представляет собой 3/4. Когда d представляет собой 1, соотношение является противоположным.
(2) Когда может выполняться только разбиение методом двоичного дерева
В вышеприведенной таблице информация о разбиении может быть выражена с использованием флагов «b»–«e» за исключением флага «a».
Случай блока A7 на фиг. 5 представляет собой случай, в котором разбиение методом квадродерева может выполняться в блоках до разбиения (A7–A11) (то есть даже хотя может выполняться разбиение методом квадродерева, выполняется разбиение методом двоичного дерева вместо разбиения методом квадродерева), и, таким образом, соответствует случаю, в котором генерируется информация о разбиении в пункте (1).
С другой стороны, случай блоков A8–A11 соответствует случаю, в котором разбиение методом двоичного дерева выполняется без предварительного выполнения разбиения методом квадродерева в блоках A8–A11 до разбиения (то есть разбиение методом квадродерева больше не возможно в соответствующих блоках <A8–A11>), и, таким образом, соответствует случаю, в котором генерируется информация о разбиении в пункте (2).
(№ 3, нижний левый блок, от A12 до A15)
Этот пример представляет собой случай, в котором поддерживается разбиение по схеме нескольких деревьев (квадродерева, двоичного дерева и тернарного дерева в этом примере), причем могут быть определены размер и форма блока, который может быть получен посредством множества настроек разбиения блоков. В этом примере предполагается, что в случае двоичного дерева/тернарного дерева максимальный блок кодирования представляет собой 64x64, минимальный блок кодирования имеет длину 4, и максимальная глубина разбиения составляет 4.
Поскольку этот пример представляет собой случай, в котором могут быть получены два или более блоков (два, три и четыре в этом примере), информация о разбиении, необходимая для одной операции разбиения, может представлять собой флаг, указывающий, выполняется ли разбиение, флаг, указывающий тип разбиения, и флаг, указывающий направление разбиения, и получаемые кандидаты могут представлять собой 4Mx4N, 4Mx2N, 2Mx4N, 4MxN/4Mx2N/4MxN и Mx4N/2Mx4N/Mx4N.
Когда диапазоны разбиения методом квадродерева и двоичного дерева/тернарного дерева перекрывают друг друга, и текущий блок представляет собой блок, полученный посредством разбиения методом квадродерева, информация о разбиении может быть разделена на следующие случаи и сконфигурирована.
(1) Когда разбиение методом квадродерева и разбиение методом двоичного дерева/тернарного дерева перекрывают друг друга
[Таблица 2]
В вышеприведенной таблице «a» обозначает флаг, указывающий, выполняется ли разбиение методом квадродерева, и когда флаг представляет собой 1, выполняется разбиение методом квадродерева. Когда флаг представляет собой 0, проверяется «b», который представляет собой флаг, указывающий, выполняется ли разбиение методом двоичного дерева или тернарного дерева. Когда b представляет собой 0, дальнейшее разбиение не выполняется в блоке, но, когда b представляет собой 1, выполняется разбиение методом двоичного дерева или тернарного дерева.
«c» обозначает флаг, указывающий направление разбиения. c = 0 означает горизонтальное разбиение, а c = 1 означает вертикальное разбиение. «d» обозначает флаг, указывающий тип разбиения. d = 0 означает разбиение методом двоичного дерева (BT), и d = 1 означает разбиение методом тернарного дерева (TT).
(2) Когда может выполняться только разбиение методом двоичного дерева/тернарного дерева
В вышеприведенной таблице информация о разбиении может быть выражена с использованием флагов «b»–«d» за исключением флага «a».
На фиг. 5 случай блоков A12 и A15 представляет собой случай, в котором разбиение методом квадродерева может выполняться в блоках A12 и A15 до разбиения, и, таким образом, соответствует случаю, в котором генерируется информация о разбиении в пункте (1).
С другой стороны, случай блоков A13 и A14 соответствует случаю, в котором разбиение методом тернарного дерева выполняется без предварительного выполнения разбиения методом квадродерева в блоках A13 и A14 до разбиения, и, таким образом, соответствует случаю, в котором генерируется информация о разбиении в пункте (2).
(№ 4, нижний левый блок, от A16 до A20)
Этот пример представляет собой случай, в котором поддерживается разбиение по схеме нескольких деревьев (квадродерева, двоичного дерева и тернарного дерева в этом примере), причем могут быть определены размер и форма блока, который может быть получен посредством множества настроек разбиения блоков. В этом примере предполагается, что в случае двоичного дерева/тернарного дерева максимальный блок кодирования представляет собой 64x64, минимальный блок кодирования имеет длину 4, и максимальная глубина разбиения составляет 4.
Поскольку этот пример представляет собой случай, в котором могут быть получены два или более блоков (два, три и четыре в этом примере) посредством разбиения, информация о разбиении, необходимая для одной операции разбиения, может представлять собой флаг, указывающий, выполняется ли разбиение, флаг, указывающий тип разбиения, флаг, указывающий форму разбиения, и флаг, указывающий направление разбиения, и получаемые кандидаты могут представлять собой 4Mx4N, 4Mx2N, 2Mx4N, 4MxN/4Mx3N, 4Mx3N/4MxN, Mx4N/3Mx4N, 3Mx4N/Mx4N, 4MxN/4Mx2N/4MxN и Mx4N/2Mx4N/Mx4N.
Когда диапазоны разбиения методом квадродерева и двоичного дерева/тернарного дерева перекрывают друг друга, и текущий блок представляет собой блок, полученный посредством разбиения методом квадродерева, информация о разбиении может быть разделена на следующие случаи и сконфигурирована.
(1) Когда разбиение методом квадродерева и разбиение методом двоичного дерева/тернарного дерева перекрывают друг друга
[Таблица 3]
В вышеприведенной таблице «a» обозначает флаг, указывающий, выполняется ли разбиение методом квадродерева, и когда флаг представляет собой 1, выполняется разбиение методом квадродерева. Когда флаг представляет собой 0, проверяется «b», который представляет собой флаг, указывающий, выполняется ли разбиение методом двоичного дерева. Когда b представляет собой 0, дальнейшее разбиение не выполняется в блоке, но, когда b представляет собой 1, выполняется разбиение методом двоичного дерева или тернарного дерева.
«c» обозначает флаг, указывающий направление разбиения. c = 0 означает горизонтальное разбиение, а c = 1 означает вертикальное разбиение. «d» обозначает флаг, указывающий тип разбиения. d = 0 означает тернарное разбиение, и d = 1 означает разбиение методом двоичного дерева. Когда d представляет собой 1, проверяется e, которое представляет собой флаг для формы разбиения. Когда e представляет собой 0, выполняется симметричное разбиение, а когда e представляет собой 1, выполняется асимметричное разбиение. Когда e представляет собой 1, проверяется информация о детальном соотношении разбиения при асимметричном разбиении, как и в предыдущем примере.
(2) Когда может выполняться только разбиение методом двоичного дерева/тернарного дерева
В вышеприведенной таблице информация о разбиении может быть выражена с использованием флагов «b»–«f» за исключением флага «a».
На фиг. 5 случай блока A20 представляет собой случай, в котором разбиение методом квадродерева может выполняться в блоках A16–A19 до разбиения, и, таким образом, соответствует случаю, в котором генерируется информация о разбиении в пункте (1).
С другой стороны, случай блоков A16–A19 соответствует случаю, в котором разбиение методом двоичного дерева выполняется без предварительного выполнения разбиения методом квадродерева в блоках A16–A19 до разбиения, и, таким образом, соответствует случаю, в котором генерируется информация о разбиении в пункте (2).
Далее будет рассмотрен способ межкадрового предсказания на основе режима слияния. В режиме слияния информация о движении может быть получена в элементах одного блока. В данном случае блок может относиться к блоку кодирования, определенному посредством вышеупомянутого блока разбиение. Кроме того, блок представляет собой блок кодирования листового узла и может относиться к блоку, который больше не разбивается на меньшие блоки кодирования. В режиме слияния информация о движении может быть получена в элементах подблоков, принадлежащих к одному блоку. Для этого один блок может быть дополнительно разбит на множество подблоков. Например, моделирование аффинного движения может выполняться на основании режима слияния в элементах подблоков. Текущий блок может выборочно использовать либо режим слияния на основе блоков, либо режим слияния на основе подблоков, и для этого может использоваться заданный флаг. В данном случае флаг может представлять собой информацию, указывающую, применяется ли режим слияния на основе подблоков. Флаг может быть закодирован и передан устройством для кодирования на основании заданного параметра кодирования или может быть получен устройством для декодирования. Параметр кодирования может означать размер/форму блока, тип компонента, тип разбиения, глубину разбиения и т. д. Например, когда размер текущего блока больше или равен NxM, флаг может быть передан. В ином случае, флаг может быть получен в качестве предварительно определенного значения. В данном случае N и M могут представлять собой целое число: 8, 16 или больше. N и M могут быть одинаковыми или разными. Режим слияния на основе блоков будет описан со ссылкой на фиг. 6, а режим слияния на основе подблоков будет описан со ссылкой на фиг. 7–10, соответственно.
На фиг. 6 изображен способ выполнения межкадрового предсказания на основании режима слияния на основе блоков в качестве варианта осуществления, к которому применяется настоящее изобретение.
Как показано на фиг. 6, может быть составлен список кандидатов на слияние текущего блока (S600).
Список кандидатов на слияние может содержать по меньшей мере одного из пространственного кандидата на слияние или временного кандидата на слияние текущего блока.
Информация о движении пространственного кандидата на слияние может быть получена из информации о движении пространственного соседнего блока текущего блока. В данном случае пространственный соседний блок представляет собой блок, принадлежащий к тому же изображению, что и изображение текущего блока, и может означать блок, смежный с текущим блоком. Пространственный соседний блок может включать по меньшей мере один из левого, верхнего, верхнего правого, нижнего левого или верхнего левого соседнего блока текущего блока. Верхний левый соседний блок может использоваться только когда по меньшей мере один из блоков, смежных с левым, верхним, верхний правым и нижним левым блоками, не доступен.
Информация о движении временного кандидата на слияние может быть получена из информации о движении временного соседнего блока текущего блока. Временной соседний блок представляет собой блок, принадлежащий к изображению, отличающемуся от изображения текущего блока, и может быть определен как блок, находящийся в том же положении, что и текущий блок. В данном случае блок в том же положении может относиться к по меньшей мере одному из блока BR, смежного с нижним правым углом текущего блока, блока CTR, имеющего положение центральной точки отсчета текущего блока, или блока TL, имеющего положение верхней левой точки отсчета текущего блока. Альтернативно блок в том же положении может относиться к блоку, имеющему положение, сдвинутое на заданный вектор диспаратности из положения верхней левой точки отсчета текущего блока. В данном случае вектор диспаратности может быть определен на основании любого одного из векторов движения пространственного соседнего блока, описанного выше. Альтернативно вектор диспаратности может быть определен на основании комбинации по меньшей мере двух векторов движения пространственных соседних блоков, описанных выше. Комбинация может относиться к вычислению, такому как максимальное значение, минимальное значение, медианное значение и средневзвешенное значение. Например, вектор диспаратности может быть установлен как вектор движения левого соседнего блока или верхнего соседнего блока. Альтернативно вектор диспаратности может быть установлен как медианное значение или среднее значение между вектором движения левого соседнего блока и вектором движения нижнего левого соседнего блока.
Вектор движения и индекс опорного изображения временного кандидата на слияние могут быть получены в качестве вектора движения и индекса опорного изображения вышеописанного временного соседнего блока, соответственно. Альтернативно вектор движения временного кандидата на слияние может быть получен в качестве вектора движения временного соседнего блока, и индекс опорного изображения временного кандидата на слияние может быть установлен на значение по умолчанию (например, 0), предварительно отправленное на устройство для декодирования независимо от временного соседнего блока.
Список кандидатов на слияние может дополнительно содержать комбинированного кандидата на слияние. Комбинированный кандидат на слияние может быть получен за счет комбинирования n кандидатов на слияние, принадлежащих к предварительно сгенерированному списку кандидатов на слияние.
В данном случае n может представлять собой целое число: 2, 3, 4 или больше. Количество n кандидатов на слияние, подлежащих комбинированию, может представлять собой фиксированное значение, предварительное отправленное на устройство для кодирования/декодирования, или может быть закодировано и передано посредством устройства для кодирования. Передача может выполняться по меньшей мере в одном элементе последовательности, изображения, слоя, плитки, части плитки (пакета) или заданного блока. Количество n кандидатов на слияние, подлежащих комбинированию, может переменно определяться на основании количества оставшихся кандидатов на слияние. В данном случае количество оставшихся кандидатов на слияние может означать разницу между максимальным количеством кандидатов на слияние, которое может быть включено в список кандидатов на слияние, и текущим количеством кандидатов на слияние, принадлежащих к списку кандидатов на слияние. Максимальное количество может представлять собой количество, предварительно отправленное на устройство для кодирования/декодирования, или оно может быть закодировано и передано посредством устройства для кодирования. Текущее количество может означать количество кандидатов на слияние, настроенных перед добавлением комбинированного кандидата на слияние. Например, когда количество оставшихся кандидатов на слияние представляет собой 1, могут использоваться два кандидата на слияние, и когда количество оставшихся кандидатов на слияние больше 1, может использоваться три или больше кандидатов на слияние.
Положения n кандидатов на слияние могут представлять собой положения, предварительно определенные в списке кандидатов на слияние. Например, индексы (от 0 од (k-1)) могут быть присвоены каждому кандидату на слияние, принадлежащему к списку кандидатов на слияние. В данном случае k может означать общее количество кандидатов на слияние, принадлежащих к списку кандидатов на слияние. В этом случае положения n кандидатов на слияние могут соответствовать от индекса 0 до индекса (n-1) в списке кандидатов на слияние. Альтернативно n кандидатов на слияние могут быть определены с учетом направления предсказания каждого кандидата на слияние, принадлежащего к списку кандидатов на слияние. Например, среди кандидатов на слияние, принадлежащих к списку кандидатов на слияние, может выборочно использоваться только кандидат на слияние, соответствующий двунаправленному предсказанию, или может выборочно использоваться только кандидат на слияние, соответствующий однонаправленному предсказанию.
Комбинированный кандидат на слияние может быть получен с использованием и пространственного кандидата на слияние, и временного кандидата на слияние, или может быть получен с использованием только либо пространственного кандидата на слияние, либо временного кандидата на слияние. Например, комбинированный кандидат на слияние может быть ограничен получением только с использованием пространственного кандидата на слияние. В этом случае количество кандидатов на слияние, подлежащих комбинированию, может быть ограничено в пределах количества пространственных кандидатов на слияние, принадлежащих к предварительно сгенерированному списку кандидатов на слияние.
Комбинированный кандидат на слияние может быть добавлен после пространственного/временного кандидата на слияние в списке кандидатов на слияние. То есть индекс комбинированного кандидата на слияние может быть больше индекса пространственного/временного кандидата на слияние. Альтернативно комбинированный кандидат на слияние может быть добавлен между пространственным кандидатом на слияние и временным кандидатом на слияние в списке кандидатов на слияние. То есть индекс комбинированного кандидата на слияние может быть больше индекса пространственного кандидата на слияние и меньше индекса временного кандидата на слияние. Альтернативно положение комбинированного кандидата на слияние может переменно определяться с учетом направления предсказания комбинированного кандидата на слияние. Положения комбинированных кандидатов на слияние в списке кандидатов на слияние могут быть расположены в ином порядке в зависимости от того, является ли направление предсказания комбинированного кандидата на слияние двунаправленным предсказанием. Например, когда комбинированный кандидат на слияние представляет собой двунаправленное предсказание, может быть присвоен индекс, меньший, чем индекс пространственного или временного кандидата на слияние, и, в ином случае, может быть присвоен индекс, большим чем индекс пространственного или временного кандидата на слияние.
Здесь и далее для удобства описания будет изложен способ получения комбинированного кандидата на слияние на основании двух кандидатов на слияние.
Информация о движении комбинированного кандидата на слияние может быть получена посредством средневзвешенного значения информации о движении первого кандидата на слияние и информации о движении второго кандидата на слияние. В данном случае весовой коэффициент средневзвешенного значения представляет собой [1:1], [1:2], [1:3], [2:3] и т. д., и не ограничен этим. Весовой коэффициент может быть предварительно определен в устройстве для кодирования/декодирования или получен от устройства для декодирования. В этом случае весовой коэффициент может быть получен путем рассмотрения по меньшей мере одного из расстояния между текущим изображением и опорным изображением кандидата на слияние или направления предсказания кандидата на слияние. Альтернативно информация о движении комбинированного кандидата на слияние может быть получена за счет получения информации о движении в направлении L0 от первого кандидата на слияние и информации о движении в направлении L1 от второго кандидата на слияние, и комбинирования информации о движении в направлении L0 и информации о движении в направлении L1. Информация о движении комбинированного кандидата на слияние может быть получена на основании по меньшей мере одного из вышеописанных способов получения, и получение может быть выполнено с учетом направления предсказания кандидата на слияние, подлежащего комбинированию, как описано ниже.
В этом описании информация о движении может содержать по меньшей мере одно из флага направления предсказания, индекса опорного изображения или вектора движения. Информация о движении может быть определена для предсказания L0 и предсказания L1, соответственно. В данном случае предсказание L0 может относиться к предсказанию, относящемуся к списку опорных изображений L0, а предсказание L1 может относиться к предсказанию, относящемуся к списку опорных изображений L1.
1. Когда как первый кандидат на слияние, так и второй кандидат на слияние представляют собой однонаправленные предсказания
(Случай 1) Когда первый кандидат на слияние представляет собой предсказание L0 и второй кандидат на слияние представляет собой предсказание L1, индекс опорного изображения комбинированного кандидата на слияние в направлении L0 может быть получен как индекс опорного изображения первого кандидата на слияние. Флаг направления предсказания комбинированного кандидата на слияние в направлении L0 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L0 может быть получен как вектор движения первого кандидата на слияние. Индекс опорного изображения комбинированного кандидата на слияние в направлении L1 может быть получен как индекс опорного изображения второго кандидата на слияние. Флаг направления предсказания комбинированного кандидата на слияние в направлении L1 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L1 может быть получен как вектор движения второго кандидата на слияние.
(Случай 2) Когда первый кандидат на слияние представляет собой предсказание L1 и второй кандидат на слияние представляет собой предсказание L0, индекс опорного изображения комбинированного кандидата на слияние в направлении L0 может быть получен как индекс опорного изображения второго кандидата на слияние. Флаг направления предсказания комбинированного кандидата на слияние в направлении L0 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L0 может быть получен как вектор движения второго кандидата на слияние. Индекс опорного изображения комбинированного кандидата на слияние в направлении L1 может быть получен как индекс опорного изображения первого кандидата на слияние. Флаг направления предсказания комбинированного кандидата на слияние в направлении L1 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L1 может быть получен как вектор движения первого кандидата на слияние.
(Случай 3) Когда первый кандидат на слияние и второй кандидат на слияние представляют собой предсказание L0, индекс опорного изображения комбинированного кандидата на слияние в направлении L0 может быть получен как индекс опорного изображения любого из первого кандидата на слияние и второго кандидата на слияние. Например, индекс опорного изображения одного из первого кандидата на слияние и второго кандидата на слияние, имеющих наименьший индекс, может быть установлен как индекс опорного изображения комбинированного кандидата на слияние в направлении L0. Флаг направления предсказания комбинированного кандидата на слияние в направлении L0 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L0 может быть получен как средневзвешенное значение вектора движения первого кандидата на слияние и второго кандидата на слияние. Индекс опорного изображения комбинированного кандидата на слияние в направлении L1 может быть получен как -1, флаг направления предсказания в направлении L1 может быть получен как 0, и информация о движении в направлении L1 может быть получена как 0.
(Случай 4) Когда первый кандидат на слияние и второй кандидат на слияние представляют собой предсказание L1, индекс опорного изображения комбинированного кандидата на слияние в направлении L0 может быть получен как -1, флаг направления предсказания в направлении L0 может быть получен как 0, и информация о движении в направлении L0 может быть получена как 0. Индекс опорного изображения комбинированного кандидата на слияние в направлении L1 может быть получен как индекс опорного изображения либо первого кандидата на слияние, либо второго кандидата на слияние. Например, индекс опорного изображения одного из первого кандидата на слияние и второго кандидата на слияние, имеющих наименьший индекс, может быть установлен как индекс опорного изображения комбинированного кандидата на слияние в направлении L1. Флаг направления предсказания комбинированного кандидата на слияние в направлении L1 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L1 может быть получен как средневзвешенное значение вектора движения первого кандидата на слияние и второго кандидата на слияние.
2. Когда как первый кандидат на слияние, так и второй кандидат на слияние представляют собой двунаправленные предсказания
(Случай 5) Индекс опорного изображения комбинированного кандидата на слияние в направлении L0 может быть получен как индекс опорного изображения либо первого кандидата на слияние, либо второго кандидата на слияние. Например, индекс опорного изображения одного из первого кандидата на слияние и второго кандидата на слияние, имеющих наименьший индекс, может быть установлен как индекс опорного изображения комбинированного кандидата на слияние в направлении L0. Флаг направления предсказания комбинированного кандидата на слияние в направлении L0 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L0 может быть получен как средневзвешенное значение вектора движения первого кандидата на слияние и второго кандидата на слияние. Индекс опорного изображения комбинированного кандидата на слияние в направлении L1 может быть получен как индекс опорного изображения либо первого кандидата на слияние, либо второго кандидата на слияние. Например, индекс опорного изображения одного из первого кандидата на слияние и второго кандидата на слияние, имеющих наименьший индекс, может быть установлен как индекс опорного изображения комбинированного кандидата на слияние в направлении L1. Флаг направления предсказания комбинированного кандидата на слияние в направлении L1 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L1 может быть получен как средневзвешенное значение вектора движения первого кандидата на слияние и второго кандидата на слияние.
3. Когда первый кандидат на слияние представляет собой двунаправленное предсказание, а второй кандидат на слияние представляет собой однонаправленное предсказание
(Случай 6) Когда второй кандидат на слияние представляет собой предсказание L0, индекс опорного изображения комбинированного кандидата на слияние в направлении L0 может быть получен как индекс опорного изображения либо первого кандидата на слияние, либо второго кандидата на слияние. Например, индекс опорного изображения одного из первого кандидата на слияние и второго кандидата на слияние, имеющих наименьший индекс, может быть установлен как индекс опорного изображения комбинированного кандидата на слияние в направлении L0. Флаг направления предсказания комбинированного кандидата на слияние в направлении L0 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L0 может быть получен как средневзвешенное значение вектора движения первого кандидата на слияние и второго кандидата на слияние. Индекс опорного изображения комбинированного кандидата на слияние в направлении L1 может быть получен как индекс опорного изображения первого кандидата на слияние. Флаг направления предсказания комбинированного кандидата на слияние в направлении L1 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L1 может быть получен как вектор движения первого кандидата на слияние.
(Случай 7) Когда второй кандидат на слияние представляет собой предсказание L1, индекс опорного изображения комбинированного кандидата на слияние в направлении L0 может быть получен как индекс опорного изображения первого кандидата на слияние. Флаг направления предсказания комбинированного кандидата на слияние в направлении L0 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L0 может быть получен как вектор движения первого кандидата на слияние. Индекс опорного изображения комбинированного кандидата на слияние в направлении L1 может быть получен как индекс опорного изображения либо первого кандидата на слияние, либо второго кандидата на слияние. Например, индекс опорного изображения одного из первого кандидата на слияние и второго кандидата на слияние, имеющих наименьший индекс, может быть установлен как индекс опорного изображения комбинированного кандидата на слияние в направлении L1. Флаг направления предсказания комбинированного кандидата на слияние в направлении L1 может быть получен как 1. Вектор движения комбинированного кандидата на слияние в направлении L1 может быть получен как средневзвешенное значение вектора движения первого кандидата на слияние и второго кандидата на слияние.
Как показано на фиг. 6, информация о движении текущего блока может быть получена из списка кандидатов на слияние (S610).
В частности, может быть передан индекс слияния текущего блока. Индекс слияния может указывать любого из множества кандидатов на слияние, принадлежащих к списку кандидатов на слияние. То есть может быть отобран кандидат на слияние, имеющий такой же индекс, как индекс слияния, и информация о движении текущего блока может быть получена с использованием информации о движении отобранного кандидата на слияние.
Как показано на фиг. 6, может быть выполнено межкадровое предсказание текущего блока с использованием полученной информации о движении (S620).
В частности, опорное изображение может быть выбрано из списка опорных изображений на основании индекса опорного изображения текущего блока. Опорный блок в опорном изображении может быть указан на основании вектора движения текущего блока. Пиксель предсказания текущего блока может быть сгенерирован с использованием восстановленного пикселя указанного опорного блока. Текущий блок может быть восстановлен за счет сложения пикселя предсказания текущего блока и остаточного пикселя. В данном случае остаточный пиксель может быть получен за счет выполнения по меньшей мере одного из обратного квантования или обратного преобразования в отношении остаточного коэффициента, переданного посредством битового потока.
На фиг. 7 изображен способ межкадрового предсказания на основании аффинной модели в качестве варианта осуществления, к которому применяется настоящее изобретение.
Как показано на фиг. 7, может быть сгенерирован список кандидатов для предсказания информации о движении текущего блока (S700).
Список кандидатов может содержать один или более кандидатов на основе аффинной модели (здесь и далее называемые аффинными кандидатами). Аффинный кандидат может относиться к кандидату, имеющему вектор контрольной точки. Вектор контрольной точки относится к вектору движения контрольной точки для аффинной модели и может быть определен для углового положения блока (например, по меньшей мере одного положения среди верхнего левого угла, верхнего правого угла, нижнего левого угла или нижнего правого угла).
Аффинный кандидат может включать по меньшей мере одного из пространственного кандидата, временного кандидата или настроенного кандидата. В данном случае пространственный кандидат может быть получен из вектора соседнего блока, в пространственном отношении смежного с текущим блоком, и временной кандидат может быть получен из вектора соседнего блока, во временном отношении смежного с текущим блоком. В данном случае соседний блок может относиться к блоку, закодированному посредством аффинной модели. Вектор может относиться к вектору движения или вектору контрольной точки.
Способ получения пространственного/временного кандидата на основании вектора пространственного/временного соседнего блока будет описан подробно со ссылкой на фиг. 8.
Между тем, настроенный кандидат может быть получен на основании комбинации векторов движения пространственных/временных соседних блоков относительно текущего блока, что будет описано подробно со ссылкой на фиг. 9.
Множество аффинных кандидатов, описанных выше, могут быть расположены в списке кандидатов на основании заданного приоритета. Например, множество аффинных кандидатов могут быть расположены в списке кандидатов в следующем порядке: пространственный кандидат, временной кандидат и настроенный кандидат. Альтернативно множество аффинных кандидатов могут быть расположены в списке кандидатов в следующем порядке: временной кандидат, пространственный кандидат и настроенный кандидат. Однако настоящее изобретение не ограничено этим, и временной кандидат может быть расположен после настроенного кандидата. Альтернативно некоторые из настроенных кандидатов могут быть расположены перед пространственным кандидатом, а остальные могут быть расположены после пространственного кандидата.
Список кандидатов может дополнительно содержать временного кандидата на основе подблоков. Информация о движении временного кандидата может быть получена в качестве совмещаемого блока, соответствующего текущему блоку, что будет описано подробно со ссылкой на фиг. 10.
На основании списка кандидатов и индекса кандидата может быть получен вектор контрольной точки текущего блока (S710).
Индекс кандидата может относиться к индексу, который закодирован для получения вектора контрольной точки текущего блока. Индекс кандидата может указывать любой из множества аффинных кандидатов, принадлежащих к списку кандидатов. Вектор контрольной точки текущего блока может быть получен с использованием вектора контрольной точки аффинного кандидата, указанного посредством индекса кандидата.
Например, предполагается, что тип аффинной модели текущего блока является 4-параметральным (то есть определяется, что текущий блок использует два вектора контрольной точки). В этом случае, когда аффинный кандидат, указанный посредством индекса кандидата, имеет три вектора контрольной точки, только два вектора контрольной точки (например, векторы контрольной точки, индексы которых представляют собой 0 и 1) могут быть выбраны из трех векторов контрольной точки и установлены в качестве векторов контрольной точки текущего блока. Альтернативно три вектора контрольной точки указанных аффинных кандидатов могут быть установлены в качестве векторов контрольной точки текущего блока. В этом случае тип аффинной модели текущего блока может быть обновлен до 6-параметрального.
И наоборот, предполагается, что тип аффинной модели текущего блока является 6-параметральным (то есть определяется, что текущий блок использует три вектора контрольной точки). В этом случае, когда аффинный кандидат, указанный посредством индекса кандидата, имеет два вектора контрольной точки, может быть сгенерирован один дополнительный вектор контрольной точки, и два вектора контрольной точки и дополнительный вектор контрольной точки аффинного кандидата могут быть установлены в качестве векторов контрольной точки текущего блока. Дополнительный вектор контрольной точки может быть получен на основании по меньшей мере одного из двух векторов контрольной точки аффинного кандидата, а также информации о размере или положении текущего/соседнего блока.
Альтернативно два вектора контрольной точки указанных аффинных кандидатов могут быть установлены в качестве векторов контрольной точки текущего блока. В этом случае тип аффинной модели текущего блока может быть обновлен до 4-параметрального.
Вектор движения текущего блока может быть получен на основании вектора контрольной точки текущего блока (S720).
Вектор движения может быть получен в элементах подблоков текущего блока. Для этого текущий блок может быть разбит на множество NxM подблоков. В данном случае NxM подблоков могут быть в форме прямоугольника (N > M или N < M) или квадрата (N = M). Значения N и M могут представлять собой 4, 8, 16, 32 или больше.
Например, размер/форма подблока могут представлять собой фиксированные размер/форму, предварительно определенные в устройстве для декодирования. Например, размер/форма подблока могут представлять собой квадрат, такой как 4x4, 8x8 или 16x16, или прямоугольник, такой как 2x4, 2x8, 4x8 или 4x16. Альтернативно подблок может быть определен как блок, в котором сумма ширины и высоты составляет 8, 12, 16 или больше. Альтернативно подблок может быть определен как блок, в котором произведение ширины на высоту представляет собой целое число: 16, 32, 64 или больше.
Альтернативно размер/форма подблока могут быть получены переменным образом на основании атрибута вышеописанного блока. Например, когда размер текущего блока больше или равен заданному пороговому размеру, текущий блок может быть разбит на элементы первого подблока (например, 8x8 и 16x16), и, в ином случае, текущий блок может быть разбит на элементы второго подблока (например, 4x4).
Альтернативно информация о размере/форме подблока может быть закодирована и передана посредством устройства для кодирования. Информация указывает по меньшей мере одно из размера или формы подблока, которые могут быть переданы по меньшей мере на одном уровне последовательности, изображения, группы плиток, плитки и CTU.
Контрольная точка, представляющая текущий блок, может иметь верхнее левое положение и верхнее правое положение. Однако настоящее изобретение не ограничено этим, и контрольная точка может иметь три точки: верхнее левое положение, верхнее правое положение и нижнее левое положение, или может дополнительно иметь множество дополнительных точек.
Когда используются две контрольные точки, вектор движения для каждого подблока текущего блока может быть получен с использованием по меньшей мере одного из вектора первой контрольной точки, соответствующего первой контрольной точке, вектора второй контрольной точки, соответствующего второй контрольной точке, и положения (x, y) подблока или размера (ширины или высоты) текущего блока.
Когда используются три контрольные точки, вектор движения для каждого подблока текущего блока может быть получен с использованием по меньшей мере одного из вектора первой контрольной точки, соответствующего первой контрольной точке, вектора второй контрольной точки, соответствующего второй контрольной точке, вектора третьей контрольной точки, соответствующего третьей контрольной точке, и положения (x, y) подблока или размера (ширины или высоты) текущего блока. В этом случае может использоваться разностный вектор между вектором второй контрольной точки и вектором первой контрольной точки, и может использоваться разностный вектор между вектором третьей контрольной точки и вектором первой контрольной точки. Разностный вектор может быть вычислен для каждого из горизонтального направления (направление по оси x) и вертикального направления (направление по оси y).
Процесс получения вектора движения может дополнительно включать процесс применения заданного сдвига к вектору движения, полученному на основании вектора контрольной точки. Сдвиг может относиться к вектору для улучшения предварительно полученного вектора движения. Сдвиг может быть определен на основании информация о по меньшей мере одном из размера или направления сдвига. Размер (абсолютный) может представлять собой целое число: 1, 2, 3 или больше. Направление может включать по меньшей мере одно из направления влево, направления вправо, направления вверх или направления вниз. Информация о размере и/или направлении сдвига может быть закодирована и передана посредством устройства для кодирования. Альтернативно размер сдвига может представлять собой фиксированное значение, предварительно установленное в устройстве для декодирования.
Межкадровое предсказание может быть выполнено в отношении текущего блока с использованием полученного вектора движения (S730).
В частности, опорный блок может быть указан с использованием вектора движения текущего блока. Опорный блок может быть указан для каждого подблока текущего блока. Опорный блок каждого подблока может относиться к одному опорному изображению. То есть подблоки, принадлежащие к текущему блоку, могут совместно использовать одно опорное изображение. Альтернативно индекс опорного изображения может быть независимо установлен для каждого подблока текущего блока.
Между тем, полученный вектор движения может содержать по меньшей мере один из вектора движения L0 и вектора движения L1. Когда вектор движения содержит векторы движения L0 и L1, устройство для декодирования может выполнять однонаправленное предсказание за счет установки любого из векторов движения L0 и L1 равным 0.
Установка может быть выборочно выполнена с учетом по меньшей мере одного из размера блока или режима предсказания. В данном случае блок может относиться к текущему блоку или подблоку текущего блока. Режим предсказания может относиться к режиму пропуска, режиму слияния, режиму AMVP, режиму предсказания на основе аффинной модели, режиму ссылки на текущее изображение и т. д.
Например, когда размер текущего блока (или подблока текущего блока) меньше или равен заданному пороговому размеру, выполняется однонаправленное предсказание за счет установки вектора движения L1 равным 0, и, в ином случае, может выполняться двунаправленное предсказание с использованием векторов движения L0 и L1. В данном случае пороговый размер может быть определен как размер блока, в котором по меньшей мере одно из ширины и высоты представляет собой 4, 8 или 16.
Альтернативно, когда текущий блок закодирован в первом режиме предсказания, выполняется однонаправленное предсказание за счет установки вектора движения L1 равным 0, и, в ином случае, может выполняться двунаправленное предсказание с использованием векторов движения L0 и L1.
Указанный опорный блок может быть установлен как блок предсказания текущего блока. Текущий блок может быть восстановлен за счет сложения остаточного блока и блока предсказания.
Фиг. 8 относится к способу получения аффинного кандидата из вектора контрольной точки пространственного/временного соседнего блока в качестве варианта осуществления, к которому применяется настоящее изобретение.
Ширина и высота текущего блока 800 представляют собой cbW и cbH, соответственно, а положение текущего блока представляет собой (xCb, yCb). Ширина и высота пространственных соседних блоков 810–850 представляют собой nbW и nbH, соответственно, и положения пространственных соседних блоков представляют собой (xNb, yNb). Пространственный соседний блок может включать по меньшей мере один из левого блока 810, нижнего левого блока 840, верхнего правого блока 830, верхнего блока 820 или верхнего левого блока 850 текущего блока. Альтернативно пространственный соседний блок может дополнительно включать по меньшей мере один из блока, смежного с правой стороной, или блока, смежного с нижней стороной верхнего левого блока 850.
Пространственный кандидат может иметь n векторов контрольной точки (cpMV). В данном случае значение n может представлять собой целое число: 1, 2, 3 или больше. Значение n определяется на основании по меньшей мере одной из информации о том, выполняется ли декодирование в элементах подблоков, информации о том, кодируется ли блок посредством аффинной модели, или информации о типе (4-параметральном или 6-параметральном) аффинной модели.
Например, согласно информации, когда соответствующий блок представляет собой блок, декодированный в элементах подблоков, или закодированный посредством аффинной модели, соответствующий блок может иметь два вектора контрольной точки. С другой стороны, в ином случае, соответствующий блок может не подвергаться предсказанию на основании аффинной модели.
Альтернативно согласно информации, когда соответствующий блок представляет собой блок, закодированный посредством аффинной модели, и тип аффинной модели является 6-параметральным, соответствующий блок может иметь три вектора контрольной точки. С другой стороны, в ином случае, соответствующий блок может подвергаться предсказанию на основании аффинной модели.
Вышеописанная информация может быть закодирована и передана посредством устройства для кодирования. Альтернативно вся информация или ее часть может быть получена от устройства для декодирования на основании атрибута блока. В данном случае блок может относиться к текущему блоку или может относиться к пространственному/временному соседнему блоку текущего блока. Атрибут может относиться к параметрам, связанным с размером, формой, положением, типом разбиения, межкадровым режимом, остаточным коэффициентом и т. д. Межкадровый режим представляет собой режим, предварительно определенный в устройстве для декодирования, и может относиться к режиму слияния, режиму пропуска, режиму AMVP, аффинной модели, комбинированному внутрикадровому/межкадровому режиму, режиму ссылки на текущее изображение и т. д. Альтернативно значение n может быть получено от устройства для декодирования на основании вышеописанного атрибута блока.
В настоящем варианте осуществления n векторов контрольной точки могут быть выражены как вектор первой контрольной точки (cpMV[0]), вектор второй контрольной точки (cpMV[1]), вектор третьей контрольной точки (cpMV[2]) и вектор n-й контрольной точки (cpMV[n-1]).
В качестве примера вектор первой контрольной точки (cpMV[0]), вектор второй контрольной точки (cpMV[1]), вектор третьей контрольной точки (cpMV[2]) и вектор четвертой контрольной точки (cpMV[3]) могут представлять собой векторы, соответствующие положениям верхней левой точки отсчета, верхней правой точки отсчета, нижней левой точки отсчета и нижней правой точки отсчета блока. В данном случае предполагается, что пространственный кандидат имеет три вектора контрольной точки, и три вектора контрольной точки могут представлять собой произвольные векторы контрольной точки, выбранные из векторов с первой по n-ую контрольных точек. Однако настоящее изобретение не ограничено этим, и пространственный кандидат может иметь два вектора контрольной точки, и два вектора контрольной точки могут представлять собой произвольные векторы контрольной точки, выбранные из векторов с первой по n-ую контрольных точек.
Далее будет описан способ получения вектора контрольной точки пространственного кандидата.
1. Когда граница текущего блока не касается границы CTU
Вектор первой контрольной точки может быть получен на основании по меньшей мере одного из вектора первой контрольной точки пространственного соседнего блока, заданного разностного значения и информации о положении (xCb, yCb) текущего блока или информации о положении (xNb, yNb) пространственного соседнего блока.
Количество разностных значений может быть 1, 2, 3 или больше. Количество разностных значений может быть определено переменным образом с учетом атрибута вышеописанного блока или может представлять собой фиксированное значение, предварительно отправленное на устройство для декодирования. Разностное значение может быть определено как разностное значение между одним из множества векторов контрольной точки и другим из них. Например, разностное значение может включать по меньшей мере одно из первого разностного значения между вектором второй контрольной точки и вектором первой контрольной точки, второго разностного значения между вектором третьей контрольной точки и вектором первой контрольной точки, третьего разностного значения между вектором четвертой контрольной точки и вектором третьей контрольной точки или четвертое разностное значение между вектором четвертой контрольной точки и вектором второй контрольной точки.
Например, вектор первой контрольной точки может быть получен как в уравнении 1 ниже.
[Уравнение 1]
cpMvLX[0][0] = (mvScaleHor + dHorX*(xCb - xNb) + dHorY*(yCb - yNb))
cpMvLX[0][1] = (mvScaleVer + dVerX*(xCb - xNb) + dVerY*(yCb - yNb))
В уравнении 1 переменные mvScaleHor и mvScaleVer могут относиться к вектору первой контрольной точки пространственного соседнего блока или значению, полученному за счет применения вычисления со смещением на k к вектору первой контрольной точки. В данном случае k может представлять собой целое число: 1, 2, 3, 4, 5, 6, 7, 8, 9 или больше. Переменные dHorX и dVerX соответствуют компоненту x и компоненту y первого разностного значения между вектором второй контрольной точки и вектором первой контрольной точки, соответственно. Переменные dHorY и dVerY соответствуют компоненту x и компоненту y второго разностного значения между вектором третьей контрольной точки и вектором первой контрольной точки, соответственно. Вышеописанные переменные могут быть получены как в уравнении 2 ниже.
[Уравнение 2]
mvScaleHor = CpMvLX[xNb][yNb][0][0] << 7
mvScaleVer = CpMvLX[xNb][yNb][0][1] << 7
dHorX = (CpMvLX[xNb + nNbW - 1][yNb][1][0] - CpMvLX[xNb][yNb][0][0]) << (7 - log2NbW)
dVerX = (CpMvLX[xNb + nNbW - 1][yNb][1][1] - CpMvLX[xNb][yNb][0][1]) << (7 - log2NbW)
dHorY = (CpMvLX[xNb][yNb + nNbH - 1][2][0] - CpMvLX[xNb][yNb][2][0]) << (7 - log2NbH)
dVerY = (CpMvLX[xNb][yNb + nNbH - 1][2][1] - CpMvLX[xNb][yNb][2][1]) << (7 - log2NbH)
Вектор второй контрольной точки может быть получен на основании по меньшей мере одного из вектора первой контрольной точки пространственного соседнего блока, заданного разностного значения, информации о положении (xCb, yCb) текущего блока, размера блока (ширины или высоты) или информации о положении (xNb, yNb) пространственного соседнего блока. В данном случае размер блока может относиться к размеру текущего блока и/или размеру пространственного соседнего блока. Разностное значение является таким же, как в описании вектора первой контрольной точки, вследствие чего его подробное описание будет опущено. Однако диапазон и/или количество разностных значений, используемых в процессе получения вектора второй контрольной точки, могут отличаться от таковых вектора первой контрольной точки.
Например, вектор второй контрольной точки может быть получен как в уравнении 3 ниже.
[Уравнение 3]
cpMvLX[1][0] = (mvScaleHor + dHorX*(xCb + cbWidth - xNb) + dHorY*(yCb - yNb))
cpMvLX[1][1] = (mvScaleVer + dVerX*(xCb + cbWidth - xNb) + dVerY*(yCb - yNb))
В уравнении 3, переменные mvScaleHor, mvScaleVer, dHorX, dVerX, dHorY и dVerY являются такими, как описано в уравнении 1, вследствие чего их подробное описание будет опущено.
Вектор третьей контрольной точки может быть получен на основании по меньшей мере одного из вектора первой контрольной точки пространственного соседнего блока, заданного разностного значения, информации о положении (xCb, yCb) текущего блока, размера блока (ширины или высоты) или информации о положении (xNb, yNb) пространственного соседнего блока. В данном случае размер блока может относиться к размеру текущего блока и/или пространственного соседнего блока. Разностное значение является таким же, как в описании вектора первой контрольной точки, вследствие чего его подробное описание будет опущено. Однако диапазон и/или количество разностных значений, используемых в процессе получения вектора третьей контрольной точки, могут отличаться от таковых вектора первой контрольной точки или вектора второй контрольной точки.
Например, вектор третьей контрольной точки может быть получен как в уравнении 4 ниже.
[Уравнение 4]
cpMvLX[2][0] = (mvScaleHor + dHorX*(xCb - xNb) + dHorY*(yCb + cbHeight - yNb))
cpMvLX[2][1] = (mvScaleVer + dVerX*(xCb - xNb) + dVerY*(yCb + cbHeight - yNb))
В уравнении 4, переменные mvScaleHor, mvScaleVer, dHorX, dVerX, dHorY и dVerY являются такими, как описано в уравнении 1, вследствие чего их подробное описание будет опущено. Между тем, посредством вышеописанного процесса может быть получен вектор n-й контрольной точки пространственного кандидата.
2. Когда граница текущего блока касается границы CTU
Вектор первой контрольной точки может быть получен на основании по меньшей мере одного из вектора движения (MV) пространственного соседнего блока, заданного разностного значения, информации о положении (xCb, yCb) текущего блока или информации о положении (xNb, yNb) пространственного соседнего блока.
Вектор движения может представлять собой вектор движения подблока, расположенного на самой нижней стороне пространственного соседнего блока. Подблок может представлять собой подблок, расположенный левее всего, в центре или правее всего среди множества подблоков, расположенных на самой нижней стороне пространственного соседнего блока. Альтернативно вектор движения может означать среднее значение, максимальное значение или минимальное значение векторов движения подблока.
Количество разностных значений может быть 1, 2, 3 или больше. Количество разностных значений может быть определено переменным образом с учетом атрибута вышеописанного блока или может представлять собой фиксированное значение, предварительно отправленное на устройство для декодирования. Разностное значение может быть определено как разностное значение между одним из множества векторов движения, хранящихся в элементах подблоков в пространственном соседнем блоке, и другим из них. Например, разностное значение может относиться к разностному значению между вектором движения нижнего правого подблока и вектором движения нижнего левого подблока пространственного соседнего блока.
Например, вектор первой контрольной точки может быть получен как в уравнении 5 ниже.
[Уравнение 5]
cpMvLX[0][0] = (mvScaleHor + dHorX*(xCb - xNb) + dHorY*(yCb - yNb))
cpMvLX[0][1] = (mvScaleVer + dVerX*(xCb - xNb) + dVerY*(yCb - yNb))
В уравнении 5 переменные mvScaleHor и mvScaleVer могут относиться к вектору движения (MV) вышеописанного пространственного соседнего блока или значению, полученному за счет применения вычисления со смещением на k к вектору движения. В данном случае k может представлять собой целое число: 1, 2, 3, 4, 5, 6, 7, 8, 9 или больше.
Переменные dHorX и dVerX соответствуют компоненту x и компоненту y заданного разностного значения, соответственно. В данном случае разностное значение относится к разностному значению между вектором движения нижнего правого подблока и вектором движения нижнего левого подблока в пространственном соседнем блоке. Переменные dHorY и dVerY могут быть получены на основании переменных dHorX и dVerX. Вышеописанные переменные могут быть получены как в уравнении 6 ниже.
[Уравнение 6]
mvScaleHor = MvLX[xNb][yNb + nNbH - 1][0] << 7
mvScaleVer = MvLX[xNb][yNb + nNbH - 1][1] << 7
dHorX = (MvLX[xNb + nNbW - 1][yNb + nNbH - 1][0] - MvLX[xNb][yNb + nNbH - 1][0]) << (7 - log2NbW)
dVerX = (MvLX[xNb + nNbW - 1][yNb + nNbH - 1][1] - MvLX[xNb][yNb + nNbH - 1][1]) << (7 - log2NbW)
dHorY = -dVerX
dVerY = dHorX
Вектор второй контрольной точки может быть получен на основании по меньшей мере одного из вектора движения (MV) пространственного соседнего блока, заданного разностного значения, информации о положении (xCb, yCb) текущего блока, размера блока (ширины или высоты) или информации о положении (xNb, yNb) пространственного соседнего блока. В данном случае размер блока может относиться к размеру текущего блока и/или пространственного соседнего блока. Вектор движения и разностное значение являются такими же, как в описании вектора первой контрольной точки, вследствие чего их подробное описание будет опущено. Однако положение вектора движения, диапазон и/или количество разностных значений, используемых в процессе получения вектора второй контрольной точки, могут отличаться от таковых вектора первой контрольной точки.
Например, вектор второй контрольной точки может быть получен как в уравнении 7 ниже.
[Уравнение 7]
cpMvLX[1][0] = (mvScaleHor + dHorX*(xCb + cbWidth - xNb) + dHorY*(yCb - yNb))
cpMvLX[1][1] = (mvScaleVer + dVerX*(xCb + cbWidth - xNb) + dVerY*(yCb - yNb))
В уравнении 7, переменные mvScaleHor, mvScaleVer, dHorX, dVerX, dHorY и dVerY являются такими, как описано в уравнении 5, и их подробное описание будет опущено.
Вектор третьей контрольной точки может быть получен на основании по меньшей мере одного из вектора движения (MV) пространственного соседнего блока, заданного разностного значения, информации о положении (xCb, yCb) текущего блока, размера блока (ширины или высоты) или информации о положении (xNb, yNb) пространственного соседнего блока. В данном случае размер блока может относиться к размеру текущего блока и/или пространственного соседнего блока. Вектор движения и разностное значение являются такими же, как в описании вектора первой контрольной точки, вследствие чего их подробное описание будет опущено. Однако положение вектора движения, а также диапазон и/или количество разностных значений, используемых в процессе получения вектора третьей контрольной точки, могут отличаться от таковых вектора первой контрольной точки или вектора второй контрольной точки.
Например, вектор третьей контрольной точки может быть получен как в уравнении 8 ниже.
[Уравнение 8]
cpMvLX[2][0] = (mvScaleHor + dHorX*(xCb - xNb) + dHorY*(yCb + cbHeight - yNb))
cpMvLX[2][1] = (mvScaleVer + dVerX*(xCb - xNb) + dVerY*(yCb + cbHeight - yNb))
В уравнении 8, переменные mvScaleHor, mvScaleVer, dHorX, dVerX, dHorY и dVerY являются такими, как описано в уравнении 5, и их подробное описание будет опущено. Между тем, посредством вышеописанного процесса может быть получен вектор n-й контрольной точки пространственного кандидата.
Вышеописанный процесс получения аффинного кандидата может выполняться для каждого из предварительно определенных пространственных соседних блоков. Предварительно определенные пространственные соседние блоки могут включать по меньшей мере один из левого блока, нижнего левого блока, верхнего правого блока, верхнего блока или верхнего левого блока текущего блока.
Альтернативно процесс получения аффинного кандидата может быть выполнен для каждой группы пространственных соседних блоков. В данном случае пространственные соседние блоки могут быть классифицированы на первую группу, содержащую левый блок и нижний левый блок, и вторую группу, содержащую верхний правый блок, верхний блок и верхний левый блок.
Например, один аффинный кандидат может быть получен из пространственного соседнего блока, принадлежащего к первой группе. Получение может выполняться до тех пор, пока не будет найден доступный аффинный кандидат на основании заданного приоритета. Приоритет может представлять собой следующий порядок: левый блок -> нижний левый блок, или обратный порядок. Согласно приоритету определяется, является ли соответствующий пространственный соседний блок в первой группе блоком, декодированным посредством предсказания на основе аффинной модели, и блок, первым декодированный посредством предсказания на основе аффинной модели, может быть выбран в качестве аффинного кандидата.
Аналогично, один аффинный кандидат может быть получен из пространственного соседнего блока, принадлежащего ко второй группе. Получение может выполняться до тех пор, пока не будет найден доступный аффинный кандидат на основании заданного приоритета. Приоритет может быть в следующем порядке: верхний правый блок -> верхний блок -> верхний левый блок, или в обратном порядке. Согласно приоритету определяется, является ли соответствующий пространственный соседний блок во второй группе блоком, декодированным посредством предсказания на основе аффинной модели, и блок, первым декодированный посредством предсказания на основе аффинной модели, может быть выбран в качестве аффинного кандидата.
Вышеописанный вариант осуществления может применяться таким же/аналогичным образом к временному соседнему блоку. В данном случае временной соседний блок принадлежит к изображению, отличающемуся от изображения текущего блока, и может представлять собой блок в том же положении, что и текущий блок. Блок в том же положении может представлять собой блок, имеющий положение верхней левой точки отсчета текущего блока, центральное положение или положение точки отсчета, смежной с нижней правой точкой отсчета текущего блока.
Альтернативно временной соседний блок может означать блок в положении, смещенном на заданный вектор диспаратности от блока в том же положении. В данном случае вектор диспаратности может быть определен на основании вектора движения любого из пространственных соседних блоков текущего блока, описанных выше.
На фиг. 9 изображен способ получения настроенного кандидата на основании комбинации векторов движения пространственных/временных соседних блоков в варианте осуществления, к которому применяется настоящее изобретение.
Настроенный кандидат согласно настоящему изобретению может быть получен на основании комбинации по меньшей мере двух векторов контрольной точки (далее называемых векторами контрольной точки (cpMVCorner[n])), соответствующих каждому углу текущего блока. В данном случае n может представлять собой 0, 1, 2 или 3.
Вектор контрольной точки cPMVCorner[n] может быть получен на основании вектора движения пространственного соседнего блока и/или временного соседнего блока. В данном случае пространственный соседний блок может включать по меньшей мере один из первого соседнего блока A, B или C, смежного с верхней левой точкой отсчета текущего блока, второго соседнего блока D или E, смежного с верхней правой точкой отсчета текущего блока, или третьего соседнего блока F или G, смежного с нижней левой точкой отсчета текущего блока. Временной соседний блок представляет собой блок, принадлежащий к изображению, отличающемуся от изображения текущего блока, и может относиться к блоку в том же положении, что и текущий блок (далее называемый четвертым соседним блоком Col). В данном случае четвертый соседний блок может относиться к блоку (H, I или J), имеющему положение верхней левой точки отсчета, верхней правой точки отсчета или нижней левой точки отсчета текущего блока, или блоку, смежному с положением нижней правой точки отсчета текущего блока.
Первый соседний блок может относиться к верхнему левому (A), верхнему (B) или левому (C) соседнему блоку текущего блока. Определяется, доступны ли векторы движения соседних блоков A, B и C согласно заданному приоритету, и вектор контрольной точки может быть определен с использованием доступных векторов движения соседних блоков. Определение доступности может выполняться до тех пор, пока не будет найден соседний блок, имеющий доступный вектор движения. В данном случае приоритет может быть в следующем порядке: A -> B -> C. Однако настоящее изобретение не ограничено этим, и порядок может быть следующим: A -> C -> B, C -> A -> B или B -> A -> C.
Второй соседний блок может относиться к верхнему (D) или верхнему правому (E) соседнему блоку текущего блока. Аналогично можно определить, доступны ли векторы движения соседних блоков D и E согласно заданному приоритету, и определить вектор контрольной точки с использованием доступных векторов движения соседних блоков. Определение доступности может выполняться до тех пор, пока не будет найден соседний блок, имеющий доступный вектор движения. В данном случае приоритет может быть в следующем порядке: D -> E, или в следующем порядке: E -> D.
Третий соседний блок может относиться к левому (F) или нижнему левому (G) соседнему блоку текущего блока. Аналогично можно определить, является ли доступным вектор движения соседнего блока согласно заданному приоритету, и определить вектор контрольной точки с использованием доступного вектора движения соседнего блока. Определение доступности может выполняться до тех пор, пока не будет найден соседний блок, имеющий доступный вектор движения. В данном случае приоритет может быть в следующем порядке: G -> F, или в следующем порядке: F -> G.
Например, вектор первой контрольной точки (cpMVCorner[0]) может быть установлен как вектор движения первого соседнего блока, вектор второй контрольной точки (cpMVCorner[1]) может быть установлен как вектор движения второго соседнего блока и вектор третьей контрольной точки cpMVCorner[2] может быть установлен как вектор движения третьего соседнего блока. Вектор четвертой контрольной точки cpMVCorner[3] может быть установлен как вектор движения четвертого соседнего блока.
Альтернативно вектор первой контрольной точки может быть получен с использованием вектора движения по меньшей мере одного из первого соседнего блока или четвертого соседнего блока, причем четвертый соседний блок может представлять собой блок H, имеющий положение верхней левой точки отсчета. Вектор второй контрольной точки может быть получен с использованием вектора движения по меньшей мере одного из второго соседнего блока или четвертого соседнего блока. В данном случае четвертый соседний блок может представлять собой блок I, имеющий положение верхней правой точки отсчета. Вектор третьей контрольной точки может быть получен с использованием вектора движения по меньшей мере одного из третьего соседнего блока или четвертого соседнего блока. В данном случае четвертый соседний блок может представлять собой блок J, имеющий положение нижней левой точки отсчета.
Альтернативно любой из векторов с первой по четвертую контрольных точек может быть получен на основании другого. Например, вектор второй контрольной точки может быть получен за счет применения заданного вектора сдвига к вектору первой контрольной точки. Вектор сдвига может представлять собой разностный вектор между вектором третьей контрольной точки и вектором первой контрольной точки, или он может быть получен за счет применения заданного коэффициента масштабирования к разностному вектору. Коэффициент масштабирования может быть определен на основании по меньшей мере одного из ширины или высоты текущего блока и/или соседнего блока.
Посредством комбинации по меньшей мере двух из векторов с первой по четвертую контрольных точек, описанных выше, могут быть определены K настроенных кандидатов ConstK согласно настоящему изобретению. Значение K может представлять собой целое число: 1, 2, 3, 4, 5, 6, 7 или больше. Значение K может быть получено на основании информации, переданной посредством устройства для кодирования, или может представлять собой значение, предварительно отправленное на устройство для декодирования. Информация может включать информацию, указывающую максимальное количество настроенных кандидатов, включенных в список кандидатов.
В частности, первый настроенный кандидат Const1 может быть получен за счет комбинирования векторов с первой по третью контрольных точек. Например, первый настроенный кандидат Const1 может иметь вектор контрольной точки, как показано в таблице 4 ниже. Между тем, только когда информация об опорном изображении первого соседнего блока такая же, как информация об опорном изображении второго и третьего соседних блоков, вектор контрольной точки может быть ограничен конфигурацией, показанной в таблице 4. В данном случае информация об опорном изображении может относиться к индексу опорного изображения, указывающему положение соответствующего опорного изображения в списке опорных изображений, или может относиться к значению порядкового номера изображения (POC), указывающему порядок вывода.
[Таблица 4]
Второй настроенный кандидат Const2 может быть получен за счет комбинирования векторов первой, второй и четвертой контрольных точек. Например, второй настроенный кандидат Const2 может иметь вектор контрольной точки, как показано в таблице 5 ниже. Между тем, только когда информация об опорном изображении первого соседнего блока такая же, как информация об опорном изображении второго и четвертого соседних блоков, вектор контрольной точки может быть ограничен конфигурацией, показанной в таблице 5. В данном случае информация об опорном изображении такая, как описано выше.
[Таблица 5]
Третий настроенный кандидат Const3 может быть получен за счет комбинирования векторов первой, третьей и четвертой контрольных точек. Например, третий настроенный кандидат Const3 может иметь вектор контрольной точки, как показано в таблице 6 ниже. Между тем, только когда информация об опорном изображении первого соседнего блока такая же, как информация об опорном изображении третьего и четвертого соседних блоков, вектор контрольной точки может быть ограничен конфигурацией, показанной в таблице 6. В данном случае информация об опорном изображении такая, как описано выше.
[Таблица 6]
Четвертый настроенный кандидат Const4 может быть получен за счет комбинирования векторов второй, третьей и четвертой контрольных точек. Например, четвертый настроенный кандидат Const4 может иметь вектор контрольной точки, как показано в таблице 7 ниже. Между тем, только когда информация об опорном изображении второго соседнего блока такая же, как информация об опорном изображении третьего и четвертого соседних блоков, конфигурация может быть ограничена так, как показано в таблице 7. В данном случае информация об опорном изображении такая, как описано выше.
[Таблица 7]
Пятый настроенный кандидат Const5 может быть получен за счет комбинирования векторов первой и второй контрольных точек. Например, пятый настроенный кандидат Const5 может иметь вектор контрольной точки, как показано в таблице 8 ниже. Между тем, только когда информация об опорном изображении первого соседнего блока такая же, как информация об опорном изображении второго соседнего блока, вектор контрольной точки может быть ограничен конфигурацией, показанной в таблице 8. В данном случае информация об опорном изображении такая, как описано выше.
[Таблица 8]
Шестой настроенный кандидат Const6 может быть получен за счет комбинирования векторов первой и третьей контрольных точек. Например, шестой настроенный кандидат Const6 может иметь вектор контрольной точки, как показано в таблице 9 ниже. Между тем, только когда информация об опорном изображении первого соседнего блока такая же, как информация об опорном изображении третьего соседнего блока, вектор контрольной точки может быть ограничен конфигурацией, показанной в таблице 9. В данном случае информация об опорном изображении такая, как описано выше.
[Таблица 9]
В таблице 9 cpMVCorner[1] может представлять собой вектор второй контрольной точки, полученный на основании векторов первой и третьей контрольных точек. Вектор второй контрольной точки может быть получен на основании по меньшей мере одного из вектора первой контрольной точки, заданного разностного значения или размера текущего/соседнего блока. Например, вектор второй контрольной точки может быть получен как в уравнении 9 ниже.
[Уравнение 9]
cpMvCorner[1][0] = (cpMvCorner[0][0] << 7) + ((cpMvCorner[2][1] - cpMvCorner[0][1]) << (7 + Log2(cbHeight/cbWidth)))
cpMvCorner[1][1] = (cpMvCorner[0][1] << 7) + ((cpMvCorner[2][0] - cpMvCorner[0][0]) << (7 + Log2(cbHeight/cbWidth)))
В вышеописанных K настроенных кандидатах ConstK значение K не ограничивает положение или приоритет настроенных кандидатов, расположенных в списке кандидатов.
Кроме того, все из настроенных кандидатов с первого по шестой могут быть включены в список кандидатов или только некоторые из кандидатов могут быть включены в список кандидатов.
Например, когда определяется, что текущий блок использует три вектора контрольной точки, может использоваться только настроенный кандидат, сгенерированный посредством комбинации трех из векторов с первой по четвертую контрольных точек. Когда определяется, что текущий блок использует два вектора контрольной точки, может использоваться настроенный кандидат, сгенерированный посредством комбинации по меньшей мере двух из векторов с первой по четвертую контрольных точек или может использоваться настроенный кандидат, сгенерированный посредством комбинации только двух из векторов с первой по четвертую контрольных точек.
Альтернативно только некоторые настроенные кандидаты могут быть включены в список кандидатов с учетом максимального количества аффинных кандидатов, включенных в список кандидатов. В данном случае максимальное количество может быть определено на основании информации о максимальном количестве, переданной посредством устройства для кодирования, или может быть определено переменным образом с учетом вышеописанного атрибута текущего блока. В этом случае значение K настроенного кандидата ConstK может означать приоритет, подлежащий введению в список кандидатов.
Между тем, когда разностное значение между двумя векторами контрольной точки, принадлежащими к настроенному кандидату, меньше заданного порогового значения, настроенный кандидат может не вводиться в список кандидатов. Разностное значение между двумя векторами контрольной точки может быть разделено на разностное значение в горизонтальном направлении и разностное значение в вертикальном направлении. В данном случае разностное значение в горизонтальном направлении может относиться к разностному значению между вектором 910 первой контрольной точки и вектором 920 второй контрольной точки и может относиться к разностному значению между вектором 910 первой контрольной точки и вектором 930 третьей контрольной точки. Пороговое значение может относиться к 0 или вектору, имеющему величину, предварительно отправленную на устройство для кодирования/декодирования.
На фиг. 10 представлена схема, изображающая способ получения информации о движении временного кандидата на основе подблоков в качестве варианта осуществления, к которому применяется настоящее изобретение.
Информация о движении временного кандидата согласно настоящему изобретению может быть получена из информации о движении совмещаемого блока. Информация о движении может быть получена в элементах подблоков.
В данном случае совмещаемый блок представляет собой блок, принадлежащий к изображению, отличающемуся от изображения текущего блока 1010 (то есть совмещаемого изображения), и может представлять собой блок 1040 в том же положении, что и текущий блок, или блок 1030 в положении, смещенном на временной вектор от положения текущего блока. Временной вектор может быть определен на основании вектора движения пространственного соседнего блока текущего блока. Пространственный соседний блок может относиться к по меньшей мере одному из левого, нижнего левого, верхнего, верхнего правого или верхнего левого соседнего блока текущего блока. Временной вектор может быть определен с использованием только соседнего блока в положении, предварительно отправленном на устройство для кодирования/декодирования. Например, предварительно отправленное положение может представлять собой левую сторону 1011 или верхнюю сторону 1012 и может представлять собой левую сторону 1011 и верхнюю сторону 1012. Когда имеется множество соседних блоков на левой стороне, можно использовать блок, расположенный на одном из самой нижней стороны, самой верхней стороны или в центре среди множества соседних блоков. Когда имеется множество соседних блоков на верхней стороне, можно использовать блок, расположенный на одном из самой левой стороны, самой правой стороны или в центре среди множества соседних блоков.
При получении временного кандидата на основе подблоков текущий блок и/или совмещаемый блок может быть разбит на множество подблоков.
В данном случае подблок может иметь фиксированные размер/форму, предварительно отправленные на устройство для кодирования/декодирования. Например, подблок представлен блоком NxM, и значения N и M могут быть целыми числами: 4, 8 или больше. Подблок может представлять собой квадрат (N = M) или прямоугольник (N > M, N < M). Он может означать размер. Альтернативно устройство для кодирования может кодировать и передавать информацию о размере/форме подблока, и устройство для декодирования может определять размер/форму подблока на основании переданной информации.
Альтернативно текущий блок и/или совмещаемый блок может быть разбит на множество подблоков на основании заданного количества. В данном случае количество может представлять собой фиксированное количество, предварительно отправленное на устройство для кодирования/декодирования, или может быть определено переменным образом с учетом размера/формы блока. Альтернативно количество может быть определено на основании информации о количестве, переданной посредством устройства для кодирования.
Далее будет исследован способ получения информации о движении временного кандидата в элементах подблоков. Вектор движения временного кандидата может быть установлен как вектор движения, хранящийся для каждого подблока совмещаемого блока. Индекс опорного изображения временного кандидата может быть установлен равным значению (например, 0), предварительно определенному в устройстве для кодирования/декодирования. Альтернативно индекс опорного изображения временного кандидата может быть установлен как индекс опорного изображения совмещаемого блока или индекс опорного изображения верхнего левого подблока среди подблоков. Альтернативно, аналогично вектору движения индекс опорного изображения временного кандидата может быть установлен как индекс опорного изображения, хранящийся для каждого подблока.
Однако, когда имеется недоступный подблок среди подблоков, принадлежащих к совмещаемому блоку, вектор движения недоступного подблока может быть заменен вектором движения доступного подблока в совмещаемом блоке. В данном случае доступный подблок может относиться к блоку, смежному с любой из левой стороны, правой стороны, верхней стороны или нижней стороны недоступного подблока. Альтернативно доступный подблок может представлять собой блок в положении, предварительно отправленном на устройство для кодирования/декодирования. Например, предварительно отправленное положение может представлять собой положение нижнего правого подблока в совмещаемом блоке или положение подблока, включающее центральное положение совмещаемого блока. Вышеописанный временной кандидат на основе подблоков может быть добавлен в список кандидатов, только когда имеется доступный подблок. Альтернативно вышеописанный временной кандидат на основе подблоков может быть добавлен в список кандидатов, только когда доступен подблок в предварительно отправленном положении.
На фиг. 11 изображен способ межкадрового предсказания в формате проецирования ERP в качестве варианта осуществления, к которому применяется настоящее изобретение.
Как показано на фиг. 11, в случае формата проецирования ERP, может произойти случай, в котором опорный участок, указанный вектором движения, перекрывает границу опорного изображения.
В этом случае граница опорного изображения может быть расширена, и расширенный участок может быть заполнен данными, смежными с границей в горизонтальном направлении (см. A). Альтернативно граница опорного изображения может быть расширена, и расширенный участок может быть заполнен данными (данными, имеющими непрерывность или корреляцию с границей), смежными с противоположной границей (см. B). Альтернативно данные в несуществующем участке могут быть заполнены с использованием данных, смежных с противоположной границей (см. C).
A и B требуют процесса расширения данных опорного изображения. Однако процесс вычисления может быть упрощен. Кроме того, C не требует дополнительного запоминающего устройства из-за расширения. Однако может потребоваться дополнительный процесс вычисления.
В случае A и B размер текущего изображения и размер (расширенного) опорного изображения могут не быть одинаковыми. Заданный процесс корректировки с учетом такой разницы в размере может быть включен в процесс получения пикселя предсказания.
Когда сравниваются только горизонтальные длины, текущее изображение может иметь диапазон от 0 до (pic_width - 1), и опорное изображение (расширенное в качестве правой стороны) может иметь диапазон от -L_offset до (pic_width - 1 + R_offset) или диапазон от 0 до (pic_width - 1 + L_offset + R_offset). В первом случае пиксель предсказания может быть получен из расширенного опорного изображения в положении, полученном за счет сложения координат текущего блока и вектора движения. В последнем случае пиксель предсказания может быть получен в повторно скорректированном положении после корректировки полученного положения. В данном случае L_offest и R_offset могут относиться к значениям длины, расширенным в направлениях влево и вправо. В настоящем изобретении предполагается, что координаты вычисляются на основании диапазона текущего изображения или существующего опорного изображения, как и ранее.
В случае C положение в опорном изображении может быть вычислено за счет сложения координат текущего блока и вектора движения. Можно проверить, находится ли вычисленное положение пикселя за пределами диапазона опорного изображения (от <0,0> до <pic_width - 1, pic_height - 1>). Когда вычисленное положение пикселя не превышает диапазон опорного изображения, пиксель предсказания может быть получен из вычисленного положения пикселя. С другой стороны, когда вычисленное положение пикселя находится за пределами диапазона опорного изображения, положение, соответствующее вычисленному положению, может быть вычислено в положении, противоположном внутренней части границы <внутри изображения> (правая сторона в случае левой стороны и левая сторона в случае правой стороны), и пиксель предсказания может быть получен из вычисленного соответствующего положения.
На основании по меньшей мере одного из вышеописанных вариантов осуществления можно выполнить межкадровое предсказание на границе опорного изображения. Способ межкадрового предсказания на границе опорного изображения может быть предварительно отправлен посредством устройства для кодирования/декодирования и может быть определен на основании информации о выборе, указывающей любой из вышеописанных вариантов осуществления, и информации, связанной с выбранным способом (способ обработки данных, информация о размере расширения и т. д.), который может быть применен в равной степени к вариантам осуществления, описанным ниже.
На фиг. 12 и 15 изображен способ межкадрового предсказания, в формате проецирования CMP в качестве варианта осуществления, к которому применяется настоящее изобретение.
Как показано на фиг. 12, в случае формата проецирования CMP, непрерывность в трехмерном пространстве может существовать между верхней поверхностью 3 x 1 и нижний поверхностью 3 x 1 из-за упаковки по участкам. Однако непрерывность может отсутствовать в трехмерном пространстве между верхней поверхностью 3 x 1 и нижней поверхностью 3 x 1.
Аналогично, может быть случай, в котором опорный участок, указанный вектором движения, перекрывает границу опорного изображения или частичную границу поверхности. В случае A опорный участок указывает внутреннюю часть опорного изображения, но расположен на частичной границе поверхности (взаимная непрерывность в трехмерном пространстве отсутствует, вследствие чего корреляция низкая). В случае B опорный участок расположен на границе опорного изображения.
В частности, в случае A, даже хотя опорный участок указывает внутреннюю часть опорного изображения, поскольку опорный участок содержит непрерывную границу поверхности, точность межкадрового предсказания может быть снижена.
В случае A и B положение опорного участка в опорном изображении может быть вычислено за счет сложения координат текущего блока и вектора движения. Можно проверить, находится ли по меньшей мере часть опорного участка за пределами диапазона опорного изображения или содержит непрерывную границу в опорном изображении.
Когда опорный участок находится за пределами диапазона опорного изображения, может быть определено положение, в котором непрерывность или корреляция существует в трехмерном пространстве, и пиксель предсказания может быть получен из определенного положения.
С другой стороны, когда опорный участок не превышает диапазон опорного изображения, можно проверить, принадлежит ли по меньшей мере один пиксель в опорном участке, указанном посредством вектора движения текущего блока, к двум или более поверхностям. В данном случае процесс проверки может быть выполнен посредством положений пикселя, таких как верхняя левая сторона, верхняя правая сторона, нижняя левая сторона и нижняя правая сторона текущего блока.
Когда по меньшей мере один пиксель в опорном участке не принадлежит к двум или более поверхностям, пиксель предсказания может быть получен из опорного участка. Однако, в ином случае, можно проверить, имеет ли поверхность непрерывность с поверхностью, к которой принадлежит текущий блок. В случае опорного участка A', верхний участок имеет непрерывность с поверхностью, к которой принадлежит текущий блок, и нижний участок не имеет непрерывности с поверхностью, к которой принадлежит текущий блок.
Когда вышеописанная непрерывность существует, пиксель предсказания может быть получен из опорного участка. Однако, в ином случае, пиксель предсказания может быть получен из участка, имеющего непрерывность или корреляцию в трехмерном пространстве.
Вышеописанный порядок межкадрового предсказания представлен в качестве примера, и различные модификации могут быть выполнены за счет изменения порядка и изменения некоторых конфигураций.
В случае C и D опорное изображение может быть расширено, и расширенный участок может быть заполнен заполняющими данными, смежными с границей в горизонтальном/вертикальном направлении, или с использованием данных коррелируемого участка. Случай D является таким же, как в описании ERP, вследствие чего подробное описание будет опущено. В случае C, как и в случае A, опорный участок расположен внутри опорного изображения, но содержит границу поверхности, имеющую низкую корреляцию. Таким образом, когда отдельный расширенный участок не сгенерирован внутри опорного изображения, точность межкадрового предсказания может быть снижена, что будет подробно описано со ссылкой на фиг. 13.
В случае C и D размер текущего изображения и размер опорного изображения могут не быть одинаковыми из-за расширения опорного изображения. В этом случае опорное изображение может иметь диапазон от (-L_offset, -U_offset) до (pic_width - 1 + R_offset, pic_height - 1 + D_offset). В данном случае L_, R_, U_ и D_ offsets могут означать значения длины, расширенные в направлениях влево, вправо, вверх и вниз опорного изображения. Сдвиги могут иметь одинаковое значение или могут иметь разные значения. Длина, расширенная согласно опорному изображению, может в явном виде передаваться или может быть в неявном виде определяться.
Например, можно поддерживать одно из значений длины, которые могут поддерживаться секцией разбиения блоков, например, 2, 4, 8 и т. д. Альтернативно длина расширения может быть определена на основании минимального блока кодирования, максимального блока кодирования, минимального блока предсказания и максимального блока предсказания. Альтернативно длина может быть определена на основании элементов, таких как плитки и пакеты.
Например, длина может быть расширена на длину максимального блока предсказания, и в этом случае получение блоков предсказания из всех блоков может осуществляться в пределах расширенного диапазона. Когда участок, указанный посредством вектора движения текущего блока, находится за пределами диапазона расширенного опорного изображения, даже хотя опорное изображение расширено, пиксель предсказания части, находящейся за пределами диапазона, может быть получен посредством горизонтального, вертикального, диагонального заполнения и т. д.
Как показано на фиг. 13, случаи A–D могут соответствовать случаям, в которых опорное изображение расширено в элементах одной или более поверхностей. В случае A и B опорное изображение (или фрагмент опорного изображения) расширяется за счет объединения поверхностей, имеющих непрерывность. Случай C и D представляет собой примеры, в которых опорное изображение по отдельности расширяется для каждой поверхности. Обработка данных расширенного участка является такой же/аналогичной обработке данных вышеописанного варианта осуществления. В вышеописанном варианте осуществления существует один диапазон для опорного изображения. В этом примере, поскольку каждый участок (называемый фрагментом опорного изображения) расширяется за счет разбиения опорного изображения на две или более частей, могут быть сгенерированы перекрывающиеся диапазоны.
В примерах A и B расширенный фрагмент опорного изображения, расположенный вверху, имеет диапазон от (-L_offset, -U_offset) до (pic_width - 1 + R_offset, pic_height/2 - 1 + D_offset), а расширенный фрагмент опорного изображения, расположенный внизу, имеет диапазон от (-L_offset, pic_height/2 - U_offset) до (pic_width - 1 + R_offset, pic_height - 1 + D_offset). Предполагается, что расширенные левая, правая, верхняя и нижняя длины каждого фрагмента опорного изображения одинаковы. Однако длины, проходящие в направлениях влево, вправо, вверх и вниз, могут быть установлены равными во всех элементах, подлежащих расширению, или могут быть установлены разными. Кроме того, длины расширения могут быть установлены по отдельности согласно расширенным элементам.
В этом случае координаты диапазона, расширенного вниз от верхнего фрагмента опорного изображения, такие же, как координаты внутри нижнего фрагмента опорного изображения. Однако, в случае верхнего фрагмента опорного изображения, соответствующий участок имеет расширенные коррелированные данные, а в случае нижнего фрагмента опорного изображения, соответствующий участок имеет исходные данные до расширения.
В итоге, опорное изображение может иметь диапазон от (-L_offset, -U_offset) до (pic_width - 1 + R_offset, pic_height - 1 + D_offset). В целом, правильно, что одно значение пикселя присваивается каждому положению. Однако, поскольку опорное видео расширяется за счет разбиения на два или более участков с учетом характеристики всенаправленного видео, два или более значений пикселя могут быть присвоены в части диапазона. В этом случае может потребоваться определить, какое значение пикселя должно быть получено в качестве предсказанного значения пикселя в положении, которому присвоено два или более значений пикселя.
Как показано на фиг. 14, в случае E можно определить, какой фрагмент опорного изображения содержит больший участок, и получить значение предсказания с использованием данных фрагмента опорного изображения, содержащего больший участок.
В случае F, когда фрагмент опорного изображения, содержащий текущий блок, содержит предварительно установленное количество пикселей или больше, или содержит заданную область, могут использоваться данные соответствующего фрагмента опорного изображения. Однако, в ином случае, может быть возможна обработка с использованием данных фрагмента опорного изображения участка, содержащего большую область, например, E.
Случай G – это случай, в котором оба фрагмента опорного изображения содержат равные участки. В этом случае приоритет отдается фрагменту опорного изображения, содержащему текущий блок, и могут использоваться данные соответствующего фрагмента опорного изображения. Этот пример может быть включен в качестве подробных условий F и E.
В итоге, когда участок, указанный посредством вектора движения текущего блока, представляет собой границу между фрагментами опорного изображения, можно определить фрагмент опорного изображения, данные которого используются, согласно области покрытия и тому, является ли фрагмент опорного изображения таким же, как текущий блок. Можно определить данные фрагмента опорного изображения, данные которого используются для выполнения межкадрового предсказания, за счет включения всех или некоторых из вышеописанных условий согласно настройке кодирования/декодирования.
В вышеописанном примере каждый участок расширяется за счет разбиения опорного изображения на две части. Однако в этом примере будет описан случай, в котором больше фрагментов опорного изображения сгенерированы в элементах поверхностей.
На фиг. 15 предполагается, что каждый элемент поверхности представляет собой фрагмент опорного изображения. Аналогично, необходимо определить, какое значение пикселя должно быть получено в качестве значения пикселя предсказания в положении, которому присвоено два или более значений пикселя.
Как показано на фиг. 15, в случае H можно использовать данные фрагмента опорного изображения в участке, покрытом в большей степени, или можно использовать данные фрагмента опорного изображения, содержащего текущий блок.
Например, когда фрагмент опорного изображения, содержащий текущий блок, включен за счет предварительно установленного количества пикселей или в предварительно определенной области или больше, можно использовать данные соответствующего фрагмента опорного изображения. Альтернативно, когда используются данные фрагмента опорного изображения в участке, покрытом в большей степени, можно использовать данные соответствующего фрагмента опорного изображения. Однако, когда включенные участки одинаковы, можно ограничить использование данных фрагмента опорного изображения, содержащего текущий блок.
В случае I можно использовать данные фрагмента опорного изображения в участке, покрытом в большей степени. В этом примере фрагменты опорного изображения поддерживаются в элементах поверхностей. Однако настройка поверхности имеет характеристику, в которой верхний участок 3 x 1 и нижний участок 3 x 1 являются прерывистыми, и, таким образом, приоритет может быть отдан фрагменту опорного изображения на стороне, имеющей непрерывную характеристику, чем фрагменту опорного изображения на стороне, имеющей прерывистую характеристику.
В случае J можно использовать данные фрагмента опорного изображения в участке, покрытом в большей степени. Однако включенные участки равны, и в этом примере фрагмент опорного изображения, содержащий текущий блок (вверху справа в участке 3 x 2), не покрыт. Кроме того, фрагменты опорного изображения (вверху слева и по центру в участке 3 x 2) принадлежат к тому же участку 3 x 1, что и фрагмент опорного изображения, содержащий текущий блок. В этом случае приоритет может быть отдан тому, который ближе к фрагменту опорного изображения, содержащему текущий блок.
В итоге, когда участок, указанный посредством вектора движения текущего блока, представляет собой границу между фрагментами опорного изображения, можно определить фрагмент опорного изображения, данные которого используются, согласно области покрытия и приоритету для использования фрагмента опорного изображения.
Между тем способ выполнения межкадрового предсказания на основании моделирования аффинного движения был описан со ссылкой на фиг. 7–10, который может использоваться идентично/аналогично кодированию/декодированию видео в 360 градусов, и его подробное описание будет опущено.
Способы согласно настоящему изобретению могут быть реализованы в форме программных команд, которые могут быть выполнены посредством различных компьютерных средств и записаны в машиночитаемом носителе. Машиночитаемый носитель может содержать программные команды, файлы данных, структуры данных и т. д., отдельно или в комбинации. Программные команды, записанные на машиночитаемом носителе, могут быть специально разработаны и сконфигурированы для настоящего изобретения или могут быть известны и доступны для специалистов в области компьютерного программного обеспечения.
Примеры машиночитаемого носителя могут включать аппаратное устройство, специально выполненное с возможностью хранения и исполнения программной команды, такое как ROM, RAM или флеш-память. Примеры программной команды могут включать коды на высокоуровневом языке, которые могут исполняться компьютером с использованием интерпретатора и т. д., а также машинные коды, например, полученные с помощью компилятора. Вышеописанное аппаратное устройство может быть выполнено с возможностью работы в качестве по меньшей мере одного модуля программного обеспечения для выполнения операций настоящего изобретения, и наоборот.
Кроме того, вышеописанный способ или устройство могут быть реализованы за счет комбинирования всех или некоторых конфигураций или функций, или могут быть реализованы за счет разделения конфигураций или функций.
Даже хотя описание было приведено выше со ссылкой на предпочтительные варианты осуществления настоящего изобретения, следует понимать, что специалисты в данной области техники могут вносить различные модификации и изменения в настоящее изобретение без отхода от объема и без отхода от сущности и объема настоящего изобретения, изложенного далее в прилагаемой формуле изобретения.
[Промышленная применимость]
Настоящее изобретение может использоваться при кодировании/декодировании видеосигналов.