RU2801863C2 - Способ и устройство для кодирования/декодирования сигналов изображений - Google Patents
Способ и устройство для кодирования/декодирования сигналов изображений Download PDFInfo
- Publication number
- RU2801863C2 RU2801863C2 RU2021111108A RU2021111108A RU2801863C2 RU 2801863 C2 RU2801863 C2 RU 2801863C2 RU 2021111108 A RU2021111108 A RU 2021111108A RU 2021111108 A RU2021111108 A RU 2021111108A RU 2801863 C2 RU2801863 C2 RU 2801863C2
- Authority
- RU
- Russia
- Prior art keywords
- block
- candidate
- merge
- inter
- prediction
- Prior art date
Links
Abstract
Изобретение относится к средствам кодирования и декодирования изображения. Технический результат – повышение эффективности предсказания, осуществляемого между изображениями. Генерируют список кандидатов на слияние для первого блока. Выбирают один из кандидатов на слияние, включенных в список кандидатов на слияние. Выполняют компенсацию движения в отношении первого блока на основании информации о движении про выбранного кандидата на слияние, при этом кандидаты на слияние между участками, включенные в таблицу информации о движении между участками, могут добавляться в список кандидатов на слияние на основании количества пространственных кандидатов на слияние и временных кандидатов на слияние, включенных в список кандидатов на слияние. 4 н. и 22 з.п. ф-лы, 43 ил.
Description
Область техники, к которой относится изобретение
Настоящее изобретение относится к способу и устройству для кодирования и декодирования видеосигнала.
Предпосылки изобретения
По мере увеличения дисплейных панелей требуется все больше видеоуслуг более высокого качества. Самой большой проблемой видеоуслуг высокой четкости является значительное увеличение объема данных, и для решения этой проблемы активно проводятся исследования по улучшению степени сжатия видео. В качестве иллюстративного примера группа экспертов по кинематографии (MPEG) и группа экспертов по видеокодированию (VCEG) в рамках сектора по стандартизации телекоммуникаций в составе Международного союза электросвязи (ITU-T) сформировали объединенную команду по видеокодированию (JCT-VC) в 2009 году. JCT-VC предложила высокоэффективное видеокодирование (HEVC), которое представляет собой стандарт сжатия видео, имеющий эффективность сжатия примерно вдвое выше, чем эффективность сжатия H.264/AVC, и он одобрен в качестве стандарта 25 января 2013 г. С быстрым развитием видеоуслуг высокой четкости эффективность HEVC постепенно обнаруживает свои ограничения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Техническая задача
Целью настоящего изобретения является предоставление способа получения кандидата на слияние, отличного от кандидатов на слияние, получаемых из кандидатных блоков, смежных с текущим блоком, и устройства для выполнения способа при кодировании/декодировании видеосигнала.
Другой целью настоящего изобретения является предоставление способа получения кандидатов на слияние с использованием списка информации о движении между участками и устройства для выполнения способа при кодировании/декодировании видеосигнала.
Другой целью настоящего изобретения является предоставление способа получения кандидатов на слияние блоков, включенных в область обработки слияния, и устройства для выполнения способа при кодировании/декодировании видеосигнала.
Технические задачи, которые должны быть решены в настоящем изобретении, не ограничиваются техническими задачами, упомянутыми выше, и не упомянутые другие задачи могут быть ясно поняты специалистами в данной области техники из следующего описания.
[Решение задачи]
Способ декодирования/кодирования видеосигнала согласно настоящему изобретению включает следующие этапы: генерирование списка кандидатов на слияние для первого блока; выбор любого из кандидатов на слияние, включенных в список кандидатов на слияние; и выполнение компенсации движения для первого блока на основании информации о движении выбранного кандидата на слияние. В этом случае кандидат на слияние между участками, включенный в список информации о движении между участками, добавляется в список кандидатов на слияние на основании количества пространственных кандидатов на слияние и временных кандидатов на слияние, включенных в список кандидатов на слияние.
В способе кодирования и декодирования видеосигнала согласно настоящему изобретению список информации о движении между участками может содержать кандидата на слияние между участками, полученного на основании информации о движении блока, декодированного перед первым блоком. В этом случае список информации о движении между участками может не обновляться на основании информации о движении второго блока, включенного в область обработки слияния, такую же, как в первом блоке.
В способе кодирования и декодирования сигнала согласно настоящему изобретению, когда первый блок включен в область обработки слияния, временный кандидат на слияние, полученный на основании информации о движении первого блока, добавляется во временный список информации о движении, и когда декодирование всех блоков, включенных в область обработки слияния, завершается, временной кандидат на слияние может обновляться в списке информации о движении между участками.
В способе кодирования и декодирования сигнала согласно настоящему изобретению на основании результата определения того, является ли первый кандидат на слияние между участками, включенный в список информации о движении между участками, таким же, как по меньшей мере один кандидат на слияние, включенный в список кандидатов на слияние, может быть определено, добавлять или нет первого кандидата на слияние между участками в список кандидатов на слияние.
В способе кодирования и декодирования сигнала согласно настоящему изобретению определение может быть выполнено путем сравнения по меньшей мере одного кандидата на слияние, индексное значение которого меньше, чем пороговое значение, или равняется ему, с первым кандидатом на слияние между участками.
В способе кодирования и декодирования сигнала согласно настоящему изобретению при определении того, что существует такой же кандидат на слияние, как первый кандидат на слияние между участками, первый кандидат на слияние между участками не добавляется в список кандидатов на слияние, и на основании результата определения того, является ли второй кандидат на слияние между участками, включенный в список информации о движении между участками, таким же, как по меньшей мере один кандидат на слияние, включенный в список кандидатов на слияние, может быть определено, добавлять или нет второго кандидата на слияние между участками в список кандидатов на слияние. В этом случае определение того, является ли второй кандидат на слияние между участками таким же, как кандидат на слияние, который является таким же, как первый кандидат на слияние между участками, может быть опущено.
Признаки, кратко изложенные выше в отношении настоящего изобретения, являются просто иллюстративными аспектами подробного описания настоящего изобретения, которые будут описаны ниже, и не ограничивают объем настоящего изобретения.
Преимущественные эффекты
Согласно настоящему изобретению эффективность предсказания, осуществляемого между изображениями, может быть улучшена путем предоставления способа получения кандидатов на слияние, отличных от кандидатов на слияние, получаемых из кандидатных блоков, смежных с текущим блоком.
Согласно настоящему изобретению эффективность предсказания, осуществляемого между изображениями, может быть улучшена путем предоставления способа получения кандидатов на слияние с использованием списка информации о движении между участками.
Согласно настоящему изобретению эффективность предсказания, осуществляемого между изображениями, может быть улучшена путем предоставления способа получения кандидатов на слияние блоков, включенных в область обработки слияния.
Эффекты, которые могут быть получены из настоящего изобретения, не ограничены упомянутыми выше эффектами, и не упомянутые другие эффекты могут быть ясно поняты специалистами в данной области техники из следующего описания.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
На фиг. 1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.
На фиг. 2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.
На фиг. 3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.
На фиг. 4 представлен вид, показывающий различные типы разбиения блока кодирования.
На фиг. 5 представлен вид, показывающий результат разбиения элемента кодового дерева.
На фиг. 6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.
На фиг. 7 представлен вид, показывающий нелинейное движение объекта.
На фиг. 8 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, на основании аффинного движения согласно одному варианту осуществления настоящего изобретения.
На фиг. 9 представлен вид, показывающий пример аффинных исходных векторов каждой модели аффинного движения.
На фиг. 10 представлен вид, показывающий пример аффинных векторов подблоков в 4-параметрической модели движения.
На фиг. 11 представлена блок-схема, изображающая процесс получения информации о движении текущего блока с использованием режима слияния.
На фиг. 12 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.
На фиг. 13 представлен вид, показывающий положения опорных отсчетов.
На фиг. 14 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.
На фиг. 15 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.
На фиг. 16 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.
На фиг. 17 представлена блок-схема, изображающая процесс обновления списка информации о движении между участками.
На фиг. 18 представлен вид, показывающий вариант осуществления обновления списка кандидатов на слияние между участками.
На фиг. 19 представлен вид, показывающий пример, в котором индекс ранее сохраненного кандидата на слияние между участками обновлен.
На фиг. 20 представлен вид, показывающий положение иллюстративного подблока.
На фиг. 21 представлен вид, показывающий пример, в котором список информации о движении между участками генерируется для каждого режима предсказания, осуществляемого между изображениями.
На фиг. 22 представлен вид, показывающий пример, в котором кандидат на слияние между участками, включенный в долговременный список информации о движении, добавляется в список кандидатов на слияние.
На фиг. 23 представлен вид, показывающий пример, в котором контроль по избыточности выполняется только в отношении некоторых кандидатов на слияние.
На фиг. 24 представлен вид, показывающий пример, в котором контроль по избыточности опускается для конкретного кандидата на слияние.
На фиг. 25 представлен вид, показывающий пример, в котором кандидатные блоки, включенные в такую же область обработки слияния, как текущий блок, устанавливаются как недоступные в качестве кандидата на слияние.
На фиг. 26 представлен вид, показывающий временный список информации о движении.
На фиг. 27 представлен вид, показывающий пример слияния списка информации о движении между участками и временного списка информации о движении.
На фиг. 28 представлена блок-схема, изображающая способ внутреннего предсказания согласно одному варианту осуществления настоящего изобретения.
На фиг. 29 представлен вид, показывающий опорные отсчеты, включенные в каждую линию опорных отсчетов.
На фиг. 30 представлен вид, показывающий режимы внутреннего предсказания.
На фиг. 31 и 32 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.
На фиг. 33 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.
На фиг. 34 представлен вид, показывающий вариант осуществления получения отсчетов предсказания, когда текущий блок имеет неквадратную форму.
На фиг. 35 представлен вид, показывающий широкоугольные режимы внутреннего предсказания.
На фиг. 36 представлен вид, показывающий вариант осуществления применения PDPC.
На фиг. 37 представлен вид, показывающий пример, в котором второй кандидат на слияние указан с учетом порядка поиска кандидатных блоков.
На фиг. 38 представлен вид, показывающий пример, в котором первый кандидат на слияние и второй кандидат на слияние выбираются среди кандидатов на слияние, полученных из несоседних блоков.
На фиг. 39 представлен вид, показывающий пример, в котором значения взвешивания, применяющиеся к блокам предсказания, определяются на основании формы кандидатных блоков.
На фиг. 40 представлен вид, показывающий пример установки неаффинного кандидата на слияние вместо аффинного кандидата на слияние в качестве второго кандидата на слияние.
На фиг. 41 представлен вид, показывающий пример, в котором кандидат на слияние заменяется.
На фиг. 42 представлена блок-схема, изображающая процесс определения качественного показателя блока.
На фиг. 43 представлен вид, показывающий предварительно заданные фильтры-кандидаты.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯ
Далее будет подробно описан вариант осуществления настоящего изобретения со ссылкой на прилагаемые графические материалы.
Кодирование и декодирование видео выполняется посредством элемента блока. Например, процесс кодирования/декодирования, такой как преобразование, квантование, предсказание, фильтрование в контуре, восстановление и т.п., может выполняться в отношении блока кодирования, блока преобразования или блока предсказания.
Далее блок, подлежащий кодированию/декодированию, будет называться «текущим блоком». Например, текущий блок может представлять блок кодирования, блок преобразования или блок предсказания согласно текущему этапу процесса кодирования/декодирования.
Кроме того, следует понимать, что термин «элемент», используемый в настоящем описании, обозначает базовый элемент для выполнения конкретного процесса кодирования/декодирования, и термин «блок» обозначает массив отсчетов предварительно определенного размера. Если не указано иное, «блок» и «элемент» могут использоваться с одинаковым значением. Например, в варианте осуществления, описанном ниже, следует понимать, что блок кодирования и элемент кодирования имеют одинаковое значение.
На фиг. 1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.
Как показано на фиг. 1, устройство 100 для кодирования видео может содержать часть 110 для разбиения изображений, части 120 и 125 для предсказания, часть 130 для преобразования, часть 135 для квантования, часть 160 для перестановки, часть 165 для энтропийного кодирования, часть 140 для обратного квантования, часть 145 для обратного преобразования, часть 150 для фильтрации и запоминающее устройство 155.
Каждый из компонентов, показанных на фиг. 1, показан независимо, чтобы представить характерные функции, отличающиеся друг от друга в устройстве для кодирования видео, но это не означает, что каждый компонент образован элементом конфигурации отдельного аппаратного обеспечения или одного программного обеспечения. То есть каждый компонент включен в список в качестве компонента для удобства объяснения, и по меньшей мере два из компонентов могут быть объединены для образования единого компонента, или один компонент может быть разделен на множество компонентов для выполнения функции. Варианты осуществления с объединением и варианты осуществления с разделением компонентов также входят в объем настоящего изобретения, если они не выходят за рамки сущности настоящего изобретения.
Кроме того, некоторые из компонентов не являются важными компонентами, которые выполняют основные функции в настоящем изобретении, и могут быть необязательными компонентами только для повышения эффективности. Настоящее изобретение может быть реализовано путем включения только компонентов, необходимых для реализации сущности настоящего изобретения, за исключением компонентов, используемых только для повышения эффективности, и конструкция, содержащая только необходимые компоненты, за исключением необязательных компонентов, используемых только для повышения эффективности, также включена в объем настоящего изобретения.
Часть 110 для разбиения изображений может разбивать входное изображение на по меньшей мере один элемент обработки. В этом случае элемент обработки может представлять собой элемент предсказания (PU), элемент преобразования (TU) или элемент кодирования (CU). Часть 110 для разбиения изображений может разбивать изображение на совокупность, состоящую из множества элементов кодирования, элементов предсказания и элементов преобразования, и кодировать изображение за счет выбора совокупности элемента кодирования, элемента предсказания и элемента преобразования на основании предварительно определенного критерия (например, функции стоимости).
Например, одно изображение может быть разбито на множество элементов кодирования. Для разбиения элементов кодирования в изображении может использоваться структура в виде рекурсивного дерева, такая как структура в виде четвертичного дерева. Видео или элемент кодирования, разбитые на разные элементы кодирования с использованием наибольшего элемента кодирования в качестве корня, могут быть разбиты так, чтобы иметь столько же узлов-потомков, сколько разбитых элементов кодирования. Элемент кодирования, который больше не разбивается согласно предварительно определенному ограничению, становится листовым узлом. То есть, если предполагается, что возможно только квадратное разбиение для одного элемента кодирования, один элемент кодирования может быть разбит на не более чем четыре разных элемента кодирования.
Далее в варианте осуществления настоящего изобретения элемент кодирования может использоваться в значении элемента, выполняющего кодирование, или в значении элемента, выполняющего декодирование.
Элемент предсказания может представлять собой элемент, разбитый в форме по меньшей мере одного квадрата, прямоугольника и т.п. одинакового размера в пределах одного элемента кодирования, или он может представлять собой любой элемент предсказания из элементов предсказания, разбитых в пределах одного элемента кодирования, который разбит так, что имеет форму и/или размер, отличающиеся от таковых другого элемента предсказания.
Если элемент кодирования не является наименьшим элементом кодирования, когда генерируется элемент предсказания, который выполняет внутреннее предсказание на основании элемента кодирования, внутреннее предсказание может выполняться без разбиения изображения на множество элементов предсказания N×N.
Части 120 и 125 для предсказания могут содержать часть 120 для предсказания, осуществляемого между изображениями, которая выполняет предсказание, осуществляемое между изображениями, и часть 125 для внутреннего предсказания, которая выполняет внутреннее предсказание. Может быть определено, использовать ли предсказание, осуществляемое между изображениями, или выполнить внутреннее предсказание для элемента предсказания, и определить конкретную информацию (например, режим внутреннего предсказания, вектор движения, опорное изображение и т.д.) согласно каждому способу предсказания. В этом случае элемент обработки для выполнения предсказания может отличаться от элемента обработки для определения способа предсказания и конкретного содержимого. Например, способ предсказания и режим предсказания могут быть определены в элементе предсказания, и предсказание может выполняться в элементе преобразования. Остаточный коэффициент (остаточный блок) между восстановленным блоком предсказания и первоначальным блоком может быть введен в часть 130 для преобразования. Кроме того, информация о режиме предсказания, информация о векторе движения и т.п., используемые для предсказания, могут быть кодированы посредством части 165 для энтропийного кодирования вместе с остаточным коэффициентом и переданы на декодер. Когда используется конкретный режим кодирования, первоначальный блок может быть кодирован, как есть и передан на декодер без генерирования блока предсказания посредством частей 120 и 125 для предсказания.
Часть 120 для предсказания, осуществляемого между изображениями, может предсказывать элемент предсказания на основании информации о по меньшей мере одном изображении из изображений перед текущим изображением или после него, и в некоторых случаях она может предсказывать элемент предсказания на основании информации о частичной области, которая была закодирована в текущем изображении. Часть 120 для предсказания, осуществляемого между изображениями, может содержать часть для интерполяции опорного изображения, часть для предсказания движения и часть для компенсации движения.
Часть для интерполяции опорного изображения может принимать информацию об опорном изображении от запоминающего устройства 155 и генерировать информацию о пикселе для целого числа пикселей или меньше из опорного изображения. В случае пикселя яркости 8-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/4 пикселей. В случае цветоразностного сигнала 4-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/8 пикселей.
Часть для предсказания движения может выполнять предсказание движения на основании опорного изображения, интерполированного частью для интерполяции опорного изображения. Различные способы, такие как алгоритм сопоставления блоков на основе полного поиска (FBMA), трехступенчатый поиск (TSS), алгоритм нового трехступенчатого поиска (NTS) и т.п., могут использоваться в качестве способа вычисления вектора движения. Вектор движения может иметь значение вектора движения в виде элемента, состоящего из 1/2 или 1/4 пикселей, на основании интерполированных пикселей. Часть для предсказания движения может предсказывать текущий элемент предсказания за счет изменения предсказания движения. Различные способы, такие как режим пропуска, режим слияния, режим усовершенствованного предсказания вектора движения (AMVP), режим внутриблочного копирования и т.п., могут использоваться в качестве режима предсказания движения.
Часть 125 для внутреннего предсказания может генерировать элемент предсказания на основании информации об опорных пикселях, расположенных поблизости от текущего блока, которая представляет собой информацию о пикселе в текущем изображении. Когда блок, находящийся поблизости от текущего элемента предсказания, представляет собой блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, и, таким образом, опорный пиксель представляет собой пиксель, в отношении которого было выполнено предсказание, осуществляемое между изображениями, опорный пиксель, включенный в блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, может использоваться вместо информации об опорном пикселе блока, находящегося поблизости, в отношении которого было выполнено внутреннее предсказание. То есть, когда опорный пиксель недоступен, по меньшей мере один опорный пиксель из доступных опорных пикселей может использоваться вместо недоступной информации об опорном пикселе.
При внутреннем предсказании режим предсказания может предусматривать режим предсказания, основанный на информации об углах, в котором используется информация об опорном пикселе согласно направлению предсказания, и режим предсказания, не основанный на информации об углах, в котором не используется информация о направлении при выполнении предсказания. Режим для предсказания информации об яркости может отличаться от режима для предсказания информации о цветовой разности, и информация о режиме внутреннего предсказания, используемая для предсказания информации о яркости или информации о предсказанном сигнале яркости, может использоваться для предсказания информации о цветовой разности.
Если размер элемента предсказания такой же, как размер элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться для элемента предсказания на основании пикселя на левой стороне, пикселя на верхней левой стороне и пикселя сверху от элемента предсказания. Однако, если размер элемента предсказания отличается от размера элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N×N может использоваться только для наименьшего элемента кодирования.
Посредством способа внутреннего предсказания можно генерировать блок предсказания после применения фильтра адаптивного внутреннего сглаживания (AIS) к опорному пикселю согласно режиму предсказания. Тип фильтра AIS, применяемого к опорному пикселю, может варьировать. Для выполнения способа внутреннего предсказания режим внутреннего предсказания текущего элемента предсказания может быть предсказан из режима внутреннего предсказания элемента предсказания, существующего поблизости от текущего элемента предсказания. Когда режим предсказания текущего элемента предсказания предсказан с использованием информации о режиме, предсказанной из соседнего элемента предсказания, если режимы внутреннего предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, то информация, указывающая, что режимы предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, может передаваться с использованием информации о предварительно определенном флаге, и если режимы предсказания текущего элемента предсказания и элемента предсказания поблизости отличаются друг от друга, информация о режиме предсказания текущего блока может быть кодирована за счет выполнения энтропийного кодирования.
Кроме того, может быть сгенерирован остаточный блок, содержащий элемент предсказания, который выполнил предсказание на основании элемента предсказания, сгенерированного частями 120 и 125 для предсказания, и информации об остаточном коэффициенте, которая представляет собой значение разницы элемента предсказания от первоначального блока. Сгенерированный остаточный блок может быть введен в часть 130 для преобразования.
Часть 130 для преобразования может преобразовывать остаточный блок, содержащий первоначальный блок и информацию об остаточном коэффициенте элемента предсказания, сгенерированного посредством частей 120 и 125 для предсказания, с помощью способа преобразования, такого как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или KLT. Применение DCT, DST или KLT для преобразования остаточного блока, может быть определено на основании информации о режиме внутреннего предсказания элемента предсказания, используемого для генерирования остаточного блока.
Часть 135 для квантования может квантовать значения, преобразованные в частотную область посредством части 130 для преобразования. Коэффициенты квантования могут изменяться в зависимости от блока или важности видео. Значение, вычисленное частью 135 для квантования, может быть предоставлено в часть 140 для обратного квантования и часть 160 для перестановки.
Часть 160 для перестановки может выполнять перестановку значений коэффициентов для квантованных остаточных коэффициентов.
Часть 160 для перестановки может изменять коэффициенты двумерной формы блока на одномерную векторную форму посредством способа сканирования коэффициентов. Например, часть 160 для перестановки может сканировать от коэффициентов DC до коэффициентов высокочастотной области с использованием способа зигзагообразного сканирования и менять коэффициенты с приданием им одномерной векторной формы. Согласно размеру элемента преобразования и режиму внутреннего предсказания вместо зигзагообразного сканирования может использоваться вертикальное сканирование в виде сканирования коэффициентов двумерной формы блока в направлении столбцов и горизонтальное сканирование коэффициентов двумерной формы блока в направлении строк. То есть согласно размеру элемента преобразования и режиму внутреннего предсказания может быть определен способ сканирования, который будет использоваться, из зигзагообразного сканирования, сканирования в вертикальном направлении и сканирования в горизонтальном направлении.
Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование на основании значений, вычисленных частью 160 для перестановки. Для энтропийного кодирования могут использоваться различные способы кодирования, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и т.п.
Часть 165 для энтропийного кодирования может кодировать различную информацию, такую как информация об остаточном коэффициенте и информация о типе элемента кодирования, информация о режиме предсказания, информация об элементе разбиения, информация об элементе предсказания и информация об элементе передачи, информация о векторе движения, информация об опорном кадре, информация об интерполяции блока и информация о фильтрации, которая введена из части 160 для перестановки и частей 120 и 125 для предсказания.
Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование значения коэффициента элемента кодирования, введенного из части 160 для перестановки.
Часть 140 для обратного квантования и часть 145 для обратного преобразования выполняют обратное квантование значений, квантованных посредством части 135 для квантования, и обратное преобразование значений, преобразованных посредством части 130 для преобразования. Остаточный коэффициент, сгенерированный частью 140 для обратного квантования и частью 145 для обратного преобразования, может быть объединен с элементом предсказания, предсказанным посредством части для оценки движения, часть для компенсации движения и части для внутреннего предсказания, включенных в части 120 и 125 для предсказания, для генерирования восстановленного блока.
Часть 150 для фильтрации может содержать по меньшей мере одно из деблочного фильтра, элемента для компенсации смещения и адаптивного контурного фильтра (ALF).
Деблочный фильтр может удалять искажение блока, возникающее на границе между блоками в восстановленном изображении. Определение того, выполнять ли удаление блочности, применять ли деблочный фильтр к текущему блоку, может осуществляться на основании пикселей, содержащихся в нескольких столбцах или строках, содержащихся в блоке. Сильный фильтр или слабый фильтр может применяться согласно необходимой степени фильтрации для удаления блочности при применении деблочного фильтра к блоку. Кроме того, когда выполняются фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении при применении деблочного фильтра, фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении могут осуществляться параллельно.
Элемент для коррекции смещения может корректировать смещение первоначального видео посредством элемента, состоящего из пикселей, для видео, в отношении которого было выполнено удаление блочности. Для выполнения коррекции смещения для конкретного изображения можно использовать способ разделения пикселей, включенных в видео, на определенное количество областей, определения области для выполнения смещения, и применения смещения к области, или способ применения смещения, учитывающий информацию о крае каждого пикселя.
Адаптивная контурная фильтрация (ALF) может выполняться на основании значения, полученного за счет сравнения восстановленного и отфильтрованного видео с первоначальным видео. После разделения пикселей, включенных в видео, на предварительно определенные группы, может быть определен один фильтр, который должен применяться к соответствующей группе, и фильтрация может выполняться по-разному для каждой группы. Сигнал яркости, который представляет собой информацию, связанную с тем, применять ли ALF, может передаваться для каждого элемента кодирования (CU), и форма и коэффициент фильтрования фильтра ALF, который должен быть применен, могут варьировать в зависимости от каждого блока. Кроме того, фильтр ALF того же типа (фиксированного типа) может применяться независимо от характеристики применяемого блока.
Запоминающее устройство 155 может хранить восстановленный блок или изображение, вычисленные посредством части 150 для фильтрации, и восстановленный и сохраненный блок или изображение могут быть предоставлены в части 120 и 125 для предсказания при выполнении предсказания, осуществляемого между изображениями.
На фиг. 2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.
Как показано на фиг. 2, видеодекодер 200 может содержать часть 210 для энтропийного декодирования, часть 215 для перестановки, часть 220 для обратного квантования, часть 225 для обратного преобразования, части 230 и 235 для предсказания, часть 240 для фильтрации и запоминающее устройство 245.
Когда битовый поток видео вводится из видеокодера, входной битовый поток может быть декодирован согласно процедуре, противоположной процедуре работы видеокодера.
Часть 210 для энтропийного декодирования может выполнять энтропийное декодирование согласно процедуре, противоположной процедуре выполнения энтропийного кодирования в части для энтропийного декодирования видеокодера. Например, могут применяться различные способы, соответствующие способу, выполняемому видеокодером, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (CABAC).
Часть 210 для энтропийного декодирования может декодировать информацию, связанную с внутренним предсказанием и предсказанием, осуществляемым между изображениями, выполняемыми кодером.
Часть 215 для перестановки может выполнять перестановку в отношении битового потока, подвергнутого энтропийному декодированию посредством части 210 для энтропийного декодирования, на основании способа перестановки, выполняемого кодером. Коэффициенты, выраженные в одномерной векторной форме, могут быть восстановлены и переставлены как коэффициенты в двумерной форме блока. Часть 215 для перестановки может принимать информацию, связанную со сканированием коэффициентов, выполняемым частью для кодирования, и выполнять восстановление посредством способа обратного сканирования на основании порядка сканирования, выполняемого соответствующей частью для кодирования.
Часть 220 для обратного квантования может выполнять обратное квантование на основании параметра квантования, предоставленного кодером, и значения коэффициента переставленного блока.
Часть 225 для обратного преобразования может выполнять обратное преобразование, т.е. обратное DCT, обратное DST или обратное KLT, для преобразования, т.е. DCT, DST или KLT, выполняемого частью для преобразования в отношении результата квантования, выполняемого видеокодером. Обратное преобразование может выполняться на основании элемента передачи, определенного видеокодером. Часть 225 для обратного преобразования видеодекодера может выборочно выполнять метод преобразования (например, DCT, DST, KLT) согласно множеству фрагментов информации, такой как способ предсказания, размер текущего блока, направление предсказания и т.п.
Части 230 и 235 для предсказания могут генерировать блок предсказания на основании информации, относящейся к генерированию блока предсказания, предоставленного энтропийным декодером 210, и информации о ранее декодированном блоке или изображении, предоставленном запоминающим устройством 245.
Как описано выше, если размер элемента предсказания и размер элемента преобразования одинаковы, когда внутреннее предсказание выполняется таким же образом, как операция в видеокодере, внутреннее предсказание выполняется в отношении элемента предсказания на основании пикселя, находящегося на левой стороне, пикселя на верхней левой стороне и пикселя сверху элемента предсказания. Однако, если размер элемента предсказания и размер элемента преобразования отличаются друг от друга, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N×N может использоваться только для наименьшего элемента кодирования.
Части 230 и 235 для предсказания могут содержать часть для определения элемента предсказания, часть для предсказания, осуществляемого между изображениями, и часть для внутреннего предсказания. Часть для определения элемента предсказания может принимать различную информацию, такую как информация об элементе предсказания, введенная от части 210 для энтропийного декодирования, информация о режиме предсказания для способа внутреннего предсказания, информация, относящаяся к предсказанию движения для способа предсказания, осуществляемого между изображениями, и т.п., идентифицировать элемент предсказания из текущего элемента кодирования и определять, выполняет элемент предсказания предсказание, осуществляемое между изображениями, или внутреннее предсказание. Часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, в отношении текущего элемента предсказания на основании информации, включенной в по меньшей мере одно изображение из изображений до или после текущего изображения, включая текущий элемент предсказания, за счет использования информации, необходимой для предсказания, осуществляемого между изображениями, текущего элемента предсказания, предоставленного видеокодером. Альтернативно часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, на основании информации о частичной области, ранее восстановленной в текущем изображении, содержащем текущий элемент предсказания.
Для выполнения предсказания, осуществляемого между изображениями, можно определить на основании элемента кодирования, является способ предсказания движения элемента предсказания, включенного в соответствующий элемент кодирования, режимом пропуска, режимом слияния, режимом предсказания вектора движения (режимом AMVP) или режимом внутриблочного копирования.
Часть 235 для внутреннего предсказания может генерировать блок предсказания на основании информации о пикселе в текущем изображении. Когда элемент предсказания представляет собой элемент предсказания, который выполнил внутреннее предсказание, внутреннее предсказание может быть выполнено на основании информации о режиме внутреннего предсказания элемента предсказания, предоставленного видеокодером. Часть 235 для внутреннего предсказания может содержать фильтр адаптивного внутреннего сглаживания (AIS), часть для интерполяции опорного пикселя и фильтр DC. Фильтр AIS представляет собой часть, которая выполняет фильтрацию в отношении опорного пикселя текущего блока, и может определять, применять ли фильтр согласно режиму предсказания текущего элемента предсказания, и применять фильтр. Фильтрация AIS может выполняться в отношении опорного пикселя текущего блока за счет использования режима предсказания и информации о фильтре AIS элемента предсказания, предоставленного видеокодером. Когда режим предсказания текущего блока представляет собой режим, который не выполняет фильтрацию AIS, фильтр AIS может не применяться.
Когда режим предсказания элемента предсказания представляет собой элемент предсказания, который выполняет внутреннее предсказание на основании значения пикселя, полученного за счет интерполяции опорного пикселя, часть для интерполяции опорного пикселя может генерировать опорный пиксель элемента, состоящего из пикселей, который имеет целое значение или меньше за счет интерполяции опорного пикселя. Когда режим предсказания текущего элемента предсказания представляет собой режим предсказания, который генерирует блок предсказания без интерполяции опорного пикселя, опорный пиксель может не быть интерполирован. Фильтр DC может генерировать блок предсказания посредством фильтрации, когда режим предсказания текущего блока представляет собой режим DC.
Восстановленный блок или изображение могут быть предоставлены в часть 240 для фильтрации. Часть 240 для фильтрации может содержать деблочный фильтр, элемент для коррекции смещения и ALF.
Информация о том, применять ли деблочный фильтр к соответствующему блоку или изображению, и информация о том, применять сильный фильтр или слабый фильтр, когда применяется деблочный фильтр, могут быть предоставлены видеокодером. В деблочный фильтр видеодекодера может быть предоставлена информация, связанная с деблочным фильтром, предоставленная видеокодером, и видеодекодер может выполнять фильтрацию для удаления блочности в отношении соответствующего блока.
Элемент для коррекции смещения может выполнять коррекцию смещения в отношении восстановленного видео на основании типа коррекции смещения и информации о значении смещения, применяемых к видео при выполнении кодирования.
ALF может применяться к элементу кодирования на основании информации о том, следует или нет применять ALF, и информации о коэффициентах ALF, предоставленной кодером. Информация об ALF может быть предоставлена для включения в набор конкретных параметров.
Запоминающее устройство 245 может хранить восстановленное изображение или блок и использовать их в качестве опорного изображения или опорного блока и может предоставлять восстановленное изображение на элемент вывода.
На фиг. 3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.
Блок кодирования максимального размера может быть определен как блок кодового дерева. Изображение разбивается на множество элементов кодового дерева (CTU). Элемент кодового дерева представляет собой элемент кодирования, имеющий максимальный размер, и может называться большим элементом кодирования (LCU). На фиг. 3 представлен пример, в котором изображение разбивается на множество элементов кодового дерева.
Размер элемента кодового дерева может быть определен на уровне изображения или уровне последовательности. Для этого информация, указывающая размер элемента кодового дерева, может быть передана посредством набора параметров изображения или набора параметров последовательности.
Например, размер элемента кодового дерева для всего изображения в последовательности может быть установлен равным 128×128. Альтернативно на уровне изображения любой размер из 128×128 и 256×256 может быть определен как размер элемента кодового дерева. Например, размер элемента кодового дерева может быть установлен равным 128×128 в первом изображении, и размер элемента кодового дерева может быть установлен равным 256×256 во втором изображении.
Блоки кодирования могут быть сгенерированы за счет разбиения элемента кодового дерева. Блок кодирования указывает базовый элемент для выполнения кодирования/декодирования. Например, предсказание или преобразование может выполняться для каждого блока кодирования, или режим кодирования с предсказанием может быть определен для каждого блока кодирования. В данном случае режим кодирования с предсказанием указывает способ генерирования изображения предсказания. Например, режим кодирования с предсказанием может включать предсказание в пределах изображения (внутреннее предсказание), предсказание между изображениями (предсказание, осуществляемое между изображениями), привязку к текущему изображению (CPR), или внутриблочное копирование (IBC), или комбинированное предсказание. Для блока кодирования блок предсказания может быть сгенерирован за счет использования по меньшей мере одного режима кодирования с предсказанием из внутреннего предсказания, предсказания, осуществляемого между изображениями, привязки к текущему изображению и комбинированного предсказания.
Информация, указывающая режим кодирования с предсказанием текущего блока, может передаваться посредством битового потока. Например, информация может представлять собой 1-битный флаг, указывающий, является режим кодирования с предсказанием внутренним режимом или режимом, осуществляемым между изображениями. Только когда режим кодирования с предсказанием текущего блока определен как режим, осуществляемый между изображениями, может использоваться привязка к текущему изображению или комбинированное предсказание.
Привязка к текущему изображению предназначена для установления текущего изображения как опорного изображения и получения блока предсказания текущего блока из области, которая уже была кодирована/декодирована в текущем изображении. В данном случае текущее изображение означает изображение, содержащее текущий блок. Информация, указывающая, применяется ли привязка к текущему изображению к текущему блоку, может быть передана посредством битового потока. Например, информация может представлять собой 1-битный флаг. Когда флаг является истинным, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению, а когда флаг является ложным, режим предсказания текущего блока может быть определен как предсказание, осуществляемое между изображениями.
Альтернативно режим кодирования с предсказанием текущего блока может быть определен на основании индекса опорного изображения. Например, когда индекс опорного изображения указывает текущее изображение, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению. Когда индекс опорного изображения указывает изображение, отличающееся от текущего изображения, режим кодирования с предсказанием текущего блока может быть определен как предсказание, осуществляемое между изображениями. То есть привязка к текущему изображению представляет собой способ предсказания, использующий информацию об области, в которой было осуществлено кодирование/декодирование, в текущем изображении, и предсказание, осуществляемое между изображениями, представляет собой способ предсказания, использующий информацию о другом изображении, в котором было осуществлено кодирование/декодирование.
Комбинированное предсказание представляет режим кодирования, в котором объединены два или более из внутреннего предсказания, предсказания, осуществляемого между изображениями, и текущего опорного изображения. Например, при применении комбинированного предсказания первый блок предсказания может быть сгенерирован на основании одно из внутреннего предсказания, предсказания, осуществляемого между изображениями, и привязки к текущему изображению, а второй блок предсказания может быть сгенерирован на основании другого из них. При генерировании первого блока предсказания и второго блока предсказания, конечный блок предсказания может быть сгенерирован посредством операции усреднения или операции взвешенного суммирования первого блока предсказания и второго блока предсказания. Информация, указывающая, применяется ли комбинированное предсказание, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг.
На фиг. 4 представлен вид, показывающий различные типы разбиения блока кодирования.
Блок кодирования может быть разбит на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева. Разбитый блок кодирования может быть разбит снова на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева.
Разбиение на основе четверичного дерева относится к методу разбиения, который разбивает текущий блок на четыре блока. В результате разбиения на основе четвертичного дерева текущий блок может быть разбит на четыре раздела квадратной формы (см. «SPLIT_QT» на фиг. 4 (a)).
Разбиение на основе двоичного дерева относится к методу разбиения, который разбивает текущий блок на два блока. Разбиение текущего блока на два блока вдоль вертикального направления (т.е. с использованием вертикальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в вертикальном направлении, и разбиение текущего блока на два блока вдоль горизонтального направления (т.е. с использованием горизонтальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в горизонтальном направлении. В результате разбиения на основе двоичного дерева текущий блок может быть разбит на два раздела неквадратной формы. «SPLIT_BT_VER» на фиг. 4 (b) представляет результат разбиения на основе двоичного дерева в вертикальном направлении, а «SPLIT_BT_HOR» на фиг. 4 (c) представляет результат разбиения на основе двоичного дерева в горизонтальном направлении.
Разбиение на основе троичного дерева относится к методу разбиения, который разбивает текущий блок на три блока. Разбиение текущего блока на три блока вдоль вертикального направления (т.е. с использованием двух вертикальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в вертикальном направлении, и разбиение текущего блока на три блока вдоль горизонтального направления (т.е. с использованием двух горизонтальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в горизонтальном направлении. В результате разбиения на основе троичного дерева текущий блок может быть разбит на три раздела неквадратной формы. В этом случае ширина/высота раздела, расположенного в центре текущего блока, может быть вдвое больше ширины/высоты других разделов. «SPLIT_TT_VER» на фиг. 4 (d) представляет результат разбиения на основе троичного дерева в вертикальном направлении, а «SPLIT_TT_HOR» на фиг. 4 (e) представляет результат разбиения на основе троичного дерева в горизонтальном направлении.
Количество разбиений элемента кодового дерева может быть определено как глубина разбиения. Максимальная глубина разбиения элемента кодового дерева может быть определена на уровне последовательности или уровне изображения. Соответственно, максимальная глубина разбиения элемента кодового дерева может отличаться для каждой последовательности или изображения.
Альтернативно максимальная глубина разбиения для каждого метода разбиения может быть определена отдельно. Например, максимальная глубина разбиения, допускаемая для разбиения на основе четверичного дерева, может быть отличной от максимальной глубины разбиения, допускаемой для разбиения на основе двоичного дерева и/или разбиения на основе троичного дерева.
Кодер может передавать информацию, указывающую по меньшей мере одно из типа разбиения и глубины разбиения текущего блока посредством битового потока. Декодер может определять тип разбиения и глубину разбиения элемента кодового дерева на основании информации, проанализированной из битового потока.
На фиг. 5 представлен вид, показывающий результат разбиения элемента кодового дерева.
Разбиение блока кодирования с использованием такого метода разбиения, как разбиение на основе четверичного дерева, разбиение на основе двоичного дерева и/или разбиение на основе троичного дерева, может называться разбиением на основе нескольких деревьев.
Блоки кодирования, сгенерированные путем применения разбиения на основе нескольких деревьев к блоку кодирования, могут называться нижними блоками кодирования. Когда глубина разбиения блока кодирования представляет собой k, глубина разбиения нижних блоков кодирования установлена равной k + 1.
И, с другой стороны, для блоков кодирования, имеющих глубину разбиения k + 1, блок кодирования, имеющий глубину разбиения k, может называться верхним блоком кодирования.
Тип разбиения текущего блока кодирования может быть определен на основании по меньшей мере одного из типа разбиения верхнего блока кодирования и типа разбиения соседнего блока кодирования. В данном случае соседний блок кодирования представляет собой блок кодирования, смежный с текущим блоком кодирования, и может включать по меньшей мере один из верхнего соседнего блока и левого соседнего блока текущего блока кодирования, и соседний блок, смежный с верхним левым углом. В данном случае тип разбиения может включать по меньшей мере одно из следующего: применялось или нет разбиение на основе четверичного дерева, применялось или нет разбиение на основе двоичного дерева, направление разбиения на основе двоичного дерева, применялось или нет разбиение на основе троичного дерева и направление разбиения на основе троичного дерева.
Чтобы определить тип разбиения блока кодирования, информация, указывающая то, может ли быть разбит блок кодирования, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг «split_cu_flag», и, когда флаг является истинным, она указывает, что блок кодирования разбит с помощью метода разбиения на основе четверичного дерева.
Когда split_cu_flag является истинным, информация, указывающая то, разбит ли блок кодирования на основе четверичного дерева, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг в виде split_qt_flag, и, когда флаг является истинным, блок кодирования может быть разбит на четыре блока.
Например, в примере, показанном на фиг. 5, когда элемент кодового дерева разбит на основе четвертичного дерева, генерируются четыре блока кодирования, имеющие глубину разбиения 1. Кроме того, показано, что разбиение на основе четвертичного дерева применяется снова к первому и четвертому блокам кодирования из четырех блоков кодирования, сгенерированных в результате разбиения на основе четвертичного дерева. В результате могут быть сгенерированы четыре блока кодирования, имеющие глубину разбиения 2.
Кроме того, блоки кодирования, имеющие глубину разбиения, равную 3, могут быть сгенерированы путем повторного применения разбиения на основе четверичного дерева к блоку кодирования, имеющему глубину разбиения, равную 2.
Когда разбиение на основе четверичного дерева не применяется к блоку кодирования, может быть определено то, выполняется ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, с учетом по меньшей мере одного из следующего: размера блока кодирования, расположен ли блок кодирования на границе изображения, максимальной глубины разбиения и типа разбиения соседнего блока. Когда определено, что следует выполнить разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, информация, указывающая направление разбиения, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_vertical_flag. На основании флага может быть определено, является направление разбиения вертикальным направлением или горизонтальным направлением. Дополнительно информация, указывающая то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_binary_flag. На основании флага может быть определено то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования.
Например, в примере, показанном на фиг. 5, показано, что разбиение на основе двоичного дерева в вертикальном направлении применено к блоку кодирования, имеющему глубину разбиения, равную 1, разбиение на основе троичного дерева в вертикальном направлении применено к левому блоку кодирования из блоков кодирования, сгенерированных в результате разбиения, и разбиение на основе двоичного дерева в вертикальном направлении применено к правому блоку кодирования.
Предсказание, осуществляемое между изображениями, представляет собой режим кодирования с предсказанием, который предсказывает текущий блок путем использования информации о предшествующем изображении. Например, блок в том же положении, что и текущий блок в предшествующем изображении (далее – совмещаемый блок), может быть установлен как блок предсказания текущего блока. Далее блок предсказания, сгенерированный на основании блока в том же положении, что и текущий блок, будет называться совмещаемым блоком предсказания.
С другой стороны, когда объект, находящийся в предшествующем изображении, переместился в другое положение в текущем изображении, текущий блок может быть эффективным образом предсказан путем использования движения объекта. Например, когда направление движения и размер объекта можно узнать путем сравнения предшествующего изображения и текущего изображения, блок предсказания (или изображение предсказания) текущего блока может быть сгенерирован с учетом информации о движении объекта. Далее блок предсказания, сгенерированный путем использования информации о движении, может называться блоком предсказания движения.
Остаточный блок может быть сгенерирован путем вычитания блока предсказания из текущего блока. В этом случае, когда имеется движение объекта, энергия остаточного блока может быть уменьшена путем использования блока предсказания движения вместо совмещаемого блока предсказания, и, таким образом, эффективность сжатия остаточного блока может быть улучшена.
Как описано выше, генерирование блока предсказания путем использования информации о движении может называться предсказанием с компенсацией движения. В большинстве предсказаний, осуществляемых между изображениями, блок предсказания может быть сгенерирован на основании предсказания с компенсацией движения.
Информация о движении может содержать по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса. Вектор движения представляет направление движения и размер объекта. Индекс опорного изображения указывает опорное изображение текущего блока из опорных изображений, включенных в список опорных изображений. Направление предсказания указывает любое из однонаправленного предсказания L0, однонаправленного предсказания L1 и двунаправленного предсказания (предсказания L0 и предсказания L1). Согласно направлению предсказания текущего блока может использоваться по меньшей мере одно из информации о движении в направлении L0 и информации о движении в направлении L1. Двунаправленный весовой индекс указывает значение взвешивания, примененное к блоку предсказания L0, и значение взвешивания, примененное к блоку предсказания L1.
На фиг. 6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.
Как показано на фиг. 6, способ предсказания, осуществляемого между изображениями, включает этапы определения (S601) режима предсказания, осуществляемого между изображениями, текущего блока, получения (S602) информации о движении текущего блока согласно определенному режиму предсказания, осуществляемого между изображениями, и выполнения (S603) предсказания с компенсацией движения для текущего блока на основании полученной информации о движении.
В данном случае режим предсказания, осуществляемого между изображениями, представляет различные методы определения информации о движении текущего блока и может включать режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении. Например, режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, может включать режим слияния и режим предсказания вектора движения, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении, может включать аффинный режим слияния и режим предсказания вектора аффинного движения. Информация о движении текущего блока может быть определена на основании соседнего блока, смежного с текущим блоком, или информации, проанализированной из битового потока согласно режиму предсказания, осуществляемого между изображениями.
Далее способ предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении, будет описан подробно.
На фиг. 7 представлен вид, показывающий нелинейное движение объекта.
Нелинейное движение объекта может быть сгенерировано в видео. Например, как показано в примере на фиг. 7, может происходить такое нелинейное движение объекта, как приближение, отдаление, поворот, аффинное преобразование и т.п. камеры. Когда происходит нелинейное движение объекта, движение объекта не может быть эффективно выражено с помощью вектора поступательного движения. Соответственно, эффективность кодирования может быть улучшена за счет использования аффинного движения вместо поступательного движения в области, где происходит нелинейное движение объекта.
На фиг. 8 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, на основании аффинного движения согласно одному варианту осуществления настоящего изобретения.
Применяется ли метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, к текущему блоку, может быть определено на основании информации, проанализированной из битового потока. В частности, применяется ли метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, к текущему блоку, может быть определено на основании по меньшей мере одно из флага, указывающего, применяется ли аффинный режим слияния к текущему блоку, и флага, указывающего, применяется ли режим предсказания вектора аффинного движения к текущему блоку.
Когда метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, применяется к текущему блоку, может быть определена (S801) модель аффинного движения текущего блока. Модель аффинного движения может быть определена как по меньшей мере одна из шестипараметрической модели аффинного движения и четырехпараметрической модели аффинного движения. Шестипараметрическая модель аффинного движения выражает аффинное движение с использованием шести параметров, а четырехпараметрическая модель аффинного движения выражает аффинное движение с использованием четырех параметров.
Уравнение 1 выражает аффинное движение с использованием шести параметров. Аффинное движение представляет поступательное движение для предварительно определенной области, определенной аффинными исходными векторами.
[Уравнение 1]
Когда аффинное движение выражено с использованием шести параметров, может быть выражено сложное движение. Однако, поскольку увеличивается количество битов, необходимых для кодирования каждого из параметров, эффективность кодирования может снижаться. Соответственно, аффинное движение может быть выражено с использованием четырех параметров. Уравнение 2 выражает аффинное движение с использованием четырех параметров.
[Уравнение 2]
Информация для определения модели аффинного движения текущего блока может быть закодирована и передана посредством битового потока. Например, информация может представлять собой 1-битный флаг в виде «affine_type_flag». Когда значение флага равно 0, это может указывать, что применяется 4-параметрическая модель аффинного движения, а когда значение флага равно 1, это может указывать, что применяется 6-параметрическая модель аффинного движения. Флаг может быть кодирован посредством элемента в виде слайса, тайла или блока (например, посредством элемента блока кодирования или кодового дерева). Когда флаг передается на уровне слайса, модель аффинного движения, определенная на уровне слайса, может применяться ко всем блокам, принадлежащим к слайсу.
Альтернативно модель аффинного движения текущего блока может быть определена на основании аффинного режима предсказания, осуществляемого между изображениями, текущего блока. Например, когда применяется аффинный режим слияния, модель аффинного движения текущего блока может быть определена как 4-параметрическая модель движения. С другой стороны, когда применяется режим предсказания вектора аффинного движения, информация для определения модели аффинного движения текущего блока может быть кодирована и передана посредством битового потока. Например, когда режим предсказания вектора аффинного движения применяется к текущему блоку, модель аффинного движения текущего блока может быть определена на основании 1-битного флага в виде «affine_type_flag».
Затем может быть получен (S802) аффинный исходный вектор текущего блока. Когда выбрана 4-параметрическая модель аффинного движения, могут быть получены векторы движения в двух контрольных точках текущего блока. С другой стороны, когда выбрана 6-параметрическая модель аффинного движения, могут быть получены векторы движения в двух контрольных точках текущего блока. Вектор движения в контрольной точке может называться аффинным исходным вектором. Контрольная точка может включать по меньшей мере один из верхнего левого угла, верхнего правого угла и нижнего левого угла текущего блока.
На фиг. 9 представлен вид, показывающий пример аффинных исходных векторов каждой модели аффинного движения.
В 4-параметрической модели аффинного движения аффинные исходные векторы могут быть получены для двух из верхнего левого угла, верхнего правого угла и нижнего левого угла. Например, как показано в примере на фиг. 9(a), когда выбрана 4-параметрическая модель аффинного движения, аффинный вектор может быть получен путем использования аффинного исходного вектора sv0 для верхнего левого угла текущего блока (например, верхний левый отсчет (x1, y1)) и аффинного исходного вектора sv1 для верхнего правого угла текущего блока (например, верхний правый отсчет (x1, y1)). Также можно использовать аффинный исходный вектор для нижнего левого угла вместо аффинного исходного вектора для верхнего левого угла, или использовать аффинный исходный вектор для нижнего левого угла вместо аффинного исходного вектора для верхнего правого угла.
В 6-параметрической модели аффинного движения аффинные исходные векторы могут быть получены для верхнего левого угла, верхнего правого угла и нижнего левого угла. Например, как показано в примере на фиг. 9(b), когда выбрана 6-параметрическая модель аффинного движения, аффинный вектор может быть получен путем использования аффинного исходного вектора sv0 для верхнего левого угла текущего блока (например, верхний левый отсчет (x1, y1)), аффинного исходного вектора sv1 для верхнего правого угла текущего блока (например, верхний правый отсчет (x1, y1)) и аффинного исходного вектора sv2 для верхнего левого угла текущего блока (например, верхний левый отсчет (x2, y2)).
В варианте осуществления, описанном ниже, в 4-параметрической модели аффинного движения аффинные исходные векторы верхней левой контрольной точки и верхней правой контрольной точки будут называться первым аффинным исходным вектором и вторым аффинным исходным вектором соответственно. В вариантах осуществления, в которых используются первый аффинный исходный вектор и второй аффинный исходный вектор, описанные ниже, по меньшей мере один из первого аффинного исходного вектора и второго аффинного исходного вектора может быть заменен аффинным исходным вектором нижней левой контрольной точки (третьим аффинным исходным вектором) или аффинным исходным вектором нижней правой контрольной точки (четвертым аффинным исходным вектором).
Кроме того, в 6-параметрической модели аффинного движения аффинные исходные векторы верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки будут называться первым аффинным исходным вектором, вторым аффинным исходным вектором и третьим аффинным исходным вектором соответственно. В вариантах осуществления, в которых используется первый аффинный исходный вектор, второй аффинный исходный вектор и третий аффинный исходный вектор, описанные ниже, по меньшей мере один из первого аффинного исходного вектора, второго аффинного исходного вектора и третьего аффинного исходного вектора может быть заменен аффинным исходным вектором нижней правой контрольной точки (четвертым аффинным исходным вектором).
Аффинный вектор может быть получен (S803) для каждого подблока за счет использования аффинных исходных векторов. В данном случае аффинный вектор представляет вектор поступательного движения, полученный на основании аффинных исходных векторов. Аффинный вектор подблока может называться аффинным вектором движения подблока или вектором движения подблока.
На фиг. 10 представлен вид, показывающий пример аффинных векторов подблоков в 4-параметрической модели движения.
Аффинный вектор подблока может быть получен на основании положения контрольной точки, положения подблока и аффинного исходного вектора. Например, в уравнении 3 показан пример получения аффинного вектора подблока.
[Уравнение 3]
В уравнении 3 (x, y) обозначают положение подблока. В данном случае положение подблока указывает положение опорного отсчета, включенного в подблок. Опорный отсчет может представлять собой отсчет, расположенный в верхнем левом углу подблока, или отсчет, у которого по меньшей мере одна из координат по оси x и оси y представляет собой центральную точку. (x0, y0) обозначает положение первой контрольной точки и (sv0x, sv0y) обозначает первый аффинный исходный вектор. Кроме того, (x1, y1) обозначает положение второй контрольной точки и (sv1x, sv1y) обозначает второй аффинный исходный вектор.
Когда первая контрольная точка и вторая контрольная точка соответствуют верхнему левому углу и верхнему правому углу текущего блока соответственно, x1-x0 может быть установлено на значение, равное ширине текущего блока.
После этого может быть выполнено (S804) предсказание с компенсацией движения для каждого подблока с использованием аффинного вектора каждого подблока. В результате выполнения предсказания с компенсацией движения может быть сгенерирован блок предсказания для каждого подблока. Блоки предсказания подблоков могут быть установлены как блоки предсказания текущего блока.
Затем способ предсказания, осуществляемого между изображениями, использующий информацию о поступательном движении, будет описан подробно.
Информация о движении текущего блока может быть получена из информации о движении другого блока. В данном случае другой блок может представлять собой блок, кодированный/декодированный путем предсказания, осуществляемого между изображениями, перед текущим блоком. Установка информации о движении текущего блока равной информации о движении другого блока может быть определена как режим слияния. Кроме того, установка вектора движения другого блока в качестве значения предсказания вектора движения текущего блока может быть определена в качестве режима предсказания вектора движения.
На фиг. 11 представлена блок-схема, изображающая процесс получения информации о движении текущего блока с использованием режима слияния.
Может быть получен (S1101) кандидат на слияние текущего блока. Кандидат на слияние текущего блока может быть получен из блока, кодированного/декодированного путем предсказания, осуществляемого между изображениями, перед текущим блоком.
На фиг. 12 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.
Кандидатные блоки могут включать по меньшей мере один из соседних блоков, содержащий отсчет, смежный с текущим блоком, или несоседних блоков, содержащих отсчет, не являющийся смежным с текущим блоком. Далее отсчеты для определения кандидатных блоков задаются в качестве опорных отсчетов. Кроме того, опорный отсчет, смежный с текущим блоком, называется соседним опорным отсчетом, и опорный отсчет, не являющийся смежным с текущим блоком, называется несоседним опорным отсчетом.
Соседний опорный отсчет может быть включен в соседний столбец самого левого столбца текущего блока или соседнюю строку самой верхней строки текущего блока. Например, когда координаты верхнего левого отсчета текущего блока составляют (0, 0), по меньшей мере один из блока, содержащего опорный отсчет в положении (-1, H-1), блока, содержащего опорный отсчет в положении (W-1, -1), блока, содержащего опорный отсчет в положении (W, -1), блока, содержащего опорный отсчет в положении (-1, H), и блока, содержащего опорный отсчет в положении (-1, -1), может использоваться в качестве кандидатного блока. Обращаясь к графическим материалам, соседние блоки индекса 0–4 могут использоваться в качестве кандидатных блоков.
Несоседний опорный отсчет представляет отсчет, в котором по меньшей мере одно из расстояния по оси x и расстояния по оси y от опорного отсчета, смежного с текущим блоком, имеет предварительно заданное значение. Например, по меньшей мере один из блока, содержащего опорный отсчет, в котором расстояние по оси x от левого опорного отсчета представляет собой предварительно заданное значение, блока, содержащего несоседний отсчет, в котором расстояние по оси y от верхнего опорного отсчета представляет собой предварительно заданное значение, и блока, содержащего несоседний отсчет, в котором расстояние по оси x и расстояние по оси y от верхнего левого опорного отсчета представляют собой предварительно заданные значения, может использоваться в качестве кандидатного блока. Предварительно заданные значения могут представлять собой натуральное число, такое как 4, 8, 12, 16 или т.п. Обращаясь к графическим материалам, по меньшей мере один из блоков индекса 5-26 может использоваться в качестве кандидатного блока.
Отсчет, не расположенный на одинаковой вертикальной линии, горизонтальной линии или диагональной линии в качестве соседнего опорного отсчета, может быть установлен в качестве несоседнего опорного отсчета.
На фиг. 13 представлен вид, показывающий положения опорных отсчетов.
Как показано в примере на фиг. 13, координаты x верхних несоседних опорных отсчетов могут быть установлены отличающимися от координат x верхних соседних опорных отсчетов. Например, когда положение верхнего соседнего опорного отсчета составляет (W-1, -1), положение верхнего несоседнего опорного отсчета, отдаленного вплоть до N от верхнего соседнего опорного отсчета на оси y, может быть установлено на ((W/2)-1, -1-N), и положение верхнего несоседнего опорного отсчета, отдаленного вплоть до 2N от верхнего соседнего опорного отсчета на оси y, может быть установлено на (0, -1-2N). То есть положение несоседнего опорного отсчета может быть определено на основании положения соседнего опорного отсчета и расстояния от соседнего опорного отсчета.
Далее кандидатный блок, содержащий соседний опорный отсчет, из кандидатных блоков называется соседним блоком, и блок, содержащий несоседний опорный отсчет, называется несоседним блоком.
Когда расстояние между текущим блоком и кандидатным блоком больше, чем пороговое значение или равняется ему, кандидатный блок может быть установлен недоступным в качестве кандидата на слияние. Пороговое значение может быть определено на основании размера элемента кодового дерева. Например, пороговое значение может быть установлено равным высоте (ctu_height) элемента кодового дерева или значению, полученному путем сложения смещения с высотой (например, ctu_height ± N) элемента кодового дерева или вычитания смещения из нее. Смещение N представляет собой значение, предварительно заданное в кодере и декодере, и может быть установлено равным 4, 8, 16, 32 или ctu_height.
Когда разница между координатой по оси y текущего блока и координатой по оси y отсчета, включенного в кандидатный блок, больше, чем пороговое значение, кандидатный блок может быть определен недоступным в качестве кандидата на слияние.
Альтернативно кандидатный блок, который не принадлежит к такому же элементу кодового дерева в качестве текущего блока, может быть установлен недоступным в качестве кандидата на слияние. Например, когда опорный отсчет отклоняется от верхней границы элемента кодового дерева, к которому принадлежит текущий блок, кандидатный блок, содержащий опорный отсчет, может быть установлен недоступным в качестве кандидата на слияние.
Когда верхняя граница текущего блока является смежной с верхней границей элемента кодового дерева, множество кандидатных блоков определяются недоступными в качестве кандидата на слияние, и, таким образом, эффективность кодирования/декодирования текущего блока может снижаться. Для решения этой проблемы кандидатные блоки могут быть установлены так, чтобы количество кандидатных блоков, расположенных на левой стороне текущего блока, было больше, чем количество кандидатных блоков, расположенных сверху текущего блока.
На фиг. 14 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.
Как показано в примере на фиг. 14, верхние блоки, принадлежащие к верхним столбцам блоков N текущего блока, и левые блоки, принадлежащие к левым столбцам блоков M текущего блока, могут быть установлены в качестве кандидатных блоков. В этом случае количество левых кандидатных блоков может быть установлено большим, чем количество верхних кандидатных блоков, путем установки M больше, чем N.
Например, разница между координатой по оси y опорного отсчета в текущем блоке и координатой по оси y верхнего блока, который может использоваться в качестве кандидатного блока, может быть установлена такой, что не превышает в N раз высоту текущего блока. Кроме того, разница между координатой по оси x опорного отсчета в текущем блоке и координатой по оси x левого блока, который может использоваться в качестве кандидатного блока, может быть установлена такой, что не превышает в M раз ширину текущего блока.
Например, в примере, показанном на фиг. 14, показано, что блоки, принадлежащие к верхним двум столбцам блоков текущего блока, и блоки, принадлежащие к левым пяти столбцам блоков текущего блока, устанавливаются в качестве кандидатных блоков.
В качестве другого примера, когда кандидатный блок не принадлежит к такому же элементу кодового дерева, как текущий блок, кандидат на слияние может быть получен с использованием блока, принадлежащего к такому же элементу кодового дерева, как и текущий блок, или блока, содержащего опорный отсчет, смежный с границей элемента кодового дерева, вместо кандидатного блока.
На фиг. 15 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.
Когда опорный отсчет включен в элемент кодового дерева, отличающийся от текущего блока, и опорный отсчет не является смежным с границей элемента кодового дерева, кандидатный блок может быть определен с использованием опорного отсчета, смежного с границей элемента кодового дерева, вместо опорного отсчета.
Например, в примерах, показанных на фиг. 15(a) и 15(b), когда верхняя граница текущего блока и верхняя граница элемента кодового дерева находятся в контакте друг с другом, опорные отсчеты сверху текущего блока принадлежат к элементу кодового дерева, отличающемуся от текущего блока. Из опорных отсчетов, принадлежащих к элементу кодового дерева, отличающемуся от текущего блока, опорный отсчет, не являющийся смежным с верхней границей элемента кодового дерева, может быть заменен отсчетом, смежным с верхней границей элемента кодового дерева.
Например, как показано в примере по фиг. 15(a), опорный отсчет в положении 6 заменяется отсчетом в положении 6’, расположенном на верхней границе элемента кодового дерева, и, как показано в примере на фиг. 15(b), опорный отсчет в положении 15 заменяется отсчетом в положении 15’, расположенном на верхней границе элемента кодового дерева. В этом случае координата y отсчета замены заменяется положением, смежным с элементом кодового дерева, и координата x отсчета замены может быть установлена равной опорному отсчету. Например, отсчет в положении 6’ может иметь такую же координату x, что и отсчет в положении 6, и отсчет в положении 15’ может иметь такую же координату x, что и отсчет в положении 15.
Альтернативно значение, полученное путем сложения смещения с координатой x опорного отсчета или вычитания смещения из нее, может быть установлено в качестве координаты x отсчета замены. Например, когда координаты x соседнего опорного отсчета, расположенного сверху текущего блока, и несоседнего опорного отсчета являются одинаковыми, значение, полученное путем сложения смещения с координатой x опорного отсчета или вычитания смещения из нее, может быть установлено в качестве координаты x отсчета замены. Это предназначено для предотвращения размещения отсчета замены, заменяющего несоседний опорный отсчет, в таком же положении, что и другой несоседний опорный отсчет или соседний опорный отсчет.
На фиг. 16 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.
При замене опорного отсчета, который включен в элемент кодового дерева, отличающийся от текущего блока, и который не является смежным с границей элемента кодового дерева, отсчетом, расположенным на границе элемента кодового дерева, значение, полученное путем сложения смещения с координатой x опорного отсчета или вычитания смещения из нее, может быть установлено в качестве координаты x отсчета замены.
Например, в примере, показанном на фиг. 16, опорный отсчет в положении 6 и опорный отсчет в положении 15 могут быть заменены отсчетом в положении 6’ и отсчетом в положении 15’ соответственно, координаты y которых являются одинаковыми с координатами y строки, смежной с верхней границей элемента кодового дерева. В этом случае координата x отсчета в положении 6’ может быть установлена равной значению, полученному вычитанием W/2 из координаты x опорного отсчета в положении 6, и координата x отсчета в положении 15’ может быть установлена равной значению, полученному вычитанием W-1 из координаты x опорного отсчета в положении 15.
В отличие от примеров, показанных на фиг. 15 и 16, координата y строки, расположенной сверху самой верхней строки текущего блока, или координата y верхней границы элемента кодового дерева может быть установлена в качестве координаты y отсчета замены.
Хотя это не показано, отсчет, заменяющий опорный отсчет, может быть определен на основании левой границы элемента кодового дерева. Например, когда опорный отсчет не включен в такой же элемент кодового дерева, как текущий блок, и не является смежным с левой границей элемента кодового дерева, опорный отсчет может быть заменен отсчетом, смежным с левой границей элемента кодового дерева. В этом случае отсчет замены может иметь координату y, одинаковую с координатой y опорного отсчета, или может иметь координату y, полученную путем сложения смещения с координатой y опорного отсчета или вычитания из нее.
После этого блок, содержащий отсчет замены, может быть установлен в качестве кандидатного блока, и кандидат на слияние текущего блока может быть получен на основании кандидатного блока.
Кандидат на слияние может также быть получен на основании временного соседнего блока, включенного в изображение, отличающегося от текущего блока. Например, кандидат на слияние может быть получен из совмещаемого блока, включенного в совмещаемое изображение.
Информация о движении кандидата на слияние может быть установлена равной информации о движении кандидатного блока. Например, по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса кандидатного блока может быть установлено в качестве информации о движении кандидата на слияние.
Может генерироваться (S1102) список кандидатов на слияние, содержащий кандидатов на слияние. Кандидаты на слияние могут быть разделены на соседнего кандидата на слияние, полученного из соседнего блока, смежного с текущим блоком, и несмежного кандидата на слияние, полученного из несоседнего блока.
Индексы кандидатов на слияние в списке кандидатов на слияние могут быть присвоены в предварительно определенном порядке. Например, индекс, присвоенный смежному кандидату на слияние, может иметь значение, меньше чем в индексе, присвоенном несмежному кандидату на слияние. Альтернативно индекс может быть присвоен каждому из кандидатов на слияние на основании индекса каждого блока, показанного на фиг. 12 или 14.
Когда множество кандидатов на слияние включены в список кандидатов на слияние, может быть выбран (S1103) по меньшей мере один из множества кандидатов на слияние. В этом случае информация, указывающая на то, получена ли информация о движении текущего блока из смежного кандидата на слияние, может быть передана посредством битового потока. Информация может представлять собой 1-битный флаг. Например, элемент синтаксиса isAdjancentMergeFlag, указывающий на то, получена ли информация о движении текущего блока из смежного кандидата на слияние, может быть передана посредством битового потока. Когда значение элемента синтаксиса isAdjancentMergeFlag равно 1, информация о движении текущего блока может быть получена на основании смежного кандидата на слияние. С другой стороны, когда значение элемента синтаксиса isAdjancentMergeFlag равно 0, информация о движении текущего блока может быть получена на основании несмежного кандидата на слияние.
В таблице 1 показана синтаксическая таблица, указывающая элемент синтаксиса isAdjancentMergeFlag.
Информация для указания любого из множества кандидатов на слияние может передаваться посредством битового потока. Например, информация, указывающая индекс любого из кандидатов на слияние, включенных в список кандидатов на слияние, может быть передана посредством битового потока.
Когда isAdjacentMergeflag равен 1, может быть передан элемент синтаксиса merge_idx, указывающий любой из смежных кандидатов на слияние. Максимальное значение элемента синтаксиса merge_idx может быть установлено равным значению, полученному путем вычитания 1 из количества смежных кандидатов на слияние.
Когда isAdjacentMergeflag равен 0, может быть передан элемент синтаксиса NA_merge_idx, указывающий любой из несмежных кандидатов на слияние. Элемент синтаксиса NA_merge_idx представляет значение, полученное путем вычитания количества смежных кандидатов на слияние из индекса несмежного кандидата на слияние. Декодер может выбрать несмежного кандидата на слияние путем сложения количества смежных кандидатов на слияние с индексом, указанным посредством NA_merge_idx.
Когда количество кандидатов на слияние, включенных в список кандидатов на слияние, меньше, чем пороговое значение, кандидат на слияние, включенный в список информации о движении между участками, может быть добавлен в список кандидатов на слияние. В данном случае пороговое значение может представлять собой максимальное количество кандидатов на слияние, которое может быть включено в список кандидатов на слияние, или значение, полученное путем вычитания смещения из максимального количества кандидатов на слияние. Смещение может представлять собой натуральное число, такое как 1, 2 или т.п. Список информации о движении между участками может содержать кандидата на слияние, полученного на основании блока, кодированного/декодированного перед текущим блоком.
Список информации о движении между участками содержит кандидата на слияние, полученного из блока, кодированного/декодированного на основании предсказания, осуществляемого между изображениями, в текущем изображении. Например, информация о движении кандидата на слияние, включенного в список информации о движении между участками, может быть установлена равной информации о движении блока, кодированного/декодированного на основании предсказания, осуществляемого между изображениями. В данном случае информация о движении может содержать по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса.
Для удобства объяснения кандидат на слияние, включенный в список информации о движении между участками, будет называться кандидатом на слияние между участками.
Максимальное количество кандидатов на слияние, которое может быть включено в список информации о движении между участками, может быть предварительно задано кодером и декодером. Например, максимальное количество кандидатов на слияние, которое может быть включено в список информации о движении между участками, может составлять 1, 2, 3, 4, 5, 6, 7, 8 или больше (например, 16).
Альтернативно информация, указывающая максимальное количество кандидатов на слияние в списке информации о движении между участками, может быть передана посредством битового потока. Информация может передаваться на уровне последовательности, изображения или слайса.
Альтернативно максимальное количество кандидатов на слияние списка информации о движении между участками может быть определено согласно размеру изображения, размеру слайса или размеру элемента кодового дерева.
Список информации о движении между участками может быть инициализирован элементом изображения, слайса, тайла, пакета, элементом кодового дерева или линией элементов кодового дерева (строкой или столбцом). Например, когда инициализирован слайс, список информации о движении между участками также инициализирован, и список информации о движении между участками может не содержать какого-либо кандидата на слияние.
Альтернативно информация, указывающая на то, нужно или нет инициализировать список информации о движении между участками, может быть передана посредством битового потока. Информация может быть передана на уровне слайса, тайла, пакета или блока. Пока информация не укажет об инициализации списка информации о движении между участками, может использоваться предварительно сконфигурированный список информации о движении между участками.
Альтернативно информация в отношении начального кандидата на слияние между участками может быть передана посредством набора параметров изображения или заголовка слайса. Несмотря на инициализацию слайса, список информации о движении между участками может содержать начального кандидата на слияние между участками. Соответственно кандидат на слияние между участками может использоваться для блока, который представляет собой первую цель кодирования/декодирования в слайсе.
Блоки кодированы/декодированы согласно порядку кодирования/декодирования, и блоки, кодированные/декодированные на основании предсказания, осуществляемого между изображениями, могут быть последовательно установлены в качестве кандидата на слияние между участками согласно порядку кодирования/декодирования.
На фиг. 17 представлена блок-схема, изображающая процесс обновления списка информации о движении между участками.
Когда предсказание, осуществляемое между изображениями, выполняется (S1701) в отношении текущего блока, кандидат на слияние между участками может быть получен (S1702) на основании текущего блока. Информация о движении кандидата на слияние между участками может быть установлена равной информации о движении текущего блока.
Когда список информации о движении между участками пуст (S1703), кандидат на слияние между участками, полученный на основании текущего блока, может быть добавлен (S1704) в список информации о движении между участками.
Когда список информации о движении между участками уже содержит кандидата на слияние между участками (S1703), в отношении информации о движении текущего блока (или кандидата на слияние между участками, полученного на основании текущего блока), может выполняться (S1705) контроль по избыточности. Контроль по избыточности предназначен для определения того, являются ли одинаковыми информация о движении кандидата на слияние между участками, ранее сохраненного в списке информации о движении между участками, и информация о движении текущего блока. Контроль по избыточности может быть выполнен в отношении всех кандидатов на слияние между участками, ранее сохраненными в списке информации о движении между участками. Альтернативно контроль по избыточности может быть выполнен в отношении кандидатов на слияние между участками, имеющих индекс, который больше, чем пороговое значение среди кандидатов на слияние, ранее сохраненных в списке информации о движении между участками, или равняется ему.
Когда кандидат на слияние между участками, имеющий такую же информацию о движении в качестве информации о движении текущего блока, не включен, кандидат на слияние между участками, полученный на основании текущего блока, может быть добавлен (S1708) в список информации о движении между участками. Определение того, являются ли кандидаты на слияние одинаковыми, может быть осуществлено на основании того, является ли одинаковой информация о движении (например, вектор движения и/или индекс опорного изображения) кандидатов на слияние между участками.
В этом случае, когда максимальное количество кандидатов на слияние между участками уже сохранено в списке информации о движении между участками (S1706), наиболее старшие кандидаты на слияние между участками удаляются (S1707), и кандидат на слияние между участками, полученный на основании текущего блока, может быть добавлен (S1708) в список информации о движении между участками.
Каждый из кандидатов на слияние между участками может быть идентифицирован индексом. Когда кандидат на слияние между участками, полученный из текущего блока, добавляется в список информации о движении между участками, самый низкий индекс (например, 0) присваивается кандидату на слияние между участками, и индексы ранее сохраненных кандидатов на слияние между участками могут быть увеличены на 1. В этом случае, когда максимальное количество кандидатов на слияние между участками уже сохранено в списке информации о движении между участками, кандидат на слияние между участками, имеющий самый большой индекс, удаляется.
Альтернативно, когда кандидат на слияние между участками, полученный из текущего блока, добавляется в список информации о движении между участками, самый большой индекс может присваиваться кандидату на слияние между участками. Например, когда количество кандидатов на слияние между участками, ранее сохраненных в списке информации о движении между участками, меньше, чем максимальное значение, индекс, имеющий такое же значение, как количество ранее сохраненных кандидатов на слияние между участками, может присваиваться кандидату на слияние между участками. Альтернативно, когда количество кандидатов на слияние между участками, ранее сохраненное в списке информации о движении между участками, является таким же, как максимальное значение, кандидату на слияние между участками может присваиваться индекс, вычитающий 1 из максимального значения. Кроме того, кандидат на слияние между участками, имеющий самый маленький индекс, удаляется, и индексы оставшихся ранее сохраненных кандидатов на слияние между участками могут уменьшаться на 1.
На фиг. 18 представлен вид, показывающий вариант осуществления обновления списка кандидатов на слияние между участками.
Предположительно, поскольку кандидат на слияние между участками, полученный из текущего блока, добавляется в список кандидатов на слияние между участками, самый большой индекс присваивается кандидату на слияние между участками. Кроме того, предположительно максимальное количество кандидатов на слияние между участками уже сохранено в списке кандидатов на слияние между участками.
Когда кандидат на слияние между участками HmvpCand[n + 1], полученный из текущего блока, добавляется в список кандидатов на слияние между участками HmvpCandList, кандидат на слияние между участками HmvpCand[0], имеющий самый маленький индекс среди ранее сохраненных кандидатов на слияние между участками, удаляется, и индексы оставшихся кандидатов на слияние между участками могут быть уменьшены на 1. Кроме того, индекс кандидата на слияние между участками HmvpCand[n + 1], полученного из текущего блока, может быть установлен равным максимальному значению (n в примере, показанном на фиг. 18).
Когда кандидат на слияние между участками, являющийся таким же, как кандидат на слияние между участками, полученный на основании текущего блока, сохранен ранее (S1705), кандидат на слияние между участками, полученный на основании текущего блока, может не добавляться (S1709) в список информации о движении между участками.
Альтернативно поскольку кандидат на слияние между участками, полученный на основании текущего блока, добавляется в список информации о движении между участками, ранее сохраненный кандидат на слияние между участками, который является таким же, как кандидат на слияние между участками, может удаляться. В этом случае достигается эффект, аналогичный обновлению заново индекса ранее сохраненного кандидата на слияние между участками.
На фиг. 19 представлен вид, показывающий пример, в котором индекс ранее сохраненного кандидата на слияние между участками обновлен.
Когда индекс ранее сохраненного кандидата на слияние между участками mvCand, который является таким же, как кандидат на слияние между участками mvCand, полученный на основании текущего блока, представляет собой hIdx, ранее сохраненный кандидат на слияние между участками удаляется, и индексы кандидатов на слияние между участками, имеющие индекс, который больше, чем hIdx, могут быть уменьшены на 1. Например, в примере, показанном на фиг. 19, показано, что HmvpCand[2], являющийся таким же, как mvCand, удаляется из списка информации о движении между участками HvmpCandList, и индексы HmvpCand[3]–HmvpCand[n] увеличиваются на 1.
Кроме того, кандидат на слияние между участками mvCand, полученный на основании текущего блока, может добавляться в конец списка информации о движении между участками.
Альтернативно индекс, присвоенный ранее сохраненному кандидату на слияние между участками, который является таким же, как кандидат на слияние между участками, полученный на основании текущего блока, может обновляться. Например, индекс ранее сохраненного кандидата на слияние между участками может изменяться до минимального значения или максимального значения.
Он может быть установлен не добавлять информацию о движении блоков, включенных в предварительно определенную область, в список информации о движении между участками. Например, кандидат на слияние между участками, полученный на основании информации о движении блока, включенного в область обработки слияния, может не добавляться в список информации о движении между участками. Поскольку порядок кодирования/декодирования не определяется для блоков, включенных в область обработки слияния, неуместно использовать информацию о движении любого из блоков для предсказания, осуществляемого между изображениями, другого блока. Соответственно кандидаты на слияние между участками, полученные на основании блоков, включенных в область обработки слияния, могут не добавляться в список информации о движении между участками.
Когда предсказание с компенсацией движения выполняется элементом подблока, кандидат на слияние между участками может быть получен на основании информации о движении иллюстративного подблока из множества подблоков, включенных в текущий блок. Например, когда кандидат на слияние подблока используется для текущего блока, кандидат на слияние между участками может быть получен на основании информации о движении иллюстративного подблока из подблоков.
Векторы движения подблоков могут быть получены в следующем порядке. Сначала выбирается один из кандидатов на слияние, включенных в список кандидатов на слияние текущего блока, и начальный вектор сдвига (shVector) может быть получен на основании вектора движения выбранного кандидата на слияние. Затем сдвинутый подблок, у которого положение опорного отсчета представляет собой (xColSb, yColSb), может быть получен в качестве начального вектора сдвига, который добавляется в положении (xSb, ySb) опорного отсчета (например, верхнего левого отсчета или отсчета в центре) каждого подблока в блоке кодирования. В уравнении 4 показано уравнение для получения сдвинутого подблока.
[Уравнение 4]
Затем вектор движения совмещаемого блока, соответствующего центральному положению подблока, имеющего (xColSb, yColSb), может быть установлен в качестве вектора движения подблока, имеющего (xSb, ySb).
Иллюстративный подблок может означать подблок, содержащий верхний левый отсчет или отсчет в центре текущего блока.
На фиг. 20 представлен вид, показывающий положение иллюстративного подблока.
На фиг. 20 (a) показан пример, в котором подблок, расположенный сверху слева текущего блока, установлен в качестве иллюстративного подблока, и на фиг. 20 (b) показан пример, в котором подблок, расположенный в центре текущего блока, установлен в качестве иллюстративного подблока. Когда предсказание с компенсацией движения выполняется элементом подблока, кандидат на слияние между участками текущего блока может быть получен на основании вектора движения подблока, содержащего верхний левый отсчет текущего блока, или подблока, содержащего отсчет в центре текущего блока.
Может быть определено, использовать или нет текущий блок в качестве кандидата на слияние между участками, на основании режима предсказания, осуществляемого между изображениями, текущего блока. Например, блок, кодированный/декодированный на основании модели аффинного движения, может быть установлен недоступным в качестве кандидата на слияние между участками. Соответственно, несмотря на то, что текущий блок является кодированным/декодированным путем предсказания, осуществляемого между изображениями, когда режим предсказания, осуществляемого между изображениями, текущего блока представляет собой режим аффинного предсказания, список информации о движении между участками может не обновляться на основании текущего блока.
Альтернативно кандидат на слияние между участками может быть получен на основании по меньшей мере одного вектора подблока из подблоков, включенных в блок, кодированный/декодированный на основании модели аффинного движения. Например, кандидат на слияние между участками может быть получен с использованием подблока, расположенного сверху слева, подблока, расположенного в центре, или подблока, расположенного на верхней правой стороне текущего блока. Альтернативно среднее значение векторов подблоков множества подблоков может быть установлено в качестве вектора движения кандидата на слияние между участками.
Альтернативно кандидат на слияние между участками может быть получен на основании среднего значения аффинных исходных векторов блока, кодированного/декодированного на основании модели аффинного движения. Например, среднее по меньшей мере одного из первого аффинного исходного вектора, второго аффинного исходного вектора и третьего аффинного исходного вектора текущего блока может быть установлено в качестве вектора движения кандидата на слияние между участками.
Альтернативно список информации о движении между участками может быть сконфигурирован для каждого режима предсказания, осуществляемого между изображениями. Например, может быть определен по меньшей мере один из списка информации о движении между участками для блока, кодированного/декодированного путем внутриблочного копирования, списка информации о движении между участками для блока, кодированного/декодированного на основании модели поступательного движения, и списка информации о движении между участками для блока, кодированного/декодированного на основании модели аффинного движения. Согласно режиму предсказания, осуществляемого между изображениями текущего блока, может быть выбран любой из множества списков информации о движении между участками.
На фиг. 21 представлен вид, показывающий пример, в котором список информации о движении между участками генерируется для каждого режима предсказания, осуществляемого между изображениями.
Когда блок является кодированным/декодированным на основании модели неаффинного движения, кандидат на слияние между участками mvCand, полученный на основании блока, может быть добавлен в список информации о неаффинном движении между участками HmvpCandList. С другой стороны, когда блок является кодированным/декодированным на основании модели аффинного движения, кандидат на слияние между участками mvAfCand, полученный на основании блока, может быть добавлен в список информации об аффинном движении между участками HmvpAfCandList.
Аффинные исходные векторы блока, кодированного/декодированного на основании модели аффинного движения, могут быть сохранены в кандидате на слияние между участками, полученном из блока. Соответственно, кандидат на слияние между участками может использоваться в качестве кандидата на слияние для получения аффинного исходного вектора текущего блока.
Дополнительно к списку информации о движении между участками, описанному выше, может быть определен дополнительный список информации о движении между участками. Дополнительно к списку информации о движении между участками, описанному выше (далее называемому первым списком информации о движении между участками), может быть определен долговременный список информации о движении (далее называемый вторым списком информации о движении между участками). В данном случае долговременный список информации о движении содержит долговременных кандидатов на слияние.
Когда оба из первого списка информации о движении между участками и второго списка информации о движении между участками пусты, первый кандидат на слияние между участками может быть добавлен во второй список информации о движении между участками. Только после того, как количество доступных кандидатов на слияние между участками достигает максимального количества во втором списке информации о движении между участками, кандидат на слияние между участками может быть добавлен в первый список информации о движении между участками.
Альтернативно один кандидат на слияние между участками может быть добавлен в оба из второго списка информации о движении между участками и первого списка информации о движении между участками.
В этом случае второй список информации о движении между участками, конфигурация которого завершена, может больше не обновляться. Альтернативно, когда декодированный участок больше, чем предварительно определенное соотношение слайса или равняется ему, может быть обновлен второй список информации о движении между участками. Альтернативно второй список информации о движении между участками может быть обновлен для каждых N линий элементов кодового дерева.
С другой стороны, первый список информации о движении между участками может обновляться в любое время, когда генерируется блок, кодированный/декодированный путем предсказания, осуществляемого между изображениями. Однако может быть установлено не использовать кандидата на слияние между участками, добавленного во второй список информации о движении между участками, для обновления первого списка информации о движении между участками.
Информация для выбора любого из первого списка информации о движении между участками и второго списка информации о движении между участками может быть передана посредством битового потока. Когда количество кандидатов на слияние, включенных в список кандидатов на слияние, меньше, чем пороговое значение, кандидаты на слияние, включенные в список информации о движении между участками, указанный информацией, могут быть добавлены в список кандидатов на слияние.
Альтернативно список информации о движении между участками может быть выбран на основании размера и формы текущего блока, режима предсказания, осуществляемого между изображениями, того, обеспечено ли двунаправленное предсказание, того, обеспечено ли уточнение вектора движения, или того, обеспечено ли треугольное разбиение.
Альтернативно, несмотря на то, что кандидат на слияние между участками, включенный в первый список информации о движении между участками, добавляется, когда количество кандидатов на слияние, включенных в список кандидатов на слияние, меньше, чем максимальное количество слияний, кандидаты на слияние между участками, включенные во второй список информации о движении между участками, могут быть добавлены в список кандидатов на слияние.
На фиг. 22 представлен вид, показывающий пример, в котором кандидат на слияние между участками, включенный в долговременный список информации о движении, добавляется в список кандидатов на слияние.
Когда количество кандидатов на слияние, включенных в список кандидатов на слияние, меньше, чем максимальное количество, кандидаты на слияние между участками, включенные в первый список информации о движении между участками HmvpCandList, могут быть добавлены в список кандидатов на слияние. Когда количество кандидатов на слияние, включенных в список кандидатов на слияние, меньше, чем максимальное количество, несмотря на то, что кандидаты на слияние между участками, включенные в первый список информации о движении между участками, добавляются в список кандидатов на слияние, кандидаты на слияние между участками, включенные в долговременный список информации о движении HmvpLTCandList, могут добавляться в список кандидатов на слияние.
В таблице 2 показан процесс добавления кандидатов на слияние между участками, включенных в долговременный список информации о движении, в список кандидатов на слияние.
[Таблица 2]
Для каждого кандидата в HMVPCandList с индексом HMVPLTIdx = 1.. numHMVPLTCand, следующие упорядоченные этапы повторяются до тех пор, пока combStop не будет истинным - sameMotion установлено на НЕВЕРНО - Если hmvpStop является НЕВЕРНЫМ и numCurrMergecand меньше, чем (MaxNumMergeCand-1), hmvpLT устанавливается ИСТИННЫМ - Если HMVPLTCandList[NumLTHmvp-HMVPLTIdx] имеет те же векторы движения и те же ссылочные индексы с любым mergeCandList[i] при I, равным 0.. numOrigMergeCand-1 и HasBeenPruned[i] являются неверными, sameMotion устанавливается истинным - Если sameMotion является неверным, mergeCandList[numCurrMergeCand++] устанавливается как HMVPLTCandList[NumLTHmvp-HMVPLTIdx] - Если numCurrMergeCand равно (MaxNumMergeCand-1), hmvpLTStop устанавливается ИСТИННЫМ |
Кандидат на слияние между участками может быть установлен содержащим дополнительную информацию, дополнительно к информации о движении. Например, для кандидата на слияние между участками дополнительно может сохраняться размер, форма или информация о разбиении блока. При построении списка кандидатов на слияние текущего блока только кандидаты на слияние между участками, имеющие размер, форму или информацию о разбиении, которые являются такими же, как или подобными с таковыми текущего блока, используются среди кандидатов на слияние между участками, или кандидаты на слияние между участками, имеющие размер, форму или информацию о разбиении, которые являются такими же, как или подобными с таковыми текущего блока, могут добавляться в список кандидатов на слияние в первую очередь.
Альтернативно список информации о движении между участками может генерироваться для каждого из размера, формы или информации о разбиении блока. Из множества списков информации о движении между участками список кандидатов на слияние текущего блока может генерироваться с использованием списка информации о движении между участками, соответствующего форме, размеру или информации о разбиении текущего блока.
Когда количество кандидатов на слияние, включенных в список кандидатов на слияние текущего блока, меньше, чем пороговое значение, кандидаты на слияние между участками, включенные в список информации о движении между участками, могут добавляться в список кандидатов на слияние. Процесс добавления выполняется в порядке возрастания или убывания на основании индекса. Например, кандидат на слияние между участками, имеющий самый большой индекс, может сначала быть добавлен в список кандидатов на слияние.
Когда необходимо добавить кандидата на слияние между участками, включенного в список информации о движении между участками, в список кандидатов на слияние, контроль по избыточности может выполняться между кандидатом на слияние между участками и кандидатами на слияние, ранее сохраненными в списке кандидатов на слияние.
Например, в таблице 3 показан процесс, в котором кандидат на слияние между участками добавляется в список кандидатов на слияние.
[Таблица 3]
Для каждого кандидата в HMVPCandList с индексом HMVPIdx = 1.. numCheckedHMVPCand, следующие упорядоченные этапы повторяются до тех пор, пока combStop не будет истинным - sameMotion устанавливается неверным - Если HMVPCandList[NumHmvp-HMVPIdx] имеет те же векторы движения и те же ссылочные индексы с любым mergeCandList[i] при I, равным 0.. numOrigMergeCand-1 и HasBeenPruned[i] являются неверными, sameMotion устанавливается истинным - Если sameMotion является неверным, mergeCandList[numCurrMergeCand++] устанавливается как HMVPCandList[NumHmvp-HMVPIdx] - Если numCurrMergeCand равно (MaxNumMergeCand-1), hmvpStop устанавливается ИСТИННЫМ |
Контроль по избыточности может выполняться только в отношении некоторых кандидатов на слияние между участками, включенных в список информации о движении между участками. Например, контроль по избыточности может выполняться только в отношении кандидатов на слияние между участками, имеющих индекс, который больше, чем пороговое значение, или меньше, чем пороговое значение. Альтернативно контроль по избыточности может выполняться только в отношении N кандидатов на слияние, имеющих самый большой индекс, или N кандидатов на слияние, имеющих самый маленький индекс.
Альтернативно контроль по избыточности может выполняться только в отношении некоторых кандидатов на слияние, ранее сохраненных в списке кандидатов на слияние. Например, контроль по избыточности может выполняться только в отношении кандидата на слияние, имеющего индекс, который больше, чем пороговое значение, или меньше, чем пороговое значение, или в отношении кандидата на слияние, полученного из блока в конкретном положении. В данном случае конкретное положение может содержать по меньшей мере один из левого соседнего блока, верхнего соседнего блока, верхнего правого соседнего блока и нижнего левого соседнего блока текущего блока.
На фиг. 23 представлен вид, показывающий пример, в котором контроль по избыточности выполняется только в отношении некоторых кандидатов на слияние.
Когда необходимо добавить кандидата на слияние между участками HmvpCand[j] в список кандидатов на слияние, контроль по избыточности может выполняться в отношении кандидата на слияние между участками с двумя кандидатами на слияние mergeCandList[NumMerge-2] и mergeCandList[NumMerge-1], имеющими самые большие индексы. В данном случае NumMerge может представлять количество пространственных кандидатов на слияние и временных кандидатов на слияние, которые являются доступными.
В отличие от примера, показанного на графическом материале, когда необходимо добавить кандидата на слияние между участками HmvpCand[j] в список кандидатов на слияние, контроль по избыточности может выполняться в отношении кандидата на слияние между участками не более чем с двумя кандидатами на слияние, имеющими самый маленький индекс. Например, можно проверить, являются ли mergeCandList[0] и mergeCandList[1] такими же, как HmvpCand[j]. Альтернативно контроль по избыточности может выполняться только в отношении кандидатов на слияние, полученных в конкретном положении. Например, контроль по избыточности может выполняться в отношении по меньшей мере одного из кандидата на слияние, полученного из соседнего блока, расположенного на левой стороне текущего блока, и кандидата на слияние, полученного из соседнего блока, расположенного сверху текущего блока. Когда кандидат на слияние, полученный в конкретном положении, не существует в списке кандидатов на слияние, кандидат на слияние между участками может добавляться в список кандидатов на слияние без наличия контроля по избыточности.
Когда кандидат на слияние, являющийся таким же, как первый кандидат на слияние между участками, обнаруживается, и выполняется контроль по избыточности в отношении второго кандидата на слияние между участками, контроль по избыточности с кандидатом на слияние, который является таким же, как первый кандидат на слияние между участками, может опускаться.
На фиг. 24 представлен вид, показывающий пример, в котором контроль по избыточности опускается для конкретного кандидата на слияние.
Когда необходимо добавить кандидата на слияние между участками HmvpCand[i], имеющего индекс i, в список кандидатов на слияние, контроль по избыточности выполняется между кандидатом на слияние между участками и кандидатами на слияние, ранее сохраненными в списке кандидатов на слияние. В этом случае, когда кандидат на слияние mergeCandList[j], являющийся таким же, как кандидат на слияние между участками HmvpCand[i], обнаруживается, контроль по избыточности может выполняться между кандидатом на слияние между участками HmvpCand[i-1], имеющим индекс i-1, и кандидатами на слияние без добавления кандидата на слияние между участками HmvpCand[i] в список кандидатов на слияние. В этом случае контроль по избыточности между кандидатом на слияние между участками HmvpCand[i-1] и кандидатом на слияние mergeCandList[j] может опускаться.
Например, в примере, показанном на фиг. 24, определяется, что HmvpCand[i] и mergeCandList[2] являются одинаковыми. Соответственно, HmvpCand[i] не добавляется в список кандидатов на слияние, и контроль по избыточности может выполняться в отношении HmvpCand[i-1]. В этом случае контроль по избыточности между HvmpCand[i-1] и mergeCandList[2] может опускаться.
Когда количество кандидатов на слияние, включенных в список кандидатов на слияние текущего блока, меньше, чем пороговое значение, по меньшей мере один из парного кандидата на слияние и нулевого кандидата на слияние могут быть дополнительно включены, дополнительно к кандидату на слияние между участками. Парный кандидат на слияние означает кандидата на слияние, имеющего среднее значение векторов движения двух или более кандидатов на слияние в качестве вектора движения, и нулевой кандидат на слияние означает кандидата на слияние, имеющего вектор движения, равный 0.
Кандидат на слияние может быть добавлен в список кандидатов на слияние текущего блока в следующем порядке.
Пространственный кандидат на слияние – Временной кандидат на слияние – Кандидат на слияние между участками – (кандидат на аффинное слияние между участками) – Парный кандидат на слияние – Нулевой кандидат на слияние
Пространственный кандидат на слияние означает кандидата на слияние, полученного из по меньшей мере одного из соседнего блока и несоседнего блока, и временной кандидат на слияние означает кандидата на слияние, полученного из предыдущего опорного изображения. Кандидат на аффинное слияние между участками представляет кандидата на слияние между участками, полученного из блока, кодированного/декодированного моделью аффинного движения.
Список информации о движении между участками может также использоваться в режиме предсказания вектора движения. Например, когда количество кандидатов предсказания вектора движения, включенных в список кандидатов предсказания вектора движения текущего блока, меньше, чем пороговое значение, кандидат на слияние между участками, включенный в список информации о движении между участками, может быть установлен как кандидат предсказания вектора движения для текущего блока. В частности, вектор движения кандидата на слияние между участками может быть установлен в качестве кандидата предсказания вектора движения.
Когда выбирается любой из кандидатов предсказания вектора движения, включенных в список кандидатов предсказания вектора движения текущего блока, выбранный кандидат может быть установлен в качестве предсказателя вектора движения текущего блока. Затем после декодирования остаточного коэффициента вектора движения текущего блока вектор движения текущего блока может быть получен путем добавления предсказателя вектора движения и остаточного коэффициента вектора движения.
Список кандидатов предсказания вектора движения текущего блока может быть сконфигурирован в следующем порядке.
Пространственный кандидат предсказания вектора движения – Временной кандидат предсказания вектора движения – Кандидат на слияние между участками – (Кандидат на аффинное слияние между участками) – Кандидат предсказания нулевого вектора движения
Пространственный кандидат предсказания вектора движения означает кандидата предсказания вектора движения, полученного из по меньшей мере одного из соседнего блока и несоседнего блока, и временной кандидат предсказания вектора движения означает кандидата предсказания вектора движения, полученного из предыдущего опорного изображения. Кандидат на аффинное слияние между участками представляет кандидата предсказания вектора движения между участками, полученного из блока, кодированного/декодированного моделью аффинного движения. Кандидат предсказания нулевого вектора движения представляет кандидата, имеющего значение вектора движения, равное 0.
Может быть определена область обработки слияния, имеющая размер, который больше, чем размер блока кодирования. Блоки кодирования, включенные в область обработки слияния, не являются последовательно кодированными/декодированными, и могут быть обработаны параллельно. В данном случае то, что блоки кодирования не являются последовательно кодированными/декодированными, означает, что порядок кодирования/декодирования не определяется. Соответственно процесс кодирования/декодирования блоков, включенных в область обработки слияния, может выполняться независимо. Альтернативно блоки, включенные в область обработки слияния, могут совместно использовать кандидатов на слияние. В данном случае кандидаты на слияние могут быть получены на основании области обработки слияния.
Согласно характеристикам, описанным выше, область обработки слияния может также называться областью параллельной обработки, совместно используемой областью слияния (SMR) или областью оценки слияния (MER).
Кандидат на слияние текущего блока может быть получен на основании блока кодирования. Однако, когда текущий блок включен в область обработки слияния большего размера, чем текущий блок, кандидатный блок, включенный в область обработки слияния, являющийся таким же, как текущий блок, может быть установлен недоступным в качестве кандидата на слияние.
На фиг. 25 представлен вид, показывающий пример, в котором кандидатные блоки, включенные в такую же область обработки слияния, как текущий блок, устанавливаются как недоступные в качестве кандидата на слияние.
В примере, показанном на фиг. 25 (a), когда CU5 кодируется/декодируется, блоки, содержащие опорные отсчеты, смежные с CU5, могут быть установлены в качестве кандидатных блоков. В этом случае, кандидатные блоки X3 и X4, включенные в область обработки слияния, являющуюся такой же, как CU5, могут быть установлены недоступными в качестве кандидатов на слияние CU5. С другой стороны, кандидатные блоки X0, X1 и X2, которые не включены в область обработки слияния, являющуюся такой же, как CU5, могут быть установлены доступными в качестве кандидата на слияние.
В примере, показанном на фиг. 25 (b), когда CU8 кодируется/декодируется, блоки, содержащие опорные отсчеты, смежные с CU8, могут быть установлены в качестве кандидатных блоков. В этом случае, кандидатные блоки X6, X7 и X8, включенные в область обработки слияния, являющуюся такой же, как CU8, могут быть установлены недоступными в качестве кандидатов на слияние. С другой стороны, кандидатные блоки X5 и X9, которые не включены в область обработки слияния, являющуюся такой же, как CU8, могут быть установлены доступными в качестве кандидата на слияние.
Область обработки слияния может быть квадратной или неквадратной формы. Информация для определения области обработки слияния может быть передана посредством битового потока. Информация может содержать по меньшей мере одно из информации, указывающей форму области обработки слияния, и информации, указывающей размер области обработки слияния. Когда область обработки слияния имеет неквадратную форму, по меньшей мере одна из информации, указывающей размер области обработки слияния, информации, указывающей ширину и/или высоту области обработки слияния, и информации, указывающей соотношение ширины и высоты области обработки слияния, может быть передана посредством битового потока.
Размер области обработки слияния может быть определен на основании по меньшей мере одного из информации, передаваемой посредством битового потока, разрешения изображения, размера слайса и размера тайла.
Когда предсказание с компенсацией движения выполняется в отношении блока, включенного в область обработки слияния, кандидат на слияние между участками, полученный на основании информации о движении блока, в отношении которого выполняется предсказание с компенсацией движения, может добавляться в список информации о движении между участками.
Однако в случае, когда кандидат на слияние между участками, полученный из блока, включенного в область обработки слияния, добавляется в список информации о движении между участками, когда другой блок в области обработки слияния, который фактически кодируется/декодируется после кодирования/декодирования блока, кодируется/декодируется, может иметь место использование кандидата на слияние между участками, полученного из блока. То есть, несмотря на то, что зависимость среди блоков должна исключаться, когда блоки, включенные в область обработки слияния, кодируются/декодируются, может иметь место выполнение компенсации предсказания движения с использованием информации о движении другого блока, включенного в область обработки слияния. Чтобы решить проблему, несмотря на завершение кодирования/декодирования блока, включенного в область обработки слияния, информация о движении кодированного/декодированного блока может не добавляться в список информации о движении между участками.
Альтернативно, когда предсказание с компенсацией движения выполняется в отношении блоков, включенных в область обработки слияния, кандидаты на слияние между участками, полученные из блоков, могут добавляться в список информации о движении между участками в предварительно заданном порядке. В данном случае предварительно заданный порядок может определяться согласно порядку сканирования блоков кодирования в области обработки слияния или элементе кодового дерева. Порядок сканирования может представлять собой по меньшей мере одно из растрового сканирования, горизонтального сканирования, вертикального сканирования и зигзагообразного сканирования. Альтернативно предварительно заданный порядок может определяться на основании информации о движении каждого блока или количества блоков, имеющих такую же информацию о движении.
Альтернативно кандидат на слияние между участками, содержащий информацию об однонаправленном движении, может добавляться в список слияния между участками перед кандидатом на слияние между участками, содержащим информацию о двунаправленном движении. С другой стороны, кандидат на слияние между участками, содержащий информацию о двунаправленном движении, может добавляться в список кандидатов на слияние между участками перед кандидатом на слияние между участками, содержащим информацию о двунаправленном движении.
Альтернативно кандидат на слияние между участками может добавляться в список информации о движении между участками согласно порядку высокой частоты использования или низкой частоты использования внутри области обработки слияния или элемента кодового дерева.
Когда текущий блок включен в область обработки слияния, и количество кандидатов на слияние, включенных в список кандидатов на слияние текущего блока, меньше, чем максимальное количество, кандидаты на слияние между участками, включенные в список информации о движении между участками, могут добавляться в список кандидатов на слияние. В этом случае может быть установлено не добавлять кандидата на слияние между участками, полученного из блока, включенного в область обработки слияния, являющуюся такой же, как текущий блок, в список кандидатов на слияние текущего блока.
Альтернативно, когда текущий блок включен в область обработки слияния, может быть установлено не использовать кандидатов на слияние между участками, включенных в список информации о движении между участками. То есть, несмотря на то, что количество кандидатов на слияние, включенных в список кандидатов на слияние текущего блока, меньше, чем максимальное количество, кандидаты на слияние между участками, включенные в список информации о движении между участками, могут не добавляться в список кандидатов на слияние.
Может конфигурироваться список информации о движении между участками для области обработки слияния или элемента кодового дерева. Этот список информации о движении между участками выполняет функцию временного хранения информации о движении блоков, включенных в область обработки слияния. Чтобы отличить обычный список информации о движении между участками от списка информации о движении между участками для области обработки слияния или элемента кодового дерева, список информации о движении между участками для области обработки слияния или элемента кодового дерева называется временным списком информации о движении. Кроме того, кандидат на слияние между участками, сохраненный во временном списке информации о движении, будет называться временным кандидатом на слияние.
На фиг. 26 представлен вид, показывающий временный список информации о движении.
Может конфигурироваться временный список информации о движении для элемента кодового дерева или области обработки слияния. Когда предсказание с компенсацией движения выполнено в отношении текущего блока, включенного в элемент кодового дерева или область обработки слияния, информация о движении блока может не добавляться в список информации о движении между участками HmvpCandList. Вместо этого, временной кандидат на слияние, полученный из блока, может добавляться во временный список информации о движении HmvpMERCandList. То есть временной кандидат на слияние, добавленный во временный список информации о движении, может не добавляться в список информации о движении между участками. Соответственно список информации о движении между участками может не содержать кандидатов на слияние между участками, полученных на основании информации о движении блоков, включенных в элемент кодового дерева или область обработки слияния.
Максимальное количество кандидатов на слияние, которое временный список информации о движении может содержать, может быть установлено равным максимальному количеству списка информации о движении между участками. Альтернативно максимальное количество кандидатов на слияние, которое временный список информации о движении может содержать, может быть определено согласно размеру элемента кодового дерева или области обработки слияния.
Текущий блок, включенный в элемент кодового дерева или область обработки слияния, может быть установлен не использовать временный список информации о движении для соответствующего элемента кодового дерева или соответствующей области обработки слияния. То есть, когда количество кандидатов на слияние, включенных в список кандидатов на слияние текущего блока, меньше, чем пороговое значение, кандидаты на слияние между участками, включенные в список информации о движении между участками, добавляются в список кандидатов на слияние, и временные кандидаты на слияние, включенные во временный список информации о движении, могут не добавляться в список кандидатов на слияние. Соответственно информация о движении других блоков, включенных в элемент кодового дерева или область обработки слияния, являющуюся такой же, как текущий блок, может не использоваться для предсказания с компенсацией движения текущего блока.
Когда кодирование/декодирование всех блоков, включенных в элемент кодового дерева или область обработки слияния, завершается, список информации о движении между участками и временный список информации о движении могут сливаться.
На фиг. 27 представлен вид, показывающий пример слияния списка информации о движении между участками и временного списка информации о движении.
Когда кодирование/декодирование всех блоков, включенных в элемент кодового дерева или область обработки слияния, завершается, как показано в примере на фиг. 27, список информации о движении между участками может обновляться временными кандидатами на слияние, включенными во временный список информации о движении.
В этом случае временные кандидаты на слияние, включенные во временный список информации о движении, могут добавляться в список информации о движении между участками в порядке временных кандидатов на слияние, вставляемых во временный список информации о движении (т.е. в порядке возрастания или убывания индексных значений).
В качестве другого примера временные кандидаты на слияние, включенные во временный список информации о движении, могут добавляться в список информации о движении между участками в предварительно заданном порядке.
В данном случае предварительно заданный порядок может определяться согласно порядку сканирования блоков кодирования в области обработки слияния или элементе кодового дерева. Порядок сканирования может представлять собой по меньшей мере одно из растрового сканирования, горизонтального сканирования, вертикального сканирования и зигзагообразного сканирования. Альтернативно предварительно заданный порядок может определяться на основании информации о движении каждого блока или количества блоков, имеющих такую же информацию о движении.
Альтернативно временной кандидат на слияние, содержащий информацию об однонаправленном движении, может добавляться в список слияния между участками перед временным кандидатом на слияние, содержащим информацию о двунаправленном движении. С другой стороны, временной кандидат на слияние, содержащий информацию о двунаправленном движении, может добавляться в список кандидатов на слияние между участками перед временным кандидатом на слияние, содержащим информацию о двунаправленном движении.
Альтернативно временной кандидат на слияние может добавляться в список информации о движении между участками согласно порядку высокой частоты использования или низкой частоты использования внутри области обработки слияния или элемента кодового дерева.
Когда временной кандидат на слияние, включенный во временный список информации о движении, добавляется в список информации о движении между участками, контроль по избыточности может выполняться в отношении временного кандидата на слияние. Например, когда кандидат на слияние между участками, являющийся таким же, как временной кандидат на слияние, включенный во временный список информации о движении, ранее сохранен в списке информации о движении между участками, временной кандидат на слияние может не добавляться в список информации о движении между участками. В этом случае контроль по избыточности может выполняться в отношении некоторых кандидатов на слияние между участками, включенных в список информации о движении между участками. Например, контроль по избыточности может выполняться в отношении кандидатов на слияние между участками, имеющих индекс, который больше, чем пороговое значение, или меньше, чем пороговое значение. Например, когда временной кандидат на слияние является таким же, как кандидат на слияние между участками, имеющий индекс, который больше, чем предварительно заданное значение, или равняется ему, временной кандидат на слияние может не добавляться в список информации о движении между участками.
Внутреннее предсказание предназначено для предсказания текущего блока с использованием восстановленных отсчетов, которые были кодированы/декодированы поблизости от текущего блока. В этом случае отсчеты, восстановленные до применения фильтра в контуре, могут использоваться для внутреннего предсказания текущего блока.
Метод внутреннего предсказания включает внутреннее предсказание на основе матрицы и общее внутреннее предсказание, учитывающее направленность относительно соседних восстановленных отсчетов. Информация, указывающая метод внутреннего предсказания текущего блока, может передаваться посредством битового потока. Информация может представлять собой 1-битный флаг. Альтернативно метод внутреннего предсказания текущего блока может быть определен на основании по меньшей мере одного из местоположения, размера и формы текущего блока или на основании метода внутреннего предсказания соседнего блока. Например, когда текущий блок находится на границе изображения, может быть установлено, что нет необходимости применять внутреннее предсказание на основе матрицы к текущему блоку.
Внутреннее предсказание, представляющее собой внутреннее предсказание на основе матрицы, представляет собой способ получения блока предсказания текущего блока кодером и декодером на основании матричного произведения между ранее сохраненной матрицей и восстановленными отсчетами поблизости от текущего блока. Информация для указания любой из множества ранее сохраненных матриц может передаваться посредством битового потока. Декодер может определять матрицу для внутреннего предсказания текущего блока на основании информации и размера текущего блока.
Общее внутреннее предсказание представляет собой способ получения блока предсказания для текущего блока на основании режима внутреннего предсказания, не основанного на информации об углах, или режима внутреннего предсказания, основанного на информации об углах. Далее процесс выполнения внутреннего предсказания на основании общего внутреннего предсказания будет описан более подробно со ссылкой на графические материалы.
На фиг. 28 представлена блок-схема, изображающая способ внутреннего предсказания согласно одному варианту осуществления настоящего изобретения.
Может быть определена (S2801) линия опорных отсчетов текущего блока. Линия опорных отсчетов означает набор опорных отсчетов, включенных в k-ю линию от верхней и/или левой стороны текущего блока. Опорные отсчеты могут быть получены из восстановленных отсчетов, которые были кодированы/декодированы поблизости от текущего блока.
Информация об индексах для идентификации линии опорных отсчетов текущего блока из множества линий опорных отсчетов может быть передана посредством битового потока. Множество линий опорных отсчетов может содержать по меньшей мере одно из первой линии, второй линии, третьей линии и четвертой линии сверху и/или слева от текущего блока. В таблице 4 показаны индексы, присвоенные линиям опорных отсчетов, соответственно. В таблице 4 предполагается, что первая линия, вторая линия и четвертая линия используются в качестве кандидатов линии опорных отсчетов.
[Таблица 4]
Индекс | Линии опорных отсчетов |
0 | Первая линия опорных отсчетов |
1 | Вторая линия опорных отсчетов |
2 | Четвертая линия опорных отсчетов |
Линия опорных отсчетов текущего блока может быть определена на основании по меньшей мере одного из местоположения, размера и формы текущего блока или на основании режима кодирования с предсказанием соседнего блока. Например, когда текущий блок находится в контакте с границей изображения, тайла, слайса или элемента кодового дерева, первая линия опорных отсчетов может быть определена как линия опорных отсчетов текущего блока.
Линия опорных отсчетов может включать верхние опорные отсчеты, расположенные сверху от текущего блока, и левые опорные отсчеты, расположенные слева от текущего блока. Верхние опорные отсчеты и левые опорные отсчеты могут быть получены из восстановленных отсчетов поблизости от текущего блока. Восстановленные отсчеты могут быть в состоянии до применения фильтра в контуре.
На фиг. 29 представлен вид, показывающий опорные отсчеты, включенные в каждую линию опорных отсчетов.
Согласно режиму внутреннего предсказания текущего блока отсчет предсказания может быть получен путем использования по меньшей мере одного из опорных отсчетов, принадлежащих к линии опорных отсчетов.
Далее может быть определен (S2802) режим внутреннего предсказания текущего блока. Что касается режима внутреннего предсказания текущего блока, по меньшей мере один из режима внутреннего предсказания, не основанного на информации об углах, и режима внутреннего предсказания, основанного на информации об углах, может быть определен как режим внутреннего предсказания текущего блока. Режим внутреннего предсказания, не основанный на информации об углах, включает планарный режим и режим DC, а режим внутреннего предсказания, основанный на информации об углах, включает 33 или 65 режимов между диагональным направлением вниз и влево и диагональным направлением вверх и вправо.
На фиг. 30 представлен вид, показывающий режимы внутреннего предсказания.
На фиг. 30 (a) показаны 35 режимов внутреннего предсказания, и на фиг. 30 (b) показаны 67 режимов внутреннего предсказания.
Может быть определено большее или меньшее количество режимов внутреннего предсказания, чем показано на фиг. 30.
Наиболее вероятный режим (MPM) может быть установлен на основании режима внутреннего предсказания соседнего блока, смежного с текущим блоком. В данном случае соседний блок может включать левый соседний блок, смежный с левой стороной текущего блока, и верхний соседний блок, смежный с верхней стороной текущего блока. Когда координаты верхнего левого отсчета текущего блока представляют собой (0, 0), левый соседний блок может содержать отсчет в положении (-1, 0), (-1, H-1) или (-1, (H-1)/2). В данном случае H обозначает высоту текущего блока. Верхний соседний блок может содержать отсчет в положении (0, -1), (W-1, -1) или ((W-1)/2, -1). В данном случае W обозначает ширину текущего блока.
Когда соседний блок кодирован с помощью нормального внутреннего предсказания, MPM может быть получен на основании режима внутреннего предсказания соседнего блока. В частности, режим внутреннего предсказания левого соседнего блока может быть установлен как переменная candIntraPredModeA, а режим внутреннего предсказания верхнего соседнего блока может быть установлен как переменная candIntraPredModeB.
В этом случае, когда соседний блок является недоступным (например, когда соседний блок еще не кодирован/декодирован или когда положение соседнего блока находится за границей изображения), когда соседний блок кодирован с помощью внутреннего предсказания на основе матрицы, когда соседний блок кодирован с помощью предсказания, осуществляемого между изображениями, или когда соседний блок включен в элемент кодового дерева, отличный от текущего блока, переменная candIntraPredModeX (в данном случае X представляет собой A или B), полученная на основании режима внутреннего предсказания соседнего блока, может быть установлена как режим по умолчанию. В данном случае режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении и режима в горизонтальном направлении.
Альтернативно, когда соседний блок кодирован с помощью внутреннего предсказания на основе матрицы, режим внутреннего предсказания, соответствующий индексному значению для указания любой из матриц, может быть установлен равным candIntraPredModeX. Для этого в кодере и декодере может быть предварительно сохранена таблица поиска, показывающая взаимоотношение между индексными значениями для указания матрицы и режимов внутреннего предсказания.
MPM могут быть получены на основании переменной candIntraPredModeA и переменной candIntraPredModeB. Количество MPM, включенных в список MPM, может быть заранее установлено в кодере и декодере. Количество MPM, включенных в список MPM, может быть задано в кодере и декодере. Например, количество MPM может быть равно 3, 4, 5 или 6. Альтернативно информация, указывающая количество MPM, может быть передана посредством битового потока. Альтернативно количество MPM может быть определено на основании по меньшей мере одного из режима кодирования с предсказанием соседнего блока и размера и формы текущего блока.
В вариантах осуществления, описанных ниже, предполагается, что количество MPM равно 3, и 3 MPM называются MPM[0], MPM[1] и MPM[2]. Когда количество MPM более 3, MPM могут быть настроены так, чтобы включать 3 MPM, описанных в вариантах осуществления, описанных ниже.
Когда candIntraPredA и candIntraPredB одинаковы, и candIntraPredA представляет собой планарный режим или режим DC, MPM[0] и MPM[1] могут быть установлены как планарный режим и режим DC соответственно. MPM[2] может быть установлен как режим внутреннего предсказания в вертикальном направлении, режим внутреннего предсказания в горизонтальном направлении или режим внутреннего предсказания в диагональном направлении. Режим внутреннего предсказания в диагональном направлении может представлять собой режим внутреннего предсказания в диагональном направлении вниз и влево, режим внутреннего предсказания в направлении вверх и влево или режим внутреннего предсказания в направлении вверх и вправо.
Когда candIntraPredA и candIntraPredB являются одинаковыми, и candIntraPredA представляет собой режим внутреннего предсказания, основанный на информации об углах, MPM[0] может быть установлен таким же, как candIntraPredA. MPM[1] и MPM[2] могут быть установлены как режим внутреннего предсказания, аналогичный candIntraPredA, соответственно. Режим внутреннего предсказания, аналогичный candIntraPredA, может представлять собой режим внутреннего предсказания, в котором разница между candIntraPredA и индексом составляет ± 1 или ± 2. Операция по модулю (%) и смещение могут быть использованы для получения режима внутреннего предсказания, подобного candIntraPredA.
Когда candIntraPredA и candIntraPredB различаются, MPM[0] может быть установлен таким же, как candIntraPredA, а MPM[1] может быть установлен таким же, как candIntraPredB. В этом случае, когда как candIntraPredA, так и candIntraPredB являются режимом внутреннего предсказания, не основанным на информации об углах, MPM[2] может быть установлен таким же, как режим внутреннего предсказания в вертикальном направлении, режим внутреннего предсказания в горизонтальном направлении или режим внутреннего предсказания в диагональном направлении. Альтернативно, когда по меньшей мере один из candIntraPredA и candIntraPredB является режимом внутреннего предсказания, основанным на информации об углах, MPM[2] может быть установлен таким же, как режим внутреннего предсказания, полученный путем добавления или вычитания смещения к или из планарного режима, режима DC или одного из candIntraPredA и candIntraPredB, имеющего большее значение. В данном случае смещение может быть равно 1 или 2.
Генерируется список MPM, содержащий множество MPM, и информация, указывающая, включен ли MPM, который является таким же, как режим внутреннего предсказания текущего блока, в список MPM, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг и может называться флагом MPM. Когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, включен в список MPM, информация об индексах, указывающая один из MPM, может быть передана посредством битового потока. MPM, указанный информацией об индексах, может быть установлен как режим внутреннего предсказания текущего блока. Когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, не включен в список MPM, информация об остаточных режимах, указывающая любой из остаточных режимов внутреннего предсказания, отличных от MPM, может быть передана посредством битового потока. Информация об остаточных режимах указывает индексное значение, соответствующее режиму внутреннего предсказания текущего блока, когда индексы повторно присвоены остаточным режимам внутреннего предсказания за исключением MPM. Декодер может располагать MPM в возрастающем порядке и определять режим внутреннего предсказания текущего блока путем сравнения информации об остаточных режимах с MPM. Например, когда информация об остаточных режимах меньше или равна MPM, режим внутреннего предсказания текущего блока может быть получен путем добавления 1 к информации об остаточных режимах.
Вместо установки режима по умолчанию как MPM, информация, указывающая, является ли режим внутреннего предсказания текущего блока режимом по умолчанию, может быть передана посредством битового потока. Информация представляет собой 1-битный флаг, и флаг может называться флагом режима по умолчанию. Флаг режима по умолчанию может быть передан только тогда, когда флаг MPM указывает, что MPM, являющийся таким же, как у текущего блока, включен в список MPM. Как описано выше, режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении и режима в горизонтальном направлении. Например, когда планарный режим установлен как режим по умолчанию, флаг режима по умолчанию может указывать, является ли режим внутреннего предсказания текущего блока планарным режимом. Когда флаг режима по умолчанию указывает, что режим внутреннего предсказания текущего блока не является режимом по умолчанию, один из MPM, указанных информацией об индексах, может быть установлен как режим внутреннего предсказания текущего блока.
Когда множество режимов внутреннего предсказания установлены как режимы по умолчанию, информация об индексах, указывающая любой из режимов по умолчанию, может быть передана дальше. Режим внутреннего предсказания текущего блока может быть установлен как режим по умолчанию, указанный информацией об индексах.
Когда индекс линии опорных отсчетов текущего блока не равен 0, может быть установлено не использовать режим по умолчанию. Соответственно, когда индекс линии опорных отсчетов не равен 0, флаг режима по умолчанию не передается, и значение флага режима по умолчанию может быть установлено таким же, как предварительно заданное значение (т.е. ложное).
Когда режим внутреннего предсказания текущего блока определен, отсчеты предсказания могут быть получены для текущего блока на основании определенного режима внутреннего предсказания (S2803).
Когда выбран режим DC, отсчеты предсказания генерируются для текущего блока на основании среднего значения опорных отсчетов. В частности, значения всех отсчетов в блоке предсказания могут быть сгенерированы на основании среднего значения опорных отсчетов. Среднее значение может быть получено с использованием по меньшей мере одного из верхних опорных отсчетов, расположенных сверху текущего блока, и левых опорных отсчетов, расположенных слева от текущего блока.
В зависимости от формы текущего блока, количество или диапазон опорных отсчетов, используемых для получения среднего значения, могут меняться. Например, когда текущий блок представляет собой блок неквадратной формы, ширина которого больше, чем высота, среднее значение может быть вычислено с использованием только верхних опорных отсчетов. С другой стороны, когда текущий блок представляет собой блок неквадратной формы, ширина которого меньше, чем высота, среднее значение может быть вычислено с использованием только левых опорных отсчетов. То есть, когда ширина и высота текущего блока различаются, среднее значение может быть вычислено с использованием только опорных отсчетов, смежных с тем, что длиннее. Альтернативно на основании соотношения ширины и высоты текущего блока можно определить, вычислять среднее значение с использованием только верхних опорных отсчетов или вычислять среднее значение с использованием только левых опорных отсчетов.
Когда выбран планарный режим, отсчет предсказания может быть получен с использованием отсчета предсказания в горизонтальном направлении и отсчета предсказания в вертикальном направлении. В данном случае отсчет предсказания в горизонтальном направлении получают на основании левого опорного отсчета и правого опорного отсчета, расположенных на той же горизонтальной линии, что и отсчет предсказания, а отсчет предсказания в вертикальном направлении получают на основании верхнего опорного отсчета и нижнего опорного отсчета, расположенных на той же вертикальной линии, что и отсчет предсказания. В данном случае правый опорный отсчет может быть сгенерирован путем копирования опорного отсчета, смежного с верхним правым углом текущего блока, а нижний опорный отсчет может быть сгенерирован путем копирования опорного отсчета, смежного с нижним левым углом текущего блока. Отсчет предсказания в горизонтальном направлении может быть получен на основании операции взвешенного суммирования левого опорного отсчета и правого опорного отсчета, а отсчет предсказания в вертикальном направлении может быть получен на основании операции взвешенного суммирования верхнего опорного отсчета и нижнего опорного отсчета. В этом случае значение взвешивания, присвоенное каждому опорному отсчету, может быть определено согласно положению отсчета предсказания. Отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования отсчета предсказания в горизонтальном направлении и отсчета предсказания в вертикальном направлении. Когда выполняется операция взвешенного суммирования, значения взвешивания, применяемые к отсчету предсказания в горизонтальном направлении и отсчету предсказания в вертикальном направлении, могут быть определены на основании положения отсчета предсказания.
Когда выбран режим предсказания, основанный на информации об углах, может быть определен параметр, указывающий направление предсказания (или угол предсказания) выбранного режима предсказания, основанного на информации об углах. В таблице 5 показан параметр intraPredAng внутреннего направления каждого режима внутреннего предсказания.
[Таблица 5]
PredModeIntra IntraPredAng |
1 - |
2 32 |
3 26 |
4 21 |
5 17 |
6 13 |
7 9 |
PredModeIntraIntraPredAng | 8 5 |
9 2 |
10 0 |
11 -2 |
12 -5 |
13 -9 |
14 -13 |
PredModeIntraIntraPredAng | 15 -17 |
16 -21 |
17 -26 |
18 -32 |
19 -26 |
20 -21 |
21 -17 |
PredModeIntraIntraPredAng | 22 -13 |
23 -9 |
24 -5 |
25 -2 |
26 0 |
27 2 |
28 5 |
PredModeIntraIntraPredAng | 29 9 |
30 13 |
31 17 |
32 21 |
33 26 |
34 32 |
Когда определены 35 режимов внутреннего предсказания, в таблице 5 показан параметр внутреннего направления каждого режима внутреннего предсказания, имеющего любой индекс от 2 до 34. Когда определены более 33 режимов внутреннего предсказания, основанных на информации об углах, таблица 5 дополнительно поделена, чтобы установить параметр внутреннего направления каждого режима внутреннего предсказания, основанного на информации об углах.
После размещения верхних опорных отсчетов и левых опорных отсчетов текущего блока в линию отсчет предсказания может быть получен на основании значения параметра внутреннего направления. В этом случае, когда значение параметра внутреннего направления представляет собой отрицательное значение, левые опорные отсчеты и верхние опорные отсчеты могут быть расположены в линию.
На фиг. 31 и 32 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.
На фиг. 31 представлен вид, показывающий пример одномерного массива в вертикальном направлении, размещающего опорные отсчеты в вертикальном направлении, а на фиг. 32 представлен вид, показывающий пример одномерного массива в горизонтальном направлении, размещающего опорные отсчеты в горизонтальном направлении. Варианты осуществления, представленные на фиг. 31 и 32, будут описаны с предположением, что определены 35 режимов внутреннего предсказания.
Когда индекс режима внутреннего предсказания является любым из 11–18, может быть применен одномерный массив в горизонтальном направлении, в котором верхние опорные отсчеты поворачиваются против часовой стрелки, а когда индекс режима внутреннего предсказания является любым из 19–25, может быть применен одномерный массив в вертикальном направлении, в котором левые опорные отсчеты поворачиваются по часовой стрелке. При расположении опорных отсчетов в линию можно учесть угол режима внутреннего предсказания.
Параметр определения опорного отсчета может быть определен на основании параметра внутреннего направления. Параметр определения опорного отсчета может содержать индекс опорного отсчета для указания опорного отсчета и параметр значения взвешивания для определения значения взвешивания, применяемого к опорному отсчету.
Индекс iIdx опорного отсчета и параметр ifact значения взвешивания могут быть получены с помощью уравнений 5 и 6, показанных ниже, соответственно.
[Уравнение 5]
[Уравнение 6]
В уравнениях 5 и 6 Pang обозначает параметр внутреннего направления. Опорный отсчет, указанный индексом iIdx опорного отсчета, соответствует целому пикселю.
По меньшей мере один или более опорных отсчетов могут быть указаны для получения отсчета предсказания. В частности, положение опорного отсчета, используемого для получения отсчета предсказания, может быть указано с учетом наклона режима предсказания. Например, опорный отсчет, используемый для получения отсчета предсказания, может быть указан с использованием индекса iIdx опорного отсчета.
В этом случае, когда наклон режима внутреннего предсказания не выражен одним опорным отсчетом, отсчет предсказания может быть сгенерирован путем интерполяции множества опорных отсчетов. Например, когда наклон режима внутреннего предсказания представляет собой значение между наклоном между отсчетом предсказания и первым опорным отсчетом и наклоном между отсчетом предсказания и вторым опорным отсчетом, отсчет предсказания может быть получен путем интерполяции первого опорного отсчета и второго опорного отсчета. То есть, когда угловая линия, проходящая под углом внутреннего предсказания, не проходит сквозь опорный отсчет, расположенный в целом пикселе, отсчет предсказания может быть получен путем интерполяции опорных отсчетов, смежных с левой и правой или верхней или нижней сторонами положения, в котором угловая линия проходит сквозь.
В уравнении 7 показан пример получения отсчета предсказания на основании опорных отсчетов.
[Уравнение 7]
В уравнении 7 P обозначает отсчет предсказания, а Ref_1 обозначает любой из одномерно расположенных опорных отсчетов. В этом случае положение опорного отсчета может быть определено посредством положения (x, y) отсчета предсказания и индекса iIdx опорного отсчета.
Когда наклон режима внутреннего предсказания может быть выражен в виде одного опорного отсчета, параметр значения взвешивания ifact установлен равным 0. Соответственно уравнение 7 может быть упрощено, как показано в уравнении 8.
[Уравнение 8]
Внутреннее предсказание для текущего блока может быть выполнено на основании множества режимов внутреннего предсказания. Например, режим внутреннего предсказания может быть получен для каждого отсчета предсказания, и отсчет предсказания может быть получен на основании режима внутреннего предсказания, присвоенного каждому отсчету предсказания.
Альтернативно режим внутреннего предсказания может быть получен для каждого участка, и внутреннее предсказание для каждого участка может быть выполнено на основании режима внутреннего предсказания, присвоенного каждому участку. В данном случае участок может содержать по меньшей мере один отсчет. По меньшей мере одно из размера и формы участка может быть адаптивно определено на основании по меньшей мере одного из размера, формы и режима внутреннего предсказания текущего блока. Альтернативно по меньшей мере одно из размера и формы участка может быть предварительно задано в кодере и декодере, чтобы быть независимым от размера или формы текущего блока.
Альтернативно внутреннее предсказание может быть выполнено на основании каждого из множества внутренних предсказаний, и конечный отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования множества отсчетов предсказания, полученных с помощью множества внутренних предсказаний. Например, первый отсчет предсказания может быть получен путем выполнения внутреннего предсказания на основании первого режима внутреннего предсказания, а второй отсчет предсказания может быть получен путем выполнения внутреннего предсказания на основании второго режима внутреннего предсказания. После этого конечный отсчет предсказания может быть получен на основании операции усреднения или операции взвешенного суммирования первого отсчета предсказания и второго отсчета предсказания. В этом случае значение взвешивания, присвоенное каждому из первого отсчета предсказания и второго отсчета предсказания, может быть определено с учетом по меньшей мере одного из того, является ли первый режим внутреннего предсказания режимом предсказания, не основанным на информации об углах / режимом предсказания, основанным на информации об углах, того, является ли второй режим внутреннего предсказания режимом предсказания, не основанным на информации об углах / режимом предсказания, основанным на информации об углах, и режима внутреннего предсказания соседнего блока.
Множество режимов внутреннего предсказания могут представлять собой комбинацию режима внутреннего предсказания, не основанного на информации об углах, и режима предсказания, основанного на информации об углах, комбинацию режимов предсказания, основанных на информации об углах, или комбинацию режимов предсказания, не основанных на информации об углах.
На фиг. 33 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.
Как показано в примере на фиг. 33, режимы предсказания, основанные на информации об углах, могут существовать между диагональным направлением вниз и влево и диагональным направлением вверх и вправо. При описании в отношении угла, образованного осью x и режимом предсказания, основанным на информации об углах, режимы предсказания, основанные на информации об углах, могут существовать между 45 градусами (диагональным направлением вниз и влево) и -135 градусами (диагональным направлением вверх и вправо).
Когда текущий блок имеет неквадратную форму, согласно режиму внутреннего предсказания текущего блока может иметь место случай получения отсчета предсказания за счет использования опорного отсчета дальше от отсчета предсказания вместо опорного отсчета еще ближе к отсчету предсказания из опорных отсчетов, расположенных на угловой линии, проходящей под углом внутреннего предсказания.
На фиг. 34 представлен вид, показывающий вариант осуществления получения отсчетов предсказания, когда текущий блок имеет неквадратную форму.
Например, как показано в примере по фиг. 34 (a), предполагается, что текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от 0 до 45 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле правого столбца текущего блока, может иметь место случай использования левого опорного отсчета L, удаленного от отсчета предсказания, вместо верхнего опорного отсчета T, расположенного возле отсчета предсказания, из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.
В качестве другого примера, как показано в примере на фиг. 34 (b), предполагается, что текущий блок имеет неквадратную форму, высота которой больше, чем ширина, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от -90 до -135 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле нижней строки текущего блока, может иметь место случай использования верхнего опорного отсчета T, удаленного от отсчета предсказания, вместо левого опорного отсчета L, расположенного возле отсчета предсказания, из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.
Для решения проблемы, описанной выше, когда текущий блок имеет неквадратную форму, режим внутреннего предсказания текущего блока может быть заменен режимом внутреннего предсказания в противоположном направлении. Соответственно, режимы предсказания, основанные на информации об углах, имеющие угол больше или меньше, чем у режимов предсказания, основанных на информации об углах, показанных на фиг. 34, могут быть использованы для блока неквадратной формы. Такой режим внутреннего предсказания, основанный на информации об углах, может быть определен как широкоугольный режим внутреннего предсказания. Широкоугольный режим внутреннего предсказания представляет режим внутреннего предсказания, основанный на информации об углах, который не принадлежит к диапазону от 45 до -135 градусов.
На фиг. 35 представлен вид, показывающий широкоугольные режимы внутреннего предсказания.
В примере, показанном на фиг. 35, режимы внутреннего предсказания с индексом от -1 до -14 и режимы внутреннего предсказания с индексом от 67 до 80 представляют широкоугольные режимы внутреннего предсказания.
Хотя 14 широкоугольных режимов внутреннего предсказания (от -1 до -14), имеющих угол больше 45 градусов, и 14 широкоугольных режимов внутреннего предсказания (от 67 до 80), имеющих угол меньше -135 градусов, показаны на фиг. 35, может быть определено большее или меньшее количество широкоугольных режимов внутреннего предсказания.
Когда используется широкоугольный режим внутреннего предсказания, длина верхних опорных отсчетов может быть установлена равной 2W + 1, а длина левых опорных отсчетов может быть установлена равной 2H + 1.
Так как используется широкоугольный режим внутреннего предсказания, отсчет A, показанный на фиг. 34 (a), может быть предсказан с использованием опорного отсчета T, а отсчет A, показанный на фиг. 34 (b), может быть предсказан с использованием опорного отсчета L.
Путем сложения существующих режимов внутреннего предсказания и N широкоугольных режимов внутреннего предсказания можно использовать суммарно 67 + N режимов внутреннего предсказания. Например, в таблице 6 показаны параметры внутреннего направления режимов внутреннего предсказания, когда определены 20 широкоугольных режимов внутреннего предсказания.
[Таблица 6]
PredModeIntra | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 |
intraPredAngle | 114 | 93 | 79 | 68 | 60 | 54 | 49 | 45 | 39 |
PredModeIntra | -1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
intraPredAngle | 35 | 32 | 29 | 26 | 23 | 21 | 19 | 17 | 15 |
PredModeIntra | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
intraPredAngle | 13 | 11 | 9 | 7 | 5 | 3 | 2 | 1 | 0 |
PredModeIntra | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
intraPredAngle | -1 | -2 | -3 | -5 | -7 | -9 | -11 | -13 | -15 |
PredModeIntra | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
intraPredAngle | -17 | -19 | -21 | -23 | -26 | -29 | -32 | -29 | -26 |
PredModeIntra | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 |
intraPredAngle | -23 | -21 | -19 | -17 | -15 | -13 | -11 | -9 | -7 |
PredModeIntra | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
intraPredAngle | -5 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 5 |
PredModeIntra | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
intraPredAngle | 7 | 9 | 11 | 13 | 15 | 17 | 19 | 21 | 23 |
PredModeIntra | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
intraPredAngle | 26 | 29 | 32 | 35 | 39 | 45 | 49 | 54 | 60 |
PredModeIntra | 73 | 74 | 75 | 76 | |||||
intraPredAngle | 68 | 79 | 93 | 114 |
Когда текущий блок имеет неквадратную форму, и режим внутреннего предсказания текущего блока, полученный на этапе S2802, принадлежит к диапазону преобразования, режим внутреннего предсказания текущего блока может быть преобразован в широкоугольный режим внутреннего предсказания. Диапазон преобразования может быть определен на основании по меньшей мере одного из размера, формы и соотношения текущего блока. В данном случае соотношение может представлять соотношение ширины и высоты текущего блока.
Когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 66) диагонального направления вверх и вправо (индекса режима внутреннего предсказания в диагональном направлении вверх и вправо - N). В данном случае N может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой вычитание предварительно заданного значения из режима внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 67) режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания.
Согласно варианту осуществления, описанному выше, режимы внутреннего предсказания с 66-го по 53-й могут быть преобразованы в широкоугольные режимы внутреннего предсказания с -1-го по -14-й соответственно.
Когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 2) диагонального направления вниз и влево (индекса режима внутреннего предсказания в диагональном направлении вниз и влево + M). В данном случае M может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой добавление предварительно заданного значения к режиму внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 65) режимов внутреннего предсказания, основанных на информации об углах, за исключением широкоугольных режимов внутреннего предсказания.
Согласно варианту осуществления, описанному выше, режимы внутреннего предсказания со 2-го по 15-й могут быть преобразованы в широкоугольные режимы внутреннего предсказания с 67-го по 80-й соответственно.
Далее режимы внутреннего предсказания, принадлежащие к диапазону преобразования, будут называться широкоугольными заменяющими режимами внутреннего предсказания.
Диапазон преобразования может быть определен на основании соотношения текущего блока. Например, в таблицах 7 и 8 показан диапазон преобразования, когда определены 35 режимов внутреннего предсказания и 67 режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания соответственно.
[Таблица 7]
Условие | Замененные режимы внутреннего предсказания |
W/H = 2 | Режимы 2, 3, 4 |
W/H > 2 | Режимы 2, 3, 4, 5, 6 |
W/H = 1 | Нет |
H/W = 1/2 | Режимы 32, 33, 34 |
H/W < 1/2 | Режимы 30, 31, 32, 33, 34 |
[Таблица 8]
Условие | Замененные режимы внутреннего предсказания |
W/H = 2 | Режимы 2, 3, 4, 5, 6, 7 |
W/H > 2 | Режимы 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 |
W/H = 1 | Нет |
H/W = 1/2 | Режимы 61, 62, 63, 64, 65, 66 |
H/W < 1/2 | Режимы 57, 58, 59, 60, 61, 62, 63, 64, 65, 66 |
Как показано в примерах из таблиц 7 и 8, количество широкоугольных заменяющих режимов внутреннего предсказания, принадлежащих к диапазону преобразования, может меняться согласно соотношению текущего блока.
Так как используются широкоугольные режимы внутреннего предсказания в дополнение к существующим режимам внутреннего предсказания, увеличиваются ресурсы, требуемые для кодирования широкоугольных режимов внутреннего предсказания, и, таким образом, эффективность кодирования может быть снижена. Соответственно, эффективность кодирования может быть улучшена за счет кодирования заменяющих режимов внутреннего предсказания для широкоугольных режимов внутреннего предсказания вместо кодирования широкоугольных режимов внутреннего предсказания как таковых.
Например, когда текущий блок кодируется с использованием 67-го широкоугольного режима внутреннего предсказания, 2-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания 67-го широкоугольного режима внутреннего предсказания, может быть закодирован с использованием режима внутреннего предсказания текущего блока. Кроме того, когда текущий блок кодируется с использованием -1-го широкоугольного режима внутреннего предсказания, 66-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания -1-го широкоугольного режима внутреннего предсказания, может быть кодирован с использованием режима внутреннего предсказания текущего блока.
Декодер может декодировать режим внутреннего предсказания текущего блока и определять, принадлежит ли декодированный режим внутреннего предсказания к диапазону преобразования. Когда декодированный режим внутреннего предсказания представляет собой широкоугольный заменяющий режим внутреннего предсказания, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания.
Альтернативно, когда текущий блок кодируется с использованием широкоугольного режима внутреннего предсказания, широкоугольный режим внутреннего предсказания может быть кодирован, как есть.
Кодирование режима внутреннего предсказания может быть выполнено на основании списка MPM, описанного выше. В частности, когда соседний блок кодируется с использованием широкоугольного режима внутреннего предсказания, MPM может быть установлен на основании широкоугольного заменяющего режима внутреннего предсказания, соответствующего широкоугольному режиму внутреннего предсказания. Например, когда соседний блок кодируется с использованием широкоугольного режима внутреннего предсказания, переменная candIntraPredX (X является A или B) может быть установлена равной широкоугольному заменяющему режиму внутреннего предсказания.
Когда блок предсказания генерируется в результате выполнения внутреннего предсказания, отсчеты предсказания могут быть обновлены на основании положения каждого из отсчетов предсказания, включенных в блок предсказания. Способ обновления как этот может называться способом внутреннего взвешенного предсказания на основании положения отсчета или комбинацией предсказания в зависимости от положения (PDPC).
То, следует ли использовать PDPC, может быть определено с учетом режима внутреннего предсказания текущего блока, линии опорных отсчетов текущего блока, размера текущего блока или цветовой компоненты. Например, когда режим внутреннего предсказания текущего блока представляет собой по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении, режима в горизонтальном направлении, режима, имеющего индексное значение, которое меньше, чем индексное значение режима в вертикальном направлении, и режима, имеющего индексное значение, которое больше, чем индексное значение режима в горизонтальном направлении, может быть использована PDPC. Альтернативно только тогда, когда по меньшей мере одна из ширины и высоты текущего блока больше чем 4, может быть использована PDPC. Альтернативно только тогда, когда индекс линии опорного изображения текущего блока равен 0, может быть использована PDPC. Альтернативно только тогда, когда индекс линии опорного изображения текущего блока равен предварительно заданному значению или больше него, может быть использована PDPC. Альтернативно PDPC может быть использована только для компоненты яркости. Альтернативно в зависимости от того, удовлетворяется или нет два или более условий, перечисленных выше, может определяться, использовать или нет PDPC.
В качестве еще одного примера информация, указывающая то, применяется ли PDPC, может быть передана посредством битового потока.
Когда отсчет предсказания получен посредством отсчета внутреннего предсказания, опорный отсчет, используемый для корректировки отсчета предсказания, может быть определен на основании положения полученного отсчета предсказания. Для удобства объяснения в варианте осуществления, описанном ниже, опорный отсчет, используемый для корректировки отсчета предсказания, называется опорным отсчетом PDPC. Кроме того, отсчет предсказания, полученный посредством внутреннего предсказания, называется первым отсчетом предсказания, и отсчет предсказания, полученный путем корректировки первого отсчета предсказания, называется вторым отсчетом предсказания.
На фиг. 36 представлен вид, показывающий вариант осуществления применения PDPC.
Первый отсчет предсказания может быть откорректирован с использованием по меньшей мере одного опорного отсчета PDPC. Опорный отсчет PDPC может включать по меньшей мере один из опорного отсчета, смежного с верхним левым углом текущего блока, верхнего опорного отсчета, расположенного сверху от текущего блока, и левого опорного отсчета, расположенного слева от текущего блока.
По меньшей мере один из опорных отсчетов, принадлежащих к линии опорных отсчетов текущего блока, может быть установлен как опорный отсчет PDPC. Альтернативно, независимо от линии опорных отсчетов текущего блока, по меньшей мере один из опорных отсчетов, принадлежащих к линии опорных отсчетов, имеющей индекс 0, может быть установлен как опорный отсчет PDPC. Например, хотя первый отсчет предсказания получен с использованием опорного отсчета, включенного в линию опорных отсчетов с индексом 1 или индексом 2, второй отсчет предсказания может быть получен с использованием опорного отсчета, включенного в линию опорных отсчетов с индексом 0.
Количество или положения опорных отсчетов PDPC, используемых для корректировки первого отсчета предсказания, могут быть определены с учетом по меньшей мере одного из режима внутреннего предсказания текущего блока, размера текущего блока, формы текущего блока и положения первого отсчета предсказания.
Например, когда режим внутреннего предсказания текущего блока представляет собой планарный режим или режим DC, второй отсчет предсказания может быть получен с использованием верхнего опорного отсчета и левого опорного отсчета. В этом случае верхний опорный отсчет может представлять собой опорный отсчет, который является вертикальным относительно первого отсчета предсказания (например, опорный отсчет одинаковой координаты x), и левый опорный отсчет может представлять собой опорный отсчет, который является горизонтальным относительно первого отсчета предсказания (например, опорный отсчет одинаковой координаты y).
Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в горизонтальном направлении, второй отсчет предсказания может быть получен с использованием верхнего опорного отсчета. В этом случае верхний опорный отсчет может представлять собой опорный отсчет, который является вертикальным относительно первого отсчета предсказания.
Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в вертикальном направлении, второй отсчет предсказания может быть получен с использованием левого опорного отсчета. В этом случае левый опорный отсчет может представлять собой опорный отсчет, который является горизонтальным относительно первого отсчета предсказания.
Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в диагональном направлении вниз и влево или режим внутреннего предсказания в диагональном направлении вверх и вправо, второй отсчет предсказания может быть получен на основании верхнего левого опорного отсчета, верхнего опорного отсчета и левого опорного отсчета. Верхний левый опорный отсчет может представлять собой опорный отсчет, смежный с верхним левым углом текущего блока (например, опорный отсчет в положении (-1, -1)). Верхний опорный отсчет может представлять собой опорный отсчет, расположенный в диагональном направлении вверх и вправо первого отсчета предсказания, и левый опорный отсчет может представлять собой опорный отсчет, расположенный в диагональном направлении вниз и влево первого отсчета предсказания.
В итоге, когда положение первого отсчета предсказания представляет собой (x, y), R(-1, -1) может быть установлен как верхний левый опорный отсчет, и R(x + y + 1, -1) или R(x, -1) может быть установлен как верхний опорный отсчет. Кроме того, R(-1, x + y + 1) или R(-1, y) может быть установлен как левый опорный отсчет.
В качестве еще одного примера положение левого опорного отсчета или верхнего опорного отсчета может быть определено с учетом по меньшей мере одного из формы текущего блока и того, применяется ли широкоугольный внутренний режим.
В частности, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, опорный отсчет, разнесенный от опорного отсчета, расположенного в диагональном направлении первого отсчета предсказания, на величину смещения, может быть установлен как опорный отсчет PDPC. Например, верхний опорный отсчет R(x + y + k + 1, -1) и левый опорный отсчет R(-1, x + y - k + 1) могут быть установлены как опорные отсчеты PDPC.
В этом случае смещение k может быть определено на основании широкоугольного режима внутреннего предсказания. Уравнения 9 и 10 демонстрируют пример получения смещения на основании широкоугольного режима внутреннего предсказания.
[Уравнение 9]
[Уравнение 10]
Второй отсчет предсказания может быть определен на основании операции взвешенного суммирования первого отсчета предсказания и опорных отсчетов PDPC. Например, второй отсчет предсказания может быть получен на основании уравнения 11, показанного ниже.
[Уравнение 11]
В уравнении 11 RL обозначает левый опорный отсчет, RL обозначает верхний опорный отсчет, и RTL обозначает верхний левый опорный отсчет. Pred(x, y) обозначает отсчет предсказания в положении (x, y). wL обозначает значение взвешивания, присвоенное левому опорному отсчету, wT обозначает значение взвешивания, присвоенное верхнему опорному отсчету, и wTL обозначает значение взвешивания, присвоенное верхнему левому опорному отсчету. Значения взвешивания, присвоенные первому отсчету предсказания, могут быть получены путем вычитания значений взвешивания, присвоенных опорным отсчетам, из максимального значения. Для удобства объяснения значение взвешивания, присвоенное опорному отсчету PDPC, называется значением взвешивания PDPC.
Значение взвешивания, присвоенное каждому опорному отсчету, может быть определено на основании по меньшей мере одного из режима внутреннего предсказания текущего блока и положения первого отсчета предсказания.
Например, по меньшей мере одно из wL, wT и wTL может иметь пропорциональную или обратно пропорциональную связь с по меньшей мере одним из значения координаты по оси x и значения координаты по оси y отсчета предсказания. Альтернативно по меньшей мере одно из wL, wT и wTL может иметь пропорциональную или обратно пропорциональную связь с по меньшей мере одной из ширины и высоты текущего блока.
Когда режим внутреннего предсказания текущего блока представляет собой режим DC, значения взвешивания PDPC могут быть определены так, как показано в уравнении 12.
[Уравнение 12]
В уравнении 12 x и y обозначают положение первого отсчета предсказания.
Переменная shift, используемая в операции битового сдвига, в уравнении 12 может быть получена на основании ширины или высоты текущего блока. Например, переменная shift может быть получена на основании уравнения 13 или 14, показанного ниже.
[Уравнение 13]
[Уравнение 14]
Альтернативно переменная shift может быть получена с учетом параметра внутреннего направления текущего блока.
Количество параметров или типов параметров, используемых для получения переменной shift, может быть определено по-разному согласно режиму внутреннего предсказания текущего блока. Например, когда режим внутреннего предсказания текущего блока представляет собой планарный режим, режим DC, режим в вертикальном направлении или режим в горизонтальном направлении, переменная shift может быть получена с использованием ширины (width) и высоты (height) текущего блока, как показано в примере уравнения 13 или уравнения 14. Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, имеющий индекс, который больше, чем в режиме внутреннего предсказания в вертикальном направлении, переменная shift может быть получена с использованием высоты и параметра внутреннего направления текущего блока. Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, имеющий индекс, который меньше, чем в горизонтальном режиме внутреннего предсказания, переменная shift может быть получена с использованием ширины и параметра внутреннего направления текущего блока.
Когда режим внутреннего предсказания текущего блока представляет собой планарный режим, значение wTL может быть установлено равным 0. wL и wT могут быть получены на основании уравнения 15, показанного ниже.
[Уравнение 15]
Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в горизонтальном направлении, wT может быть установлено равным 0, и wTL и wL могут быть установлены равным образом. С другой стороны, когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания в вертикальном направлении, wL может быть установлено равным 0, и wTL и wT могут быть установлены равным образом.
Когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вверх и вправо, имеющий индексное значение, которое больше, чем в режиме внутреннего предсказания в вертикальном направлении, значения взвешивания PDPC могут быть получены так, как показано в уравнении 16.
[Уравнение 16]
С другой стороны, когда режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вниз и влево, имеющий индексное значение, которое меньше, чем в режиме внутреннего предсказания в горизонтальном направлении, значения взвешивания PDPC могут быть получены так, как показано в уравнении 17.
[Уравнение 17]
Как показано в варианте осуществления, описанном выше, значения взвешивания PDPC могут быть определены на основании положения x и y отсчета предсказания.
В качестве еще одного примера значение взвешивания, присвоенное каждому из опорных отсчетов PDPC, может быть определено элементом подблока. Отсчеты предсказания, включенные в подблок, могут совместно использовать одинаковые значения взвешивания PDPC.
Размер подблока, который является базовым элементом для определения значения взвешивания, может быть предварительно задан в кодере и декодере. Например, значение взвешивания может быть определено для каждого подблока размером 2×2 или 4×4.
Альтернативно размер, форма или количество подблоков могут быть определены согласно размеру или форме текущего блока. Например, независимо от размера блока кодирования, блок кодирования может быть разделен на четыре подблока. Альтернативно блок кодирования может быть разделен на 4 или 16 подблоков согласно размеру блока кодирования.
Альтернативно размер, форма или количество подблоков могут быть определены на основании режима внутреннего предсказания текущего блока. Например, когда режим внутреннего предсказания текущего блока имеет горизонтальное направление, N столбцов (или N строк) установлены как один подблок, тогда как когда режим внутреннего предсказания текущего блока имеет вертикальное направление, N строк (или N столбцов) могут быть установлены как один подблок.
Уравнения 18–20 демонстрируют примеры определения значения взвешивания PDPC для подблока размером 2×2. Уравнение 18 демонстрирует случай, в котором режим внутреннего предсказания текущего блока представляет собой режим DC.
[Уравнение 18]
В уравнении 18 K может быть определено на основании размера подблока.
Уравнение 19 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вверх и вправо, имеющий индексное значение, которое больше, чем в режиме внутреннего предсказания в вертикальном направлении.
[Уравнение 19]
Уравнение 20 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вниз и влево, имеющий индексное значение, которое меньше, чем в режиме внутреннего предсказания в горизонтальном направлении.
[Уравнение 20]
В уравнениях 18–20 x и y обозначают положение опорного отсчета внутри подблока. Опорный отсчет может представлять собой любой из отсчета, расположенного сверху слева от подблока, отсчета, расположенного в центре подблока, и отсчета, расположенного снизу справа от подблока.
Уравнения 21–23 демонстрируют примеры определения значения взвешивания PDPC для подблока размером 4×4. Уравнение 21 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим DC.
[Уравнение 21]
Уравнение 22 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вверх и вправо, имеющий индексное значение, которое больше, чем в режиме внутреннего предсказания в вертикальном направлении.
[Уравнение 22]
Уравнение 23 демонстрирует пример, в котором режим внутреннего предсказания текущего блока представляет собой режим внутреннего предсказания, направленный вниз и влево, имеющий индексное значение, которое меньше, чем в режиме внутреннего предсказания в горизонтальном направлении.
[Уравнение 23]
В вариантах осуществления, описанных выше, было описано, что значения взвешивания PDPC определены с учетом положений отсчетов предсказания, включенных в первый отсчет предсказания или подблок. Значения взвешивания PDPC могут быть определены путем дополнительного учета формы текущего блока.
Например, в случае режима DC способ получения значения взвешивания PDPC может меняться в зависимости от того, имеет ли текущий блок неквадратную форму, ширина которой больше, чем высота, или неквадратную форму, высота которой больше, чем ширина.
Уравнение 24 демонстрирует пример получения значения взвешивания PDPC, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и уравнение 25 демонстрирует пример получения значения взвешивания PDPC, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина.
[Уравнение 24]
[Уравнение 25]
Когда текущий блок имеет неквадратную форму, текущий блок может быть предсказан с использованием широкоугольного режима внутреннего предсказания. Таким образом, даже когда применяется широкоугольный режим внутреннего предсказания, первый отсчет предсказания может быть обновлен путем применения PDPC.
Когда широкоугольное внутреннее предсказание применяется к текущему блоку, значение взвешивания PDPC может быть определено с учетом формы блока кодирования.
Например, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, согласно положению первого отсчета предсказания, может быть случай, в котором верхний опорный отсчет, расположенный сверху справа от первого отсчета предсказания, ближе к первому отсчету предсказания, чем левый опорный отсчет, расположенный снизу слева от первого отсчета предсказания. Соответственно, при корректировке первого отсчета предсказания значение взвешивания, примененное к верхнему опорному отсчету, может быть установлено так, чтобы иметь значение, которое больше, чем значение взвешивания, примененное к левому опорному отсчету.
С другой стороны, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, согласно положению первого отсчета предсказания, может быть случай, в котором левый опорный отсчет, расположенный снизу слева от первого отсчета предсказания, ближе к первому отсчету предсказания, чем верхний опорный отсчет, расположенный сверху справа от первого отсчета предсказания. Соответственно, при корректировке первого отсчета предсказания значение взвешивания, примененное к левому опорному отсчету, может быть установлено так, чтобы иметь значение, которое больше, чем значение взвешивания, примененное к верхнему опорному отсчету.
Уравнение 26 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который больше чем 66.
[Уравнение 26]
Уравнение 27 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который меньше чем 0.
[Уравнение 27]
Значение взвешивания PDPC может быть определено на основании соотношения текущего блока. Соотношение текущего блока представляет соотношение ширины и высоты текущего блока и может быть определено так, как показано в уравнении 28.
[Уравнение 28]
Согласно режиму внутреннего предсказания текущего блока способ получения значения взвешивания PDPC может быть определен различными путями.
Например, уравнения 29 и 30 демонстрируют пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой режим DC. В частности, уравнение 29 представляет собой пример случая, в котором текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и уравнение 30 представляет собой пример случая, в котором текущий блок имеет неквадратную форму, высота которой больше, чем ширина.
[Уравнение 29]
[Уравнение 30]
Уравнение 31 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который больше чем 66.
[Уравнение 31]
Уравнение 32 демонстрирует пример получения значения взвешивания PDPC, когда режим внутреннего предсказания текущего блока представляет собой широкоугольный режим внутреннего предсказания, имеющий индекс, который меньше чем 0.
[Уравнение 32]
Режим предсказания может применяться к текущему блоку множество раз, или множество режимов предсказания могут в излишнем количестве применяться к текущему блоку. Подобно этому, способ предсказания, использующий режим однородного или неоднородного предсказания, может называться режимом комбинированного предсказания (или режимом предсказания с несколькими гипотезами).
Информация, указывающая, применяется ли режим комбинированного предсказания к текущему блоку, может быть передана посредством битового потока. Например, информация может представлять собой 1-битный флаг.
В режиме комбинированного предсказания первый блок предсказания может генерироваться на основании первого режима предсказания, и второй блок предсказания может генерироваться на основании второго режима предсказания. Затем третий блок предсказания может генерироваться на основании операции взвешенного суммирования первого блока предсказания и второго блока предсказания. Третий блок предсказания может быть установлен в качестве конечного блока предсказания текущего блока.
Режим комбинированного предсказания включает по меньшей мере один из режима, комбинирующего режим слияния и режим слияния, режима, комбинирующего предсказание, осуществляемое между изображениями, и внутреннее предсказание, режима, комбинирующего режим слияния и режим предсказания вектора движения, и режима, комбинирующего режим слияния и внутреннее предсказание.
В режиме, комбинирующем режим слияния и режим слияния, предсказание с компенсацией движения может выполняться с использованием множества кандидатов на слияние. В частности, первый блок предсказания может генерироваться с использованием первого кандидата на слияние, и второй блок предсказания может генерироваться с использованием второго кандидата на слияние. Третий блок предсказания может генерироваться на основании операции взвешенного суммирования первого блока предсказания и второго блока предсказания.
Информация для указания первого кандидата на слияние и второго кандидата на слияние может быть передана посредством битового потока соответственно. Например, информация об индексах merge_idx для указания первого кандидата на слияние и информация об индексах merge_2nd_idx для указания второго кандидата на слияние может быть передана посредством битового потока. Второй кандидат на слияние может определяться на основании информации об индексах merge_2nd_idx и информации об индексах merge_idx.
Информация об индексах merge_idx указывает любого из кандидатов на слияние, включенных в список кандидатов на слияние.
Информация об индексах merge_2nd_idx может указывать любого из оставшихся кандидатов на слияние, не считая кандидата на слияние, указанного посредством merge_idx. Соответственно, когда значение merge_2nd_idx меньше, чем значение merge_idx, кандидат на слияние, индекс которого представляет собой значение merge_2nd_idx, может быть установлен в качестве второго кандидата на слияние. Когда значение merge_2nd_idx равняется значению merge_idx или больше него, кандидат на слияние, имеющий значение, полученное путем прибавления 1 к значению merge_2nd_idx в качестве индекса, может быть установлен в качестве второго кандидата на слияние.
Альтернативно второй кандидат на слияние может быть указан с учетом порядка поиска кандидатных блоков.
На фиг. 37 представлен вид, показывающий пример, в котором второй кандидат на слияние указан с учетом порядка поиска кандидатных блоков.
В примере, показанном на фиг. 37, индексы, отмеченные в соседних отсчетах и несоседних отсчетах, указывают порядок поиска кандидатных блоков. Например, может осуществляться последовательный поиск кандидатных блоков из положения A0 к положению A14.
Когда блок A4 выбирается в качестве первого кандидата на слияние, кандидат на слияние, полученный из кандидатного блока, имеющего порядок поиска, следующий за A4, может быть указан в качестве второго кандидата на слияние. Например, кандидат на слияние, полученный из A5, может быть выбран в качестве второго кандидата на слияние. Когда кандидатный блок в положении A5 не может использоваться в качестве кандидата на слияние, кандидат на слияние, полученный из следующего кандидатного блока, может быть выбран в качестве второго кандидата на слияние.
Первый кандидат на слияние и второй кандидат на слияние могут быть выбраны из кандидатов на слияние, полученных из несоседних блоков.
На фиг. 38 представлен вид, показывающий пример, в котором первый кандидат на слияние и второй кандидат на слияние выбираются среди кандидатов на слияние, полученных из несоседних блоков.
Как показано в примере на фиг. 38, кандидаты на слияние, полученные из первого кандидатного блока и второго кандидатного блока, которые не являются смежными с текущим блоком, могут быть выбраны в качестве первого кандидата на слияние и второго кандидата на слияние соответственно. В этом случае линия блоков, к которой принадлежит первый кандидатный блок, и линия блоков, к которой принадлежит второй кандидатный блок, могут отличаться. Например, первый кандидат на слияние может быть получен из любого из кандидатных блоков A5–A10, и второй кандидат на слияние может быть получен из любого из кандидатных блоков A11–A15.
Альтернативно это может быть установлено так, что первый кандидатный блок и второй кандидатный блок не включены в одинаковую линию (например, строку или столбец).
В качестве другого примера второй кандидат на слияние может быть указан на основании первого кандидата на слияние. В этом случае первый кандидат на слияние может быть указан информацией об индексах merge_idx, передаваемой из битового потока. Например, кандидат на слияние, являющийся смежным с первым кандидатом на слияние, может быть указан в качестве второго кандидата на слияние. В данном случае кандидат на слияние, являющийся смежным с первым кандидатом на слияние, может означать кандидата на слияние, имеющего разницу в индексе, равную 1, по отношению к первому кандидату на слияние. Например, кандидат на слияние, имеющий индексное значение merge_idx+1, может быть установлен в качестве второго кандидата на слияние. В этом случае, когда значение merge_idx+1 больше, чем максимальное индексное значение (или когда индексное значение первого кандидата на слияние представляет собой максимальный индекс), кандидат на слияние, имеющий индексное значение merge_idx-1, или кандидат на слияние, имеющий индексное значение предварительно заданного значения (например, 0), может быть установлен в качестве второго кандидата на слияние.
Альтернативно кандидат на слияние, смежный с первым кандидатом на слияние, может означать кандидата на слияние, полученного из кандидатного блока, пространственно смежного с кандидатным блоком, используемым для получения первого кандидата на слияние. В данном случае соседний кандидатный блок кандидатного блока может означать блок, смежный с кандидатным блоком в направлении влево, вправо, вверх, вниз или по диагонали.
В качестве другого примера второй кандидат на слияние может быть указан на основании информации о движении первого кандидата на слияние. Например, кандидат на слияние, совместно использующий такое же опорное изображение с первым кандидатом на слияние, может быть выбран в качестве второго кандидата на слияние. Когда есть множество кандидатов на слияние, совместно использующих такое же опорное изображение с первым кандидатом на слияние, кандидат на слияние, имеющий самый маленький индекс среди множества кандидатов на слияние, или кандидат на слияние, имеющий самую маленькую разницу в индексе по отношению к первому кандидату на слияние, может быть выбран в качестве второго кандидата на слияние. Альтернативно второй кандидат на слияние может быть выбран на основании информации об индексах, указывающей любой из множества кандидатов на слияние.
Альтернативно, когда первый кандидат на слияние является однонаправленным предсказанием первого направления, кандидат на слияние, содержащий информацию о движении во втором направлении, может быть установлен в качестве второго кандидата на слияние. Например, когда первый кандидат на слияние имеет информацию о движении направления L0, кандидат на слияние, имеющий информацию о движении направления L1, может быть выбран в качестве второго кандидата на слияние. Когда есть множество кандидатов на слияние, имеющих информацию о движении направления L1, кандидат на слияние, имеющий самый маленький индекс, или кандидат на слияние, имеющий самую маленькую разницу в индексе по отношению к первому кандидату на слияние среди множества кандидатов на слияние, может быть установлен в качестве второго кандидата на слияние. Альтернативно второй кандидат на слияние может быть выбран на основании информации об индексах, указывающей любой из множества кандидатов на слияние.
В качестве другого примера, один из кандидатов на слияние, полученный из соседних блоков, смежных с текущим блоком, может быть установлен в качестве первого кандидата на слияние, и один из кандидатов на слияние, полученный из несоседних блоков, не являющихся смежными с текущим блоком, может быть установлен в качестве второго кандидата на слияние.
В качестве другого примера, один из кандидатов на слияние, полученный из кандидатных блоков, расположенных сверху текущего блока, может быть установлен в качестве первого кандидата на слияние, и один из кандидатов на слияние, полученный из кандидатных блоков, расположенных на левой стороне, может быть установлен в качестве второго кандидата на слияние.
Комбинированный блок предсказания может быть получен посредством операции взвешенного суммирования первого блока предсказания, полученного из первого кандидата на слияние, и второго блока предсказания, полученного на основании второго кандидата на слияние. В этом случае значение взвешивания, применяемое к первому блоку предсказания, может быть установлено равным значению, которое больше, чем значение взвешивания, применяемое ко второму блоку предсказания.
Альтернативно значения взвешивания могут быть определены на основании информации о движении первого кандидата на слияние и информации о движении второго кандидата на слияние. Например, значения взвешивания, применяемые к первому блоку предсказания и второму блоку предсказания, могут быть определены на основании разницы в порядке вывода опорного изображения и текущего изображения. В частности, поскольку разница в порядке вывода опорного изображения и текущего изображения увеличивается, значение взвешивания, применяемое к блоку предсказания, может быть установлено равным меньшему значению.
Альтернативно значения взвешивания, применяемые к первому блоку предсказания и второму блоку предсказания, могут быть определены с учетом размеров или форм кандидатного блока, используемого для получения первого кандидата на слияние (далее называется первым кандидатным блоком), и кандидатного блока, используемого для получения второго кандидата на слияние (далее называется вторым кандидатным блоком). Например, значение взвешивания, применяемое к блоку предсказания, полученному из первого кандидатного блока или второго кандидатного блока, имеющего форму, подобную форме текущего блока, может быть установлено равным большому значению. С другой стороны, значение взвешивания, применяемое к блоку предсказания, полученному из первого кандидатного блока или второго кандидатного блока, имеющего форму, не являющуюся подобной форме текущего блока, может быть установлено равным маленькому значению.
На фиг. 39 представлен вид, показывающий пример, в котором значения взвешивания, применяющиеся к блокам предсказания, определяются на основании формы кандидатных блоков.
Предполагается, что текущий блок имеет неквадратную форму, ширина которой больше, чем высота.
Первый блок предсказания и второй блок предсказания может быть получен на основании первого кандидата на слияние и второго кандидата на слияние, и комбинированный блок предсказания может генерироваться на основании операции взвешенного суммирования первого блока предсказания и второго блока предсказания. В этом случае значения взвешивания, применяемые к первому блоку предсказания и второму блоку предсказания, могут быть определены на основании форм первого кандидатного блока и второго кандидатного блока.
Например, в примере, показанном на фиг. 39, первый кандидатный блок имеет квадратную форму, и второй кандидатный блок имеет неквадратную форму, ширина которой больше, чем высота. Поскольку форма второго кандидатного блока является такой же, как форма текущего блока, значение взвешивания, применяемое ко второму блоку предсказания, может быть установлено большим, чем значение взвешивания, применяемое к первому блоку предсказания. Например, значение взвешивания 5/8 может применяться ко второму блоку предсказания, и значение взвешивания 3/8 может применяться к первому блоку предсказания. Уравнение 33 показывает пример получения блока комбинированного предсказания на основании операции взвешенного суммирования первого блока предсказания и второго блока предсказания.
[Уравнение 33]
P (x, y) обозначает блок комбинированного предсказания, P1 (x, y) обозначает первый блок предсказания, и P2 (x, y) обозначает второй блок предсказания.
В качестве другого примера, значения взвешивания, применяемые к первому блоку предсказания и второму блоку предсказания, могут быть определены на основании формы текущего блока. Например, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, большее значение взвешивания может применяться к блоку предсказания, сгенерированному на основании кандидата на слияние, полученного на основании кандидатного блока, расположенного сверху текущего блока первого кандидата на слияние и второго кандидата на слияние. Когда и первый кандидат на слияние, и второй кандидат на слияние получены из кандидатных блоков, расположенных сверху текущего блока, значения взвешивания, применяемые к первому блоку предсказания и второму блоку предсказания, могут быть установлены равными. С другой стороны, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, большее значение взвешивания может применяться к блоку предсказания, сгенерированному на основании кандидата на слияние, полученного на основании кандидатного блока, расположенного на левой стороне текущего блока из первого кандидата на слияние и второго кандидата на слияние. Когда и первый кандидат на слияние, и второй кандидат на слияние получены из кандидатных блоков, расположенных на левой стороне текущего блока, значения взвешивания, применяемые к первому блоку предсказания и второму блоку предсказания, могут быть установлены равными. Когда текущий блок имеет квадратную форму, значения взвешивания, применяемые к первому блоку предсказания и второму блоку предсказания, могут быть установлены равными.
В качестве другого примера, значение взвешивания, применяемое к каждому блоку предсказания, может быть определено на основании расстояния между текущим блоком и кандидатным блоком. В данном случае расстояние может быть получено на основании разницы по координате оси x, разницы по координате оси y от текущего блока или минимального значения среди них. Значение взвешивания, применяемое к блоку предсказания, полученному из кандидата на слияние, имеющего небольшое расстояние от текущего блока, может быть установлено имеющим значение, которое больше, чем значение взвешивания, применяемое к блоку предсказания, полученному из кандидата на слияние, имеющего большое расстояние от текущего блока. Например, в примере, показанном на фиг. 37, первого кандидата на слияние получают из соседнего блока, смежного с текущим блоком, и второго кандидата на слияние получают из несоседнего блока, который не является смежным с текущим блоком. В этом случае, поскольку расстояние по оси x между первым кандидатным блоком и текущим блоком меньше, чем расстояние по оси x между вторым кандидатным блоком и текущим блоком, значение взвешивания, применяемое к первому блоку предсказания, может быть установлено имеющим значение, которое больше, чем значение взвешивания, применяемое ко второму блоку предсказания.
Альтернативно, когда и первого кандидата на слияние, и второго кандидата на слияние получают из несоседних блоков, большее значение взвешивания может быть присвоено блоку предсказания, полученному из несоседнего блока на расстоянии, которое ближе к текущему блоку из несоседних блоков. Например, в примере, показанном на фиг. 38, поскольку расстояние по оси y между первым кандидатным блоком и текущим блоком меньше, чем расстояние по оси y между вторым кандидатным блоком и текущим блоком, значение взвешивания, применяемое к первому блоку предсказания, может быть установлено имеющим значение, которое больше, чем значение взвешивания, применяемое ко второму блоку предсказания.
В режиме комбинированного предсказания, комбинирующем режим слияния и режим слияния, описанный выше, режим слияния может означать режим слияния на основании модели поступательного движения (далее называется режимом поступательного слияния) или режим слияния на основании модели аффинного движения (далее называется режимом аффинного слияния). То есть предсказание с компенсацией движения может выполняться путем комбинирования режима поступательного слияния и режима поступательного слияния или путем комбинирования режима аффинного слияния и режима аффинного слияния.
Например, когда первый кандидат на слияние представляет собой аффинного кандидата на слияние, второй кандидат на слияние может также быть установлен в качестве кандидата на аффинное слияние. В данном случае кандидат на аффинное слияние указывает случай, когда вектор движения блока, содержащего опорного кандидата, представляет собой вектор аффинного движения. Второй кандидат на слияние может быть указан посредством различных вариантов осуществления, описанных выше. Например, второй кандидат на слияние может быть установлен в качестве соседнего кандидата на слияние первого кандидата на слияние. В этом случае, когда кандидат на слияние, смежный с первым кандидатом на слияние, не кодирован с использованием модели аффинного движения, кандидат на слияние, кодированный с использованием модели аффинного движения, может быть установлен в качестве второго кандидата на слияние вместо кандидата на слияние.
С другой стороны, когда первый кандидат на слияние является неаффинным кандидатом на слияние, второй кандидат на слияние может также быть установлен в качестве неаффинного кандидата на слияние. В этом случае, когда кандидат на слияние, смежный с первым кандидатом на слияние, кодирован с использованием модели аффинного движения, кандидат на слияние, кодированный с использованием модели поступательного движения, может быть установлен в качестве второго кандидата на слияние вместо кандидата на слияние.
На фиг. 40 представлен вид, показывающий пример установки неаффинного кандидата на слияние вместо аффинного кандидата на слияние в качестве второго кандидата на слияние.
Когда кандидат на слияние в положении A1 указан в качестве первого кандидата на слияние посредством merge_idx, кандидат A2 на слияние, имеющий индексное значение, которое больше, чем индексное значение первого кандидата на слияние на 1, может быть выбран в качестве второго кандидата на слияние. В этом случае, когда первый кандидат на слияние является неаффинным кандидатом на слияние, и второй кандидат на слияние является аффинным кандидатом на слияние, второй кандидат на слияние может быть установлен заново. Например, из кандидатов на слияние, имеющих индекс, который больше, чем merge_idx+1, неаффинный кандидат на слияние, имеющий самое маленькое значение разности по отношению к merge_idx+1, может быть установлен заново в качестве второго кандидата на слияние. Например, в примере, показанном на фиг. 40, показано, что кандидат A3 на слияние, имеющий merge_idx+2 в качестве индекса, установлен в качестве второго кандидата на слияние.
В качестве другого примера, предсказание с компенсацией движения может выполняться путем комбинирования режима поступательного слияния и режима аффинного слияния. То есть любой один из первого кандидата на слияние и второго кандидата на слияние может являться аффинным кандидатом на слияние, а другой может являться неаффинным кандидатом на слияние.
Объединенная информация о движении может быть получена на основании первого кандидата на слияние и второго кандидата на слияние, и предсказание с компенсацией движения для текущего блока может выполняться на основании объединенной информации о движении. Например, вектор движения текущего блока может быть получен на основании операции усреднения или операции взвешенного суммирования вектора движения первого кандидата на слияние и вектора движения второго кандидата на слияние. В этом случае значение взвешивания, применяемое к вектору движения первого кандидата на слияние, и значение взвешивания, применяемое к вектору движения второго кандидата на слияние, могут быть определены посредством вариантов осуществления, описанных выше.
Когда первый кандидат на слияние является неаффинным кандидатом на слияние, и второй аффинный кандидат на слияние является аффинным кандидатом на слияние, вектор движения текущего блока может быть получен путем масштабирования вектора движения второго кандидата на слияние. В уравнении 34 показан пример получения вектора движения текущего блока.
[Уравнение 34]
В уравнении 34 (mvX, mvY) обозначает вектор движения текущего блока, (mv0x, mv0y) обозначает вектор движения первого кандидата на слияние, и (mv1x, mv1y) обозначает вектор движения второго кандидата на слияние. M обозначает параметр масштабирования. M может быть предварительно задан в кодере и декодере. Альтернативно значение параметра масштабирования M может быть определено согласно размеру текущего блока или кандидатного блока. Например, когда ширина или высота второго кандидатного блока больше, чем 32, M может быть установлен равным 3, и в других случаях M может быть установлен равным 2.
В режиме предсказания, в котором режим слияния и режим предсказания вектора движения скомбинированы, первый блок предсказания генерируется с использованием информации о движении, полученной из кандидата на слияние, и второй блок предсказания генерируется с использованием вектора движения, полученного из кандидата предсказания вектора движения.
В режиме предсказания вектора движения кандидат предсказания вектора движения может быть получен из соседнего блока, смежного с текущим блоком, или совмещаемого блока в совмещаемом изображении. После этого любой из множества кандидатов предсказания вектора движения может быть указан, и указанный кандидат предсказания вектора движения может быть установлен в качестве предсказателя вектора движения текущего блока. После этого вектор движения текущего блока может быть получен путем сложения предсказателя вектора движения текущего блока и значения разности вектора движения.
В режиме предсказания, в котором режим слияния и режим предсказания вектора движения скомбинированы, кандидат на слияние и кандидат предсказания вектора движения могут быть получены из того же кандидатного блока. Например, когда кандидат на слияние указан посредством merge_idx, вектор движения кандидатного блока, используемого для получения указанного кандидата на слияние, может быть установлен в качестве предсказателя вектора движения. Альтернативно, когда кандидат предсказания вектора движения указан посредством mvp_flag, может быть выбран кандидат на слияние, полученный из кандидатного блока, используемого для получения указанного кандидата на слияние.
Альтернативно кандидатный блок, используемый для получения кандидата на слияние, и кандидатный блок, используемый для получения кандидата предсказания вектора движения, могут отличаться. Например, когда выбирается кандидат на слияние, полученный из кандидатного блока, расположенного сверху текущего блока, может быть установлено выбирать кандидата предсказания вектора движения, полученного из кандидатного блока, расположенного на левой стороне текущего блока.
Альтернативно, когда кандидат на слияние, выбранный посредством информации об индексах, и кандидат предсказания вектора движения, выбранный посредством информации об индексах, получены из того же кандидатного блока, кандидат предсказания вектора движения может быть заменен кандидатом предсказания вектора движения, полученным из соседнего кандидатного блока, смежного с кандидатным блоком, или кандидат на слияние может быть заменен кандидатом на слияние, полученным из кандидатного блока, смежного с кандидатным блоком.
На фиг. 41 представлен вид, показывающий пример, в котором кандидат на слияние заменяется.
В примере, показанном на фиг. 41 (a), показано, что выбираются кандидат на слияние и кандидат предсказания вектора движения, полученные из кандидатного блока в положении A2. Как показано на фигуре, когда кандидат на слияние и кандидат предсказания вектора движения получены из того же кандидатного блока, кандидат на слияние или кандидат предсказания вектора движения, полученные из кандидатного блока, смежного с кандидатным блоком, могут использоваться вместо кандидата на слияние или кандидата предсказания вектора движения. Например, как показано в примере на фиг. 41 (b), кандидат на слияние в положении A1 может использоваться вместо кандидата на слияние в положении A2.
Первый блок предсказания может быть получен на основании кандидата на слияние текущего блока, и второй блок предсказания может быть получен на основании кандидата предсказания вектора движения. После этого комбинированный блок предсказания может быть получен посредством операции взвешенного суммирования первого блока предсказания и второго блока предсказания. В этом случае значение взвешивания, применяемое ко второму блоку предсказания, сгенерированному с использованием режима предсказания вектора движения, может быть установлено как значение, которое больше, чем значение взвешивания, применяемое к первому блоку предсказания, сгенерированному с использованием режима слияния.
Полученное остаточное изображение может быть получено путем вычитания видео предсказания из первоначального видео. В этом случае, когда остаточное видео изменяется на частотную область, субъективное качество видео существенно не снижается, хотя высокочастотные компоненты удалены из частотных компонентов. Соответственно, когда значения высокочастотных компонентов конвертируются в небольшие или значения высокочастотных компонентов установлены равными 0, имеет место эффект увеличения эффективности сжатия без генерирования существенного визуального искажения. Отражая эту характеристику, текущий блок может быть преобразован для разложения остаточного видео на двумерные частотные компоненты. Преобразование может быть выполнено с использованием метода преобразования, такого как дискретное косинусное преобразование (DCT) или дискретное синусное преобразование (DST).
DCT раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием косинусного преобразования, а DST раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием синусного преобразования. В результате преобразования остаточного видео частотные компоненты могут быть выражены в виде базового видео. Например, когда преобразование DCT выполнено в отношении блока размером N×N, могут быть получены компоненты базовой схемы в количестве N2. Размер каждого из компонентов базовой схемы, включенных в блок размером N×N, может быть получен посредством преобразования. Согласно методу преобразования, используемому для этого, значение компонента базовой схемы может называться коэффициентом DCT или коэффициентом DST.
Метод преобразования DCT в основном используют для преобразования видео, в котором распределяют многие ненулевые низкочастотные компоненты. Метод преобразования DST в основном используют для видео, в которых распределяют многие высокочастотные компоненты.
Остаточное видео может быть преобразовано с использованием метода преобразования, отличного от DCT или DST.
Далее преобразование остаточного видео в двумерные частотные компоненты будет называться двумерным преобразованием видео. Кроме того, размер компонентов базовой схемы, полученный в результате преобразования, называется коэффициентом преобразования. Например, коэффициент преобразования может означать коэффициент DCT или коэффициент DST. Когда применены как первое преобразование, так и второе преобразование, описанные ниже, коэффициент преобразования может означать размер компонента базовой схемы, сгенерированного в результате второго преобразования.
Метод преобразования может быть определен для каждого блока. Метод преобразования может быть определен на основании по меньшей мере одного из режима кодирования с предсказанием текущего блока, формы текущего блока и размера текущего блока. Например, когда текущий блок кодируется в режиме внутреннего предсказания, а размер текущего блока меньше, чем N×N, преобразование может быть выполнено с использованием метода преобразования DST. С другой стороны, когда приведенные выше условия не удовлетворяются, преобразование может быть выполнено с использованием метода преобразования DCT.
Двумерное преобразование видео может не быть выполнено для некоторых блоков остаточного видео. Невыполнение двумерного преобразования видео может называться пропуском преобразования. Когда применен пропуск преобразования, квантование может быть применено к остаточным коэффициентам, которые не были преобразованы.
После преобразования текущего блока с использованием DCT или DST преобразованный текущий блок может быть преобразован повторно. В этом случае преобразование на основании DCT или DST может быть определено как первое преобразование, а повторное преобразование блока, к которому применено первое преобразование, может быть определено как второе преобразование.
Первое преобразование может быть выполнено с использованием любой из множества основ-кандидатов преобразования. Например, первое преобразование может быть выполнено с использованием любого из DCT2, DCT8 или DCT7.
Разные основы преобразования могут быть использованы для горизонтального направления и вертикального направления. Информация, указывающая комбинацию основы преобразования в горизонтальном направлении и основы преобразования в вертикальном направлении, может быть передана посредством битового потока.
Элементы для выполнения первого преобразования и второго преобразования могут быть разными. Например, первое преобразование может быть выполнено в отношении блока 8×8, а второе преобразование может быть выполнено в отношении подблока размером 4×4 из преобразованного блока 8×8. В этом случае коэффициенты преобразования остаточных участков, в отношении которых не было выполнено второе преобразование, могут быть установлены равными 0.
Альтернативно первое преобразование может быть выполнено в отношении блока 4×4, а второе преобразование может быть выполнено в отношении участка размером 8×8, содержащего преобразованный блок 4×4.
Информация, указывающая, было ли выполнено второе преобразование, может быть передана посредством битового потока.
Декодер может выполнять обратное преобразование второго преобразования (второе обратное преобразование) и может выполнять обратное преобразование первого преобразования (первое обратное преобразование) в отношении результата обратного преобразования. В результате выполнения второго обратного преобразования и первого обратного преобразования могут быть получены остаточные сигналы для текущего блока.
Квантование предназначено для уменьшения энергии блока, и процесс квантования включает процесс разделения коэффициента преобразования на конкретное постоянное значение. Постоянное значение может быть получено с помощью параметра квантования, и параметр квантования может быть определен как значение от 1 до 63.
Когда кодер выполняет преобразование и квантование, декодер может получать остаточный блок путем обратного квантования и обратного преобразования. Декодер может получать восстановленный блок для текущего блока путем сложения блока предсказания и остаточного блока.
Когда получают восстановленный блок текущего блока, потеря информации, происходящая в процессе квантования и кодирования, может быть уменьшена посредством фильтрования в контуре. Фильтр в контуре может включать по меньшей мере один из деблочного фильтра, фильтра адаптивного смещения отсчета (SAO) и адаптивного контурного фильтра (ALF). Далее восстановленный блок перед применением фильтра в контуре называется первым восстановленным блоком, а восстановленный блок после применения фильтра в контуре называется вторым восстановленным блоком.
Второй восстановленный блок может быть получен путем применения по меньшей мере одного из деблочного фильтра, SAO и ALF к первому восстановленному блоку. В этом случае SAO или ALF могут быть применены после применения деблочного фильтра.
Деблочный фильтр предназначен для уменьшения ухудшения качества видео (блочного артефакта) на границе блока, которое происходит при выполнении квантования в отношении отдельных блоков. Для применения деблочного фильтра может быть определен качественный показатель блока (BS) между первым восстановленным блоком и соседним восстановленным блоком.
На фиг. 42 представлена блок-схема, изображающая процесс определения качественного показателя блока.
В примере, показанном на фиг. 42, P обозначает первый восстановленный блок, а Q обозначает соседний восстановленный блок. В данном случае соседний восстановленный блок может представлять собой блок, смежный с левой стороной или верхней стороной текущего блока.
В примере, показанном на фиг. 42, показано, что качественный показатель блока определен с учетом режимов кодирования с предсказанием P и Q, того, включен ли ненулевой коэффициент преобразования, того, выполнено ли предсказание, осуществляемое между изображениями, с использованием того же опорного изображения, и того, является ли значение разницы векторов движения большим или равным пороговому значению.
Следует ли применять деблочный фильтр, можно определить на основании качественного показателя блока. Например, когда качественный показатель блока равен 0, фильтрование можно не выполнять.
SAO предназначен для уменьшения явления в виде колец (артефакта в виде колец), которое происходит при выполнении квантования в частотной области. SAO может быть выполнено путем добавления или вычитания смещения, определенного с учетом схемы первого восстановленного видео. Способ определения смещения включает смещение по краю (EO) или смещение по полосам (BO). EO обозначает способ определения смещения текущего отсчета согласно схеме окружающих пикселей. BO обозначает способ применения обычного смещения к набору пикселей, имеющих похожие значения яркости на участке. В частности, яркость пикселей может быть разделена на 32 равные секции, и пиксели, имеющие похожие значения яркости, могут быть установлены как один набор. Например, четыре смежные полосы из 32 полос могут быть установлены как одна группа, и одинаковое значение смещения может быть применено к отсчетам, принадлежащим к четырем полосам.
ALF представляет собой способ генерирования второго восстановленного видео путем применения фильтра, имеющего предварительно заданный размер/форму, к первому восстановленному видео или восстановленному видео, к которому был применен деблочный фильтр. В уравнении 35 показан пример применения ALF.
[Уравнение 35]
Любой из предварительно заданных фильтров-кандидатов может быть выбран элементом изображения, элементом кодового дерева, блоком кодирования, блоком предсказания или блоком преобразования. Каждый из фильтров-кандидатов может отличаться либо по размеру, либо по форме.
На фиг. 43 представлен вид, показывающий предварительно заданные фильтры-кандидаты.
Как показано в примере на фиг. 42, может быть выбрана по меньшей мере одна из ромбовидных форм 5×5, 7×7 и 9×9.
Только ромбовидная форма размером 5×5 может быть использована для компонента цветности.
Применение вариантов осуществления, описанных выше, сфокусированных на процессе декодирования или процессе кодирования, к процессу кодирования или процессу декодирования включено в объем настоящего изобретения. Изменение вариантов осуществления, описанных в предварительно определенном порядке, в порядке, отличающемся от описанного порядка, также включено в объем настоящего изобретения.
Хотя приведенные выше варианты осуществления были описаны на основании ряда этапов или блок-схем, это не ограничивает порядок выполнения во времени настоящего изобретения, и они могут быть выполнены одновременно или в другом порядке при необходимости. Кроме того, каждый из компонентов (например, элементы, модули и т.д.), составляющих структурную схему в вариантах осуществления, описанных выше, может быть реализован в виде аппаратного устройства или программного обеспечения, или множество компонентов могут быть скомбинированы для реализации в виде одного аппаратного устройства или программного обеспечения. Варианты осуществления, описанные выше, могут быть реализованы в форме программных команд, которые могут быть исполнены посредством различных компьютерных компонентов и записаны в машиночитаемом носителе данных. Машиночитаемый носитель данных может содержать программные команды, файлы данных, структуры данных и т.п. независимо или в комбинации. Машиночитаемый носитель данных включает, например, магнитные носители, такие как жесткий диск, гибкий диск и магнитную ленту, оптические носители данных, такие как CD-ROM и DVD, магнитно-оптические носители, такие как гибкий оптический диск, и аппаратные устройства, специально выполненные с возможностью хранения и исполнения программных команд, такие как ROM, RAM, флеш-память и т.п. Аппаратные устройства, описанные выше, могут быть выполнены с возможностью работы с использованием одного или более программных модулей для выполнения процесса согласно настоящему изобретению, и наоборот.
Промышленная применимость
Настоящее изобретение может быть применено к электронному устройству, которое кодирует и декодирует видео.
Claims (48)
1. Способ декодирования видео, включающий следующие этапы:
генерирование списка кандидатов на слияние для первого блока;
выбор одного из кандидатов на слияние, включенных в список кандидатов на слияние; и
выполнение компенсации движения для первого блока на основании информации о движении выбранного кандидата на слияние, при этом
кандидата на слияние между участками, включенного в список информации о движении между участками, добавляют в список кандидатов на слияние на основании количества пространственных кандидатов на слияние и временных кандидатов на слияние, включенных в список кандидатов на слияние, при этом
на основании результата определения того, является ли один кандидат на слияние между участками, включенный в список информации о движении между участками, таким же, как по меньшей мере один кандидат на слияние, включенный в список кандидатов на слияние, определяют, добавлять или нет одного кандидата на слияние между участками в список кандидатов на слияние, и
определение выполняют путем сравнения по меньшей мере одного кандидата на слияние, индексное значение которого меньше, чем пороговое значение, или равняется ему, с одним кандидатом на слияние между участками.
2. Способ по п. 1, отличающийся тем, что список информации о движении между участками содержит кандидата на слияние между участками, полученного на основании информации о движении блока, декодированного перед первым блоком.
3. Способ по п. 1, отличающийся тем, что, когда первый блок включен в область обработки слияния, временного кандидата на слияние, полученного на основании информации о движении первого блока, добавляют во временный список информации о движении, и когда декодирование всех блоков, включенных в область обработки слияния, завершается, временного кандидата на слияние обновляют в списке информации о движении между участками.
4. Способ по п. 1, отличающийся тем, что при определении того, что существует такой же кандидат на слияние, как один кандидат на слияние между участками, одного кандидата на слияние между участками не добавляют в список кандидатов на слияние, и на основании результата определения того, является ли другой кандидат на слияние между участками, включенный в список информации о движении между участками, таким же, как по меньшей мере один кандидат на слияние, включенный в список кандидатов на слияние, определяют, добавлять или нет другого кандидата на слияние между участками в список кандидатов на слияние, и определение того, является ли другой кандидат на слияние между участками таким же, как кандидат на слияние, который является таким же, как один кандидат на слияние между участками, не выполняют.
5. Способ по п. 1, отличающийся тем, что, когда кандидат на слияние между участками, являющийся таким же, как информация о движении первого блока, существует в списке кандидатов на слияние, индекс, присвоенный кандидату на слияние между участками в списке информации о движении между участками, обновляют до самого большого значения.
6. Способ по п. 1, отличающийся тем, что определение выполняют путем сравнения по меньшей мере одного кандидата на слияние, индексное значение которого больше, чем пороговое значение, с одним кандидатом на слияние между участками.
7. Способ по п. 1, отличающийся тем, что определение выполняют путем сравнения кандидата на слияние, полученного из блока в конкретном положении, с одним кандидатом на слияние между участками, при этом конкретное положение включает по меньшей мере один из верхнего правого соседнего блока или нижнего левого соседнего блока первого блока.
8. Способ по п. 1, отличающийся тем, что выполнение компенсации движения для первого блока включает:
выполнение предсказания с компенсацией движения для первого блока с использованием множества кандидатов на слияние.
9. Способ по п. 8, отличающийся тем, что
множество кандидатов на слияние содержит первого кандидата на слияние и второго кандидата на слияние, и при этом первый кандидат на слияние и второй кандидат на слияние включены в список кандидатов на слияние для первого блока;
первый блок предсказания генерируют с использованием первого кандидата на слияние, второй блок предсказания генерируют с использованием второго кандидата на слияние, и третий блок предсказания генерируют на основании первого блока предсказания и второго блока предсказания.
10. Способ по п. 9, отличающийся тем, что третий блок предсказания генерируют на основании операции взвешенного суммирования первого блока предсказания и второго блока предсказания.
11. Способ по п. 9, отличающийся тем, что информацию об индексах merge_idx первого кандидата на слияние и информацию об индексах merge_2nd_idx второго кандидата на слияние получают путем анализа битового потока.
12. Способ по п. 11, отличающийся тем, что когда значение информации об индексах merge_2nd_idx равняется значению информации об индексах merge_idx или больше него, значение индекса второго кандидата на слияние получают путем прибавления 1 к значению информации об индексах merge_2nd_idx.
13. Способ кодирования видео, включающий следующие этапы:
генерирование списка кандидатов на слияние для первого блока;
выбор одного из кандидатов на слияние, включенных в список кандидатов на слияние; и
выполнение компенсации движения для первого блока на основании информации о движении выбранного кандидата на слияние, при этом
кандидата на слияние между участками, включенного в список информации о движении между участками, добавляют в список кандидатов на слияние на основании количества пространственных кандидатов на слияние и временных кандидатов на слияние, включенных в список кандидатов на слияние, при этом
на основании результата определения того, является ли один кандидат на слияние между участками, включенный в список информации о движении между участками, таким же, как по меньшей мере один кандидат на слияние, включенный в список кандидатов на слияние, определяют, добавлять или нет одного кандидата на слияние между участками в список кандидатов на слияние, и
определение выполняют путем сравнения по меньшей мере одного кандидата на слияние, индексное значение которого меньше, чем пороговое значение, или равняется ему, с одним кандидатом на слияние между участками.
14. Способ по п. 13, отличающийся тем, что список информации о движении между участками содержит кандидата на слияние между участками, полученного на основании информации о движении блока, кодированного перед первым блоком.
15. Способ по п. 13, отличающийся тем, что, когда первый блок включен в область обработки слияния, временного кандидата на слияние, полученного на основании информации о движении первого блока, добавляют во временный список информации о движении, и когда кодирование всех блоков, включенных в область обработки слияния, завершается, временного кандидата на слияние обновляют в списке информации о движении между участками.
16. Способ по п. 13, отличающийся тем, что при определении того, что существует такой же кандидат на слияние, как один кандидат на слияние между участками, одного кандидата на слияние между участками не добавляют в список кандидатов на слияние, и на основании результата определения того, является ли другой кандидат на слияние между участками, включенный в список информации о движении между участками, таким же, как по меньшей мере один кандидат на слияние, включенный в список кандидатов на слияние, определяют, добавлять или нет другого кандидата на слияние между участками в список кандидатов на слияние, и определение того, является ли другой кандидат на слияние между участками таким же, как кандидат на слияние, который является таким же, как один кандидат на слияние между участками, не выполняют.
17. Способ по п. 13, отличающийся тем, что, когда кандидат на слияние между участками, являющийся таким же, как информация о движении первого блока, существует в списке кандидатов на слияние, индекс, присвоенный кандидату на слияние между участками в списке информации о движении между участками, обновляют до самого большого значения.
18. Способ по п. 13, отличающийся тем, что определение выполняют путем сравнения по меньшей мере одного кандидата на слияние, индексное значение которого больше, чем пороговое значение, с одним кандидатом на слияние между участками.
19. Способ по п. 13, отличающийся тем, что определение выполняют путем сравнения кандидата на слияние, полученного из блока в конкретном положении, с одним кандидатом на слияние между участками, при этом конкретное положение включает по меньшей мере один из верхнего правого соседнего блока или нижнего левого соседнего блока первого блока.
20. Способ по п. 13, отличающийся тем, что выполнение компенсации движения для первого блока включает:
выполнение предсказания с компенсацией движения для первого блока с использованием множества кандидатов на слияние.
21. Способ по п. 20, отличающийся тем, что
множество кандидатов на слияние содержит первого кандидата на слияние и второго кандидата на слияние, и при этом первый кандидат на слияние и второй кандидат на слияние включены в список кандидатов на слияние для первого блока;
первый блок предсказания генерируют с использованием первого кандидата на слияние, второй блок предсказания генерируют с использованием второго кандидата на слияние, и третий блок предсказания генерируют на основании первого блока предсказания и второго блока предсказания.
22. Способ по п. 21, отличающийся тем, что третий блок предсказания генерируют на основании операции взвешенного суммирования первого блока предсказания и второго блока предсказания.
23. Способ по п. 21, отличающийся тем, что информацию для указания информации об индексах merge_idx первого кандидата на слияние и информацию об индексах merge_2nd_idx второго кандидата на слияние передают посредством битового потока соответственно.
24. Способ по п. 23, отличающийся тем, что когда значение информации об индексах merge_2nd_idx равняется значению информации об индексах merge_idx или больше него, значение индекса второго кандидата на слияние получают путем прибавления 1 к значению информации об индексах merge_2nd_idx.
25. Устройство декодирования видео, содержащее запоминающее устройство и процессор, при этом
запоминающее устройство выполнено с возможностью хранения компьютерной программы, которая может запускаться на процессоре; и
процессор выполнен с возможностью запуска компьютерной программы для исполнения способа декодирования видео по любому из пп. 1–12.
26. Устройство кодирования видео, содержащее запоминающее устройство и процессор, при этом
запоминающее устройство выполнено с возможностью хранения компьютерной программы, которая может запускаться на процессоре; и
процессор выполнен с возможностью запуска компьютерной программы для исполнения способа кодирования видео по любому из пп. 13–24.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0114349 | 2018-09-21 | ||
KR10-2018-0114348 | 2018-09-21 | ||
KR10-2018-0148858 | 2018-11-27 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2023120688A Division RU2808720C2 (ru) | 2018-09-21 | 2019-09-20 | Способ и устройство для кодирования/декодирования сигналов изображений |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2021111108A RU2021111108A (ru) | 2022-10-21 |
RU2801863C2 true RU2801863C2 (ru) | 2023-08-17 |
Family
ID=
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130101042A1 (en) * | 2011-10-19 | 2013-04-25 | Panasonic Corporation | Picture coding method, picture coding apparatus, picture decoding method, and picture decoding apparatus |
RU2577779C2 (ru) * | 2011-11-07 | 2016-03-20 | Квэлкомм Инкорпорейтед | Генерирование дополнительных кандидатов для слияния |
WO2017069505A1 (ko) * | 2015-10-19 | 2017-04-27 | 엘지전자(주) | 영상의 부호화/복호화 방법 및 이를 위한 장치 |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130101042A1 (en) * | 2011-10-19 | 2013-04-25 | Panasonic Corporation | Picture coding method, picture coding apparatus, picture decoding method, and picture decoding apparatus |
RU2577779C2 (ru) * | 2011-11-07 | 2016-03-20 | Квэлкомм Инкорпорейтед | Генерирование дополнительных кандидатов для слияния |
WO2017069505A1 (ko) * | 2015-10-19 | 2017-04-27 | 엘지전자(주) | 영상의 부호화/복호화 방법 및 이를 위한 장치 |
Non-Patent Citations (1)
Title |
---|
Li Zhang, CE4-related: History-based Motion Vector Prediction, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 11th Meeting: Ljubljana, SI, 10-18 July 2018, [Найдено 07.02.2023] в Интернете URL http://phenix.int-evry.fr/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K0104-v1.zip, 03.07.2018, 5 с. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210306654A1 (en) | Method for encoding/decoding image signal, and device therefor | |
US11750833B2 (en) | Video signal encoding and decoding method, and apparatus therefor | |
US11825085B2 (en) | Method for encoding/decoding image signal and device therefor | |
CN113507603B (zh) | 图像信号编码/解码方法及其设备 | |
RU2801863C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2828008C1 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2808720C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2799079C2 (ru) | Способ и устройство кодирования/декодирования сигналов изображений | |
RU2819286C2 (ru) | Способ и устройство кодирования/декодирования сигналов изображений | |
RU2819393C2 (ru) | Способ и устройство кодирования/декодирования сигналов изображений | |
RU2819080C2 (ru) | Способ и устройство кодирования/декодирования сигналов изображений | |
RU2799588C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2806152C2 (ru) | Способ и устройство для кодирования/декодирования сигнала изображения | |
RU2824092C1 (ru) | Способ и устройство для кодирования и декодирования видеосигналов | |
RU2812857C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2809582C2 (ru) | Способ и устройство для кодирования и декодирования видеосигналов | |
RU2810054C2 (ru) | Способ и устройство для кодирования и декодирования видеосигналов | |
RU2824448C1 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений | |
RU2802731C2 (ru) | Способ и устройство для кодирования и декодирования видеосигналов | |
RU2809324C2 (ru) | Способ и устройство для кодирования и декодирования видеосигналов | |
RU2813667C2 (ru) | Способ и устройство для кодирования и декодирования видеосигналов | |
RU2800133C2 (ru) | Способ и устройство для кодирования/декодирования сигналов изображений |