Устройство кодирования видео, способ кодирования видео, программа кодирования видео, устройство декодирования видео, способ декодирования видео и программа декодирования видео

Изобретение относится к способам кодирования и декодирования изображений, в которых изображение разделяется на блоки и выполняется предсказание. Техническим результатом является уменьшение вычислительной нагрузки и повышение эффективности кодирования. Результат достигается тем, что представленное решение включает в себя конструктор списка кандидатов слияния, который выполнен с возможностью формирования списка кандидатов слияния, включающего в себя кандидатов пространственного слияния, и селектор кандидатов слияния треугольников, который выбирает, из списка кандидатов слияния, первого кандидата слияния первого треугольника, который является однонаправленным предсказанием, и второго кандидата слияния треугольников, который является однонаправленным предсказанием, при этом селектор кандидатов слияния треугольников получает кандидата с информацией о движении с однонаправленным предсказанием, имеющего одинаковый приоритет в первом кандидате слияния треугольников и втором кандидате слияния треугольников, причем селектор кандидатов слияния треугольников выполнен с возможностью получения первого кандидата слияния треугольников и второго кандидата слияния треугольников с тем же приоритетом, что и у кандидата нормального слияния. 4 н.п. ф-лы, 53 ил.

 

Уровень техники

Настоящее изобретение относится к способам кодирования и декодирования изображений, в которых изображение разделяется на блоки и выполняется предсказание.

При кодировании и декодировании изображения целевое изображение разделяется на блоки, каждый из которых является группой из заданного количества выборок, и обработка выполняется в блоках блоков. Разделение изображения на соответствующие блоки с соответствующими установками внутрикадрового предсказания и межкадрового предсказания позволяет повысить эффективность кодирования.

При кодировании/декодировании движущегося изображения используется межкадровое предсказание, которое выполняет предсказание из кодированного/декодированного изображения, тем самым, повышая эффективность кодирования. Патентный документ 1 описывает технологию применения аффинного преобразования во время межкадрового предсказания. Движущиеся изображения часто имеют искажения формы объекта, такие как увеличение/уменьшение или поворот и, таким образом, применение технологии в патентном документе 1 обеспечивает эффективное кодирование.

[Патентный документ 1] JP 9–172644 A.

Раскрытие сущности изобретения

Однако, к сожалению, технология согласно патентному документу 1 предусматривает выполнение процесса преобразования изображения, что приводит к большой нагрузке при обработке. Настоящее изобретение было предложено с учетом вышеупомянутой технической задачи и обеспечивает низкую нагрузку и эффективный способ кодирования.

В одном аспекте настоящего изобретения для решения вышеупомянутой технической задачи предложено техническое решение, которое включает в себя: конструктор списка кандидатов слияния, который формирует список кандидатов слияния, включающий в себя кандидатов пространственного слияния; селектор кандидатов слияния треугольников, который выбирает, из списка кандидатов слияния, первого кандидата слияния, который является однонаправленным предсказанием; и второго кандидата слияния треугольников, который является однонаправленным предсказанием, при этом селектор кандидатов слияния треугольников получает кандидата с информацией о движении с однонаправленным предсказанием, имеющего одинаковый приоритет в первом кандидате слияния треугольников и втором кандидате слияния треугольников.

Согласно настоящему изобретению предложен высокоэффективный процесс кодирования/декодирования изображений с низкой нагрузкой.

Краткое описание чертежей

Фиг. 1 – блок-схема устройства кодирования изображений согласно варианту осуществления настоящего изобретения.

Фиг. 2 – блок-схема устройства декодирования изображения согласно варианту осуществления настоящего изобретения.

Фиг. 3 – блок-схема алгоритма, иллюстрирующая операцию разделения блока дерева.

Фиг. 4 – схема, иллюстрирующая состояние разделения входного изображения на блоки дерева.

Фиг. 5 – схема, иллюстрирующая z-сканирование.

Фиг. 6A – схема, иллюстрирующая форму разделенного блока.

Фиг. 6B – схема, иллюстрирующая форму разделенного блока.

Фиг. 6C – схема, иллюстрирующая форму разделенного блока.

Фиг. 6D – схема, иллюстрирующая форму разделенного блока.

Фиг. 6E – схема, иллюстрирующая форму разделенного блока.

Фиг. 7 – блок-схема алгоритма, иллюстрирующая операцию разделения блока на четыре.

Фиг. 8 – блок-схема алгоритма, иллюстрирующая операцию разделения блока на два или три.

Фиг. 9 – синтаксис для выражения формы разделения блока.

Фиг. 10A – схема, иллюстрирующая внутрикадровое предсказание.

Фиг. 10B – схема, иллюстрирующая внутрикадровое предсказание.

Фиг. 11 – схема, иллюстрирующая опорные блоки для межкадрового предсказания.

Фиг. 12 – синтаксис для выражения режима предсказания блока кодирования.

Фиг. 13 – таблица, иллюстрирующая соответствие между элементами синтаксиса и режимами, которые относятся к межкадровому предсказанию.

Фиг. 14 – схема, иллюстрирующая компенсацию аффинного движения в двух контрольных точках.

Фиг. 15 – схема, иллюстрирующая компенсацию аффинного движения в трех контрольных точках.

Фиг. 16 – блок-схема подробной конфигурации блока 102 межкадрового предсказания (фиг. 1).

Фиг. 17 – блок-схема подробной конфигурации блока 301 получения режима предиктора нормального вектора движения (фиг. 16).

Фиг. 18 – блок-схема подробной конфигурации блока 302 получения режима нормального слияния (фиг. 16).

Фиг. 19 – блок-схема алгоритма, иллюстрирующая процесс получения режима предиктора нормального вектора движения блока 301 получения режима предиктора нормального вектора движения (фиг. 16).

Фиг. 20 – блок-схема алгоритма, иллюстрирующая процедуру обработки процесса получения режима предиктора нормального вектора движения.

Фиг. 21 – блок-схема алгоритма, иллюстрирующая процедуру обработки нормального процесса получения режима слияния.

Фиг. 22 – блок-схема подробной конфигурации блока 203 межкадрового предсказания (фиг. 2).

Фиг. 23 – блок-схема подробной конфигурации блока 401 получения режима предиктора нормального вектора движения (фиг. 22).

Фиг. 24 – блок-схема подробной конфигурации блока 402 получения режима нормального слияния (фиг. 22).

Фиг. 25 – блок-схема алгоритма, иллюстрирующая процесс получения режима предиктора нормального вектора движения блока 401 получения режима предиктора нормального вектора движения (фиг. 22).

Фиг. 26 – блок-схема алгоритма, иллюстрирующая процедуру обработки инициализации/обновления списка кандидатов предикторов вектора движения на основании истории.

Фиг. 27 – блок-схема алгоритма процедуры обработки подтверждения идентичного элемента в процедуре обработки инициализации/обновления списка кандидатов предикторов вектора движения на основании истории.

Фиг. 28 – блок-схема алгоритма процедуры обработки сдвига элемента в процедуре обработки инициализации/обновления списка кандидатов предикторов вектора движения на основании истории.

Фиг. 29 – блок-схема алгоритма, иллюстрирующая процедуру обработки получения кандидата предиктора вектора движения на основании истории.

Фиг. 30 – блок-схема алгоритма, иллюстрирующая процедуру обработки получения кандидатов слияния на основании истории.

Фиг. 31A – схема, иллюстрирующая пример процесса обновления списка кандидатов предиктора вектора движения на основании истории.

Фиг. 31B – схема, иллюстрирующая пример процесса обновления списка кандидатов предиктора вектора движения на основании истории.

Фиг. 31C – схема, иллюстрирующая процесса обновления списка кандидатов предиктора вектора движения на основании истории.

Фиг. 32 – схема, иллюстрирующая предсказание компенсации движения в случае, когда выполняется предсказание L0 и опорное изображение (RefL0Pic) L0 происходит в момент перед целевым изображением (CurPic).

Фиг. 33 – схема, иллюстрирующая предсказание с компенсацией движения в случае, когда выполняется предсказание L0 и опорное изображение предсказания L0 происходит в момент после целевого изображения.

Фиг. 34 – схема, иллюстрирующая направление предсказания компенсации движения в двунаправленном предсказании, в котором L0 предсказание опорного изображения происходит в момент перед целевым изображением и L1 предсказание опорного изображения происходит в момент после целевого изображения.

Фиг. 35 – схема, иллюстрирующая направление предсказания компенсации движения в двунаправленном предсказании, в котором L0 предсказание опорного изображения и L1 предсказание опорного изображения происходит в момент до целевого кадра.

Фиг. 36 – схема, иллюстрирующая направление предсказания компенсации движения в двунаправленном предсказании, в котором L0 предсказание опорного изображения и L1 предсказание опорного изображения происходит в момент, после целевого изображения.

Фиг. 37 – блок-схема, иллюстрирующая пример конфигурации аппаратных средств устройства для кодирования-декодирования согласно варианту осуществления настоящего изобретения.

Фиг. 38 – таблица, иллюстрирующая предсказание режима слияния треугольников.

Фиг. 39 – блок-схема алгоритма, иллюстрирующая получение кандидата слияния треугольников.

Фиг. 40 – блок-схема алгоритма, иллюстрирующая получение информации движения однонаправленного предсказания для разделения треугольника слияния.

Фиг. 41A – таблица, иллюстрирующая индекс треугольника слияния и разделение треугольника слияния.

Фиг. 41B – таблица, иллюстрирующая индекс треугольника слияния и разделение треугольника слияния.

Фиг. 42 – блок-схема алгоритма, иллюстрирующая процедуру обработки получения кандидата усредненного слияния.

Фиг. 43 – блок-схема алгоритма, иллюстрирующая получение информации движения однонаправленного предсказания при разделении треугольника слияния согласно второму варианту осуществления.

Осуществление изобретения

Прежде всего, будет описаны определения технологии и технические термины, используемые в настоящем варианте осуществления.

Блок дерева

В варианте осуществления целевое изображение процесса кодирования/декодирования (processing target picture) одинаково разделяется на заданный размер. Этот блок определяется как блок дерева. В то время, как на фиг. 4 размер блока дерева устанавливается равным 128×128 выборок, размер блока дерева этим не ограничивается и может быть установлен любой размер. Блок целевого дерева (соответствующий цели кодирования в процессе кодирования и цели декодирования в процессе декодирования) переключается в порядке растрового сканирования, то есть, в порядке слева направо и сверху вниз. Внутренняя часть каждого блока дерева может быть дополнительно рекурсивно разделена. Блок кодирования/декодирования в результате рекурсивного разделения блока дерева определяется как блок кодирования. Блок дерева и блок кодирования вместе определяются как блок. Выполнение соответствующего разделения блока обеспечивает эффективное кодирование. Размер блока дерева может быть фиксированным значением, заранее определенным устройством для кодирования и устройством для декодирования, или можно принять конфигурацию, в которой размер блока дерева, определенный устройством для кодирования, передается в устройство для декодирования. Здесь максимальный размер блока дерева составляет 128×128 выборок и минимальный размер блока дерева равен 16×16 выборок. Максимальный размер блока кодирования составляет 64×64 выборки и минимальный размер блока кодирования равен 4×4 выборки.

Режим предсказания

Между внутрикадровым предсказанием (MODE_INTRA) для выполнения предсказания из сигнала, обработанного изображения целевого изображения, и межкадровым предсказанием (MODE_INTER) для выполнения предсказания из сигнала изображения обработанного изображения в блоках целевых блоков кодирования выполняется переключение.

В процессе кодирования используется обработанное изображение для изображения, полученного посредством декодирования кодированного сигнала, сигнала изображения, блока дерева, блока, блока кодирования и т.п. В процессе декодирования используется обработанное изображение для декодированного изображения, сигнала изображения, блока дерева, блока, блока кодирования и т.п.

Режим идентификации внутрикадрового предсказания (MODE_INTRA) и межкадрового предсказания (MODE_INTER) определяется как режим предсказания (PredMode). В качестве значения режим предсказания (PredMode) имеет внутрикадровое предсказание (MODE_INTRA) или межкадровое предсказание (MODE_INTER).

Межкадровое предсказание

При межкадровом предсказании, в котором предсказание выполняется из сигнала изображения обработанного изображения, можно использовать множество обработанных изображений в качестве опорных изображений. Для управления множеством опорных изображений, определены два типа справочных списков L0 (справочный список 0) и L1 (справочный список 1). В каждом из списков опорное изображение указывается с использованием опорного индекса. В P-сегменте можно использовать L0 предсказание (Pred_L0). В B-сегменте можно использовать L0 предсказание (Pred_L0), L1 предсказание (Pred_L1) и двунаправленное предсказание (Pred_BI). L0 предсказание (Pred_L0) является межкадровым предсказанием, которое относится к опорному изображению, управляемому L0, в то время, как L1 предсказание (Pred_L1) является межкадровым предсказанием, которое относится к опорному изображению, управляемому с помощью L1. Двунаправленное предсказание (Pred_BI) является межкадровым предсказанием, в котором выполняются как L0 предсказание и L1 предсказание и ссылается на одно опорное изображение, управляемое в каждом из L0 и L1. Информация, определяющая L0 предсказание, L1 предсказание и двунаправленное предсказание, определяется как режим межкадрового предсказания. В следующем процессе обработки предполагается, что обработка будет выполняться для каждого из L0 и L1 для постоянных и переменных в выходных данных суффикса LX.

Режим предиктора вектора движения

Режим предиктора вектора движения является режимом передачи индекса для указания предиктора вектора движения, разности вектора движения, режима межкадрового предсказания и опорного индекса, и определения информации межкадрового предсказания целевого блока. Предиктор вектора движения получают из кандидата предиктора вектора движения, полученного из обработанного блока в соседнем целевом блоке или блоке, принадлежащем обработанному изображению, и расположенном в той же позиции или в окрестности (vicinity) целевого блока, и из индекса для указания предиктора вектора движения.

Режим слияния

Режим слияния является режимом, который извлекает информацию межкадрового предсказания целевого блока из информации межкадрового предсказания обработанного блока в соседнем блоке целевого блока или блока, принадлежащего обработанному изображению и расположенного на той же позиции, что и целевой блок или в окрестностях целевого блока, без передачи разности вектора движения или опорного индекса.

Обработанный блок в соседнем блоке целевого блока и информация межкадрового предсказания обработанного блока определены как кандидаты пространственного слияния. Блоки, принадлежащие обработанному изображению и расположенные на той же позиции, что и целевой блок, или в окрестности (vicinity) целевого блока, и информация межкадрового предсказания, полученная из информации межкадрового предсказания блока, определяются как кандидаты временного слияния. Каждый из кандидатов слияния регистрируется в списке кандидатов слияния. Кандидат слияния, который будет использоваться для предсказания целевого блока, определяется индексом слияния.

Соседний блок

На фиг. 11 показана схема, иллюстрирующая опорные блоки, на которые следует ссылаться для получения информации межкадрового предсказания в режиме предиктора вектора движения и режиме слияния. A0, A1, A2, B0, B1, B2 и B3 представляют собой обрабатываемые блоки в соседнем блоке целевого блока. T0 является блоком, принадлежащим обрабатываемому изображению и расположенным на той же позиции, что и целевой блок, или в окрестности (vicinity) целевого блока в целевом изображении.

A1 и A2 являются блоками, расположенными слева от целевого блока кодирования и рядом с целевым блоком кодирования. B1 и B3 являются блоками, расположенными над целевым блоком кодирования и рядом с целевым блоком кодирования. A0, B0 и B2 являются блоками, расположенными соответственно в нижнем левом, верхнем правом и верхнем левом углу целевого блока кодирования.

Далее приведено подробное описание процесса обработки соседних блоков в режиме предиктора вектора движения и режиме слияния.

Компенсация аффинного движения

Компенсация аффинного движения сначала разбивает блок кодирования на подблоки заданного блока, и затем индивидуально определяет вектор движения для каждого из разделенных подблоков для выполнения компенсации движения. Вектор движения каждого из подблоков получают на основании одной или нескольких контрольных точек, полученных из информации межкадрового предсказания обработанного блока в соседнем блоке целевого блока или блока, принадлежащего обработанному изображению и расположенного на той же позиции, что или в окрестности (vicinity) целевого блока. В то время, как настоящий вариант осуществления устанавливает размер подблока равным 4×4 выборки, размер подблока этим не ограничивается, и вектор движения может быть получен в блоках выборок.

На фиг. 14 показан пример компенсации аффинного движения в случае наличия двух контрольных точек. В этом случае каждая из двух контрольных точек имеет два параметра, то есть, горизонтальную составляющую и вертикальную составляющую. Соответственно, аффинное преобразование, имеющее две контрольные точки, называется аффинным преобразованием с четырьмя параметрами. На фиг. 14 CP1 и CP2 являются контрольными точками.

На фиг. 15 показан пример компенсации аффинного движения в случае трех контрольных точек. В этом случае каждая из трех контрольных точек имеет два параметра, то есть, горизонтальную составляющую и вертикальную составляющую. Соответственно, аффинное преобразование, имеющее три контрольные точки, называется аффинным преобразованием с шестью параметрами. На фиг. 15 CP1, CP2 и CP3 являются контрольными точками.

Компенсация аффинного движения может использоваться в любом из режима предиктора вектора движения и режима слияния. Режим применения компенсации аффинного движения в режиме предиктора вектора движения определяется как режим предиктора вектора движения подблока. Режим применения компенсации аффинного движения в режиме слияния определяется как режим слияния подблоков.

Синтаксис блока кодирования

Фиг. 12(a), фиг. 12(b) и фиг. 13 иллюстрируют синтаксис для выражения режима предсказания блока кодирования. На фиг. 12(a) pred_mode_flag является флагом, указывающим режим межкадрового предсказания. Установка pred_mode_flag 0 указывает на межкадровое предсказание и установка pred_mode_flag 1 указывает на внутрикадровое предсказание. Информация внутрикадрового предсказания intra_pred_mode передается в случае внутрикадрового предсказания, в то время как merge_flag передается в случае межкадрового предсказания. merge_flag является флагом, указывающим, является ли используемый режим режимом слияния или режимом предиктора вектора движения. В случае режима предиктора вектора движения (merge_flag = 0) передается флаг inter_affine_flag, указывающий, применять ли режим предиктора вектора движения подблока. В случае применения режима предсказания вектора движения подблока (inter_affine_flag = 1) передается cu_affine_type_flag. cu_affine_type_flag является флагом для определения количества контрольных точек в режиме предиктора вектора движения подблока.

Напротив, как показано на фиг. 12(b), в случае режима слияния (merge_flag = 1) передается merge_subblock_flag. merge_subblock_flag является флагом, указывающим, применять ли режим слияния подблоков. В случае режима слияния подблоков (merge_subblock_flag = 1) передается индекс слияния merge_subblock_idx. Наоборот, в случае, когда режим не является режимом слияния подблоков (merge_subblock_flag = 0), передается флаг merge_triangle_flag, указывающий, применять ли режим слияния треугольника. В случае применения режима слияния треугольников (merge_triangle_flag = 1) передаются индексы merge_triangle_idx0 и merge_triangle_idx1 слияния треугольников для каждого из направлений разделения блоков merge_triangle_split_dir и для каждого из двух разделенных разделов. В случае неприменения режима слияния треугольников (merge_triangle_flag = 0) передается индекс merge_idx слияния.

На фиг. 13 показано значение каждого из элементов синтаксиса и соответствующий режим предсказания. merge_flag = 0 и inter_affine_flag = 0 соответствуют нормальному режиму предиктора вектора движения (Inter Pred Mode). merge_flag = 0 и inter_affine_flag = 1 соответствуют режиму предиктора вектора движения подблока (межаффинный режим). merge_flag = 1, merge_subblock_flag = 0 и merge_trianlge_flag = 0 соответствуют нормальному режиму слияния (Merge Mode). merge_flag = 1, merge_subblock_flag = 0 и merge_trianlge_flag = 1 соответствуют режиму слияния треугольников (Triangle Merge Mode). merge_flag = 1, merge_subblock_flag = 1 соответствуют режиму слияния подблоков (Affine Merge Mode).

POC

Счетчик очередности изображений (POC) является переменной, ассоциированной с кодируемым изображением, и устанавливается на значение, которое увеличивается на единицу в соответствии с порядком вывода изображений. Значение POC позволяет различать, являются ли изображения одинаковыми, различать последовательную взаимосвязь внешних изображений в порядке вывода или получать расстояние между изображениями. Например, можно определить, что два изображения, имеющие одинаковое значение POC, являются идентичными изображениями. В случае, когда POCs двух изображений имеют разные значения, изображение с меньшим значением POC может быть определено как изображение, которое выводится раньше. Разница между POCs двух изображений указывает расстояние между изображениями в направлении оси времени.

Первый вариант осуществления

Далее будет приведено описание устройства 100 для кодирования изображения и устройства 200 для декодирования изображения согласно первому варианту осуществления настоящего изобретения.

На фиг. 1 показана блок-схема устройства 100 для кодирования изображений согласно первому варианту осуществления. Устройство 100 для кодирования изображений согласно варианту осуществления включает в себя блок 101 разделения блока, блок 102 межкадрового предсказания, блок 103 внутрикадрового предсказания, память 104 декодированных изображений, определитель 105 способа предсказания, блок 106 генерирования остатка, ортогональный преобразователь/квантователь 107, блок 108 кодирования битовой строки, обратный квантователь/обратный ортогональный преобразователь 109, блок 110 наложения сигнала декодированного изображения и память 111 хранения информации кодирования.

Блок 101 разделения блока рекурсивно разделяет входное изображение для построения блока кодирования. Блок 101 разделения блока включает в себя: блок четвертичного разделения, который разделяет целевой блок разделения как в горизонтальном направлении, так и в вертикальном направлении; и блок двоично-троичного разделения, который разделяет целевой блок разделения либо в горизонтальном направлении, либо в вертикальном направлении. Блок 101 разделения блока устанавливает построенный блок кодирования в качестве целевого блока кодирования и подает сигнал изображения целевого блока кодирования в блок 102 межкадрового предсказания, блок 103 внутрикадрового предсказания и блок 106 генерирования остатка. Дополнительно, блок 101 разделения блока поставляет информацию, указывающую определенную рекурсивную структуру разделения, в блок 108 кодирования битовой строки. Далее приводиться подробная информация функционирования блока 101 разделения блока.

Блок 102 межкадрового предсказания выполняет межкадровое предсказание целевого блока кодирования. Блок 102 межкадрового предсказания выводит множество кандидатов информации межкадрового предсказания из информации межкадрового предсказания, хранящейся в памяти 111 для хранения информации кодирования, и сигнала декодированного изображения, хранящегося в памяти 104 декодированных изображений, выбирает подходящий режим межкадрового предсказания из множества полученных кандидатов, и поставляет выбранный режим межкадрового предсказания и сигнал предсказанного изображения, соответствующий выбранному режиму межкадрового предсказания, в определитель 105 способа предсказания. Далее будет приведена подробная конфигурация и функционирования блока 102 межкадрового предсказания.

Блок 103 внутрикадрового предсказания выполняет внутрикадровое предсказание для целевого блока кодирования. Блок 103 внутрикадрового предсказания обращается к сигналу декодированного изображения, хранящемуся в памяти 104 декодированных изображений, в качестве опорной выборки и выполняет внутрикадровое предсказание на основании информации кодирования, такой как режим внутрикадрового предсказания, сохраненной в памяти 111 хранения информации кодирования и, тем самым, генерирует предсказанный сигнал изображения. При внутрикадровом предсказании, блок 103 внутрикадрового предсказания выбирает подходящий режим внутрикадрового предсказания из множества режимов внутрикадрового предсказания и поставляет выбранный режим внутрикадрового предсказания и выбранный сигнал предсказанного изображения, соответствующий выбранному режиму внутрикадрового предсказания, в определитель 105 способа предсказания.

На фиг. 10A и фиг. 10B показаны примеры внутрикадрового предсказания. Фиг. 10A иллюстрирует соответствие между направлением предсказания внутрикадрового предсказания и номером режима внутрикадрового предсказания. Например, режим 50 внутрикадрового предсказания копирует опорные выборки в вертикальном направлении и, тем самым, формирует изображение внутрикадрового предсказания. Режим 1 внутрикадрового предсказания является DC режимом, в котором установлены все значения выборок целевого блока на среднее значение опорных выборок. Режим 0 внутрикадрового предсказания является планарным режимом, в котором формируется изображение двумерного внутрикадрового предсказания из опорных выборок в вертикальном и горизонтальном направлениях. Фиг. 10B представляет собой пример построения изображения внутрикадрового предсказания в случае режима 40 внутрикадрового предсказания. Блок 103 внутрикадрового предсказания копирует для каждой из выборок целевого блока значение опорной выборки в направлении, указанном режим внутрикадрового предсказания. В случае, когда опорная выборка в режиме внутрикадрового предсказания не находится на целочисленной позиции, блок 103 внутрикадрового предсказания определяет значение опорной выборки путем интерполяции из значений опорной выборки на соседних целочисленных позициях.

Память 104 декодированных изображений хранит декодированные изображения, сформированные блоком 110 наложения сигнала декодированных изображений. Память 104 декодированных изображений подает сохраненные декодированные изображения в блок 102 межкадрового предсказания и блок 103 внутрикадрового предсказания.

Определитель 105 способа предсказания оценивает каждое из внутрикадрового предсказания и межкадрового предсказания, используя информацию кодирования, величину кода остатка, величину искажения между предсказанным сигналом изображения и сигналом целевого изображения или т.п., и, таким образом, определяет оптимальный режим предсказания. В случае внутрикадрового предсказания определитель 105 способа предсказания поставляет информацию внутрикадрового предсказания, такую как режим внутрикадрового предсказания, в блок 108 кодирования битовой строки в качестве информации кодирования. В случае режима слияния межкадрового предсказания определитель 105 способа предсказания предоставляет информацию межкадрового предсказания, такую как индекс слияния и информацию (флаг слияния подблоков), указывающую, является ли режим режимом слияния подблоков, в блок 108 кодирования битовой строки, как информацию кодирования. В случае режима предиктора вектора движения межкадрового предсказания определитель 105 способа предсказания поставляет информацию межкадрового предсказания, такую как режим межкадрового предсказания, индекс предиктора вектора движения, опорный индекс L0 или L1, разность векторов движения или информацию, указывающую, является ли режим режимом предиктора вектора движения подблока (флаг предиктора вектора движения подблока) в блок 108 кодирования битовой строки в качестве информации кодирования. Определитель 105 способа предсказания дополнительно поставляет определенную информацию кодирования в память 111 хранения информации кодирования. Определитель 105 способа предсказания поставляет сигнал предсказанного изображения в блок 106 генерирования остатка и блок 110 наложения сигнала декодированного изображения.

Блок 106 генерирования остатка формирует остаток путем вычитания сигнала предсказанного изображения из сигнала целевого изображения и поставляет сформированный остаток в ортогональный преобразователь/квантователь 107.

Ортогональный преобразователь/квантователь 107 выполняет ортогональное преобразование и квантование остатка в соответствии с параметром квантования и, тем самым, формирует ортогонально преобразованный и квантованный остаток, и затем поставляет сформированный остаток в блок 108 кодирования битовой строки и обратный квантователь/обратный ортогональный преобразователь 109.

Блок 108 кодирования битовой строки кодирует, в дополнение к последовательностям, изображения, сегменты и информацию в блоках блоков кодирования, блок 108 кодирования битовой строки кодирует информацию кодирования, соответствующую способу предсказания, определенному определителем 105 способа предсказания. для каждого из блоков кодирования. В частности, блок 108 кодирования битовой строки кодирует режим предсказания PredMode для каждого из блоков кодирования. В случае, когда режимом предсказания является межкадровое предсказание (MODE_INTER), блок 108 кодирования битовой строки кодирует информацию кодирования (информацию межкадрового предсказания), такую как флаг, для определения, является ли режим режимом слияния, флаг слияния подблоков, индекс слияния в режиме слияния, режим межкадрового предсказания в режимах без слияния, индекс предиктора вектора движения, информацию, относящуюся к разности векторов движения, и флаг предиктора вектора движения подблока на основании предписанного синтаксиса (правила синтаксиса битовой строки) и, тем самым, формирует первую битовую строку. В случае, когда режимом предсказания является внутрикадровое предсказание (MODE_INTRA), информация кодирования (информация внутрикадрового предсказания), такая как режим внутрикадрового предсказания, кодируется в соответствии с предписанным синтаксисом (правилами синтаксиса битовой строки) для формирования первой битовой строки. Дополнительно, блок 108 кодирования битовой строки выполняет энтропийное кодирование ортогонально преобразованного и квантованного остатка на основании предписанного синтаксиса и, таким образом, формирует вторую битовую строку. Блок 108 кодирования битовой строки мультиплексирует первую битовую строку и вторую битовую строку на основании предписанного синтаксиса и выводит битовый поток.

Обратный квантователь/обратный ортогональный преобразователь 109 выполняет обратное квантование и обратное ортогональное преобразование ортогонально преобразованного/квантованного остатка, подаваемого из ортогонального преобразователя/квантователя 107 и, таким образом, вычисляет остаток и затем подает вычисленный остаток в блок 110 наложения сигнала декодированных изображений.

Блок 110 наложения сигнала декодированного изображения накладывает сигнал предсказанного изображения в соответствии с определением определителя 105 способа предсказания с остатком, который подвергается обратному квантованию/обратному ортогональному преобразованию с помощью обратного квантователя/обратного ортогонального преобразователя 109, тем самым, формируя декодированное изображение, и сохраняет сформированное декодированное изображение в памяти 104 декодированных изображений. Блок 110 наложения сигнала декодированного изображения может выполнять обработку фильтрации для уменьшения искажения, такого как блочное искажение, из-за кодирования декодированного изображения, и может после этого сохранять декодированное изображение в памяти 104 декодированных изображений.

Память 111 хранения информации кодирования хранит информацию кодирования, такую как режим предсказания (межкадровое предсказание или внутрикадровое предсказание), определенный определителем 105 способа предсказания. В случае межкадрового предсказания информация кодирования сохраняется в памяти 111 хранения информации кодирования, которая включает в себя информацию межкадрового предсказания, такую как определенный вектор движения, опорные индексы справочных списков L0 и L1 и список кандидатов предиктора вектора движения на основании истории. В случае режима слияния с межкадровым предсказанием информация кодирования, хранящаяся в памяти 111 хранения информации кодирования, включает в себя, в дополнение к вышеописанной информации, индекс слияния и информацию межкадрового предсказания, включающую в себя информацию, указывающую, является ли режим режимом слияния подблоков. (флаг слияния подблоков). В случае режима предиктора вектора движения межкадрового предсказания информация кодирования, хранимая в памяти 111 хранения информации кодирования, включает в себя, в дополнение к вышеупомянутой информации, информацию межкадрового предсказания, такую как режим межкадрового предсказания, индекс предиктора вектора движения, разность векторов движения и информацию, указывающую, является ли режим режимом предиктора вектора движения подблока (флаг предиктора вектора движения подблока). В случае внутрикадрового предсказания информация кодирования, хранимая в памяти 111 хранения информации кодирования, включает в себя информацию внутрикадрового предсказания, такую как определенный режим внутрикадрового предсказания.

На фиг. 2 показана блок-схема, иллюстрирующей конфигурацию устройства для декодирования изображений согласно варианту осуществления настоящего изобретения, соответствующего устройству для кодирования изображений (фиг. 1). Устройство для декодирования изображений согласно варианту осуществления включает в себя блок 201 декодирование битовой строки, блок 202 разделения блока, блок 203 межкадрового предсказания, блок 204 внутрикадрового предсказания, память 205 хранения информации кодирования, обратный квантователь/обратный ортогональный преобразователь 206 и блок 207 наложения сигнала декодированного изображения и память 208 декодированного изображения.

Так как процесс декодирования устройства для декодирования изображений на фиг. 2 соответствует процессу декодирования, выполняемому устройством для кодирования изображений на фиг. 1. Соответственно, каждая из конфигураций памяти 205 хранения информации кодирования, обратный квантователь/обратный ортогональный преобразователь 206, блок 207 наложения сигнала декодированного изображения и память 208 декодированного изображения на фиг. 2 соответственно имеют функцию, соответствующую каждому из конфигураций памяти 111 хранения информации кодирования, обратного квантователя/обратного ортогонального преобразователя 109, блока 110 наложения сигнала декодированного изображения и памяти 104 декодированных изображений устройства для кодирования изображений (фиг. 1).

Битовый поток, подаваемый в блок 201 декодирования битовой строки, разделяется на основании предписанного правила синтаксиса. Блок 201 декодирования битовой строки декодирует разделенную первую битовую строку и, таким образом, получает последовательность, изображение, сегмент, информацию в блоках блоков кодирования и информацию кодирования в блоках блоков кодирования. В частности, блок 201 декодирования битовой строки декодирует режим предсказания PredMode, который определяет, является ли предсказание межкадровым предсказанием (MODE_INTER) или внутрикадровым предсказанием (MODE_INTRA) в блоках блока кодирования. В случае, когда режимом предсказания является межкадровое предсказание (MODE_INTER), блок 201 декодирования битовой строки декодирует информацию кодирования (информацию межкадрового предсказания), относящуюся к флагу, который определяет, является ли режим режимом слияния, индекс слияния в случае режима слияния, флаг слияния подблока и межкадровое предсказание в случае режима предиктора вектора движения, индекс предиктора вектора движения, разность векторов движения, флаг предиктора вектора движения подблока или т.п. в соответствии с предписанным синтаксисом, и затем поставляет информацию кодирования (информацию межкадрового предсказания) в память 205 хранения информации кодирования через блок 203 межкадрового предсказания и блок 202 разделения блоков. В случае, когда режимом предсказания является внутрикадровое предсказание (MODE_INTRA), блок 201 декодирования битовой строки декодирует информацию кодирования (информацию внутрикадрового предсказания), такую как режим внутрикадрового предсказания, согласно предписанному синтаксису, и затем предоставляет декодированную информацию кодирования (информация внутрикадрового предсказания) в память 205 хранения информации кодирования через блок 203 межкадрового предсказания или блок 204 внутрикадрового предсказания и через блок 202 разделения блоков. Блок 201 декодирования битовой строки декодирует разделенную вторую битовую строку и вычисляет ортогонально преобразованный/квантованный остаток и затем поставляет ортогонально преобразованный/квантованный остаток в обратный квантователь/обратный ортогональный преобразователь 206.

Когда режим PredMode предсказания целевого блока кодирования представляет собой межкадровое предсказание (MODE_INTER) и режим предсказания вектора движения, блок 203 межкадрового предсказания использует информацию кодирования уже декодированного сигнала изображения, сохраненного в памяти 205 хранения информации кодирования, для получения множества кандидатов предикторов вектора движения. Блок 203 межкадрового предсказания затем регистрирует множество полученных кандидатов предикторов вектора движения в список кандидатов предикторов вектора движения, описанный ниже. Блок 203 межкадрового предсказания выбирает предиктор вектора движения, соответствующий индексу предиктора вектора движения, который должен быть декодирован и поставленный блоком 201 декодирования битовой строки, из множества кандидатов предикторов вектора движения, зарегистрированных в списке кандидатов предикторов вектора движения. Блок 203 межкадрового предсказания затем вычисляет вектор движения на основании разности векторов движения, декодированных блоком 201 декодирования битовой строки и выбранным предиктором вектора движения, и сохраняет вычисленный вектор движения в памяти 205 хранения информации кодирования вместе с другой информацией кодирования. Здесь информация кодирования блока кодирования, которая должна быть поставлена и сохранена, включает в себя режим PredMode предсказания, флаги predFlagL0 [xP] [yP] и predFlagL1 [xP] [yP], указывающие, следует ли использовать L0 предсказание и L1 предсказание, опорные индексы refIdxL0 [xP] [yP] и refIdxL1 [xP] [yP] L0 и L1; и векторы mvL0 [xP] [yP] и mvL1 [xP] [yP] движения для L0 и L1. Здесь xP и yP являются индексами, указывающие позицию верхней левой выборки блока кодирования в изображении. В случае, когда режим PredMode предсказания является межкадровым предсказанием (MODE_INTER) и режимом межкадрового предсказания является L0 предсказанием (Pred_L0), флаг predFlagL0, указывающий, следует ли использовать L0 предсказание, устанавливается на 1, и флаг predFlagL1 указывает, использовать ли L1 предсказание, установлен на 0. В случае, когда режимом межкадрового предсказания является L1 предсказание (Pred_L1), флаг predFlagL0, указывающий, следует ли использовать L0 предсказание, установлен на 0, и флаг predFlagL1, указывающий, использовать ли L1 предсказание, установлен на 1. В случае, когда режимом межкадрового предсказания является двунаправленное предсказание (Pred_BI), и флаг predFlagL0, указывающий, следует ли использовать L0 предсказание, и флаг predFlagL1, указывающий, использовать ли L1 предсказание, устанавливаются на 1. Дополнительно, когда режим PredMode предсказания целевого блока кодирования является режимом межкадрового предсказания (MODE_INTER) и режимом слияния, то получается кандидат слияния. Используя информацию кодирования уже декодированного блока кодирования, хранящуюся в памяти 205 хранения информации кодирования, выводится множество кандидатов слияния и регистрируется в списке кандидатов слияния, описанном ниже. Затем кандидат слияния, соответствующий индексу слияния, который декодируется блоком 201 декодирования битовой строки и предоставляется, выбирается из множества кандидатов слияния, зарегистрированных в списке кандидатов слияния, и затем информация межкадрового предсказания, такая как flags predFlagL0 [xP ] [yP] и predFlagL1 [xP] [yP], указывающие, следует ли использовать L0 предсказание и L1 предсказание выбранного кандидата слияния, опорные индексы refIdxL0 [xP] [yP] и refIdxL1 [xP] [yP] L0 и L1 и векторы mvL0 [xP] [yP] и mvL1 [xP] [yP] движения для L0 и L1 должны храниться в памяти 205 хранения информации кодирования. Здесь xP и yP являются индексами, указывающими позицию верхней левой выборки блока кодирования в изображении. Далее будет приведено подробное описание конфигурации и функционирования блока 203 межкадрового предсказания.

Блок 204 внутрикадрового предсказания выполняет внутрикадровое предсказание, когда режим PredMode предсказания целевого блока кодирования является внутрикадровым предсказанием (MODE_INTRA). Информация кодирования, декодированная блоком 201 декодирования битовой строки, включает в себя режим внутрикадрового предсказания. Блок 204 внутрикадрового предсказания генерирует сигнал предсказанного изображения посредством внутрикадрового предсказания из сигнала декодированного изображения, хранящегося в памяти 208 декодированных изображений, в соответствии с режимом внутрикадрового предсказания в информации кодирования, декодированной блоком 201 декодирования битовой строки. Далее блок 204 внутрикадрового предсказания поставляет сгенерированный предсказанный сигнал изображения в блок 207 наложения декодированного сигнала изображения. Блок 204 внутрикадрового предсказания соответствует блоку 103 внутрикадрового предсказания устройства 100 для кодирования изображения и, таким образом, выполняет обработку, аналогичную обработке блока 103 внутрикадрового предсказания.

Обратный квантователь/обратный ортогональный преобразователь 206 выполняет обратное ортогональное преобразование/обратное квантование ортогонально преобразованного/квантованного остатка, декодированного в блоке 201 декодирования битовой строки и, таким образом, получает обратно ортогонально преобразованный/обратно квантованный остаток.

Блок 207 наложения сигнала декодированного изображения накладывает сигнал изображения, предсказанный с помощью межкадрового предсказания блоком 203 межкадрового предсказания, или сигнал изображения с предсказанием, предсказанный с помощью внутрикадрового предсказания блоком 204 внутрикадрового предсказания, с остатком, который был обратно ортогонально преобразован/обратно квантован посредством обратного квантователя/обратного ортогонального преобразователя 206, тем самым, декодируя сигнал декодированного изображения. Блок 207 наложения сигнала декодированного изображения затем сохраняет сигнал декодированного изображения, который был декодирован, в памяти 208 декодированных изображений. При сохранении декодированного изображения в памяти 208 декодированных изображений, блок 207 наложения сигнала декодированного изображения может выполнять обработку фильтрации для декодированного изображения для уменьшения блочного искажения или подобного из-за кодирования и может после этого сохранять декодированное изображение в памяти 208 декодированных изображений.

Далее будет описана работа блока 101 разделения блока в устройстве 100 для кодирования изображения. На фиг. 3 показана блок-схема алгоритма, иллюстрирующая операцию разделения изображения на блоки дерева и дополнительного разделения каждого из блоков дерева. Сначала входное изображение разделяется на блоки дерева заданного размера (этап S1001). Каждый из блоков дерева сканируется в заранее определенном порядке, то есть, в порядке растрового сканирования (этап S1002), и целевой блок дерева внутренне разделяется (этап S1003).

На фиг. 7 показана блок-схема алгоритма, иллюстрирующая подробную операцию процесса разделения на этапе S1003. Сначала определяется, разделить ли целевой блок на четыре (этап S1101).

В случае, когда определяется, что целевой блок должен быть разделен на четыре, целевой блок будет разделен на четыре (этап S1102). Каждый из блоков, полученных путем разделения целевого блока, сканируется в порядке Z-сканирования, то есть, в порядке верхнего левого, верхнего правого, нижнего левого и нижнего правого (этап S1103). На фиг. 5 показан пример порядка Z-сканирования, 601 на фиг. 6A иллюстрирует пример, в котором целевой блок разделен на четыре. Цифры от 0 до 3 из 601 на фиг. 6A указывают порядок обработки. Затем рекурсивно выполняется процесс разделения (фиг. 7) для каждого из блоков, разделенных на этапе S1101 (этап S1104).

В случае, когда определено, что целевой блок не должен быть разделен на четыре, целевой блок будет разделен на два или три, а именно, будет выполнено двоично-троичное разделение (этап S1105).

На фиг. 8 показана блок-схема алгоритма, подробно иллюстрирующая работу процесса двоично-троичного разделения на этапе S1105. Во-первых, определяется, будет ли выполнено двоично-троичное разделение для целевого блока, то есть, будет ли выполняться какое-либо двоичное или троичное разделение (этап S1201).

В случае, когда не определено, что на целевом блоке должно выполняться двоично-троичное разделение, то есть, в случае, когда определено, что не следует разделять целевой блок, разделение завершается (этап S1211). То есть, дополнительный процесс рекурсивного разделения не должен выполняться для блока, который был разделен процессом рекурсивного разделения.

В случае, когда определено, что двоично-троичное разделение будет выполнено в целевом блоке, дополнительно определяется, следует ли разделить целевой блок на два (этап S1202).

В случае, когда определяется, что целевой блок должен быть разделен на два, дополнительно определяется, следует ли разделить целевой блок в верхнем-нижнем (вертикальном) направлении (этап S1203) и затем на основании результата целевой блок будет двоично разделен в верхнем-нижнем (вертикальном) направлении (этап S1204), или целевой блок будет двоично разделен в лево-правом (горизонтальном) направлении (этап S1205). В результате этапа S1204 целевой блок двоично разделяется в направлении вверх-вниз (вертикальное направление), как проиллюстрировано на позиции 602 на фиг. 6B. В результате этапа S1205 целевой блок двоично разделяется вправо-влево (горизонтальное направление), как проиллюстрировано на этапе 604 на фиг. 6D.

На этапе S1202, в случае, когда не определено, что целевой блок должен быть разделен на два, то есть, в случае, когда определено, что целевой блок должен быть разделен на три, дополнительно определяют, следует ли разделить целевой блок на три части: верхнюю, среднюю и нижнюю (вертикальное направление) (этап S1206). На основании результата целевой блок разделяется на три части: верхнюю, среднюю и нижнюю части (вертикальное направление) (этап S1207) или левую, среднюю и правую части (горизонтальное направление) (этап S1208). В результате этапа S1207 целевой блок разделяется на три части: верхнюю, среднюю и нижнюю части (вертикальное направление), как проиллюстрировано на этапе 603 на фиг. 6C. В результате этапа S1208 целевой блок разделяется на три части: левую, среднюю и правую (горизонтальное направление), как проиллюстрировано на этапе 605 на фиг. 6E.

После выполнения одного из этапов S1204, S1205, S1207 или S1208 каждый из блоков, полученных путем разделения целевого блока, сканируется в порядке слева направо и сверху вниз (этап S1209). Цифры от 0 до 2 от 602 до 605 на фиг. 6B-6E указывают порядок обработки. Для каждого из блоков разделения рекурсивно выполняется процесс двоично-троичного разделения на фиг. 8 (этап S1210).

В описанном в настоящем документе рекурсивном разделении блоков правильность разделения может быть ограничена на основании количества разделений, размера целевого блока и т.п. Информация, которая ограничивает правильность разделения, может быть предоставлена в конфигурации, в которой информация не передается путем заключения предварительного соглашения между устройством кодирования и устройством декодирования, или в конфигурации, в которой устройство кодирования определяет информацию для ограничения правильности разделения и записывает информацию в битовые строки, тем самым, передавая информацию в устройство для декодирования.

Когда конкретный блок разделяется, блок до разделения называется родительским блоком и каждый из блоков после разделения называется дочерним блоком.

Далее будет описана функциональность блока 202 разделения блока в устройстве 200 для декодирования изображения. Блок 202 разделения блока разделяет блок дерева, используя процедуру обработки, аналогичную случаю блока 101 разделения блока устройства 100 для кодирования изображения. Обратите внимание, что есть разница, хотя блок 101 разделения блока устройства 100 для кодирования изображения определяет оптимальную форму разделения блока путем применения способа оптимизации, такого как оценка оптимальной формы путем распознавания изображения или оптимизации скорости искажения, блок 202 разделения блока устройства 200 для декодирования изображения определяет форму разделения блока путем декодирования информации разделения блока, записанную в битовой строке.

Фиг. 9 иллюстрирует синтаксис (правила синтаксиса битовой строки), относящийся к разделению блока согласно первому варианту осуществления. coding_quadtree () представляет синтаксис для процесса четырехкратного разделения блока. multi_type_tree () представляет синтаксис процесса разделения блока на два или три. qt_split является флагом, указывающим, следует ли разбить блок на четыре. В случае разделения блока на четыре, установка является qt_split = 1. В случае отсутствия разделения блока на четыре, настройка будет равна qt_split = 0. В случае разделения блока на четыре (qt_split = 1), процесс разделения на четыре будет выполняться рекурсивно для каждого из блоков, разделенных на четыре (coding_quadtree (0), coding_quadtree (1), coding_quadtree (2) и coding_quadtree (3), в которых аргументы от 0 до 3 соответствуют номерам 601 на фиг. 6A). В случае, когда разделение на четыре не должно выполняться (qt_split = 0), последующее разделение определяется согласно multi_type_tree (). mtt_split является флагом, указывающим, следует ли выполнять дополнительное разделение. В случае, когда необходимо выполнить дополнительное разделение (mtt_split = 1), будет выполнена передача mtt_split_vertical, который является флагом, указывающим, следует ли выполнять разделение в вертикальном или горизонтальном направлении, и mtt_split_binary, который является флагом, определяющим, следует ли разделить блок на два или три. mtt_split_vertical = 1 указывает разделение в вертикальном направлении и mtt_split_vertical = 0 указывает разделение в горизонтальном направлении. mtt_split_binary = 1 указывает, что блок подвергнут двоичному разделению, а mtt_split_binary = 0 указывает, что блок разделен на три. В случае, когда блок должен быть разделен двоичным кодом (mtt_split_binary = 1), процесс разделения выполняется рекурсивно для каждого из двух разделенных блоков (multi_type_tree (0) и multi_type_tree (1), в которых аргументы от 0 до 1 соответствуют числам в 602 или 604 на фиг. 6B-6D). В случае, когда блок должен быть разделен на три (mtt_split_binary = 0), процесс разделения выполняется рекурсивно для каждого из трех разделенных блоков (multi_type_tree (0), multi_type_tree (1) и multi_type_tree (2), в котором 0 2 соответствуют номерам 603 на фиг. 6B или 605 на фиг. 6E). multi_type_tree рекурсивно используется до тех пор, пока mtt_split = 0 не приведет к иерархическому разделению блоков.

Межкадровое предсказание

Способ межкадрового предсказания согласно варианту осуществления реализован в блоке 102 межкадрового предсказания устройства для кодирования изображения на фиг. 1 и в блоке 203 межкадрового предсказания устройства для декодирования изображения на фиг. 2.

Далее будет приведено описание способа межкадрового предсказания согласно варианту осуществления со ссылкой на чертежи. Способ межкадрового предсказания реализуется в любом из процессов кодирования и декодирования в блоках кодирования.

Блок 102 межкадрового предсказания на стороне кодирования

На фиг. 16 показана схема, иллюстрирующая подробную конфигурацию блока 102 межкадрового предсказания устройства для кодирования изображений на фиг. 1. Блок 301 получения режима предиктора нормального вектора движения выводит множество кандидатов предиктора нормального вектора движения, выбирает предиктор вектора движения и вычисляет разность векторов движения между выбранным предиктором вектора движения и обнаруженным вектором движения. Обнаруженный режим межкадрового предсказания, опорный индекс, вектор движения и вычисленная разность векторов движения являются информацией межкадрового предсказания режима предиктора нормального вектора движения. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания. Далее будет приведена подробная информация конфигурации и обработки блока 301 получения режима предиктора нормального вектора движения.

Блок 302 получения режима нормального слияния выводит множество кандидатов нормального слияния, выбирает кандидата нормального слияния и получает информацию межкадрового предсказания для режима нормального слияния. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания. Далее будет приведена подробная информация конфигурации и обработки блока 302 получения режима нормального слияния.

Блок 303 получения режима предиктора вектора движения подблока выводит множество кандидатов предиктора вектора движения подблока, выбирает предиктор вектора движения подблока и вычисляет разность векторов движения между выбранным предиктором вектора движения подблока и обнаруженным вектором движения. Обнаруженный режим межкадрового предсказания, опорный индекс, вектор движения и вычисленная разность векторов движения является информацией межкадрового предсказания режима предиктора вектора движения подблока. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания.

Блок 304 получения режима слияния подблоков выводит множество кандидатов слияния подблоков, выбирает кандидата слияния подблоков и получает информацию межкадрового предсказания режима слияния подблоков. Эта информация межкадрового предсказания подается в определитель 305 режима межкадрового предсказания.

В определителе 305 режима межкадрового предсказания определяется информация межкадрового предсказания на основании информации межкадрового предсказания, поступающей из блока 301 получения режима предиктора нормального вектора движения, блока 302 получения режима нормального слияния, блока 303 получения режима предиктора вектора движения подблока и блока 304 получения режима слияния подблоков. Информация межкадрового предсказания согласно результата определения подается из определителя 305 режима межкадрового предсказания в блок 306 предсказания компенсации движения.

Блок 306 предсказания компенсации движения выполняют межкадровое предсказание на сигнале опорного изображения, сохраненном в памяти 104 декодированного изображения на основании определенной информации межкадрового предсказания. Далее будет приведена подробная информация конфигурации и обработки блока 306 предсказания компенсации движения.

Блок 203 межкадрового предсказания на стороне декодирования

На фиг. 22 показан схема, иллюстрирующая подробную конфигурацию блока 203 межкадрового предсказания устройства для декодирования изображения на фиг. 2.

Блок 401 получения режима предиктора нормального вектора движения выводит множество кандидатов предиктора нормального вектора движения, выбирает предиктор вектора движения, вычисляет добавленное значение, полученное путем сложения выбранного предиктора вектора движения и разности декодированных векторов движения, и устанавливает это добавленное значение как вектор движения. Декодированный режим межкадрового предсказания, опорный индекс, вектор движения является информацией межкадрового предсказания режима предиктора нормального вектора движения. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408. Далее будет приведено подробное описание конфигурации и обработки блока 401 получения режима предиктора нормального вектора движения.

Блок 402 получения режима нормального слияния выводит множество кандидатов нормального слияния, выбирает кандидата нормального слияния и получает информацию межкадрового предсказания для режима нормального слияния. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408. Ниже будет представлена подробная конфигурация и обработка блока 402 получения режима нормального слияния.

Блок 403 получения режима предиктора вектора движения подблока выводит множество кандидатов предиктора вектора движения подблока, выбирает предиктор вектора движения подблока и вычисляет добавленное значение, полученное путем сложения выбранного предиктора вектора движения подблока и декодированной разности векторов движения, и устанавливает это добавленное значение как вектор движения. Декодированный режим межкадрового предсказания, опорный индекс и вектор движения являются информацией межкадрового предсказания режима предиктора вектора движения подблока. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408.

Блок 404 получения режима слияния подблоков выводит множество кандидатов слияния подблоков, выбирает кандидата слияния подблоков и получает информацию межкадрового предсказания режима слияния подблоков. Эта информация межкадрового предсказания подается в блок 406 предсказания компенсации движения через переключатель 408.

Блок 406 предсказания компенсации движения выполняет межкадровое предсказание на сигнале опорного изображения, сохраненного в памяти 208 декодированного изображения на основании определенной информации межкадрового предсказания. Подробная конфигурация и обработка блока 406 предсказания компенсации движения аналогичны блоку 306 предсказания компенсации движения на стороне кодирования.

Блок получения режима предиктора нормального вектора движения (Normal AMVP)

Блок 301 получения режима предиктора нормального вектора движения на фиг. 17 включает в себя блок 321 получения кандидата пространственного предиктора вектора движения, блок 322 получения кандидата временного предиктора вектора движения, блок 323 получения кандидата предиктора вектора движения на основании истории, пополнитель 325 кандидатов предиктора вектора движения, определитель 326 нормального вектора движения, селектор 327 кандидата предиктора вектора движения и вычитатель 328 вектора движения.

Блок 401 получения режима предиктора нормального вектора движения на фиг. 23 включает в себя блок 421 получения кандидата пространственного предиктора вектора движения, блок 422 получения кандидата временного предиктора вектора движения, блок 423 получения кандидата предиктора вектора движения на основании истории, пополнитель 425 кандидатов предиктора вектора движения, селектор 426 кандидатов предиктора вектора движения и сумматор 427 вектора движения.

Со ссылкой на блок-схемы алгоритма на фиг. 19 и фиг. 25, соответственно, описаны процедуры обработки блока 301 получения режима предиктора нормального вектора движения на стороне кодирования и блока 401 получения режима предиктора нормального вектора движения на стороне декодирования. На фиг. 19 показана блок-схема алгоритма, иллюстрирующая процедуру обработки получения режима предиктора нормального вектора движения, выполняемую блоком 301 получения режима нормального вектора движения на стороне кодирования. На фиг. 25 показана блок-схема алгоритма, иллюстрирующая процедуру обработки получения режима предиктора нормального вектора движения, выполняемую блоком 401 получения режима нормального вектора движения на стороне декодирования.

Блок получения режима предиктора нормального вектора движения (Normal AMVP): сторона кодирования

Со ссылкой на фиг. 19 будет описана процедура обработки получения режима предиктора нормального вектора движения на стороне кодирования. В описании процедуры обработки на фиг. 19 слово «нормальный», проиллюстрированное на фиг. 19, в некоторых случаях опускается.

Во-первых, определитель 326 нормального вектора движения обнаруживает нормальный вектор движения для каждого из режимов межкадрового предсказания и опорных индексов (этап S100 на фиг. 19).

В последствии, для каждого из L0 и L1 вычисляется разность векторов движения вектора движения, используемого при межкадровом предсказании в режиме предиктора нормального вектора движения (этапы S101-S106 на фиг. 19) в блоке 321 получения кандидата пространственного предиктора вектора движения, блоке 322 получения кандидата временного предиктора вектора движения, блоке 323 получения кандидата предиктора вектора движения на основании истории, пополнителе 325 кандидата предиктора вектора движения, селекторе 327 кандидата предиктора вектора движения и вычитателе 328 вектора движения. В частности, в случае, где режимом предсказания PredMode целевого блока является межкадровое предсказание (MODE_INTER) и режимом межкадрового предсказания является L0 предсказание (Pred_L0), вычисляется список mvpListL0 кандидатов предиктора вектора движения L0. В последствии выбирается предиктор mvpL0 вектора движения и затем вычисляется разность mvdL0 вектора движения вектора mvL0 движения L0. В случае, когда режимом межкадрового предсказания целевого блока является L1 предсказание (Pred_L1), вычисляется список mvpListL1 кандидатов предикторов вектора движения L1. Затем выбирается предиктор mvpL1 вектора движения, в последствии вычисляется разность mvdL1 векторов движения вектора mvL1 движения L1. В случае, когда режимом межкадрового предсказания целевого блока является двунаправленное предсказание (Pred_BI), выполняются оба L0 предсказание и L1 предсказание. Вычисляется список mvpListL0 кандидатов предикторов вектора движения для L0 и выбирается предиктор mvpL0 вектора движения для L0, и затем вычисляется разность mvdL0 векторов движения вектора mvL0 движения для L0. Наряду с этим вычислением вычисляется список mvpListL1 кандидатов предикторов вектора движения для L1 и вычисляется предиктор mvpL1 вектора движения для L1 и затем вычисляется разность mvdL1 векторов движения вектора mvL1 движения для L1.

Процесс вычисления разности векторов движения выполняется для каждого из L0 и L1, в котором процесс вычисления является общим процессом как для L0, так и для L1. Соответственно, L0 и L1 будут обозначаться как LX как общая процедура. В процессе вычисления разности векторов движения L0, X LX устанавливается на 0, в то время как в процессе вычисления разности векторов движения L1, X LX устанавливается на 1. Дополнительно, в случае, когда обращаются за информацией о другом списке вместо одного LX в процессе вычисления разности векторов движения одного LX, другой список будет представлен как LY.

В случае, когда используется вектор mvLX движения LX (ДА на этапе S102 на фиг. 19), вычисляются кандидаты предиктора вектора движения LX, тем самым, составляя список mvpListLX кандидатов предикторов вектора движения LX (этап S103 на фиг. 19). В блоке 301 получения режима предиктора нормального вектора движения, блоке 321 получения кандидата пространственного предиктора вектора движения, блоке 322 получения кандидата временного предиктора вектора движения, блоке 323 получения кандидата предиктора вектора движения на основании истории и пополнителе 325 кандидатов предиктора вектора движения выводят множество кандидатов предикторов вектора движения и, тем самым, составляют список mvpListLX кандидатов предикторов вектора движения. Далее со ссылкой на фиг. 19 будет описана подробная процедура обработки этапа S103 с использованием блок-схемы алгоритма на фиг. 20.

Далее селектор 327 кандидатов предиктора вектора движения выбирает предиктор mvpLX вектора движения LX списка mvpListLX кандидатов предиктора вектора движения LX (этап S104 на фиг. 19). Здесь один элемент (i-й элемент, отсчитываемый от 0) в списке mvpListLX кандидатов предиктора вектора движения представлен как mvpListLX [i]. Вычисляется каждая разность векторов движения, которая представляет собой разность между вектором движения mvLX и каждым из кандидатов предикторов mvpListLX [i] вектора движения, сохраненных в списке mvpListLX кандидатов предикторов вектора движения. Для каждого из элементов (кандидатов предикторов вектора движения) списка mvpListLX кандидатов предиктора вектора движения вычисляется объем кода во время кодирования этих разностей векторов движения. Затем выбирается кандидат предиктор mvpListLX [i] вектора движения, который минимизирует количество кода для каждого из кандидатов предикторов вектора движения среди отдельных элементов, зарегистрированных в списке mvpListLX кандидатов предиктора вектора движения, в качестве предиктора mvpLX вектора движения, и получен его индекс i. В случае наличия множества кандидатов предикторов вектора движения, имеющих минимальный сгенерированный объем кода в списке mvpListLX кандидатов предикторов вектора движения, выбирается кандидат предиктор mvpListLX [i] вектора движения, имеющий индекс i в списке mvpListLX кандидатов предиктора вектора движения, представленный небольшим числом в качестве оптимального предиктора mvpLX вектора движения, и получается его индекс i.

Затем блок 328 вычитания вектора движения вычитает выбранный предиктор mvpLX вектора движения LX из вектора mvLX движения LX и вычисляет разность векторов mvdLX движения LX как в:

mvdLX = mvLX - mvpLX (этап S105 на фиг. 19).

Блок получения режима предиктора нормального вектора движения (нормальный AMVP): сторона декодирования

Далее со ссылкой на фиг. 25 будет описана процедура обработки режима предиктора нормального вектора движения на стороне декодирования. На стороне декодирования блок 421 получения кандидата пространственного предиктора вектора движения, блок 422 получения кандидата временного предиктора вектора движения, блок 423 получения кандидатов предикторов вектора движения на основании истории и пополнитель 425 кандидатов предикторов вектора движения индивидуально вычисляют векторы движения, используемые во межкадровом предсказании режима предиктора нормального вектора движения для каждого из L0 и L1 (этапы S201-S206 на фиг. 25). В частности, в случае, когда режимом PredMode предсказания целевого блока является межкадровое предсказание (MODE_INTER) и режимом межкадрового предсказания целевого блока является L0 предсказание (Pred_L0), вычисляется список mvpListL0 кандидатов предикторов вектора движения L0. Затем выбирается предиктор вектора mvpL0 движения и затем вычисляется вектор mvL0 движения L0. В случае, когда режимом межкадрового предсказания целевого блока является L1 предсказание (Pred_L1), вычисляется список mvpListL1 кандидатов предикторов вектора движения L1. Затем выбирается предиктор вектора mvpL1 движения и вычисляется вектор mvL1 движения L1. В случае, когда режимом межкадрового предсказания целевого блока является двунаправленное предсказание (Pred_BI), выполняются оба L0 предсказание и L1 предсказание. Вычисляется список mvpListL0 кандидатов предикторов вектора движения L0 и выбирается предиктор mvpL0 вектора движения L0 и затем вычисляется вектор mvL0 движения для L0. Наряду с этим вычислением вычисляется список mvpListL1 кандидатов предикторов вектора движения для L1 и вычисляется предиктор mvpL1 вектора движения для L1 и затем вычисляется вектор mvL1 движения для L1.

Аналогично стороне кодирования, сторона декодирования выполняет обработку вычисления вектора движения для каждого из L0 и L1, при этом обработка является общим процессом как для L0, так и для L1. Соответственно, L0 и L1 будут обозначаться как LX как общая процедура. LX представляет режим межкадрового предсказания, используемый для межкадрового предсказания целевого блока кодирования. X равен 0 в процессе вычисления вектора движения L0 и X равен 1 в процессе вычисления вектора движения L1. Дополнительно, в случае, когда информация о другом справочном списке упоминается вместо того же справочного списка, что и LX, который должен быть вычислен в процессе вычисления вектора движения LX, другой справочный список будет представлен как LY.

В случае, когда используется вектор mvLX движения для LX (ДА на этапе S202 на фиг. 25), вычисляются кандидаты предикторы вектора движения LX для составления списка mvpListLX кандидатов предикторов вектора движения для LX (этап S203 на фиг. 25). В блоке 401 получения режима предиктора нормального вектора движения, блоке 421 получения кандидата пространственного предиктора вектора движения, блоке 422 получения кандидата временного предиктора вектора движения, блоке 423 получения кандидата предиктора вектора движения на основании истории и пополнителе 425 кандидата предиктора вектора движения вычисляют множество кандидатов предикторов вектора движения и, тем самым, составляют список mvpListLX кандидатов предикторов вектора движения. Далее со ссылкой на фиг. 25 и с использованием блок-схемы алгоритма на фиг. 20 будет описана подробная процедура обработки этапа S203.

Затем селектор 426 кандидатов предиктора вектора движения извлекает кандидата предиктора mvpListLX [mvpIdxLX] вектора движения, соответствующего индексу mvpIdxLX предиктора вектора движения, декодированному и поставленному блоком 201 декодирования битовой строки из списка mvpListLX кандидатов предиктора вектора движения, как выбранный предиктор mvpLX вектора движения (этап S204 на фиг. 25).

Затем сумматор 427 векторов движения суммирует разность mvdLX векторов движения LX и предиктора mvpLX вектора движения LX, которые декодируются и поставляются блоком 201 декодирования битовых строк, и вычисляет вектор mvLX движения LX как в:

mvLX = mvpLX + mvdLX (этап S205 на фиг. 25).

Блок получения режима предиктора нормального вектора движения (нормальный AMVP): способ предсказания вектора движения

На фиг. 20 показана блок-схема алгоритма, иллюстрирующая процедуру обработки процесса получения режима предиктора нормального вектора движения, имеющего функцию, общую для блока 301 получения режима предиктора нормального вектора движения устройства для кодирования изображения и блока 401 получения режима предиктора нормального вектора движения устройства для декодирования изображения согласно варианту осуществления настоящего изобретения.

Каждый из блока 301 получения режима предиктора нормального вектора движения и блока 401 получения режима предиктора нормального вектора движения включает в себя список mvpListLX кандидатов предиктора вектора движения. Список mvpListLX кандидатов предиктора вектора движения имеет структуру списка и включает в себя область хранения, которая хранит в качестве элементов индекс предиктора вектора движения, указывающий местоположение в списке кандидатов предиктора вектора движения, и кандидата предиктора вектора движения, соответствующего этому индексу. Номер индекса предиктора вектора движения начинается с 0, и кандидаты предиктора вектора движения должны храниться в области хранения списка mvpListLX кандидатов предиктора вектора движения. В настоящем варианте осуществления предполагается, что список mvpListLX кандидатов предиктора вектора движения может регистрировать, по меньшей мере, два кандидата предиктора вектора движения (в качестве информации межкадрового предсказания). Кроме того, переменная numCurrMvpCand, указывающая количество кандидатов предиктора вектора движения, зарегистрированных в списке mvpListLX кандидатов предиктора вектора движения, устанавливается на 0.

Каждый из блоков 321 и 421 получения кандидата пространственного предиктора движения извлекает кандидат предиктора вектора движения из блоков в соседнем с левой стороны. Этот процесс выводит предиктор mvLXA вектора движения со ссылкой на информацию межкадрового предсказания блока в соседнем с левой стороны (A0 или A1 на фиг. 11), а именно флаг, указывающий, можно ли использовать кандидат предиктор вектора движения, вектор движения, опорный индекс или т.п., и добавляет полученный mvLXA к списку mvpListLX кандидатов предиктора вектора движения (этап S301 на фиг. 20). Обратите внимание, что X равен 0 в L0 предсказании и X равен 1 в L1 предсказании (аналогично применяется в дальнейшем). Затем блоки 321 и 421 получения кандидатов предиктора вектора движения извлекают кандидатов предиктора вектора движения из верхнего соседнего блока. Этот процесс выводит предиктор вектора mvLXB движения со ссылкой на информацию межкадрового предсказания верхнего соседнего блока (B0, B1 или B2 на фиг. 11), а именно, флаг, указывающий, можно ли использовать кандидат предиктора вектора движения, вектор движения, опорный индекс и т.п. Когда полученный mvLXA и полученный mvLXB не равны, mvLXB добавляется в список mvpListLX кандидатов предиктора вектора движения (этап S302 на фиг. 20). Процессы на этапах S301 и S302 на фиг. 20 представлены как общий процесс, за исключением того, что позиции и номера опорных соседних блоков различны, и флаг availableFlagLXN, указывающий, можно ли использовать кандидата предиктора вектора движения блока кодирования, и вектор mvLXN движения, опорный индекс refIdxN (N указывает A или B, аналогично применяется в дальнейшем) в этих процессах.

Затем каждый из блоков 322 и 422 получения кандидата временного предиктора вектора движения извлекает кандидата предиктора вектора движения из блока в изображении, имеющего временное отличие от целевого изображения. Этот процесс выводит флаг availableFlagLXCol, указывающий, можно ли использовать кандидат предиктора вектора движения блока кодирования изображения, имеющего временную разницу, и вектор mvLXCol движения, опорный индекс refIdxCol и справочный список listCol, и добавляет mvLXCol в список mvpListLX кандидатов предиктора вектора движения (этап S303 на фиг. 20).

Следует отметить, что предполагается, что процессы блоков 322 и 422 получения кандидата временного предиктора вектора движения могут быть опущены в блоках последовательности (SPS), изображения (PPS) или сегмента.

Затем блоки 323 и 423 получения кандидатов предиктора вектора движения на основании истории добавляют кандидаты предиктора вектора движения на основании истории, зарегистрированных в списке HmvpCandList кандидатов предиктора вектора движения на основании истории, в список mvpListLX кандидатов предиктора вектора движения. (Этап S304 на фиг. 20). Со ссылкой на блок-схему алгоритма на фиг. 29 далее будет приведено подробное описание процедуры обработки регистрации на этапе S304.

Затем пополнители 325 и 425 кандидатов предиктора вектора движения добавляют кандидата предиктора движения, имеющего предварительно определенное значение, такое как (0, 0), до тех пор, пока не будет удовлетворен список mvpListLX кандидатов предиктора вектора движения (S305 на фиг. 20).

Блок получение режима нормального слияния (normal merge)

Блок 302 получения режима нормального слияния на фиг. 18 включает в себя блок 341 получения кандидатов пространственного слияния, блок 342 получения кандидатов временного слияния, блок 344 получения кандидата усредненного слияния, блок 345 получения кандидатов слияния на основании истории, пополнитель 346 кандидатов слияния и селектор 347 кандидатов слияния.

Блок 402 получения режима нормального слияния на фиг. 24 включает в себя блок 441 получения кандидатов пространственного слияния, блок 442 получения кандидатов временного слияния, блок 444 получения кандидата усредненного слияния, блок 445 получения кандидатов слияния на основании истории и пополнитель 446 кандидатов слияния и селектор 447 кандидатов слияния.

На фиг. 21 показана блок-схема алгоритма, иллюстрирующая процедуру процесса получения режима нормального слияния, имеющего функцию, общую для блока 302 получения режима нормального слияния устройства для кодирования изображений и блока 402 получения режима нормального слияния устройства для декодирования изображений согласно к варианту осуществления настоящего изобретения.

В дальнейшем в этом документе будут поэтапно описаны различные процессы. Следующее описание представляет собой случай, когда тип slice_type сегмента является сегментом B, если не указано иное. Однако настоящее изобретение также может быть применено к случаю P-сегмента. Отметим, что существует только L0 предсказание (Pred_L0) в качестве режима межкадрового предсказания, L1 предсказания (Pred_L1) или двунаправленное предсказания (Pred_BI) в случае, когда тип slice_type сегмента представляет собой P-сегмент. Соответственно, в этом случае можно пропустить процесс, связанный с L1.

Блок 302 получения режима нормального слияния и блок 402 получения режима нормального слияния включают в себя список mergeCandList кандидатов слияния. Список mergeCandList кандидатов слияния имеет структуру списка и включает в себя область хранения, которая хранит в качестве элементов индекс слияния, указывающий местоположение в списке кандидатов слияния, и кандидата слияния, соответствующего этому индексу. Номер индекса слияния начинается с 0, и кандидат слияния сохраняется в области хранения списка mergeCandList кандидатов слияния. В последующей обработке кандидат слияния индекса i слияния, зарегистрированный в списке mergeCandList кандидатов слияния, будет представлен mergeCandList [i]. В настоящем варианте осуществления предполагается, что список mergeCandList кандидатов слияния может зарегистрировать, по меньшей мере, шесть кандидатов слияния (в качестве информации межкадрового предсказания). Кроме того, переменная numCurrMergeCand, указывающая количество кандидатов слияния, зарегистрированных в списке mergeCandList кандидатов слияния, устанавливается на 0.

Блок 341 получения кандидатов пространственного слияния и блок 441 получения кандидатов пространственного слияния выводят кандидата пространственного слияния каждого из блоков (B1, A1, B0, A0, B2 на фиг. 11) в соседнем блоке целевого блока в порядке B1, A1, B0, A0 и B2 из информации кодирования, хранящейся либо в памяти 111 хранения информации кодирования устройства для кодирования изображений, либо в памяти 205 хранения информации кодирования устройства для декодирования изображений, и затем регистрирует полученные кандидаты пространственного слияния в список mergeCandList кандидатов слияния (этап S401 на фиг. 21). Здесь будет определено N, обозначающее один из B1, A1, B0, A0, B2 или кандидата Col временного слияния. Элементы, которые должны быть выведены, включают в себя флаг availableFlagN, указывающий, может ли информация межкадрового предсказания блока N использоваться в качестве кандидата на пространственное слияние, опорный индекс refIdxL0N L0 и опорный индекс refIdxL1N L1 кандидата пространственного слияния N, флаг predFlagL0N L0 предсказания, указывающий, должно ли выполняться L0 предсказание, флаг predFlagL1N L1 предсказания, указывающий, должно ли выполняться L1 предсказание, вектор mvL0N движения L0 и вектор mvL1N движения L1. Однако, так как кандидат слияния в настоящем варианте осуществления выводится без ссылки на информацию межкадрового предсказания блока, включенного в целевой блок кодирования, не может быть получен кандидат пространственного слияния, использующий информацию межкадрового предсказания блока, включенного в целевой блок кодирования.

Затем блок 342 получения кандидатов временного слияния и блок 442 получения кандидатов временного слияния выводят кандидатов временного слияния из изображений, имеющих временную разницу, и регистрируют полученные временные кандидаты слияния в списке mergeCandList кандидатов слияния (этап S402 на фиг. 21). Элементы, которые должны быть получены, включают в себя флаг availableFlagCol, указывающий, можно ли использовать кандидата временного слияния, флаг predFlagL0Col L0 предсказания, указывающий, должно ли выполняться L0 предсказание кандидата временного слияния, флаг predFlagL1Col L1-предсказания, указывающий, должно быть выполнено L1 предсказание, вектор mvL0Col движения L0 и вектор mvL1Col движения L1.

Отметим, что предполагается, что процессы блоков 342 и 442 получения кандидатов временного слияния могут быть опущены в блоках последовательности (SPS), изображения (PPS) или сегмента.

Затем блок 345 получения кандидатов слияния на основании истории и блок 445 получения кандидатов слияния на основании истории регистрируют кандидатов предиктора вектора движения на основании истории, зарегистрированных в списке HmvpCandList кандидатов предикторов вектора движения на основании истории, в списке list mergeCandList кандидатов слияния (этап S403 на фиг. 21).

В случае, когда количество кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, меньше, чем максимальное количество кандидатов MaxNumMergeCand слияния, получают кандидат слияния на основании истории с количеством кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, ограниченным максимальным количеством кандидатов MaxNumMergeCand слияния и затем регистрируется в списке mergeCandList кандидатов слияния.

Затем блок 344 получения кандидата усредненного слияния и блок 444 получения кандидата усредненного слияния выводят кандидата усредненного слияния из списка mergeCandList кандидатов слияния и добавляют полученный кандидат усредненного слияния в список mergeCandList кандидатов слияния (этап S404 на фиг. 21).

В случае, когда количество кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, меньше, чем максимальное количество кандидатов MaxNumMergeCand слияния, получают кандидат усредненного слияния с количеством кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, которое ограничено до максимального числа кандидатов MaxNumMergeCand слияния и затем зарегистрируют в списке mergeCandList кандидатов слияния.

Здесь кандидат усредненного слияния является новым кандидатом слияния, включающий в себя вектор движения, полученный посредством усреднения векторов движения первого кандидата слияния и второго кандидата слияния, зарегистрированных в списке mergeCandList кандидатов слияния для каждого из L0 предсказания и L1 предсказания.

Затем в пополнителе 346 кандидатов слияния и пополнителе 446 кандидатов слияния, в случае, когда количество numCurrMergeCand кандидатов слияния, зарегистрированных в списке mergeCandList кандидатов слияния, меньше, чем максимальное количество кандидатов MaxNumMergeCand слияния, получают дополнительный кандидат слияния с количеством кандидатов numCurrMergeCand слияния, зарегистрированных в списке mergeCandList кандидатов слияния, ограниченным максимальным количеством кандидатов MaxNumMergeCand слияния и затем регистрируют в списке mergeCandList кандидатов слияния (этап S405 на фиг. 21). В P-сегменте кандидат слияния, имеющий вектор движения значения (0, 0) и режим предсказания L0 предсказания (Pred_L0), добавляется с максимальным количеством кандидатов MaxNumMergeCand слияния в качестве верхнего предела. В B-сегменте добавляется кандидат слияния, имеющий режим предсказания с двунаправленным предсказанием (Pred_BI) и вектор движения значения (0, 0). Опорный индекс на момент добавления кандидата слияния отличается от опорного индекса, который уже был добавлен.

Затем селектор 347 кандидатов слияния и селектор 447 кандидатов слияния выбирают кандидата слияния из числа кандидатов слияния, зарегистрированных в списке mergeCandList кандидатов слияния. Селектор 347 кандидатов слияния на стороне кодирования вычисляет величину кода и величину искажения и, таким образом, выбирает кандидата слияния, и затем поставляет индекс слияния, указывающий выбранного кандидата слияния, и информацию межкадрового предсказания кандидата слияния в блок 306 предсказания компенсации движения через определитель 305 режима межкадрового предсказания. В отличие от этого селектор 447 кандидатов слияния на стороне декодирования выбирает кандидата слияния на основании декодированного индекса слияния и поставляет выбранного кандидата слияния в блок 406 предсказания компенсации движения.

Обновление списка кандидатов предиктора вектора движения на основании истории

Далее будет подробно описан способ инициализации и обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории, предоставленного в памяти 111 хранения информации кодирования на стороне кодирования и памяти 205 хранения информации кодирования на стороне декодирования. На фиг. 26 показана блок-схема алгоритма, иллюстрирующая процедуру инициализации/обновления списка кандидатов предиктора вектора движения на основании истории.

В настоящем варианте осуществления список HmvpCandList кандидатов предиктора вектора движения на основании истории обновляется в памяти 111 хранения информации кодирования и памяти 205 хранения информации кодирования. В качестве альтернативы в блоке 102 межкадрового предсказания и блоке 203 межкадрового предсказания может быть предусмотрен блок обновления списка кандидатов предиктора вектора движения на основании истории для обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории.

В заголовке сегмента выполняются начальные установки списка HmvpCandList кандидатов предиктора вектора движения на основании истории. На стороне кодирования список HmvpCandList кандидатов предиктора вектора движения на основании истории обновляется в случае, когда определитель 105 способа предсказания выбирает режим предиктора нормального вектора движения или режим нормального слияния. На стороне декодирования список HmvpCandList кандидатов предиктора вектора движения на основании истории обновляется в случае, когда информация предсказания, декодированная блоком 201 декодирования битовой строки, является режимом предиктора нормального вектора движения или режимом нормального слияния.

Информация межкадрового предсказания, используемая во время выполнения межкадрового предсказания в режиме предиктора нормального вектора движения или режиме нормального слияния, должна быть зарегистрирована в списке HmvpCandList кандидатов предиктора вектора движения на основании истории в качестве кандидата hMvpCand информации межкадрового предсказания. Кандидат hMvpCand информации межкадрового предсказания включает в себя опорный индекс refIdxL0 для L0 и опорный индекс refIdxL1 для L1, флаг predFlagL0 предсказания, указывающий, должно ли выполняться L0 предсказание, флаг predFlagL1 предсказания, указывающий, должно ли выполняться L1 предсказание, вектор mvL0 движения для L0 и вектор mvL1 движения для L1.

В случае наличия информации межкадрового предсказания, имеющей то же значение, что и кандидат hMvpCand информации межкадрового предсказания среди элементов (то есть, информация межкадрового предсказания), зарегистрированных в списке HmvpCandList кандидатов предиктора вектора движения на основании истории, предоставленном в памяти 111 хранения информации кодирования на стороне кодирования и памяти 205 хранения информации кодирования на стороне декодирования, элемент будет удален из списка HmvpCandList кандидатов предиктора вектора движения на основании истории. Напротив, в случае отсутствия информации межкадрового предсказания, имеющей то же значение, что и кандидат hMvpCand информации межкадрового предсказания, элемент заголовка списка HmvpCandList кандидатов предиктора вектора движения на основании истории будет удален и кандидат hMvpCand информации межкадрового предсказания будет добавлен в конец списка HmvpCandList кандидатов предиктора вектора движения на основании истории.

Количество элементов списка HmvpCandList кандидатов предиктора вектора движения, предоставленных в памяти 111 хранения информации кодирования на стороне кодирования и в памяти 205 хранения информации кодирования на стороне декодирования настоящего изобретения, установлено равным шести.

Во-первый, список HmvpCandList кандидатов предиктора вектора движения на основании истории инициализируется в блоках сегментов (этап S2101 на фиг. 26). Все элементы списка HmvpCandList кандидатов предиктора вектора движения на основании истории очищаются в начале сегмента и количество NumHmvpCand (текущее количество кандидатов) кандидатов предиктора вектора движения на основании истории, зарегистрированных в списке HmvpCandList кандидатов предиктора вектора движения, установлено на 0.

Хотя инициализация списка HmvpCandList кандидатов предиктора вектора движения на основании истории должна выполняться в блоках сегментов (первый блок кодирования сегмента), инициализация может выполняться в блоках изображений, плиток или строк блока дерева.

Затем для каждого из блоков кодирования в сегменте повторно выполняется следующий процесс обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории (этапы S2102-S2107 на фиг. 26).

Прежде всего, в блоках кодирования выполняются начальные установка. Флаг identityCandExist, указывающий наличие идентичного кандидата, устанавливается в значение FALSE (ложно), целевой индекс removeIdx удаления, указывающий удаление целевого кандидата, устанавливается на 0 (этап S2103 на фиг. 26).

Определяется наличие кандидата hMvpCand информации межкадрового предсказания, который нужно зарегистрировать (этап S2104 на фиг. 26). В случае, когда определитель 105 способа предсказания на стороне кодирования определяет режим предиктора нормального вектора движения или режим нормального слияния или, когда блок 201 декодирования битовой строки на стороне декодирования выполняет декодирование как режим предиктора нормального вектора движения или режим нормального слияния, устанавливается соответствующая информация межкадрового предсказания как кандидат hMvpC информации межкадрового предсказания и подлежит регистрации. В случае, когда определитель 105 способа предсказания на стороне кодирования определяет режим внутрикадрового предсказания, режим предиктора вектора движения подблока или режим слияния подблоков или, в случае, когда блок 201 декодирования битовой строки на стороне декодирования выполняет декодирование как режиме внутрикадрового предсказания, в режиме предсказания вектора движения подблока или в режиме слияния подблоков не будет выполняться процесс обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории, и для регистрации не будет ни одного кандидата hMvpCand информации межкадрового предсказания. В случае отсутствия кандидата hMvpCand информации межкадрового предсказания, подлежащего регистрации, этапы S2105-S2106 будут пропущены (НЕТ на этапе S2104 на фиг. 26). В случае наличия кандидата hMvpCand информации межкадрового предсказания, который должен быть зарегистрирован, будет выполняться процесс этапа S2105 и более поздних (ДА на этапе S2104 на фиг. 26).

Затем определяется, включают ли в себя отдельные элементы списка HmvpCandList кандидатов предиктора вектора движения на основании истории элемент (информацию межкадрового предсказания), имеющий то же значение, что и кандидат hMvpCand информации межкадрового предсказания для регистрации, то есть, существует ли идентичный элемент. (этап S2105 на фиг. 26). На фиг. 27 показана блок-схема алгоритма процедуры обработки подтверждения идентичного элемента. В случае, когда значение количества кандидатов NumHmvpCand предиктора вектора движения на основании истории равно 0 (НЕТ на этапе этап S2121 на фиг. 27), список HmvpCandList кандидатов предиктора вектора движения на основании истории пуст, и идентичный кандидат отсутствует. Соответственно, этапы S2122-S2125 на фиг. 27 будут пропущены, что завершит процедуру обработки подтверждения идентичного элемента. В случае, когда значение числа NumHmvpCand кандидатов предиктора вектора движения на основании истории больше 0 (ДА на этапе S2121 на фиг. 27), процесс этапа S2123 будет повторяться с индекса hMvpIdx предиктора вектора движения на основании истории от 0 до NumHmvpCand-1 (этапы S2122-S2125 на фиг. 27). Сначала выполняется сравнение на предмет того, идентичен ли элемент hMvpIdx-th HmvpCandList [hMvpIdx], отсчитываемый от 0 в списке кандидатов предиктора вектора движения на основании истории, кандидату hMvpCand информации межкадрового предсказания (этап S2123 на фиг. 27). В случае, когда они идентичны (ДА на этапе S2123 на фиг. 27), флаг identityCandExist, указывающий наличие идентичного кандидата, устанавливается в значение TRUE, и целевой индекс removeIdx удаления, указывающий позицию удаляемого элемента, устанавливается в текущее значение индекса hMvpIdx предиктора вектора движения на основании истории, и обработка подтверждения идентичного элемента будет завершена. В случае, когда они не идентичны (НЕТ на этапе S2123 на фиг. 27), hMvpIdx увеличивается на единицу. В случае, когда индекс hMvpIdx предиктора вектора движения на основании истории меньше или равен NumHmvpCand-1, выполняется обработка на этапе S2123 и позже.

Возвращаясь к блок-схеме алгоритма на фиг. 26, выполняется процесс сдвига и добавления элементов списка HmvpCandList кандидатов предиктора вектора движения на основании истории (этап S2106 на фиг. 26). Фиг. 28 является блок-схемой алгоритма процедуры обработки сдвига/добавления элементов в списке HmvpCandList кандидатов предиктора вектора движения на основании истории на этапе S2106 на фиг. 26. Сначала определяется, следует ли добавлять новый элемент после удаления элемента, хранящегося в списке HmvpCandList кандидатов предиктора вектора движения на основании истории, или добавить новый элемент, не удаляя элемент. В частности, выполняется сравнение на предмет того, является ли флаг identityCandExist, указывающий наличие идентичного кандидата TRUE, или равен ли NumHmvpCand 6 (этап S2141 на фиг. 28). В случае, когда одно из условий, при которых флаг identityCandExist, указывающий наличие идентичного кандидата, имеет значение TRUE и то, что NumHmvpCand равен 6, выполняется (ДА на этапе S2141 на фиг. 28), элемент, сохраненный в списке HmvpCandList кандидатов предиктора вектора движения на основании истории удаляется, и после этого будет добавлен новый элемент. Начальное значение индекса i устанавливается на значение removeIdx + 1. Процесс сдвига элемента на этапе S2143 повторяется от этого начального значения до NumHmvpCand. (этапы S2142-S2144 на фиг. 28). Путем копирования элементов HmvpCandList [i] в HmvpCandList [i-1] элементы сдвигаются вперед (этап S2143 на фиг. 28) и i увеличивается на единицу (этапы S2142-S2144 на фиг. 28). Затем кандидат hMvpCand информации межкадрового предсказания добавляется в (NumHmvpCand-1) HmvpCandList [NumHmvpCand-1], отсчитывая от 0, что соответствует концу списка кандидатов предиктора вектора движения на основании истории (этап S2145 на фиг. 28) и процесс сдвига/добавления элементов списка HmvpCandList кандидатов предиктора вектора движения на основании истории будет завершен. Напротив, в случае, когда ни одно из условий, при которых флаг identityCandExist, указывающий наличие идентичного кандидата, имеет значение TRUE и что NumHmvpCand равно 6, не удовлетворяется (НЕТ на этапе S2141 на фиг. 28), кандидат hMvpCand информации межкадрового предсказания будет добавлен в конец списка кандидатов предиктора вектора движения на основании истории без удаления элемента, хранящегося в списке HmvpCandList кандидатов предиктора вектора движения на основании истории (этап S2146 на фиг. 28). Здесь концом списка кандидатов предиктора вектора движения на основании истории является NumHmvpCand-th HmvpCandList [NumHmvpCand], отсчитываемый от 0. Более того, NumHmvpCand увеличивается на единицу и процесс сдвига и добавления элементов списка HmvpCandList кандидатов предиктора вектора движения на основании истории завершен.

На фиг. 31 показан вид, иллюстрирующий пример процесса обновления списка кандидатов предиктора вектора движения на основании истории. В случае, когда новый элемент должен быть добавлен в список HmvpCandList кандидатов предиктора вектора движения на основании истории, в котором уже зарегистрировано шесть элементов (информация межкадрового предсказания), список HmvpCandList кандидатов предиктора вектора движения на основании истории сравнивается с новой информацией межкадрового предсказания в порядке с начального элемента (фиг. 31A). Когда новый элемент имеет то же значение, что и третий элемент HMVP2 из заголовка списка HmvpCandList кандидатов предиктора вектора движения на основании истории, элемент HMVP2 удаляется из списка HmvpCandList кандидатов предиктора вектора движения на основании истории и элементы HMVP3-HMVP5 сдвигаются (копируются) один за другим вперед, и новый элемент добавляется в конец списка HmvpCandList кандидатов предиктора вектора движения на основании истории (фиг. 31B) для завершения обновления списка HmvpCandList кандидатов предиктора вектора движения на основании истории (фиг. 31C).

Процесс получения кандидатов предиктора вектора движения на основании истории

Далее будет подробно описан способ получения кандидата предиктора вектора движения на основании истории из списка HmvpCandList кандидатов предиктора вектора движения на основании истории. Это соответствует процедуре обработки этапа S304 на фиг. 20, касающейся общей обработки, выполняемой блоком 323 получения кандидата предиктора вектора движения на основании истории блока 301 получения режима предиктора нормального вектора движения на стороне кодирования и блоком 423 получения кандидата предиктора вектора движения на основании истории из блока 401 получения режима предиктора нормального вектора движения на стороне декодирования. Фиг. 29 является блок-схемой последовательности операций, иллюстрирующей процедуру обработки получения кандидата предиктора вектора движения на основании истории.

В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения больше или равно максимальному количеству элементов списка mvpListLX кандидатов предиктора вектора движения (здесь 2) или количество кандидатов NumHmvpCand предиктора вектора движения на основании истории равно 0 (НЕТ на этапе S2201 на фиг. 29), процесс этапов S2202-S2209 на фиг. 29 будет опущен, и процедура обработки получения кандидата предиктора вектора движения на основании истории будет завершена. В случае, когда число numCurrMvpCand текущих кандидатов предиктора вектора движения меньше 2, что является максимальным числом элементов списка mvpListLX кандидатов предиктора вектора движения, и, в случае, когда значение числа NumHmvpCand кандидатов предиктора вектора движения на основании истории больше 0 (ДА на этапе S2201 на фиг. 29), будет выполняться процесс этапов S2202-S2209 на фиг. 29.

Затем процесс этапов S2203-S2208 на фиг. 29 повторяется до тех пор, пока индекс i не станет равным от 1 до меньшего значения из 4, или до числа кандидатов numCheckedHMVPCand предиктора вектора движения на основании истории (этапы S2202-S2209 на фиг. 29). В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения больше или равно 2, что является максимальным количеством элементов списка mvpListLX кандидатов предиктора вектора движения (НЕТ на этапе S2203 на фиг. 29), этапы процесса S2204-S2209 на фиг. 29 будут опущены, и процедура обработки получения кандидата предиктора вектора движения на основании истории будет завершена. В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения меньше 2, что является максимальным количеством элементов в списке mvpListLX кандидатов предиктора вектора движения (ДА на этапе S2203 на фиг. 29), будет выполняться процесс на этапе S2204 и позже на фиг. 29.

Затем процесс на этапах S2205-S2207 выполняется для случаев, когда Y равно 0, и Y равно 1 (L0 и L1) (этапы S2204-S2208 на фиг. 29). В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения больше или равно 2, что является максимальным количеством элементов списка mvpListLX кандидатов предиктора вектора движения (НЕТ на этапе S2205 на фиг. 29), процесс этапов S2206-S2209 на фиг. 29 будут опущены, и процедура обработки получения кандидата предиктора вектора движения на основании истории будет завершена. В случае, когда текущее количество кандидатов numCurrMvpCand предиктора вектора движения меньше 2, что является максимальным количеством элементов в списке mvpListLX кандидатов предиктора вектора движения (ДА на этапе S2205 на фиг. 29), будет выполняться процесс на этапе S2206 и позже на фиг. 29.

Затем, в случае, когда список HmvpCandList кандидатов предиктора вектора движения на основании истории включает в себя элемент, имеющий тот же опорный индекс, что и опорный индекс refIdxLX целевого вектора движения кодирования/декодирования и который отличается от любого элемента списка mvpListLX предикторов вектора движения (ДА на этапе S2206 на фиг. 29), вектор движения LY кандидата HmvpCandList [NumHmvpCand-i] предиктора вектора движения на основании истории добавляется к numCurrMvpCand-ому элементу mvpListLX [numCurr] посчитывается от 0 в списке кандидатов предиктора вектора движения (этап S2207 на фиг. 29), и число numCurrMvpCand текущих кандидатов предиктора вектора движения увеличивается на единицу. В случае, когда в списке HmvpCandList кандидатов предиктора вектора движения на основании истории отсутствует элемент, который имеет тот же опорный индекс, что и опорный индекс refIdxLX целевого вектора движения кодирования/декодирования, и отличается от любого элемента списка mvpListLX предикторов вектора движения (НЕТ на этапе S2206 на фиг. 29), дополнительный процесс на этапе S2207 будет пропущен.

Процесс этапов S2205-S2207 на фиг. 29 выполняется как для L0, так и для L1 (этапы S2204-S2208 на фиг. 29). Индекс i увеличивается на единицу, и когда индекс i меньше или равен любому из меньшего значения 4 или количества кандидатов NumHmvpCand предиктора вектора движения на основании истории, процесс этапа S2203 и более поздних будет повторяться (этапы S2202-S2209 на фиг. 29).

Процесс получения кандидатов слияния на основании истории

Ниже приводится подробное описание способа получения кандидата слияния на основании истории из списка HmvpCandList кандидатов слияния на основании истории, процедуры процесса этапа S404 на фиг. 21, который является общим процессом блока 345 получения кандидатов слияния на основании истории из блока 302 получения режима нормального слияния на стороне кодирования, и блока 445 получения кандидатов слияния на основании истории блока 402 получения режима нормального слияния на стороне декодирования. На фиг. 30 показана блок-схема последовательности операций, иллюстрирующая процедуру обработки получения кандидатов слияния на основании истории.

Во-первых, выполняется процесс инициализации (этап S2301 на фиг. 30). Каждому из элементов от 0 до (numCurrMergeCand -1) isPruned [i] устанавливается значение FALSE, и переменная numOrigMergeCand устанавливается на значение numCurrMergeCand числа элементов, зарегистрированных в текущем списке кандидатов слияния.

Затем начальное значение индекса hMvpIdx устанавливается равным 1, и дополнительный процесс с этапа S2303 по этап S2310 на фиг. 30 повторяется от этого начального значения до NumHmvpCand (этапы S2302-S2311 на фиг. 30). Когда число numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, не меньше или равно (максимальное количество кандидатов слияния MaxNumMergeCand-1), кандидаты слияния были добавлены ко всем элементам в списке кандидатов слияния. Соответственно, процесс получения кандидатов слияния на основании истории будет завершен (НЕТ на этапе S2303 на фиг. 30). В случае, когда число numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, меньше или равно (максимальное количество кандидатов слияния MaxNumMergeCand-1), будет выполняться процесс этапа S2304 и позже. sameMotion устанавливается в значение FALSE (этап S2304 на фиг. 30). Затем начальное значение индекса i устанавливается на 0, и процесс этапов S2306 и S2307 на фиг. 30 выполняется от этого начального значения до numOrigMergeCand-1 (этапы S2305-S2308 на фиг. 30). Сравнение выполняется на предмет того, является ли (NumHmvpCand-hMvpIdx) элемент HmvpCandList [NumHmvpCand-hMvpIdx], отсчитываемый от 0 в списке кандидатов предиктора вектора движения на основании истории, тем же значением, что и i-ый элемент mergeCandList [i], отсчитываемый от 0 в списке кандидатов слияния (этап S2306 на фиг. 30).

Определяется, что кандидаты слияния имеют одинаковое значение в случае, когда все составляющие элементы (режим межкадрового предсказания, опорный индекс, вектор движения) кандидата слияния имеют одинаковое значение. В случае, когда кандидаты слияния имеют одинаковое значение и isPruned [i] установлен на FALSE (ДА на этапе S2306 на фиг. 30), для sameMotion и isPruned [i] будет установлено значение TRUE (этап S2307 на фиг. 30). В случае, если значения не совпадают (НЕТ на этапе S2306 на фиг. 30), процесс на этапе S2307 будет пропущен. После завершения обработки повторения с этапа S2305 по этап S2308 на фиг. 30 выполняется сравнение на предмет того, является ли sameMotion FALSE (этап S2309 на фиг. 30). В случае, когда sameMotion имеет значение FALSE (ДА на этап S2309 на фиг. 30), то есть, (NumHmvpCand-hMvpIdx) элемент HmvpCandList [NumHmvpCand - hMvpIdx], который отсчитывается от 0 в списке кандидатов предиктора вектора движения на основании истории, отсутствует в mergeCandList и, следовательно, элемент HmvpCandList [NumHmvpCand - hMvpIdx], который является (NumHmvpCand - hMvpIdx) элементом, отсчитываемым от 0 в списке кандидатов предиктора вектора движения на основании истории, добавляется в mergeCandList [ngeumCurr], который является numCurrMergeCand в списке кандидатов слияния, и numCurrMergeCand увеличивается на единицу (этап S2310 на фиг. 30). Индекс hMvpIdx увеличивается на единицу (этап S2302 на фиг. 30), и процесс этапов S2302-S2311 на фиг. 30 повторяется.

После завершения подтверждения всех элементов в списке кандидатов предиктора вектора движения на основании истории или завершения добавления кандидатов слияния ко всем элементам в списке кандидатов слияния процесс получения кандидатов слияния на основании истории завершается.

Процесс получения кандидатов усредненного слияния

Ниже приводится подробное описание способа получения кандидата усредненного слияния, процедуры процесса этапа S403 на фиг. 21, который является общим процессом блока 344 получения кандидата усредненного слияния блока 302 получения режима нормального слияния на стороне кодирования, и блока 444 получения кандидата усредненного слияния блока 402 получения режима нормального слияния на стороне декодирования. На фиг. 42 показана блок-схема алгоритма, иллюстрирующая процедуру обработки получения кандидата усредненного слияния.

Сначала выполняется процесс инициализации (этап S1301 на фиг. 42). Переменная numOrigMergeCand устанавливается равной количеству элементов numCurrMergeCand, зарегистрированных в текущем списке кандидатов слияния.

Затем выполняется последовательное сканирование, начиная с начала списка кандидатов слияния для определения двух фрагментов информации движения. Индекс i, указывающий первую информацию движения, устанавливается таким образом, что индекс i = 0, и индекс j, указывающий вторую информацию движения, устанавливается таким образом, что индекс j=1. (Этапы S1302-S1303 на фиг. 42). Когда число numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, не меньше или равно (максимальное количество кандидатов MaxNumMergeCand-1 слияния), ко всем элементам в списке кандидатов слияния были добавлены кандидаты слияния. Соответственно, процесс получения кандидатов слияния на основании истории будет завершен (этап S1304 на фиг. 42). В случае, когда количество numCurrMergeCand элементов, зарегистрированных в текущем списке кандидатов слияния, меньше или равно (максимальное количество кандидатов MaxNumMergeCand-1 слияния), будет выполняться процесс этапа S1305 и более поздних.

Определяется, являются ли действительной как i-ая информация mergeCandList [i] движения из списка кандидатов слияния, так и j-ая информация mergeCandList [j] движения из списка кандидатов слияния (этап S1305 на фиг. 42). В случае, когда обе являются недействительными, процесс переходит к следующему элементу без получения кандидата усредненного слияния mergeCandList [i] и mergeCandList [j]. В случае, когда условие, что оба mergeCandList [i] и mergeCandList [j] являются недействительными, не удовлетворяется, следующий процесс повторяется с X, установленным на 0 и 1 (этапы S1306-S1314 на фиг. 42).

Определение, действительно ли LX предсказание mergeCandList [i] (этап S1307 на фиг. 42). В случае, когда LX предсказание mergeCandList [i] является действительным, выполняется определение, действительно ли LX предсказание mergeCandList [j] (этап S1308 на фиг. 42). В случае, когда LX предсказание mergeCandList [j] действительно, то есть, в случае, когда действительны как LX предсказание mergeCandList [i], так и LX предсказание mergeCandList [j], получают вектор движения LX предсказания путем усреднения вектора движения предсказания LX для mergeCandList [i] и вектора движения предсказания LX для mergeCandList [j] и будет получен кандидат усредненного слияния предсказания LX, имеющий опорный индекс предсказания LX для mergeCandList [i], для установления LX предсказание как averageCand, и LX предсказание averageCand будет являться действительным (этап S1309 на фиг. 42). На этапе S1308 на фиг. 42, в случае, когда LX предсказание mergeCandList [j] недействительно, то есть, в случае, когда LX предсказание mergeCandList [i] действительно и LX предсказание mergeCandList [j] недействительно, будут получены вектор движения LX предсказания mergeCandList [i] и кандидат усредненного слияния LX предсказания, имеющий опорный индекс, чтобы быть установленным как LX предсказание averageCand и LX предсказание meanCand будет действительным (этап S1310 на фиг. 42). В случае, когда LX предсказание mergeCandList [i] недействительно на этапе S1307 на фиг. 42, то выполняется определение относительно того, действительно ли LX предсказание mergeCandList [j] (этап S1311 на фиг. 42). В случае, когда LX предсказание mergeCandList [j] действительно, то есть, в случае, когда LX предсказание mergeCandList [i] недействительно и LX предсказание mergeCandList [j] действительно, будут получены вектор движения LX предсказания mergeCandList [j], и кандидат усредненного слияния LX предсказания, имеющий опорный индекс, чтобы быть установленным как LX предсказание averageCand, и LX предсказание averageCand будет являться действительным (этап S1312 на фиг. 42). На этапе S1311 на фиг. 42, в случае, когда LX предсказание mergeCandList [j] недействительно, то есть, в случае, когда LX предсказание mergeCandList [i] и LX предсказание mergeCandList [j] оба недействительны, LX предсказание averageCand будет недействительным (этап S1312 на фиг. 42).

Полученный таким образом кандидат averageCand усредненного слияния L0 предсказания, L1 предсказания или предсказания BI, добавляется к numCurrMergeCand-th mergeCandList [numCurrMergeCand] списка кандидатов слияния, и numCurrMergeCand увеличивается на единицу (этап S1315 на фиг. 42). На этом процесс получения кандидата усредненного слияния завершается.

Кандидат усреднённого слияния получается посредством усреднения по каждой из горизонтальной составляющей вектора движения и вертикальной составляющей вектора движения.

Процесс предсказания компенсации движения

Блок 306 предсказания компенсации движения получает позицию и размер блока, который в настоящее время подвергается обработке предсказания при кодировании. Дополнительно, блок 306 предсказания компенсации движения получает информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания. Опорный индекс и вектор движения выводятся из полученной информации межкадрового предсказания и опорное изображение, указанное опорным индексом в памяти 104 декодированного изображения сдвигается из той же позиции, что и сигнал изображения блока, который подвергается обработке с предсказанием, на величину вектора движения. После сдвига получают сигнал изображения этой позиции и после этого генерируется сигнал предсказания.

В случае, когда предсказание выполнено из сигнального опорного изображения, например, когда режим межкадрового предсказания в межкадровом предсказании является L0 предсказанием или L1 предсказанием, в качестве сигнала предсказания компенсации движения сигнал предсказания устанавливается сигнал предсказания, полученный из одного опорного изображения. В случае, когда предсказание выполняется из двух опорных изображений, например, когда режимом межкадрового предсказания является предсказание BI, в качестве сигнала предсказания компенсации движения устанавливается средневзвешенное значение сигналов предсказания, полученных из двух опорных изображений. Полученный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания. Здесь отношение средневзвешенных значений при двунаправленном предсказании устанавливается равным 1:1. В качестве альтернативы, можно использовать другое отношение средневзвешенных значений. Например, коэффициент взвешенного усреднения может быть установлен таким образом, что чем короче интервал изображения между целевым изображением предсказания и опорным изображением, тем выше коэффициент взвешенного усреднения. Вычисление коэффициента взвешенного усреднения также может выполняться с использованием таблицы соответствия между комбинацией интервалов изображения и коэффициентов взвешенного усреднения.

Блок 406 предсказания компенсации движения имеет функцию, аналогичную блоку 306 предсказания компенсации движения на стороне кодирования. Блок 406 предсказания компенсации движения получает информацию межкадрового предсказания от блока 401 получения режима предиктора нормального вектора движения, блока 402 получения режима нормального слияния, блока 403 получения режима предиктора вектора движения подблока и блока 404 получения режима слияния подблока через переключатель 408. Блок 406 предсказания компенсации движения подает полученный сигнал предсказания компенсации движения в блок 207 наложения сигнала декодированного изображения.

Режим межкадрового предсказания

Процесс выполнения предсказания из одного опорного изображения определяется как однонаправленное предсказание. Однонаправленное предсказание выполняет предсказание L0 предсказания или L1 предсказания с использованием одного из двух опорных изображений, зарегистрированных в справочных списках L0 или L1.

На фиг. 32 показан случай однонаправленного предсказания, в котором опорное изображение (RefL0Pic) L0 происходит в тот момент до целевого изображения (CurPic). Фиг. 33 иллюстрирует случай однонаправленного предсказания, в котором опорное изображение L0 предсказания происходит в тот момент после целевого изображения. Точно так же, однонаправленное предсказание может быть выполнено путем замены L0 предсказания опорного изображения на фиг. 32 и фиг. 33 на опорное изображение (RefL1Pic) L1 предсказания.

Процесс выполнения предсказания из двух опорных изображений определяется как двунаправленное предсказание. Двунаправленное предсказание выполняет предсказание, выраженное как предсказание BI, с использованием как L0 предсказания, так и L1 предсказания. Фиг. 34 иллюстрирует случай двунаправленного предсказания, в котором L0 предсказание опорного изображения происходит в тот момент до целевого изображения и L1 предсказание опорного изображения происходит в тот момент после целевого изображения. Фиг. 35 иллюстрирует случай двунаправленного предсказания, в котором опорное изображение L0 предсказания и опорное изображение L1 предсказания происходит в тот момент до целевого изображения. Фиг. 36 иллюстрирует случай двунаправленного предсказания, в котором опорный кадр для L0 предсказания и опорное изображение L1 предсказания происходит в тот момент после целевого изображения.

Таким образом, можно использовать предсказание без ограничения взаимосвязи между типом предсказания L0/L1 и временем, так что L0 для прошлого направления и L1 для будущего направления. Более того, двунаправленное предсказание может выполнить каждое из L0 предсказание L1 предсказание, используя то же опорное изображение. Определение, следует ли выполнять предсказание компенсации движения при однонаправленном предсказании или двунаправленном предсказании, выполняется на основании информации (например, флага), указывающей, следует ли использовать L0 предсказание и следует ли использовать L1 предсказание.

Опорный индекс

В варианте осуществления настоящего изобретения, можно выбрать оптимальные опорное изображение из множества опорных изображений в предсказании компенсации движения для повышения точности предсказания компенсации движения. Таким образом, опорное изображение, используемое в предсказании компенсации движения должно быть использовано в качестве опорного индекса, и опорный индекс кодируется в битовом потоке вместе с разностью векторов движения.

Процесс компенсации движения на основании режима предиктора нормального вектора движения

Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 301 получения режима предиктора нормального вектора движения, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока и, таким образом, генерирует сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.

Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 401 получения режима предиктора нормального вектора движения во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания посредством блока 401 получения режима предиктора нормального вектора движения и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока и, таким образом, генерирует сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.

Обработка компенсации движения на основании режима нормального слияния

Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 302 получения режима нормального слияния, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.

Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 402 получения режима нормального слияния во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания блоком 402 получения режима нормального слияния и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.

Процесс компенсации движения на основании режима предиктора вектора движения подблока

Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 303 получения режима предиктора вектора движения подблока, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и получает режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.

Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 403 получения режима предиктора вектора движения подблока во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания посредством блока 403 получения режима предиктора вектора движения подблока и выводит режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.

Процесс компенсации движения на основании режима слияния подблоков

Как проиллюстрировано в блоке 102 межкадрового предсказания на стороне кодирования на фиг. 16, в случае, когда в определителе 305 режима межкадрового предсказания была выбрана информация межкадрового предсказания блоком 304 получения режима слияния подблоков, блок 306 предсказания компенсации движения получает эту информацию межкадрового предсказания из определителя 305 режима межкадрового предсказания и выводит режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в определитель 105 способа предсказания.

Аналогично, как проиллюстрировано в блоке 203 межкадрового предсказания на стороне декодирования на фиг. 22, в случае, когда переключатель 408 подключен к блоку 404 получения режима слияния подблоков во время процесса декодирования, блок 406 предсказания компенсации движения получает информацию межкадрового предсказания посредством блока 404 получения режима слияния подблоков и выводит режим межкадрового предсказания, опорный индекс и вектор движения целевого блока, тем самым, генерируя сигнал предсказания компенсации движения. Сформированный сигнал предсказания компенсации движения подается в блок 207 наложения сигнала декодированного изображения.

Процесс компенсации движения на основании предсказания аффинного преобразования

В режиме предиктора нормального вектора движения и режиме нормального слияния может использоваться компенсация движения с использованием аффинной модели на основании следующих флагов. Следующие флаги отражаются в следующих флагах на основании условий межкадрового предсказания, определенных определителем 305 режима межкадрового предсказания в процессе кодирования, и кодируются в битовом потоке. В процессе декодирования определяется, выполнять ли компенсацию движения с использованием аффинной модели на основании следующих флагов в битовом потоке.

sps_affine_enabled_flag указывает, может ли использоваться компенсация движения с использованием аффинной модели во межкадровом предсказании. Когда sps_affine_enabled_flag равен 0, процесс подавляется, чтобы не выполнять компенсацию движения с помощью аффинной модели в блоках последовательности. Более того, inter_affine_flag и cu_affine_type_flag не передаются в синтаксисе блока кодирования (CU) кодирующей видеопоследовательности. Когда sps_affine_enabled_flag равен 1, может использоваться компенсация движения с помощью аффинной модели в видеопоследовательности кодирования.

sps_affine_type_flag указывает, может ли использоваться компенсация движения с использованием 6-параметрической аффинной модели во межкадровом предсказании. Когда sps_affine_type_flag равен 0, процесс подавляется, чтобы не выполнять компенсацию движения с использованием 6-параметрической аффинной модели. Более того, cu_affine_type_flag не передается в синтаксисе CU кодирующей видеопоследовательности. Когда sps_affine_type_flag равен 1, в видеопоследовательности кодирования может использоваться компенсация движения на основании 6-параметрической аффинной модели. В случае отсутствия sps_affine_type_flag, должен быть равен 0.

В случае декодирования P- или B-сегмента, когда inter_affine_flag равен 1 в текущем CU, для генерирования сигнала предсказания компенсации движения текущего CU используется компенсация движения с использованием аффинной модели. Когда inter_affine_flag равен 0, аффинная модель не используется для текущего CU. В случае отсутствия inter_affine_flag, должен быть равен 0.

В случае декодирования P- или B-сегмента, когда cu_affine_type_flag равен 1 в текущем CU, для генерирования сигнала предсказания компенсации движения текущего CU используется компенсация движения с использованием 6-параметрической аффинной модели. Когда cu_affine_type_flag равен 0, для генерирования сигнала предсказания компенсации движения CU, обрабатываемого в данный момент, используется компенсация движения с использованием четырех параметрической аффинной модели.

Опорный индекс и вектор движения выводятся в блоках подблоков в компенсации движения на основании аффинной модели. Соответственно, сигнал предсказания с компенсацией движения генерируется с использованием опорного индекса и вектора движения для обработки в подблоках.

Четырех-параметрическая аффинная модель представляет собой режим, в котором получают вектор движения подблока из четырех параметров горизонтального компонента и вертикального компонента каждого из векторов движения двух контрольных точек и компенсация движения выполняется в блоках подблоков.

Режим слияния треугольников

Режим слияния треугольников представляет собой тип режима слияния, в котором блок кодирования/декодирования разделяется на диагональные части для выполнения предсказания компенсации движения. Режим треугольного слияния представляет собой тип режима слияния с геометрическим разделением, в котором блок кодирования/декодирования разделяется на блоки, имеющие непрямоугольную форму. В режиме слияния с геометрическим разделением это соответствует режиму, в котором блок кодирования/декодирования разделяется на два прямоугольных треугольника диагональной линией.

Режим слияния с геометрическим разделением выражается комбинацией двух параметров, например, индекс (angleIdx), указывающий угол разделения, и индекс (distanceIdx), указывающий расстояние от центра блока кодирования. Например, определены 64 шаблона как режим слияния с геометрическим разделением, и выполняется кодирование с фиксированной длиной. Из 64 шаблонов два режима, в которых индекс, обозначающий угол деления, указывает угол, образующий диагональную линию блока кодирования (например, 45 градусов (angleIdx = 4 в конфигурации, в которой 360 градусов представлены 32 делениями) или 135 градусов (angleIdx = 12 в конфигурации, в которой 360 градусов представлены 32 делениями)), и индекс, указывающий расстояние от центра блока кодирования, является минимальным (distanceIdx = 0, указывая, что граница разделения проходит через центр блока кодирования), указывают, что блок кодирования разделен диагональной линией и соответствует режиму треугольного слияния.

Режим слияния треугольников будет описан со ссылкой на фиг. 38A и фиг. 38B. На фиг. 38A и фиг. 38B показан пример предсказания блоков кодирования/декодирования 16×16 режима слияния треугольников. Блок кодирования/декодирования режима слияния треугольников разделен на подблоки 4×4, и каждый из подблоков назначается трем разделам, а именно, разделу 0 (UNI0) однонаправленного предсказания, разделу 1 (UNI1) однонаправленного предсказания и разделу 2 (BI) двунаправленного предсказания. Здесь подблоки выше диагонали треугольного и назначаются разделу 0, подблоки ниже диагонали назначаются разделу 1 и подблоки на диагонали назначаются разделу 2. Когда merge_triangle_split_dir равен 0, разделы назначаются, как показано на фиг. 38A и, когда merge_triangle_split_dir равен 1, разделы назначаются, как показано на фиг. 38B.

Для предсказания компенсации движения раздела 0 используется информация движения однонаправленного предсказания, обозначенная индексом 0 слияния треугольников. Информация движения однонаправленного предсказания, обозначенная индексом 1 слияния треугольников, используется для предсказания компенсации движения раздела 1. Информация движения двунаправленного предсказания, объединенная с информацией движения однонаправленного предсказания, обозначенная индексом 0 слияния треугольников, и информации движения однонаправленного предсказания, обозначенная индексом 1 слияния треугольников, используется для предсказания компенсации движения раздела 2.

Здесь, информация движения однонаправленного предсказания представляет собой набор вектора движения и опорного индекса, в то время как информация движения двунаправленного предсказания формируется с двумя наборами вектора движения и опорным индексом. Информация движения представляет либо информацию движения однонаправленного предсказания, либо информацию движения двунаправленного предсказания.

Селекторы 347 и 447 кандидатов слияния используют полученный список mergeCandList кандидатов слияния в качестве списка triangleMergeCandList кандидатов слияния треугольников.

Со ссылкой на фиг. 39 будет описана блок-схема алгоритма, относящаяся к получению кандидата слияния треугольников.

Сначала будет описан список mergeCandList кандидатов слияния, который используется в качестве списка triangleMergeCandList кандидатов слияния треугольников (этап S3501). Количество numTriangleMergeCand кандидатов списка кандидатов слияния треугольников устанавливается на то же значение, что и количество numCurrMergeCand кандидатов слияния.

Затем получается информация движения однонаправленного предсказания для раздела 0 слияния треугольников (этап S3502).

На фиг. 40 показана блок-схема последовательности операций, иллюстрирующая получение информации движения однонаправленного предсказанием для раздела слияния треугольников согласно настоящему варианту осуществления.

В настоящем варианте осуществления раздел 0 треугольника слияния и раздел 1 треугольника слияния получают информацию движения однонаправленного предсказания с одинаковым приоритетом для того, чтобы уменьшить объем обработки.

Сначала индекс M, который указывает нормальный кандидат слияния, устанавливается в 0 (этап S3600). M-й кандидат в списке кандидатов на слияние mergeCandList устанавливается как кандидат M.

Далее определяется то, имеет ли кандидат М информацию движения из списка L0 информации движения (этап S3601). В случае, когда кандидат М имеет информацию движения из списка L0 информации движения (ДА на этапе S3601), информация движения из списка L0 информации движения кандидата М устанавливается как кандидат слияния треугольников (этап S3602).

Затем определяется то, имеет ли кандидат M информацию движения из списка L1 информации движения (этап S3603). В случае, когда кандидат M имеет информацию движения из списка L1 информации движения (ДА на этапе S3603), информация движения из списка L1 информации движения кандидата M устанавливается как кандидат слияния треугольников (этап S3604). Для кандидата M (M = 0, 1, ..., MaxNumMergeCand-1) этапы S3601, S3602, S3603 и S3604 выполняются в порядке возрастания, и дополнительно получается кандидат слияния треугольников (этапы S3600-S3605).

На фиг. 41A и 41B показаны таблицы, иллюстрирующие пример информации движения кандидата слияния треугольников согласно настоящему варианту осуществления.

Фиг. 41A иллюстрирует пример списка кандидатов нормального слияния. В кандидате нормального слияния с индексом 0 слияния режимом межкадрового предсказания представляет собой двунаправленное предсказание (Pred_BI), информацией движения из списка L0 информации движения является MV0_L0, и информацией движения из списка L1 информации движения является MV0_L1. В кандидате нормального слияния индекса 1 слияния режим межкадрового предсказания представляет собой однонаправленное предсказание (Pred_L0), информацией движения из списка L0 информации движения является MV1_L0, и список L1 информации движения не имеет информации движения. В кандидате нормального слияния индекса слияния 2 режим межкадрового предсказания представляет собой однонаправленное предсказание (Pred_L1), список L0 информации движения не имеет информации движения, и информацией движения из списка L1 информации движения является MV2_L1. В кандидате нормального слияния индекса 3 слияния режим межкадрового предсказания представляет собой двунаправленное предсказание (Pred_BI), информация движения из списка L0 информации движения является MV3_L0, и информацией движения из списка L1 информации движения является MV3_L1. В кандидате нормального слияния индекса 4 слияния режим межкадрового предсказания представляет собой однонаправленное предсказание (Pred_L0), информацией движения из списка L0 информации движения является MV4_L0, и список L1 информации движения не имеет информации движения.

На фиг. 41B показана таблица, иллюстрирующая взаимосвязь между индексом треугольника слияния и разделением треугольника слияния в случае примера списка кандидатов нормального слияния (фиг. 41A).

В кандидате информации движения однонаправленного предсказания раздела 0 треугольников слияния, информация движения сконфигурирована в порядке MV0_L0, MV0_L1, MV1_L0, MV2_L1 и MV3_L0.

Аналогичным образом, в кандидате информации движения с однонаправленным предсказанием раздела 1 треугольника слияния информация движения сконфигурирована в порядке MV0_L0, MV0_L1, MV1_L0, MV2_L1, MV3_L0, (MV3_L1), в котором получается индекс 1 треугольника слияния (merge_triangle_idx1 ) за исключением информации движения однонаправленного предсказания, выбранной с помощью индекса 0 треугольника слияния (merge_triangle_idx0), так что информация движения раздела 0 треугольника слияния и раздела 1 треугольника слияния не становятся идентичными.

Таким образом, путем установки кандидатов информации движения с однонаправленным предсказанием из раздела 0 слияния треугольников и раздела 1 слияния треугольников в порядке, аналогичном приоритету списка кандидатов списка слияния, можно передать эффективный режим слияния треугольников с маленьким объемом кода. Более того, передача индекса 0 треугольника слияния и индекса 1 слияния треугольников таким образом, чтобы информация движения раздела 0 треугольника слияния и информация движения раздела 1 треугольника слияния не становились идентичными, позволяет устранить избыточность, имеющую информацию о движении раздела 0 треугольника слияния, которая необязательно должна находиться в режиме слияния треугольников, и информацию движения раздела 1 треугольника слияния в качестве той же самой информации движения, что позволяет передавать режим слияния треугольников с маленьким объемом кода.

В настоящем варианте осуществлениям представлена конфигурация, в которой в режиме треугольного слияния блок кодирования делится на два раздела, и информация движения для каждого из разделенных разделов выводятся из списка кандидатов нормального слияния. Режим слияния с геометрическим разделением аналогичен режиму слияния треугольников в том, что блок кодирования разделен на два раздела. Кроме того, конфигурация, в которой информация движения для каждого из разделенных разделов выводятся из списка кандидатов нормального слияния, может быть применена к режиму слияния с геометрическим разделением. Таким образом, настоящий вариант осуществления может быть реализован путем замены режима треугольного слияния с режимом слияния с геометрическим разделением.

Второй вариант

Ниже будет описан второй вариант осуществления настоящего изобретения. Второй вариант осуществления настоящего изобретения аналогичен первому варианту осуществления, за исключением получения режима слияния треугольников.

На фиг. 43 показана блок-схема алгоритма, иллюстрирующая получение информации движения однонаправленного предсказания при разделении треугольника слияния согласно второму варианту осуществления.

Во втором варианте осуществления, аналогично первому варианту осуществления, раздел 0 треугольника слияния и раздел 1 треугольника слияния 1 получают информацию движения однонаправленного предсказания с одинаковым приоритетом для того, чтобы уменьшить объем обработки.

Сначала индекс M, который точно определяет кандидат нормального слияния, устанавливается в 0 (этап S3700).

Далее определяется то, является ли значение индекса М четным числом (этап S3701). В случае, когда значение индекса М является четным числом (ДА на этапе S3701), определяется то, имеет ли кандидат М информацию движения из списка L0 информации движения (этап S3702). В случае, когда кандидат М имеет информацию движения из списка L0 информации движения (ДА на этапе S3702), информация движения из списка L0 информации движения кандидата М устанавливается как кандидат слияния треугольников (этап S3703). В случае, когда кандидат М не имеет информации движения из списка L0 информации движения (НЕТ на этапе S3702), информация движения из списка информации движения L1 кандидата М устанавливается как кандидат слияния треугольников (этап S3704).

В случае, когда значение индекса М не является четным числом, то есть является нечетным числом (НЕТ на этапе S3701), определяется то, имеет ли кандидат М информацию движения из списка L1 информации движения (этап S3705). В случае, когда кандидат М имеет информацию движения из списка L1 информации движения (ДА на этапе S3705), информация движения из списка информации движения L1 кандидата М устанавливается как кандидат слияния треугольников (этап S3706). В случае, когда кандидат М не имеет информации движения из списка L1 информации движения (НЕТ на этапе S3705), информация движения из списка L0 информации движения кандидата M устанавливается как кандидат слияния треугольников (этап S3707).

Для кандидатов M (M = 0, 1,..., MaxNumMergeCand-1) этапы S3701-S3707 выполняются в порядке возрастания и дополнительно получаются кандидаты слияния треугольников (этап S3708).

Здесь кандидат M всегда имеет информацию движения в одном из списка L0 информации движения или списка L1 информации движения. Соответственно, простое определение того, имеет ли список информации движения, имеющий более высокий приоритет вывода, только информацию о движении, которая позволила бы принять решение относительно того, какой из списков информации движения следует использовать.

В дополнение к этому, приоритет кандидата информации движения однонаправленного предсказания в режиме слияния треугольников поочередно переключается между списком L0 информации движения и списком L1 информации движения таким образом, чтобы быть аналогичным приоритету списка слияния кандидатов из списка раздела 0 треугольника слияния и раздела 1 треугольника слияния, что позволяет выбирать информацию движения из списка L0 информации движения и списка L1 информации движения без смещения и передавать эффективный режим слияния треугольников с маленьким объемом кода.

Во всех вариантах осуществления, описанных выше, множество технологий могут быть объединены друг с другом.

Во всех вариантах осуществления, описанных выше, битовый поток, выводимый из устройства для кодирования изображений, имеет определенный формат данных, чтобы быть декодированным в соответствии со способом кодирования, используемым в варианте осуществления. Более того, устройство для декодирования изображений, соответствующее устройству для кодирования изображений, выполнено с возможностью декодировать битовый поток конкретного формата данных.

В случае, когда для обмена битовым потоком между устройством для кодирования изображения и устройством для декодирования изображения используется проводная или беспроводная сеть, битовый поток может быть преобразован в формат данных, подходящий для формы передачи канала связи при передаче. В этом случае предоставляется устройство передачи, которое преобразует выходной битовый поток из устройства для кодирования изображений в кодированные данные в формате данных, подходящем для формы передачи канала связи, и передает кодированные данные в сеть, и устройство приема, которое принимает кодированные данные из сети, которые необходимо восстановить в битовый поток, и подает битовый поток в устройство для декодирования изображений. Устройство передачи включает в себя память, которая буферизует битовый поток, выводимый из устройства для кодирования изображений, блок обработки пакетов, который пакетирует битовый поток, и передатчик, который передает пакетированные кодированные данные через сеть. Устройство приема включает в себя приемник, который принимает пакетированные кодированные данные через сеть, память, которая буферизует принятые кодированные данные, и блок обработки пакетов, который распаковывает кодированные данные для формирования битового потока и передает сформированный битовый поток в устройство для декодирования изображений.

Более того, в качестве устройства отображения в конфигурацию может быть добавлен блок отображения, который отображает изображение, декодированное устройством для декодирования изображения. В этом случае блок отображения считывает сигнал декодированного изображения, сгенерированный блоком 207 наложения сигналов декодированного изображения и сохраненный в памяти 208 декодированного изображения, и отображает сигнал на экране.

Дополнительно, в конфигурацию может быть добавлен блок формирования изображения, что позволит функционировать в качестве устройства формирования изображения, путем ввода захваченного изображения в устройство для кодирования изображения. В этом случае блок формирования изображения вводит сигнал захваченного изображения в блок 101 разделения блоков.

На фиг. 37 показан пример конфигурации аппаратных средств устройства для кодирования-декодирования согласно настоящему варианту осуществления. Устройство для кодирования-декодирования включает в себя конфигурации устройства для кодирования изображений и устройства для декодирования изображений согласно вариантам осуществления настоящего изобретения. Устройство 9000 для кодирования-декодирования включает в себя CPU 9001, кодек IC 9002, интерфейс 9003 ввода/вывода, память 9004, привод 9005 оптических дисков, сетевой интерфейс 9006 и видеоинтерфейс 9009, в которых отдельные блоки соединены посредством шины 9010.

Кодер 9007 изображения и декодер 9008 изображения, как правило, реализуются как IC 9002 кодека. Процесс кодирования изображения устройства для кодирования изображения согласно вариантам осуществления настоящего изобретения выполняется кодером 9007 изображения. Процесс декодирования изображения в устройстве для декодирования изображения согласно варианту осуществления настоящего изобретения выполняется декодером 9008 изображения. Интерфейс 9003 ввода/вывода реализован, например, посредством интерфейса USB, и подключается к внешней клавиатуре 9104, мыши 9105 или подобному. CPU 9001 управляет устройством 9000 для кодирования-декодирования на основании ввода операции пользователя через интерфейс 9003 ввода/вывода для выполнения операции пользователя. Операции пользователя на клавиатуре 9104, мыши 9105 и т.п. включают в себя выбор выполняемой функции кодирования или декодирования, установка качества кодирования, назначение ввода/вывода битового потока, назначение ввода/вывода изображения или подобное, аналогичное, похожее.

В случае, когда пользователю требуется операция воспроизведения изображения, записанного на дисковом носителе 9100 записи, привод 9005 оптического диска считывает битовый поток со вставленного носителя 9100 записи диска и передает считанный битовый поток в декодер 9008 изображения кодека IC 9002 через шину 9010. Декодер 9008 изображения выполняет процесс декодирования изображения в устройстве для декодирования изображения согласно вариантам осуществления настоящего изобретения на входном битовом потоке и передает декодированное изображение на внешний монитор 9103 через видео интерфейс 9009. Устройство 9000 для кодирования-декодирования имеет сетевой интерфейс 9006 и может быть подключено к внешнему серверу 9106 распространения и мобильному оконечному устройству 9107 через сеть 9101. В случае, когда пользователь желает воспроизвести изображение, записанное при распространении, сервер 9106 или мобильное оконечное устройство 9107 вместо изображения, записанного на дисковом носителе 9100 записи, сетевой интерфейс 9006 получает битовый поток из сети 9101 вместо считывания битового потока с входного дискового носителя записи 9100. В случае, когда пользователь желает воспроизвести изображение, записанное в памяти 9004, обработка декодирования изображения выполняется устройством для декодирования изображения битового потока, записанного в памяти 9004 согласно вариантам осуществления в настоящем изобретении.

В случае, когда пользователь желает выполнить операцию кодирования изображения, захваченного внешней камерой 9102, и записи изображения в память 9004, видеоинтерфейс 9009 вводит изображение с камеры 9102 и передает изображение в кодер 9007 изображения кодека 9002 через шину 9010. Кодер 9007 изображения выполняет процесс кодирования изображения устройством для кодирования изображения согласно варианту осуществления настоящего изобретения на входе изображения через видеоинтерфейс 9009 и, тем самым, формирует битовый поток. Затем битовый поток передается в память 9004 через шину 9010. В случае, когда пользователь желает записать битовый поток на дисковый носитель 9100 записи вместо памяти 9004, дисковод 9005 оптического диска записывает битовый поток на вставленный диск носителя 9100.

Также возможно реализовать конфигурацию оборудования, имеющую устройство для кодирования изображения и не имеющую устройства для декодирования изображения, или конфигурацию оборудования, имеющую устройство для декодирования изображения и не имеющую устройства для кодирования изображения. Такая конфигурация оборудования реализуется путем замены IC 9002 кодека кодером 9007 изображения или декодером 9008 изображения.

Вышеописанный процесс, относящийся к кодированию и декодированию, естественно, может быть реализован как устройство передачи, хранения и приема с использованием оборудования, и, в качестве альтернативы, процесс может быть реализован с помощью встроенного программного обеспечения, хранимого в постоянном запоминающем устройстве (ROM), флэш-памяти или тому подобное, или с помощью программного обеспечения, предоставленного для компьютера или подобного. Программа микропрограмм и программное обеспечение могут быть предоставлены путем записи на носителе записи, читаемом компьютером и т.п., могут предоставляться с сервера через проводную или беспроводную сеть или могут предоставляться посредством широковещательной передачи данных наземным или спутниковым цифровым способом.

Настоящее изобретение было описано со ссылкой на настоящие варианты осуществления. Вышеописанный вариант осуществления был описан только для иллюстративных целей. Скорее, специалисты в данной области техники могут легко понять, что различные примеры модификаций могут быть сделаны путем формирования различных комбинаций вышеописанных компонентов или процессов, которые также входят в технический объем настоящего изобретения.

Настоящее изобретение может использоваться для способов кодирования и декодирования изображений, которые разделяют изображение на блоки для выполнения предсказания.

100 – Устройство кодирования изображений

101 – Блок разделения блока

102 – Блок межкадрового предсказания

103 – Блок внутрикадрового предсказания

104 – Память декодированных изображений

105 – Определитель способа предсказания

106 – Блок генерирования остатка

107 – Ортогональный преобразователь/квантователь

108 – Блок кодирования битовых строк

109 – Обратный квантователь/обратный ортогональный преобразователь

110 – Блок наложения сигнала декодированного изображения

111 – Память для хранения информации кодирования

200 – Устройство декодирования изображений

201 – Блок декодирования битовых строк

202 – Блок разделения блока

203 – Блок межкадрового предсказания

204 – Блок внутрикадрового предсказания

205 – Память для хранения информации кодирования

206 – Обратный квантователь/обратный ортогональный преобразователь

207 – Блок наложения сигнала декодированного изображения

208 – Память декодированных изображений


1. Устройство кодирования движущихся изображений с использованием режима слияния, содержащее:

конструктор списка кандидатов слияния, выполненный с возможностью формирования списка кандидатов слияния, включающего в себя кандидатов пространственного слияния;

селектор кандидатов нормального слияния, выполненный с возможностью выбора кандидата нормального слияния, который является однонаправленным или двунаправленным предсказанием, из списка кандидатов слияния; и

селектор кандидатов слияния треугольников, выполненный с возможностью выбора, из списка кандидатов слияния, первого кандидата слияния треугольников, который является однонаправленным предсказанием, и второго кандидата слияния треугольников, который является однонаправленным предсказанием,

при этом селектор кандидатов слияния треугольников выполнен с возможностью получения первого кандидата слияния треугольников и второго кандидата слияния треугольников с тем же приоритетом, что и у кандидата нормального слияния.

2. Способ кодирования движущихся изображений с использованием режима слияния, содержащий:

этап формирования списка кандидатов слияния, на котором формируют список кандидатов слияния, включающий в себя кандидатов пространственного слияния;

этап выбора кандидата нормального слияния, на котором выбирают кандидата нормального слияния, который является однонаправленным или двунаправленным предсказанием, из списка кандидатов слияния; и

этап выбора кандидата слияния треугольников, на котором выбирают, из списка кандидатов слияния, первого кандидата слияния треугольников, который является однонаправленным предсказанием, и второго кандидата слияния треугольников, который является однонаправленным предсказанием,

при этом на этапе выбора кандидата слияния треугольников получают первого кандидата слияния треугольников и второго кандидата слияния треугольников с тем же приоритетом, что и у кандидата нормального слияния.

3. Устройство декодирования движущихся изображений с использованием режима слияния, содержащее:

конструктор списка кандидатов слияния, выполненный с возможностью формирования списка кандидатов слияния, включающего в себя кандидатов пространственного слияния;

селектор кандидатов нормального слияния, выполненный с возможностью выбора кандидата нормального слияния, который является однонаправленным или двунаправленным предсказанием, из списка кандидатов слияния; и

селектор кандидатов слияния треугольников, выполненный с возможностью выбора, из списка кандидатов слияния, первого кандидата слияния треугольников, который является однонаправленным предсказанием, и второго кандидата слияния треугольников, который является однонаправленным предсказанием,

при этом селектор кандидатов слияния треугольников выполнен с возможностью получения первого кандидата слияния треугольников и второго кандидата слияния треугольников с тем же приоритетом, что и у кандидата нормального слияния.

4. Способ декодирования движущихся изображений с использованием режима слияния, содержащий:

этап формирования списка кандидатов слияния, на котором формируют список кандидатов слияния, включающий в себя кандидатов пространственного слияния;

этап выбора кандидата нормального слияния, на котором выбирают кандидата нормального слияния, который является однонаправленным или двунаправленным предсказанием, из списка кандидатов слияния; и

этап выбора кандидата слияния треугольников, на котором выбирают, из списка кандидатов слияния, первого кандидата слияния треугольников, который является однонаправленным предсказанием, и второго кандидата слияния треугольников, который является однонаправленным предсказанием,

при этом на этапе выбора кандидата слияния треугольников получают первого кандидата слияния треугольников и второго кандидата слияния треугольников с тем же приоритетом, что и у кандидата нормального слияния.



 

Похожие патенты:

Изобретение относится к области видеодекодирования. Техническим результатом является уменьшение сложности поиска, улучшение эффективности декодирования видеоизображения на основании предсказывания и, следовательно, снижение скорости битового потока.

Группа изобретений относится к технологиям кодирования/декодирования изображения, которые используют список информации движения, хранящий предварительно восстановленную информацию движения. Техническим результатом является повышение эффективности сжатия изображения с использованием списка информации движения.

Изобретение относится к кодированию и декодированию видео, а более конкретно к установке флагов при генерации кодированного битового видеопотока. Технический результат заключается в генерации кодированного битового видеопотока с точки зрения эффективности его обработки.

Настоящее изобретение относится к области обработки звуковых сигналов. Способ включает получение звуковых данных, подлежащих обработке, и коэффициента регулировки скорости по меньшей мере одного звукового кадра звуковых данных; последовательное использование по меньшей мере одного звукового кадра в качестве текущего звукового кадра, подлежащего обработке, и преобразование текущего звукового кадра в частотную область; определение целевого фазового сигнала текущего звукового кадра в соответствии с коэффициентом регулировки скорости текущего звукового кадра и коэффициентом регулировки скорости предшествующего звукового кадра; и, в соответствии с целевым фазовым сигналом, выполнение преобразования во временную область текущего звукового кадра, преобразованного в частотную область, для получения обработанного текущего звукового кадра.

Изобретение относится к области обработки данных. Техническим результатом является усовершенствование индикации информации блоков доступа произвольного доступа и повышение надежности обнаружения границ блока доступа.

Группа изобретений относится к технологиям усовершенствованного видеокодирования, а именно к структуре разбиения на тайлы и подизображения. Техническим результатом является повышение эффективности кодирования/декодирования видеопотока.

Изобретение относится к области обработки и передаче видео, а более конкретно к передаче сигналов изображения или частей изображения, размер которых может изменяться от изображения к изображению или от части изображения к части изображения. Техническим результатом является повышение эффективности кодирования.

Изобретение относится к диагностированию цифровых телевизионных систем, в частности к способам поиска неисправностей и мониторинга возможной деградации качества в сетях цифрового телевидения на базе транспортных потоков MPEG TS, и может быть использовано при передаче цифровых телевизионных сигналов. Технический результат изобретения заключается в сокращении времени поиска неисправных узлов в сети, а также в возможности прогнозирования деградации качества сигнала до момента непосредственного возникновения неисправности.

Изобретение относится к способам кодирования и декодирования изображений, в которых изображение разделяется на блоки и выполняется предсказание. Техническим результатом является уменьшение вычислительной нагрузки и повышение эффективности кодирования.

Изобретение относится к области видеокодирования. Техническим результатом является повышение эффективности видеокодирования.

Изобретение относится к средствам для кодирования и декодирования изображений. Технический результат заключается в повышении эффективности кодирования. Получают информацию о режиме предсказания и остаточную информацию из битового потока. Получают отсчеты предсказания для целевого блока на основе информации о режиме предсказания. Получают коэффициенты преобразования целевого блока на основе остаточной информации. Получают остаточные отсчеты целевого блока на основе обратного преобразования для коэффициентов преобразования целевого блока. Формируют восстановленный кадр на основе отсчетов предсказания и остаточных отсчетов. Получение коэффициентов преобразования целевого блока содержит получение индекса неразделимого преобразования для целевого блока, причем обратное преобразование выполняют на основе индекса неразделимого преобразования. Когда значение индекса неразделимого преобразования не равно 0, обратное преобразование для коэффициентов, включенных в верхнюю левую целевую область целевого блока, выполняют на основе матрицы преобразования, связанной с индексом неразделимого преобразования. 4 н. и 12 з.п. ф-лы, 18 ил., 5 табл.
Наверх