УСТРОЙСТВО ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, СПОСОБ ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, ПРОГРАММА ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, УСТРОЙСТВО КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, СПОСОБ КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ И ПРОГРАММА КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ
DYNAMIC IMAGE DECODING DEVICE, A DYNAMIC IMAGE DECODING METHOD, A DYNAMIC IMAGE DECODING PROGRAM, A DYNAMIC IMAGE ENCODING DEVICE, A DYNAMIC IMAGE ENCODING METHOD AND A DYNAMIC IMAGE ENCODING PROGRAM

Область техники, к которой относится изобретение
[0001] Настоящее изобретение относится к технологии кодирования и декодирования кадров для разделения кадра на блоки и выполнения предсказания.
Уровень техники
[0002] При кодировании и декодировании кадров, целевой кадр разделяется на блоки, каждый из которых представляет собой набор из предписанного количества дискретных отсчетов, и процесс выполняется в единицах блоков. Эффективность кодирования повышается посредством разделения кадра на соответствующие блоки и надлежащего задания внутрикадрового предсказания (интра-предсказания) и межкадрового предсказания (интер-предсказания).
[0003] При кодировании/декодировании движущихся кадров, эффективность кодирования повышается посредством интер-предсказания для выполнения предсказания из кодированного/декодированного кадра. Патентный документ 1 описывает технологию для применения аффинного преобразования во время интер-предсказания. Довольно часто объект вызывает деформацию, такую как увеличение/уменьшение и вращение в движущихся кадрах, и эффективное кодирование обеспечивается за счет применения технологии патентного документа 1.
Список библиографических ссылок
Патентные документы
[0004] Патентный документ 1
Не прошедшая экспертизу заявка на патент (Япония), первая публикация № H9-172644.
Сущность изобретения
Техническая задача
[0005] Тем не менее, поскольку технология патентного документа 1 заключает в себе преобразование кадров, имеется проблема в том, что нагрузка по обработке является большой. С учетом вышеизложенной проблемы, настоящее изобретение предоставляет эффективную технологию кодирования с низкой нагрузкой.
Решение задачи
[0006]
Чтобы разрешать вышеописанные проблемы, устройство декодирования движущихся кадров согласно аспекту настоящего изобретения включает в себя модуль извлечения потенциально подходящих вариантов пространственной информации движения, выполненный с возможностью извлекать потенциально подходящий вариант пространственной информации движения из информации движения блока, соседнего с целевым блоком декодирования, в пространственной области; модуль извлечения потенциально подходящих вариантов временной информации движения, выполненный с возможностью извлекать потенциально подходящий вариант временной информации движения из информации движения блока, соседнего с целевым блоком декодирования, во временной области; и модуль извлечения потенциально подходящих вариантов информации движения на основе предыстории, выполненный с возможностью извлекать потенциально подходящий вариант информации движения на основе предыстории из запоминающего устройства для хранения информации движения декодированного блока, при этом потенциально подходящий вариант временной информации движения не сравнивается ни с потенциально подходящим вариантом пространственной информации движения, ни с потенциально подходящим вариантом информации движения на основе предыстории относительно информации движения.
[0007]
Кроме того, способ декодирования движущихся кадров согласно другому аспекту настоящего изобретения включает в себя этапы: извлечения потенциально подходящего варианта пространственной информации движения из информации движения блока, соседнего с целевым блоком декодирования, в пространственной области; извлечения потенциально подходящего варианта временной информации движения из информации движения блока, соседнего с целевым блоком декодирования, во временной области; и извлечения потенциально подходящего варианта информации движения на основе предыстории из запоминающего устройства для хранения информации движения декодированного блока, при этом потенциально подходящий вариант временной информации движения не сравнивается ни с потенциально подходящим вариантом пространственной информации движения, ни с потенциально подходящим вариантом информации движения на основе предыстории относительно информации движения.
[0008]
Кроме того, программа для декодирования движущихся кадров согласно другому аспекту настоящего изобретения предписывает компьютеру выполнять этапы: извлечения потенциально подходящего варианта пространственной информации движения из информации движения блока, соседнего с целевым блоком декодирования, в пространственной области; извлечения потенциально подходящего варианта временной информации движения из информации движения блока, соседнего с целевым блоком декодирования, во временной области; и извлечения потенциально подходящего варианта информации движения на основе предыстории из запоминающего устройства для хранения информации движения декодированного блока, при этом потенциально подходящий вариант временной информации движения не сравнивается ни с потенциально подходящим вариантом пространственной информации движения, ни с потенциально подходящим вариантом информации движения на основе предыстории относительно информации движения.
Преимущества изобретения
[0009] Согласно настоящему изобретению, можно реализовывать высокоэффективный процесс кодирования/декодирования кадров с низкой нагрузкой.
Краткое описание чертежей
[0010] Фиг. 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 является пояснительной схемой, показывающей предсказание с компенсацией движения, когда время такта опорного кадра (RefL0Pic) L0 находится раньше времени такта целевого кадра (CurPic), в качестве L0-предсказания.
Фиг. 33 является пояснительной схемой, показывающей предсказание с компенсацией движения, когда время такта опорного кадра L0-предсказания находится позже времени такта целевого кадра, в качестве L0-предсказания.
Фиг. 34 является пояснительной схемой, показывающей направление предсказания для предсказания с компенсацией движения, когда время такта опорного кадра L0-предсказания находится раньше времени такта целевого кадра, и время такта опорного кадра L1-предсказания находится позже времени такта целевого кадра, в качестве бипредсказания.
Фиг. 35 является пояснительной схемой, показывающей направление предсказания для предсказания с компенсацией движения, когда время такта опорного кадра L0-предсказания и время такта опорного кадра L1-предсказания находятся раньше времени такта целевого кадра, в качестве бипредсказания.
Фиг. 36 является пояснительной схемой, показывающей направление предсказания для предсказания с компенсацией движения, когда время такта опорного кадра L0-предсказания и время такта опорного кадра L1-предсказания находятся позже времени такта целевого кадра, в качестве бипредсказания.
Фиг. 37 является пояснительной схемой, показывающей пример аппаратной конфигурации устройства кодирования/декодирования согласно варианту осуществления настоящего изобретения.
Фиг. 38 является блок-схемой подробной конфигурации модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 16 согласно второму варианту осуществления настоящего изобретения.
Фиг. 39 является блок-схемой подробной конфигурации модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 22 согласно второму варианту осуществления настоящего изобретения.
Фиг. 40 является блок-схемой подробной конфигурации модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 16 согласно третьему варианту осуществления настоящего изобретения.
Фиг. 41 является блок-схемой подробной конфигурации модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 22 согласно третьему варианту осуществления настоящего изобретения.
Подробное описание вариантов осуществления
[0011] В дальнейшем задаются технологические и технические термины, используемые в варианте осуществления.
Древовидный блок
[0012]
В варианте осуществления, целевой кадр кодирования/декодирования одинаково разделяется на единицы предварительно определенного размера. Эта единица задается как древовидный блок. Хотя размер древовидного блока составляет 128×128 дискретных отсчетов на фиг. 4, размер древовидного блока не ограничен этим, и любой размер может задаваться. Древовидный блок цели (соответствующей цели кодирования в процессе кодирования или цели декодирования в процессе декодирования) переключается в порядке растрового сканирования, т.е. слева направо и сверху вниз. Внутренняя часть каждого древовидного блока дополнительно может рекурсивно разделяться. Блок, который представляет собой цель кодирования/декодирования после того, как древовидный блок рекурсивно разделяется, задается как блок кодирования. Кроме того, древовидный блок и блок кодирования совместно задаются в качестве блоков. Эффективное кодирование обеспечивается посредством выполнения соответствующего разбиения блоков. Размер древовидного блока может составлять фиксированное значение, предварительно определенное посредством устройства кодирования и устройства декодирования, или размер древовидного блока, определенный посредством устройства кодирования, может быть выполнен с возможностью передаваться в устройство декодирования. Здесь, максимальный размер древовидного блока составляет 128×128 дискретных отсчетов, и минимальный размер древовидного блока составляет 16×16 дискретных отсчетов. Кроме того, максимальный размер блока кодирования составляет 64×64 дискретных отсчета, и минимальный размер блока кодирования составляет 4×4 дискретных отсчета.
Режим предсказания
[0013]
Переключение выполняется между интра-предсказанием (MODE_INTRA), в котором предсказание выполняется из обработанного сигнала кадров для целевого кадра, и интер-предсказанием (MODE_INTER), в котором предсказание выполняется из сигнала кадров для обработанного кадра в единицах целевых блоков кодирования.
Обработанный кадр используется для кадра, сигнала кадров, древовидного блока, блока, блока кодирования и т.п., полученных посредством декодирования сигнала, полностью кодированного в процессе кодирования, и используется для кадра, сигнала кадров, древовидного блока, блока, блока кодирования и т.п., полученных посредством завершения декодирования в процессе декодирования.
Режим, в котором идентифицируются интра-предсказание (MODE_INTRA) и интер-предсказание (MODE_INTER), задается как режим предсказания (PredMode). Режим предсказания (PredMode) имеет интра-предсказание (MODE_INTRA) или интер-предсказание (MODE_INTER) в качестве значения.
Интер-предсказание
[0014]
При интер-предсказании, при котором предсказание выполняется из сигнала кадров для обработанного кадра, множество обработанных кадров могут использоваться в качестве опорных кадров. Чтобы управлять множеством опорных кадров, два типа опорных списков в виде 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-предсказания и бипредсказания задается как режим интер-предсказания. В последующей обработке, константы и переменные с подстрочным индексом LX в выводе предположительно должны обрабатываться для каждого из L0 и L1.
Режим идентификации предикторов векторов движения
[0015]
Режим идентификации предикторов векторов движения представляет собой режим для передачи индекса для идентификации предиктора вектора движения, разности векторов движения, режима интер-предсказания и опорного индекса и определения информации интер-предсказания целевого блока. Предиктор вектора движения извлекается из потенциально подходящего варианта предиктора вектора движения, извлекаемого из обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из количества блоков, принадлежащих обработанному кадру, и индекса для идентификации предиктора вектора движения.
Режим объединения
[0016]
Режим объединения представляет собой режим, в котором информация интер-предсказания целевого блока извлекается из информации интер-предсказания обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из количества блоков, принадлежащих обработанному кадру, без передачи разности векторов движения и опорного индекса.
[0017] Обработанный блок, соседний с целевым блоком, и информация интер-предсказания обработанного блока задаются как пространственные потенциально подходящие варианты объединения. Блок, расположенный в идентичной позиции или около (рядом) с целевым блоком из количества блоков, принадлежащих обработанному кадру, и информация интер-предсказания, извлекаемая из информации интер-предсказания блока, задаются как временные потенциально подходящие варианты объединения. Каждый потенциально подходящий вариант объединения регистрируется в списке потенциально подходящих вариантов объединения, и потенциально подходящий вариант объединения, используемый для предсказания целевого блока, идентифицируется посредством индекса объединения.
Соседний блок
[0018]
Фиг. 11 является пояснительной схемой, показывающей опорный блок, на который ссылаются при извлечении информации интер-предсказания в режиме идентификации предикторов векторов движения и режиме объединения. A0, A1, A2, B0, B1, B2 и B3 представляют собой обработанные блоки, соседние с целевым блоком. T0 представляет собой блок, расположенный в идентичной позиции или около (рядом) с целевым блоком в целевом кадре из количества блоков, принадлежащих обработанному кадру.
[0019] A1 и A2 представляют собой блоки, расположенные в левой стороне относительно целевого блока кодирования и соседние с целевым блоком кодирования. B1 и B3 представляют собой блоки, расположенные в верхней стороне относительно целевого блока кодирования и соседние с целевым блоком кодирования. A0, B0 и B2 представляют собой блоки, расположенные снизу слева, сверху справа и сверху слева относительно целевого блока кодирования, соответственно.
[0020] Ниже описываются подробности того, как обрабатывать соседние блоки в режиме идентификации предикторов векторов движения и режиме объединения.
Аффинная компенсация движения
[0021]
Аффинная компенсация движения представляет собой процесс выполнения компенсации движения посредством разделения блока кодирования на субблоки предварительно определенной единицы и отдельного определения вектора движения для каждого из субблоков, на которые разделяется блок кодирования. Вектор движения каждого субблока извлекается на основе одной или более управляющих точек, извлекаемых из информации интер-предсказания обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из количества блоков, принадлежащих обработанному кадру. Хотя размер субблока составляет 4×4 дискретных отсчета в настоящем варианте осуществления, размер субблока не ограничен этим, и вектор движения может извлекаться в единицах дискретных отсчетов.
[0022] Пример аффинной компенсации движения в случае двух управляющих точек показывается на фиг. 14. В этом случае, две управляющих точки имеют два параметра в виде компонента горизонтального направления и компонента вертикального направления. Таким образом, аффинное преобразование в случае двух управляющих точек называется "четырехпараметрическим аффинным преобразованием". CP1 и CP2 по фиг. 14 представляют собой управляющие точки.
Пример аффинной компенсации движения в случае трех управляющих точек показывается на фиг. 15. В этом случае, три управляющих точки имеют два параметра в виде компонента горизонтального направления и компонента вертикального направления. Таким образом, аффинное преобразование в случае трех управляющих точек называется "шестипараметрическим аффинным преобразованием". CP1, CP2 и CP3 по фиг. 15 представляют собой управляющие точки.
[0023] Аффинная компенсация движения может использоваться как в режиме идентификации предикторов векторов движения, так и в режиме объединения. Режим, в котором аффинная компенсация движения применяется в режиме идентификации предикторов векторов движения, задается как режим идентификации предикторов векторов движения на основе субблоков, и режим, в котором аффинная компенсация движения применяется в режиме объединения, задается как режим объединения на основе субблоков.
Синтаксис интер-предсказания
[0024]
В дальнейшем описывается синтаксис, связанный со интер-предсказанием, с использованием фиг. 12 и 13.
Флаг merge_flag на фиг. 12 указывает то, задается целевой блок кодирования в режим объединения или в режим идентификации предикторов векторов движения. Флаг merge_affine_flag указывает то, применяется или нет режим объединения на основе субблоков к целевому блоку кодирования режима объединения. Флаг inter_affine_flag указывает то, следует или нет применять режим идентификации предикторов векторов движения на основе субблоков к целевому блоку кодирования режима идентификации предикторов векторов движения. Флаг cu_affine_type_flag используется для того, чтобы определять количество управляющих точек в режиме идентификации предикторов векторов движения на основе субблоков.
Фиг. 13 показывает значение каждого синтаксического элемента и способ предсказания, соответствующий ему. Режим нормального объединения соответствует merge_flag=1 и merge_affine_flag=0 и не представляет собой режим объединения на основе субблоков. Режим объединения на основе субблоков соответствует merge_flag=1 и merge_affine_flag=1. Режим идентификации предикторов нормальных векторов движения соответствует merge_flag=0 и inter_affine_flag=0. Режим идентификации предикторов нормальных векторов движения представляет собой режим объединения предиктора вектора движения, который не представляет собой режим идентификации предикторов векторов движения на основе субблоков. Режим идентификации предикторов векторов движения на основе субблоков соответствует merge_flag=0 и inter_affine_flag=1. Когда merge_flag=0 и inter_affine_flag=1, cu_affine_type_flag дополнительно передается, чтобы определять количество управляющих точек.
POC
[0025]
Номер в последовательности кадров (POC) представляет собой переменную, ассоциированную с кадром, который должен кодироваться, и задается равным значению, которое постепенно увеличивается на 1 согласно порядку вывода кадров. Согласно POC-значению, можно различать то, являются или нет кадры идентичными, чтобы различать переднезаднюю взаимосвязь между кадрами в порядке вывода или извлекать расстояние между кадрами. Например, если POC двух кадров имеют идентичное значение, может определяться то, что они представляют собой идентичный кадр. Когда POC двух кадров имеют различные значения, может определяться то, что кадр с меньшим POC-значением представляет собой кадр, который должен выводиться первым. Разность между POC двух кадров указывает межкадровое расстояние в направлении временной оси.
Первый вариант осуществления
[0026]
В дальнейшем описываются устройство 100 кодирования кадров и устройство 200 декодирования кадров согласно первому варианту осуществления настоящего изобретения.
[0027] Фиг. 1 является блок-схемой устройства 100 кодирования кадров согласно первому варианту осуществления. Устройство 100 кодирования кадров согласно варианту осуществления включает в себя модуль 101 разбиения блоков, модуль 102 интер-предсказания, модуль 103 интра-предсказания, запоминающее устройство 104 декодированных кадров, модуль 105 определения способа предсказания, модуль 106 формирования остатков, модуль 107 ортогонального преобразования/квантования, модуль 108 кодирования битовых строк, модуль 109 обратного квантования/обратного ортогонального преобразования, модуль 110 наложения сигналов кадров для декодирования и запоминающее устройство 111 для хранения информации кодирования.
[0028] Модуль 101 разбиения блоков рекурсивно разделяет входной кадр, чтобы формировать блок кодирования. Модуль 101 разбиения блоков включает в себя модуль квадратического разбиения, который разделяет разбитый целевой блок в горизонтальном направлении и в вертикальном направлении, и модуль двоичного/троичного разбиения, который разделяет разбитый целевой блок либо в горизонтальном направлении, либо в вертикальном направлении. Модуль 101 разбиения блоков задает сформированный блок кодирования в качестве целевого блока кодирования и предоставляет сигнал кадров целевого блока кодирования в модуль 102 интер-предсказания, модуль 103 интра-предсказания и модуль 106 формирования остатков. Кроме того, модуль 101 разбиения блоков предоставляет информацию, указывающую определенную структуру рекурсивного разбиения, в модуль 108 кодирования битовых строк. Ниже описывается подробная работа модуля 101 разбиения блоков.
[0029] Модуль 102 интер-предсказания выполняет интер-предсказание целевого блока кодирования. Модуль 102 интер-предсказания извлекает множество потенциально подходящих вариантов информации интер-предсказания из информации интер-предсказания, сохраненной в запоминающем устройстве 111 для хранения информации кодирования, и декодированного сигнала кадров, сохраненного в запоминающем устройстве 104 декодированных кадров, выбирает подходящий режим интер-предсказания из множества извлеченных потенциально подходящих вариантов и предоставляет выбранный режим интер-предсказания и предсказанный сигнал кадров согласно выбранному режиму интер-предсказания в модуль 105 определения способа предсказания. Ниже описывается подробная конфигурация и работа модуля 102 интер-предсказания.
[0030] Модуль 103 интра-предсказания выполняет интра-предсказание целевого блока кодирования. Модуль 103 интра-предсказания ссылается на декодированный сигнал кадров, сохраненный в запоминающем устройстве 104 декодированных кадров в качестве опорного дискретного отсчета, и формирует предсказанный сигнал кадров согласно интра-предсказанию на основе информации кодирования, такой как режим интра-предсказания, сохраненной в запоминающем устройстве 111 для хранения информации кодирования. При интра-предсказании, модуль 103 интра-предсказания выбирает подходящий режим интра-предсказания из множества режимов интра-предсказания и предоставляет выбранный режим интра-предсказания и предсказанный сигнал кадров согласно выбранному режиму интра-предсказания в модуль 105 определения способа предсказания.
Примеры интра-предсказания показаны на фиг. 10A и 10B. Фиг. 10A показывает соответствие между направлением предсказания интра-предсказания и номером режима интра-предсказания. Например, в режиме 50 интра-предсказания, кадр интра-предсказания формируется посредством копирования опорных дискретных отсчетов в вертикальном направлении. Режим 1 интра-предсказания представляет собой DC-режим и представляет собой режим, в котором все выборочные значения целевого блока составляют среднее значение опорных дискретных отсчетов. Режим 0 интра-предсказания представляет собой планарный режим и представляет собой режим для создания двумерного кадра интра-предсказания из опорных дискретных отсчетов в вертикальном и горизонтальном направлениях. Фиг. 10B представляет собой пример, в котором кадр интра-предсказания, формируется в случае режима 40 интра-предсказания. Модуль 103 интра-предсказания копирует значение опорного дискретного отсчета в направлении, указываемом посредством режима интра-предсказания, относительно каждого дискретного отсчета целевого блока. Когда опорный дискретный отсчет режима интра-предсказания не находится в целочисленной позиции, модуль 103 интра-предсказания определяет опорное выборочное значение согласно интерполяции из опорных выборочных значений соседних целочисленных позиций.
[0031] Запоминающее устройство 104 декодированных кадров сохраняет декодированный кадр, сформированный посредством модуля 110 наложения сигналов кадров для декодирования. Запоминающее устройство 104 декодированных кадров предоставляет сохраненный декодированный кадр в модуль 102 интер-предсказания и модуль 103 интра-предсказания.
[0032] Модуль 105 определения способа предсказания определяет оптимальный режим предсказания посредством оценки каждого интра-предсказания и интер-предсказания с использованием информации кодирования, остаточного объема кода, величины искажения между предсказанным сигналом кадров и целевым сигналом кадров и т.п. В случае интра-предсказания, модуль 105 определения способа предсказания предоставляет информацию интра-предсказания, такую как режим интра-предсказания, в качестве информации кодирования в модуль 108 кодирования битовых строк. В случае режима интер-предсказанного объединения, модуль 105 определения способа предсказания предоставляет информацию интер-предсказания, такую как индекс объединения и информация, указывающая то, представляет режим собой или нет режим объединения на основе субблоков (флаг объединения на основе субблоков), в качестве информации кодирования в модуль 108 кодирования битовых строк. В случае режима идентификации предикторов векторов движения интер-предсказания, модуль 105 определения способа предсказания предоставляет информацию интер-предсказания, такую как режим интер-предсказания, индекс предиктора вектора движения, опорные индексы L0 и L1, разность векторов движения и информация, указывающая то, представляет режим собой или нет режим идентификации предикторов векторов движения на основе субблоков (флаг предиктора вектора движения на основе субблоков), в качестве информации кодирования в модуль 108 кодирования битовых строк. Дополнительно, модуль 105 определения способа предсказания предоставляет определенную информацию кодирования в запоминающее устройство 111 для хранения информации кодирования. Модуль 105 определения способа предсказания предоставляет предсказанный сигнал кадров в модуль 106 формирования остатков и модуль 110 наложения сигналов кадров для декодирования.
[0033] Модуль 106 формирования остатков формирует остаток посредством вычитания предсказанного сигнала кадров из целевого сигнала кадров и предоставляет остаток в модуль 107 ортогонального преобразования/квантования.
[0034] Модуль 107 ортогонального преобразования/квантования выполняет ортогональное преобразование и квантование для остатка в соответствии с параметром квантования, чтобы формировать ортогонально преобразованный/квантованный остаток, и предоставляет сформированный остаток в модуль 108 кодирования битовых строк и модуль 109 обратного квантования/обратного ортогонального преобразования.
[0035] Модуль 108 кодирования битовых строк кодирует информацию кодирования согласно способу предсказания, определенному посредством модуля 105 определения способа предсказания для каждого блока кодирования, в дополнение к информации единиц последовательностей, кадров, срезов и блоков кодирования. В частности, модуль 108 кодирования битовых строк кодирует режим PredMode предсказания для каждого блока кодирования. Когда режим предсказания представляет собой интер-предсказание (MODE_INTER), модуль 108 кодирования битовых строк кодирует информацию кодирования (информацию интер-предсказания), такую как флаг для различения того, представляет или нет режим собой режим объединения, флаг объединения на основе субблоков, индекс объединения, когда режим представляет собой режим объединения, режим интер-предсказания, когда режим не представляет собой режим объединения, индекс предиктора вектора движения, информация относительно разности векторов движения и флаг предиктора вектора движения на основе субблоков в соответствии с указанным синтаксисом (синтаксическим правилом для битовых строк) и формирует первые битовые строки. Когда режим предсказания представляет собой интра-предсказание (MODE_INTRA), информация кодирования (информация интра-предсказания), такая как режим интра-предсказания кодируется в соответствии с указанным синтаксисом (синтаксическим правилом для битовых строк), и первые битовые строки формируются. Кроме того, модуль 108 кодирования битовых строк энтропийно кодирует ортогонально преобразованный и квантованный остаток в соответствии с указанным синтаксисом, чтобы формировать вторые битовые строки. Модуль 108 кодирования битовых строк мультиплексирует первые битовые строки и вторые битовые строки в соответствии с указанным синтаксисом и выводит поток битов.
[0036] Модуль 109 обратного квантования/обратного ортогонального преобразования вычисляет остаток посредством выполнения обратного квантования и обратного ортогонального преобразования для ортогонально преобразованного/квантованного остатка, предоставляемого из модуля 107 ортогонального преобразования/квантования, и предоставляет вычисленный остаток в модуль 110 наложения сигналов кадров для декодирования.
[0037] Модуль 110 наложения сигналов кадров для декодирования накладывает предсказанный сигнал кадров согласно определению модуля 105 определения способа предсказания и остаток, обратно квантованный и обратно ортогонально преобразованный посредством модуля 109 обратного квантования/обратного ортогонального преобразования, чтобы формировать декодированный кадр, и сохраняет декодированный кадр в запоминающем устройстве 104 декодированных кадров. Кроме того, модуль 110 наложения сигналов кадров для декодирования может сохранять декодированный кадр в запоминающем устройстве 104 декодированных кадров после выполнения процесса фильтрации для уменьшения искажения, такого как искажение в виде блочности вследствие кодирования для декодированного кадра.
[0038] Запоминающее устройство 111 для хранения информации кодирования сохраняет информацию кодирования, такую как режим предсказания (интер-предсказание или интра-предсказание), определенный посредством модуля 105 определения способа предсказания. В случае интер-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как определенный вектор движения, опорные индексы опорных списков L0 и L1 и списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Кроме того, в случае режима интер-предсказанного объединения, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как индекс объединения и информация, указывающая то, представляет режим собой или нет режим объединения на основе субблоков (флаг объединения на основе субблоков), в дополнение к вышеописанной информации. Кроме того, в случае режима идентификации предикторов векторов движения интер-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как режим интер-предсказания, индекс предиктора вектора движения, разность векторов движения и информация, указывающая то, представляет режим собой или нет режим идентификации предикторов векторов движения на основе субблоков (флаг предиктора вектора движения на основе субблоков), в дополнение к вышеописанной информации. В случае интра-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интра-предсказания, такую как определенный режим интра-предсказания.
[0039] Фиг. 2 является блок-схемой, показывающей конфигурацию устройства декодирования кадров согласно варианту осуществления настоящего изобретения, соответствующего устройству кодирования кадров по фиг. 1. Устройство декодирования кадров согласно варианту осуществления включает в себя модуль 201 декодирования битовых строк, модуль 202 разбиения блоков, модуль 203 интер-предсказания, модуль 204 интра-предсказания, запоминающее устройство 205 для хранения информации кодирования, модуль 206 обратного квантования/обратного ортогонального преобразования, модуль 207 наложения сигналов кадров для декодирования и запоминающее устройство 208 декодированных кадров.
[0040] Поскольку процесс декодирования устройства декодирования кадров по фиг. 2 соответствует процессу декодирования, предоставленному в устройстве кодирования кадров по фиг. 1, компоненты запоминающего устройства 205 для хранения информации кодирования, модуля 206 обратного квантования/обратного ортогонального преобразования, модуля 207 наложения сигналов кадров для декодирования и запоминающего устройства 208 декодированных кадров по фиг. 2 имеют функции, соответствующие компонентам запоминающего устройства 111 для хранения информации кодирования, модуля 109 обратного квантования/обратного ортогонального преобразования, модуля 110 наложения сигналов кадров для декодирования и запоминающего устройства 104 декодированных кадров устройства кодирования кадров по фиг. 1.
[0041] Поток битов, предоставляемый в модуль 201 декодирования битовых строк, разделяется в соответствии с указанным синтаксическим правилом. Модуль 201 декодирования битовых строк декодирует отделенную первую битовую строку и получает информацию единиц последовательностей, кадров, срезов, блоков кодирования и информацию кодирования единиц блоков кодирования. В частности, модуль 201 декодирования битовых строк декодирует режим PredMode предсказания для различения интер-предсказания (MODE_INTER) или интра-предсказания (MODE_INTRA) в единицах блоков кодирования. Когда режим предсказания представляет собой интер-предсказание (MODE_INTER), модуль 201 декодирования битовых строк декодирует информацию кодирования (информацию интер-предсказания) относительно флага для различения того, представляет или нет режим собой режим объединения, индекс объединения, когда режим представляет собой режим объединения, флаг объединения на основе субблоков, режим интер-предсказания, когда режим представляет собой режим идентификации предикторов векторов движения, индекс предиктора вектора движения, разность векторов движения, флаг предиктора вектора движения на основе субблоков и т.п. в соответствии с указанным синтаксисом и предоставляет информацию кодирования (информацию интер-предсказания) в запоминающее устройство 205 для хранения информации кодирования через модуль 203 интер-предсказания и модуль 202 разбиения блоков. Когда режим предсказания представляет собой интра-предсказание (MODE_INTRA), информация кодирования (информация интра-предсказания), такая как режим интра-предсказания декодируется в соответствии с указанным синтаксисом, и информация кодирования (информация интра-предсказания) предоставляется в запоминающее устройство 205 для хранения информации кодирования через модуль 203 интер-предсказания или модуль 204 интра-предсказания и модуль 202 разбиения блоков. Модуль 201 декодирования битовых строк декодирует отделенные вторые битовые строки, чтобы вычислять ортогонально преобразованный/квантованный остаток, и предоставляет ортогонально преобразованный/квантованный остаток в модуль 206 обратного квантования/обратного ортогонального преобразования.
[0042] Когда режим PredMode предсказания целевого блока кодирования представляет собой режим идентификации предикторов векторов движения при интер-предсказании (MODE_INTER), модуль 203 интер-предсказания извлекает множество потенциально подходящих вариантов предикторов векторов движения с использованием информации кодирования ранее декодированного сигнала кадров, сохраненной в запоминающем устройстве 205 для хранения информации кодирования, и регистрирует множество извлеченных потенциально подходящих вариантов предикторов векторов движения в списке потенциально подходящих вариантов предикторов векторов движения, который описывается ниже. Модуль 203 интер-предсказания выбирает предиктор вектора движения согласно индексу предиктора вектора движения, декодированному и предоставляемому посредством модуля 201 декодирования битовых строк, из множества потенциально подходящих вариантов предикторов векторов движения, зарегистрированных в списке потенциально подходящих вариантов предикторов векторов движения, вычисляет вектор движения из разности векторов движения, декодированной посредством модуля 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 декодирования битовых строк, выбирается из множества потенциально подходящих вариантов объединения, зарегистрированных в списке потенциально подходящих вариантов объединения, и информация интер-предсказания, такая как флаги 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 интер-предсказания.
[0043] Модуль 204 интра-предсказания выполняет интра-предсказание, когда режим PredMode предсказания блока кодирования цели представляет собой интра-предсказание (MODE_INTRA). Информация кодирования, декодированная посредством модуля 201 декодирования битовых строк, включает в себя режим интра-предсказания. Модуль 204 интра-предсказания формирует предсказанный сигнал кадров согласно интра-предсказанию из декодированного сигнала кадров, сохраненного в запоминающем устройстве 208 декодированных кадров, в соответствии с режимом интра-предсказания, включенным в информацию кодирования, декодированную посредством модуля 201 декодирования битовых строк, и предоставляет сформированный предсказанный сигнал кадров в модуль 207 наложения сигналов кадров для декодирования. Поскольку модуль 204 интра-предсказания соответствует модулю 103 интра-предсказания устройства 100 кодирования кадров, процесс, аналогичный процессу модуля 103 интра-предсказания, выполняется.
[0044] Модуль 206 обратного квантования/обратного ортогонального преобразования выполняет обратное ортогональное преобразование и обратное квантование для ортогонально преобразованного/квантованного остатка, декодированного посредством модуля 201 декодирования битовых строк, и получает обратно ортогонально преобразованный/обратно квантованный остаток.
[0045] Модуль 207 наложения сигналов кадров для декодирования декодирует сигнал кадров для декодирования посредством наложения предсказанного сигнала кадров, предсказанного в интер-режиме посредством модуля 203 интер-предсказания, или предсказанного сигнала кадров, предсказанного в интра-режиме посредством модуля 204 интра-предсказания, и остатка, обратно ортогонально преобразованного/обратно квантованного посредством модуля 206 обратного квантования/обратного ортогонального преобразования, и сохраняет декодированный сигнал кадров для декодирования в запоминающем устройстве 208 декодированных кадров. Во время хранения в запоминающем устройстве 208 декодированных кадров, модуль 207 наложения сигналов кадров для декодирования может сохранять декодированный кадр в запоминающем устройстве 208 декодированных кадров после того, как процесс фильтрации для уменьшения искажения в виде блочности и т.п. вследствие кодирования выполняется для декодированного кадра.
[0046] Далее описывается работа модуля 101 разбиения блоков в устройстве 100 кодирования кадров. Фиг. 3 является блок-схемой последовательности операций способа, показывающей операцию разделения кадра на древовидные блоки и дополнительного разделения каждого древовидного блока. Во-первых, входной кадр разделяется на древовидные блоки, имеющие предварительно определенный размер (этап S1001). Каждый древовидный блок сканируется в предварительно определенном порядке, т.е. в порядке растрового сканирования (этап S1002), и внутренняя часть древовидного блока цели разделяется (этап S1003).
[0047] Фиг. 7 является блок-схемой последовательности операций способа, показывающей подробную работу процесса разбиения этапа S1003. Во-первых, определяется то, должен или нет целевой блок разделяться на четыре части (этап S1101).
[0048] Когда определяется то, что целевой блок должен разделяться на четыре части, целевой блок разделяется на четыре части (этап S1102). Каждый блок, полученный посредством разделения целевого блока, сканируется в порядке Z-сканирования, т.е. в порядке верхней левой, верхней правой, нижней левой и нижней правой частей (этап S1103). Фиг. 5 показывает пример порядка Z-сканирования, и ссылка с номером 601 по фиг. 6A показывает пример, в котором целевой блок разделяется на четыре части. Числа 0-3 ссылки с номером 601 по фиг. 6A указывают порядок обработки. Затем процесс разбиения по фиг. 7 рекурсивно выполняется для каждого блока из разделения на этапе S1101 (этап S1104).
[0049] Когда определяется то, что целевой блок не должен разделяться на четыре части, двоичное/троичное разбиение выполняется (этап S1105).
[0050] Фиг. 8 является блок-схемой последовательности операций способа, показывающей подробную работу процесса двоичного/троичного разбиения этапа S1105. Во-первых, определяется то, должен либо нет целевой блок разделяться на две или три части, т.е. то, должно либо нет выполняться двоичное или троичное разбиение (этап S1201).
[0051] Когда не определяется то, что целевой блок должен разделяться на две или три части, т.е. когда определяется то, что целевой блок не должен разделяться, разбиение завершается (этап S1211). Таким образом, процесс рекурсивного разбиения дополнительно не выполняется для блоков, разделенных согласно процессу рекурсивного разбиения.
[0052] Когда определяется то, что целевой блок должен разделяться на две или три части, дополнительно определяется то, должен или нет целевой блок разделяться на две части (этап S1202).
[0053] Когда определяется то, что целевой блок должен разделяться на две части, определяется то, должен или нет целевой блок разделяться на верхнюю и нижнюю части (в вертикальном направлении) (этап S1203). На основе результата определения, целевой блок разделяется на две части, которые представляют собой верхнюю и нижнюю части (в вертикальном направлении) (этап S1204), или целевой блок разделяется на две части, которые представляют собой левую и правую части (в горизонтальном направлении) (этап S1205). Как результат этапа S1204, целевой блок разделяется на две части, которые представляют собой верхнюю и нижнюю части (в вертикальном направлении), как указано посредством ссылки с номером 602 на фиг. 6B. Как результат этапа S1205, целевой блок разделяется на две части, которые представляют собой левую и правую части (в горизонтальном направлении), как указано посредством ссылки с номером 604 по фиг. 6D.
[0054] Когда не определяется то, что целевой блок должен разделяться на две части, т.е. когда определяется то, что целевой блок должен разделяться на три части, на этапе S1202, определяется то, должен или нет целевой блок разделяться на верхнюю, среднюю и нижнюю части (в вертикальном направлении) (этап S1206). На основе результата определения, целевой блок разделяется на три части, которые представляют собой верхнюю, среднюю и нижнюю части (в вертикальном направлении) (этап S1207), или целевой блок разделяется на три части, которые представляют собой левую, среднюю и правую части (в горизонтальном направлении) (этап S1208). Как результат этапа S1207, целевой блок разделяется на три части, которые представляют собой верхнюю, среднюю и нижнюю части (в вертикальном направлении), как указано посредством ссылки с номером 603 по фиг. 6C. Как результат этапа S1208, целевой блок разделяется на три части, которые представляют собой левую, среднюю и правую части (в горизонтальном направлении), как указано посредством ссылки с номером 605 по фиг. 6E.
[0055] После того, как любой из этапов S1204, S1205, S1207 и S1208 выполняется, каждый из блоков, на которые разделяется целевой блок, сканируется в порядке слева направо и сверху вниз (этапе S1209). Номера 0-2 ссылок с номерами 602-605 по фиг. 6B в 6E указывают порядок обработки. Для каждого из блоков, на которые разделяется целевой блок, процесс двоичного/троичного разбиения по фиг. 8 рекурсивно выполняется (этап S1210).
[0056] Рекурсивное разбиение блоков, описанное здесь, может ограничивать необходимость разбиения согласно количеству разбиений или размеру целевого блока и т.п. Информация, которая ограничивает необходимость разбиения, может реализовываться посредством конфигурации, в которой информация не доставляется посредством выполнения согласования между устройством кодирования и устройством декодирования заранее, либо реализовываться посредством конфигурации, в которой устройство кодирования определяет информацию, которая ограничивает необходимость разбиения, записывает информацию в битовую строку и доставляет информацию в устройство декодирования.
[0057] Когда определенный блок разделяется, блок перед разбиением называется "родительским блоком", и каждый блок после разбиения называется "дочерним блоком".
[0058] Далее описывается работа модуля 202 разбиения блоков в устройстве 200 декодирования кадров. Модуль 202 разбиения блоков разделяет древовидный блок согласно процедуре обработки, аналогичной процедуре модуля 101 разбиения блоков устройства 100 кодирования кадров. Тем не менее, имеется отличие в том, что модуль 101 разбиения блоков устройства 100 кодирования кадров применяет технологию оптимизации, такую как оценка оптимальной формы на основе распознавания кадров либо оптимизация показателя искажения, чтобы определять оптимальную форму разбиения блоков, тогда как модуль 202 разбиения блоков устройства 200 декодирования кадров определяет форму разбиения блоков посредством информации разбиения декодирования блока, записанной в битовой строке.
[0059] Синтаксис (синтаксическое правило для битовых строк), связанный с разбиением блоков согласно первому варианту осуществления, показывается на фиг. 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). До тех пор, пока mtt_split=0 не достигается, иерархическое разбиение блоков выполняется посредством рекурсивного вызова multi_type_tree.
Интер-предсказание
[0060]
Способ интер-предсказания согласно варианту осуществления осуществляется в модуле 102 интер-предсказания устройства кодирования кадров по фиг. 1 и в модуле 203 интер-предсказания устройства декодирования кадров по фиг. 2.
[0061] В дальнейшем описывается способ интер-предсказания согласно варианту осуществления со ссылкой на чертежи. Способ интер-предсказания осуществляется в процессах кодирования и декодирования в единицах блоков кодирования.
Описание модуля 102 интер-предсказания на стороне кодирования
[0062]
Фиг. 16 является схемой, показывающей подробную конфигурацию модуля 102 интер-предсказания устройства кодирования кадров на фиг. 1. Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения извлекает множество потенциально подходящих вариантов предикторов нормальных векторов движения, чтобы выбирать предиктор вектора движения, и вычисляет разность векторов движения между выбранным предиктором вектора движения и обнаруженным вектором движения. Обнаруженный режим интер-предсказания, опорный индекс и вектор движения и вычисленная разность векторов движения становятся информацией интер-предсказания режима идентификации предикторов нормальных векторов движения. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения.
[0063] Модуль 302 извлечения режимов нормального объединения извлекает множество потенциально подходящих вариантов нормального объединения, чтобы выбирать потенциально подходящий вариант нормального объединения, и получает информацию интер-предсказания режима нормального объединения. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 302 извлечения режимов нормального объединения.
[0064] Модуль 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков извлекает множество потенциально подходящих вариантов предикторов векторов движения на основе субблоков, чтобы выбирать предиктор вектора движения на основе субблоков, и вычисляет разность векторов движения между выбранным предиктором вектора движения на основе субблоков и обнаруженным вектором движения. Обнаруженный режим интер-предсказания, опорный индекс и вектор движения и вычисленная разность векторов движения становятся информацией интер-предсказания режима идентификации предикторов векторов движения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания.
[0065] Модуль 304 извлечения режимов объединения на основе субблоков извлекает множество потенциально подходящих вариантов объединения на основе субблоков, чтобы выбирать потенциально подходящий вариант объединения на основе субблоков, и получает информацию интер-предсказания режима объединения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания.
[0066] Модуль 305 определения режима интер-предсказания определяет информацию интер-предсказания на основе информации интер-предсказания, предоставляемой из модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения, модуля 302 извлечения режимов нормального объединения, модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков и модуля 304 извлечения режимов объединения на основе субблоков. Информация интер-предсказания согласно результату определения предоставляется из модуля 305 определения режима интер-предсказания в модуль 306 предсказания с компенсацией движения.
[0067] Модуль 306 предсказания с компенсацией движения выполняет интер-предсказание для опорного сигнала кадров, сохраненного в запоминающем устройстве 104 декодированных кадров, на основе определенной информации интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 306 предсказания с компенсацией движения.
Описание модуля 203 интер-предсказания декодирования на стороне декодирования
[0068]
Фиг. 22 является схемой, показывающей подробную конфигурацию модуля 203 интер-предсказания устройства декодирования кадров по фиг. 2.
[0069] Модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения извлекает множество потенциально подходящих вариантов предикторов нормальных векторов движения, чтобы выбирать предиктор вектора движения, вычисляет сумму выбранного предиктора вектора движения и декодированной разности векторов движения и задает вычисленную сумму в качестве вектора движения. Декодированный режим интер-предсказания, опорный индекс и вектор движения становятся информацией интер-предсказания режима идентификации предикторов нормальных векторов движения. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408. Ниже описывается подробная конфигурация и процесс модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения.
[0070] Модуль 402 извлечения режимов нормального объединения извлекает множество потенциально подходящих вариантов нормального объединения, чтобы выбирать потенциально подходящий вариант нормального объединения, и получает информацию интер-предсказания режима нормального объединения. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408. Ниже описывается подробная конфигурация и процесс модуля 402 извлечения режимов нормального объединения.
[0071] Модуль 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков извлекает множество потенциально подходящих вариантов предикторов векторов движения на основе субблоков, чтобы выбирать предиктор вектора движения на основе субблоков, вычисляет сумму выбранного предиктора вектора движения на основе субблоков и декодированной разности векторов движения и задает вычисленную сумму в качестве вектора движения. Декодированный режим интер-предсказания, опорный индекс и вектор движения становятся информацией интер-предсказания режима идентификации предикторов векторов движения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408.
[0072] Модуль 404 извлечения режимов объединения на основе субблоков извлекает множество потенциально подходящих вариантов объединения на основе субблоков, чтобы выбирать потенциально подходящий вариант объединения на основе субблоков, и получает информацию интер-предсказания режима объединения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408.
[0073] Модуль 406 предсказания с компенсацией движения выполняет интер-предсказание для опорного сигнала кадров, сохраненного в запоминающем устройстве 208 декодированных кадров, на основе определенной информации интер-предсказания. Подробная конфигурация и процесс модуля 406 предсказания с компенсацией движения являются аналогичными подробной конфигурации и процессу модуля 306 предсказания с компенсацией движения на стороне кодирования.
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP)
[0074]
Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 17 включает в себя модуль 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуль 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуль 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуль 325 пополнения потенциально подходящих вариантов предикторов векторов движения, модуль 326 обнаружения нормальных векторов движения, модуль 327 выбора потенциально подходящих вариантов предикторов векторов движения и модуль 328 вычитания векторов движения.
[0075] Модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 23 включает в себя модуль 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуль 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуль 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуль 425 пополнения потенциально подходящих вариантов предикторов векторов движения, модуль 426 выбора потенциально подходящих вариантов предикторов векторов движения и модуль 427 суммирования векторов движения.
[0076] В дальнейшем описываются процедуры обработки модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования и модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования с использованием блок-схем последовательности операций способа по фиг. 19 и 25, соответственно. Фиг. 19 является блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения режимов идентификации предикторов нормальных векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования, и фиг. 25 является блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения режимов идентификации предикторов нормальных векторов движения модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования.
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): описание на стороне кодирования
[0077]
В дальнейшем описывается процедура обработки извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования со ссылкой на фиг. 19. В описании процедуры обработки по фиг. 19, термин "нормальный", показанный на фиг. 19, может опускаться.
[0078] Во-первых, модуль 326 обнаружения нормальных векторов движения обнаруживает нормальный вектор движения для каждого режима интер-предсказания и каждого опорного индекса (этап S100 по фиг. 19).
[0079] Затем, в модуле 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуле 325 пополнения потенциально подходящих вариантов предикторов векторов движения, модуле 327 выбора потенциально подходящих вариантов предикторов векторов движения и модуле 328 вычитания векторов движения, разность векторов движения для вектора движения, используемого для интер-предсказания режима идентификации предикторов нормальных векторов движения, вычисляется для каждого из L0 и L1 (этапы S101-S106 по фиг. 19). В частности, когда режим 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 вычисляется.
[0080] Хотя процесс вычисления разностей векторов движения выполняется для каждого из L0 и L1, процесс вычисления разностей векторов движения становится процессом, общим для L0 и L1. Следовательно, в нижеприведенном описании, L0 и L1 представляются как общий LX. X LX равен 0 в процессе вычисления разности векторов движения L0, и X LX равен 1 в процессе вычисления разности векторов движения L1. Кроме того, когда на информацию другого списка вместо LX ссылаются в ходе процесса вычисления разности векторов движения LX, другой список представляется как LY.
[0081] Когда вектор mvLX движения LX используется (этап S102 по фиг. 19: "Да"), потенциально подходящие варианты предикторов векторов движения LX вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения LX (этап S103 по фиг. 19). В модуле 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории и модуле 325 пополнения потенциально подходящих вариантов предикторов векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения, множество потенциально подходящих вариантов предикторов векторов движения извлекаются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Ниже описывается подробная процедура обработки этапа S103 по фиг. 19 с использованием блок-схемы последовательности операций способа по фиг. 20.
[0082] Затем, модуль 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 получается.
[0083] Затем, модуль 328 вычитания векторов движения вычитает выбранный предиктор mvpLX вектора движения LX из вектора mvLX движения LX и вычисляет разность mvdLX векторов движения LX в качестве mvdLX=mvLX-mvpLX (этап S105 по фиг. 19).
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): описание на стороне декодирования
[0084]
Далее описывается процедура обработки режима идентификации предикторов нормальных векторов движения на стороне декодирования со ссылкой на фиг. 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 вычисляется.
[0085] Хотя процесс вычисления вектора движения выполняется для каждого из L0 и L1 на стороне декодирования, аналогично стороне кодирования, процесс вычисления вектора движения становится процессом, общим для L0 и L1. Следовательно, в нижеприведенном описании, L0 и L1 представляются как общий LX. LX представляет режим интер-предсказания для использования при интер-предсказании целевого блока кодирования. X равен 0 в процессе вычисления вектора движения L0, и X равен 1 в процессе вычисления вектора движения L1. Кроме того, когда на информацию другого опорного списка вместо опорного списка, идентичного опорному списку опорного списка, идентичного опорному списку LX цели вычисления, ссылаются в ходе процесса вычисления вектора движения LX, другой опорный список представляется как LY.
[0086] Когда вектор mvLX движения LX используется (этап S202 по фиг. 25: "Да"), потенциально подходящие варианты предикторов векторов движения LX вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения LX (этап S203 по фиг. 25). В модуле 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории и модуле 425 пополнения потенциально подходящих вариантов предикторов векторов движения модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, множество потенциально подходящих вариантов предикторов векторов движения вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Ниже описывается подробная процедура обработки этапа S203 по фиг. 25 с использованием блок-схемы последовательности операций способа по фиг. 20.
[0087] Затем, потенциально подходящий вариант mvpListLX[mvpIdxLX] предиктора вектора движения, соответствующий индексу mvpIdxLX предиктора вектора движения, декодированного и предоставляемого посредством модуля 201 декодирования битовых строк из списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, извлекается в качестве выбранного предиктора mvpLX вектора движения в модуле 426 выбора потенциально подходящих вариантов предикторов векторов движения (этап S204 по фиг. 25).
[0088] Затем, модуль 427 суммирования векторов движения суммирует разность mvdLX векторов движения LX, которая декодируется и предоставляется посредством модуля 201 декодирования битовых строк, и предиктор mvpLX вектора движения LX и вычисляет вектор mvLX движения LX в качестве mvLX=mvpLX+mvdLX (этап S205 по фиг. 25).
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): способ предсказания векторов движения
[0089]
Фиг. 20 является блок-схемой последовательности операций способа, показывающей процедуру обработки процесса извлечения режимов идентификации предикторов нормальных векторов движения, имеющего функцию, общую для модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения устройства кодирования кадров и модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения устройства декодирования кадров согласно варианту осуществления настоящего изобретения.
[0090] Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения и модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения включают в себя список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Список mvpListLX потенциально подходящих вариантов предикторов векторов движения имеет списковую структуру и содержит область хранения, в которой индекс предиктора вектора движения, указывающий местоположение в списке потенциально подходящих вариантов предикторов векторов движения, и потенциально подходящий вариант предиктора вектора движения, соответствующий индексу, сохраняется в качестве элементов. Номер индекса предиктора вектора движения начинается с 0, и потенциально подходящие варианты предикторов векторов движения сохраняются в области хранения списка mvpListLX потенциально подходящих вариантов предикторов векторов движения. В настоящем варианте осуществления, предполагается, что, по меньшей мере, два потенциально подходящих вариантов предикторов векторов движения (информация интер-предсказания) могут регистрироваться в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения. Кроме того, переменная numCurrMvpCand, указывающая количество потенциально подходящих вариантов предикторов векторов движения, зарегистрированных в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения, задается равной 0.
[0091] Модули 321 и 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения извлекают потенциально подходящие варианты предикторов векторов движения из соседних блоков с левой стороны. В этом процессе, предиктор mvLXA вектора движения извлекается со ссылкой на информацию интер-предсказания соседнего блока с левой стороны (A0 или A1 по фиг. 11), т.е. на флаг, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения использоваться, вектор движения, опорный индекс и т.п., и извлеченный mvLXA добавляется в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S301 по фиг. 20). Кроме того, X равен 0 во время L0-предсказания, и X равен 1 во время L1-предсказания (это справедливо далее). Затем, модули 321 и 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения извлекают потенциально подходящий вариант предиктора вектора движения из соседнего блока с верхней стороны. В этом процессе, предиктор mvLXB вектора движения извлекается со ссылкой на информацию интер-предсказания соседнего блока с верхней стороны (B0, B1 или B2 по фиг. 11), т.е. на флаг, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения использоваться, вектор движения, опорный индекс и т.п., и mvLXB добавляется в список mvpListLX потенциально подходящих вариантов предикторов векторов движения, если извлеченный mvLXA не равен извлеченному mvLXB (этап S302 по фиг. 20). Обработка этапов S301 и S302 по фиг. 20 является общей за исключением того, что позиции соседних блоков, на которые ссылаются, и количество соседних блоков, на которые ссылаются, отличаются, и извлекаются флаг availableFlagLXN, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения блока кодирования использоваться, вектор mvLXN движения и опорный индекс refIdxN (N представляет A или B, и это справедливо далее).
[0092] Затем, модули 323 и 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляют потенциально подходящие варианты предикторов векторов движения на основе предыстории, зарегистрированные в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S304 по фиг. 20). Ниже описываются подробности процедуры обработки регистрации этапа S304 с использованием блок-схемы последовательности операций способа по фиг. 29.
[0093] Затем, модули 322 и 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения извлекают потенциально подходящие варианты предикторов векторов движения из блоков в кадре, время которого отличается от кадра текущего целевого кадра. В этом процессе, извлекаются флаг availableFlagLXCol, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения блока кодирования кадра другого момента времени использоваться, вектор mvLXCol движения, опорный индекс refIdxCol и опорный список listCol, и mvLXCol добавляется в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S304 по фиг. 20).
[0094] Кроме того, предполагается, что процессы модулей 322 и 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения могут опускаться в единицах последовательностей (SPS), кадров (PPS) или срезов.
[0095] Затем, модули 325 и 425 пополнения потенциально подходящих вариантов предикторов векторов движения добавляют потенциально подходящие варианты предикторов векторов движения, имеющие предварительно определенное значение, к примеру, (0, 0) до тех пор, пока список mvpListLX потенциально подходящих вариантов предикторов векторов движения не удовлетворяется (S305 по фиг. 20).
Модуль извлечения режимов нормального объединения (нормальное объединение)
[0096]
Модуль 302 извлечения режимов нормального объединения по фиг. 18 включает в себя модуль 341 извлечения пространственных потенциально подходящих вариантов объединения, модуль 342 извлечения временных потенциально подходящих вариантов объединения, модуль 344 извлечения средних потенциально подходящих вариантов объединения, модуль 345 извлечения потенциально подходящих вариантов объединения на основе предыстории, модуль 346 пополнения потенциально подходящих вариантов объединения и модуль 347 выбора потенциально подходящих вариантов объединения.
[0097] Модуль 402 извлечения режимов нормального объединения по фиг. 24 включает в себя модуль 441 извлечения пространственных потенциально подходящих вариантов объединения, модуль 442 извлечения временных потенциально подходящих вариантов объединения, модуль 444 извлечения средних потенциально подходящих вариантов объединения, модуль 445 извлечения потенциально подходящих вариантов объединения на основе предыстории, модуль 446 пополнения потенциально подходящих вариантов объединения и модуль 447 выбора потенциально подходящих вариантов объединения.
[0098] Фиг. 21 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру процесса извлечения режимов нормального объединения, имеющего функцию, общую для модуля 302 извлечения режимов нормального объединения устройства кодирования кадров и модуля 402 извлечения режимов нормального объединения устройства декодирования кадров согласно варианту осуществления настоящего изобретения.
[0099] Далее поэтапно описываются различные процессы. Хотя в дальнейшем описывается случай, в котором тип slice_type среза представляет собой B-срез, если не указано иное в нижеприведенном описании, настоящее изобретение также может применяться к случаю P-среза. Тем не менее, когда тип slice_type среза представляет собой P-срез, поскольку только L0-предсказание (Pred_L0) предоставляется в качестве режима интер-предсказания, и L1-предсказание (Pred_L1) и бипредсказание (Pred_BI) отсутствуют, процесс, связанный с L1, может опускаться.
[0100] Модуль 302 извлечения режимов нормального объединения и модуль 402 извлечения режимов нормального объединения имеют список mergeCandList потенциально подходящих вариантов объединения. Список mergeCandList потенциально подходящих вариантов объединения имеет списковую структуру и содержит индекс объединения, указывающий местоположение в списке потенциально подходящих вариантов объединения, и область хранения, в которой потенциально подходящие варианты объединения, соответствующие индексу, сохраняются в качестве элементов. Номер индекса объединения начинается с 0, и потенциально подходящие варианты объединения сохраняются в области хранения списка mergeCandList потенциально подходящих вариантов объединения. В последующем процессе, потенциально подходящий вариант объединения i индекса объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, представляется посредством mergeCandList[i]. В настоящем варианте осуществления, предполагается, что, по меньшей мере, шесть потенциально подходящих вариантов объединения (информация интер-предсказания) могут регистрироваться в списке mergeCandList потенциально подходящих вариантов объединения. Дополнительно, переменная numCurrMergeCand, указывающая количество потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, задается равной 0.
[0101] Модуль 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. Тем не менее, поскольку потенциально подходящий вариант объединения извлекается без ссылки на информацию интер-предсказания блока, включенную в блок кодирования, который является целью в настоящем варианте осуществления, пространственный потенциально подходящий вариант объединения с использованием информации интер-предсказания блока, включенной в целевой блок кодирования, не извлекается.
[0102] Затем, модуль 342 извлечения временных потенциально подходящих вариантов объединения и модуль 442 извлечения временных потенциально подходящих вариантов объединения извлекают временные потенциально подходящие варианты объединения из кадров различных моментов времени и регистрируют извлеченные временные потенциально подходящие варианты объединения в списке mergeCandList потенциально подходящих вариантов объединения (этап S402 по фиг. 21). Извлекаются флаг availableFlagCol, указывающий то, может или нет временной потенциально подходящий вариант объединения использоваться, флаг predFlagL0Col L0-предсказания, указывающий то, выполняется или нет L0-предсказание временного потенциально подходящего варианта объединения, флаг predFlagL1Col L1-предсказания, указывающий то, выполняется или нет L1-предсказание, вектор mvL0Col движения L0 и вектор mvL1Col движения L1.
[0103] Кроме того, предполагается, что процессы модуля 342 извлечения временных потенциально подходящих вариантов объединения и модуля 442 извлечения временных потенциально подходящих вариантов объединения могут опускаться в единицах последовательностей (SPS), кадров (PPS) или срезов.
[0104] Затем, модуль 345 извлечения потенциально подходящих вариантов объединения на основе предыстории и модуль 445 извлечения потенциально подходящих вариантов объединения на основе предыстории регистрируют потенциально подходящие варианты предикторов векторов движения на основе предыстории, зарегистрированные в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в списке mergeCandList потенциально подходящих вариантов объединения (этап S403 по фиг. 21).
Кроме того, когда количество numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального количества MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное количество MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела количества numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и потенциально подходящие варианты объединения на основе предыстории извлекаются и регистрируются в списке mergeCandList потенциально подходящих вариантов объединения.
[0105] Затем, модуль 344 извлечения средних потенциально подходящих вариантов объединения и модуль 444 извлечения средних потенциально подходящих вариантов объединения извлекают средний потенциально подходящий вариант объединения из списка mergeCandList потенциально подходящих вариантов объединения и добавляют извлеченный средний потенциально подходящий вариант объединения в список mergeCandList потенциально подходящих вариантов объединения (этап S404 по фиг. 21).
Кроме того, когда количество numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального количества MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное количество MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела количества numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и средние потенциально подходящие варианты объединения извлекаются и регистрируются в списке mergeCandList потенциально подходящих вариантов объединения.
Здесь, средний потенциально подходящий вариант объединения представляет собой новый потенциально подходящий вариант объединения, имеющий вектор движения, полученный посредством усреднения векторов движения первого потенциально подходящего варианта объединения и второго потенциально подходящего варианта объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, для каждого из L0-предсказания и L1-предсказания.
[0106] Затем, в модуле 346 пополнения потенциально подходящих вариантов объединения и модуле 446 пополнения потенциально подходящих вариантов объединения, когда количество numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального количества MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное количество MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела количества numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и дополнительный потенциально подходящий вариант объединения извлекается и регистрируется в списке mergeCandList потенциально подходящих вариантов объединения (этап S405 по фиг. 21). В P-срезе, потенциально подходящий вариант объединения, для которого вектор движения имеет значение в (0, 0), и режим предсказания представляет собой L0-предсказание (Pred_L0), добавляется с использованием максимального количества MaxNumMergeCand потенциально подходящих вариантов объединения в качестве верхнего предела. В B-срезе, потенциально подходящий вариант объединения, для которого вектор движения имеет значение в (0, 0), и режим предсказания представляет собой бипредсказание (Pred_BI), добавляется. Опорный индекс, когда потенциально подходящий вариант объединения добавляется, отличается от ранее добавленного опорного индекса.
[0107] Затем, модуль 347 выбора потенциально подходящих вариантов объединения и модуль 447 выбора потенциально подходящих вариантов объединения выбирают потенциально подходящие варианты объединения из потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения. Модуль 347 выбора потенциально подходящих вариантов объединения на стороне кодирования выбирает потенциально подходящий вариант объединения посредством вычисления объема кода и величины искажения и предоставляет индекс объединения, указывающий выбранный потенциально подходящий вариант объединения, и информацию интер-предсказания потенциально подходящего варианта объединения в модуль 306 предсказания с компенсацией движения через модуль 305 определения режима интер-предсказания. С другой стороны, модуль 447 выбора потенциально подходящих вариантов объединения на стороне декодирования выбирает потенциально подходящий вариант объединения на основе декодированного индекса объединения и предоставляет выбранный потенциально подходящий вариант объединения в модуль 406 предсказания с компенсацией движения.
Обновление списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории
[0108]
Далее подробно описываются способ инициализации и способ обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленного в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования. Фиг. 26 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки для инициализации/обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0109] В настоящем варианте осуществления, предполагается, что список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется в запоминающем устройстве 111 для хранения информации кодирования и в запоминающем устройстве 205 для хранения информации кодирования. Модуль обновления списков потенциально подходящих вариантов предикторов векторов движения на основе предыстории может устанавливаться в модуле 102 интер-предсказания и модуле 203 интер-предсказания, чтобы обновлять список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0110] Список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории первоначально задается в начале среза, список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется, когда режим идентификации предикторов нормальных векторов движения или режим нормального объединения выбран посредством модуля 105 определения способа предсказания на стороне кодирования, и список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется, когда информация предсказания, декодированная посредством модуля 201 декодирования битовых строк, задается относительно режима идентификации предикторов нормальных векторов движения или режима нормального объединения на стороне декодирования.
[0111] Информация интер-предсказания, используемая, когда интер-предсказание выполняется в режиме идентификации предикторов нормальных векторов движения или режиме нормального объединения, регистрируется в качестве потенциально подходящего варианта hMvpCand информации интер-предсказания в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Потенциально подходящий вариант hMvpCand информации интер-предсказания включает в себя опорный индекс refIdxL0 L0, опорный индекс refIdxL1 L1, флаг predFlagL0 L0-предсказания, указывающий то, выполняется или нет L0-предсказание, флаг predFlagL1 L1-предсказания, указывающий то, выполняется или нет L1-предсказание, вектор mvL0 движения L0 и вектор mvL1 движения L1.
[0112] Когда имеется информация интер-предсказания, имеющая значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания, из количества элементов (т.е. информации интер-предсказания), зарегистрированных в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленном в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования, элемент удаляется из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. С другой стороны, когда отсутствует информация интер-предсказания, имеющая значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания, элемент в начале списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории удаляется, и потенциально подходящий вариант hMvpCand информации интер-предсказания добавляется в конец списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0113] количество элементов списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленного в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования согласно настоящему изобретению, предположительно составляет шесть.
[0114] Во-первых, список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории инициализируется в единицах срезов (этап S2101 по фиг. 26). Все элементы списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории являются пустыми в начале среза, и значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории (текущего количества потенциально подходящих вариантов), зарегистрированных в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, может задаваться равным 0.
[0115] Кроме того, инициализация списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории выполняется в единицах срезов (первого блока кодирования среза), но может выполняться в единицах кадров, плиток или строк древовидного блока.
[0116] Затем, следующий процесс обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории итеративно выполняется для каждого блока кодирования в срезе (этапы S2102-S2111 по фиг. 26).
[0117] Во-первых, начальная настройка выполняется для каждого блока кодирования. Флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, задается равным значению "ложь", и индекс removeIdx цели удаления, указывающий потенциально подходящий вариант цели удаления, задается равным 0 (этап S2103 по фиг. 26).
[0118] Определяется то, имеется или нет потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации (этап S2104 по фиг. 26). Когда модуль 105 определения способа предсказания на стороне кодирования определяет то, что режим представляет собой режим идентификации предикторов нормальных векторов движения или режим нормального объединения, либо когда модуль 201 декодирования битовых строк на стороне декодирования декодирует режим в качестве режима идентификации предикторов нормальных векторов движения или режима нормального объединения, его информация интер-предсказания задается в качестве потенциально подходящего варианта hMvpCand информации интер-предсказания цели регистрации. Когда модуль 105 определения способа предсказания на стороне кодирования определяет то, что режим представляет собой режим интра-предсказания, режим идентификации предикторов векторов движения на основе субблоков или режим объединения на основе субблоков, либо когда модуль 201 декодирования битовых строк на стороне декодирования декодирует режим в качестве режима интра-предсказания, режима идентификации предикторов векторов движения на основе субблоков или режима объединения на основе субблоков, процесс обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории не выполняется, и потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации не существует. Когда отсутствует потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации, этапы S2105-S2106 пропускаются (этап S2104 по фиг. 26: "Нет"). Когда имеется потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации, обработка с этапа S2105 выполняется (этап S2104 по фиг. 26: "Да").
[0119] Затем, определяется то, имеется или нет элемент (информация интер-предсказания), имеющий значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания цели регистрации, т.е. идентичного элемента, из количества элементов списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этап S2105 по фиг. 26). Фиг. 27 является блок-схемой последовательности операций способа для процедуры обработки проверки на идентичные элементы. Когда значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равно 0 (этап S2121 по фиг. 27: "Нет"), список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории является пустым, и отсутствует идентичный потенциально подходящий вариант, так что этапы S2122-S2125 по фиг. 27 пропускаются, и текущая процедура обработки проверки на идентичные элементы завершается. Когда значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории превышает 0 ("Да" на этапе S2121 по фиг. 27), обработка этапа S2123 итеративно выполняется до тех пор, пока индекс hMvpIdx предиктора вектора движения на основе предыстории не изменяется с 0 до NumHmvpCand-1 (этапы S2122-S2125 по фиг. 27). Во-первых, сравнение выполняется относительно того, является или нет hMvpIdx-ый элемент HmvpCandList[hMvpIdx] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории идентичным потенциально подходящему варианту hMvpCand информации интер-предсказания (этап S2123 по фиг. 27). Когда они являются идентичными (этап S2123 по фиг. 27: "Да"), флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, задается равным значению "истина", и индекс removeIdx цели удаления, указывающий позицию элемента цели удаления, задается равным текущему значению индекса hMvpIdx предиктора вектора движения на основе предыстории, и текущий процесс проверки на идентичные элементы завершается. Когда они не являются идентичными (этап S2123 по фиг. 27: "Нет"), hMvpIdx постепенно увеличивается на 1. Если индекс hMvpIdx предиктора вектора движения на основе предыстории меньше или равен NumHmvpCand-1, обработка с этапа S2123 выполняется.
[0120] Со ссылкой на блок-схему последовательности операций способа по фиг. 26 снова, процесс сдвига и добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории выполняется (этап S2106 по фиг. 26). Фиг. 28 является блок-схемой последовательности операций способа для процедуры обработки сдвига/добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории этапа S2106 по фиг. 26. Во-первых, определяется то, следует добавлять новый элемент после удаления элемента, сохраненного в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, либо добавлять новый элемент без удаления элемента. В частности, сравнение выполняется относительно того, представляет собой "истина" или нет флаг identicalCandExist, указывающий то, существует или нет идентичный потенциально подходящий вариант, либо того, равно NumHmvpCand или нет шести (этап S2141 по фиг. 28). Когда либо такое условие, что флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, представляет собой "истина", либо такое условие, что текущее количество NumHmvpCand потенциально подходящих вариантов равно шести, удовлетворяется (этап S2141 по фиг. 28: "Да"), новый элемент добавляется после удаления элемента, сохраненного в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Начальное значение индекса i задается равным значению removeIdx+1. Процесс поэлементного сдвига этапа S2143 итеративно выполняется от этого начального значения до NumHmvpCand (этапы S2142-S2144 по фиг. 28). Посредством копирования элемента HmvpCandList[i] в HmvpCandList[i-1], элемент сдвигается вперед (этап S2143 по фиг. 28), и i постепенно увеличивается на 1 (этапы S2142-S2144 по фиг. 28). Затем, потенциально подходящий вариант hMvpCand информации интер-предсказания добавляется в (NumHmvpCand-1)-ый элемент HmvpCandList[NumHmvpCand-1] при подсчете с 0-ого элемента, который соответствует концу списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этап S2145 по фиг. 28), и текущий процесс сдвига/добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. С другой стороны, когда ни такое условие, что флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, представляет собой "истина", ни такое условие что, текущее количество NumHmvpCand потенциально подходящих вариантов равно шести, не удовлетворяется (этап S2141 по фиг. 28: "Нет"), потенциально подходящий вариант hMvpCand информации интер-предсказания добавляется в конец списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории без удаления элемента, сохраненного в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (этап S2146 по фиг. 28). Здесь, конец списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории представляет собой NumHmvpCand-ый элемент HmvpCandList[numHmvpCand] при подсчете с 0-ого элемента. Кроме того, NumHmvpCand постепенно увеличивается на 1, и текущий процесс сдвига/добавления элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается.
[0121] Фиг. 31 является пояснительной схемой, показывающей пример процесса обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Когда новый элемент добавляется в список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в котором зарегистрированы шесть элементов (информация интер-предсказания), элементы сравниваются с новой информацией интер-предсказания в порядке от переднего элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31A). Если новый элемент имеет значение, идентичное значению третьего элемента HMVP2 с начала списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, элемент HMVP2 удаляется из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, и последующие элементы HMVP3-HMVP5 сдвигаются вперед (копируются) по одному, и новый элемент добавляется в конец списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31B), чтобы завершать обновление списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31C).
Процесс извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории
[0122]
Далее подробно описывается способ извлечения потенциально подходящего варианта предиктора вектора движения на основе предыстории из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, который представляет собой процедуру обработки этапа S304 по фиг. 20, которая представляет собой процесс, общий для модуля 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования и модуля 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования. Фиг. 29 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0123] Когда текущее количество numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно максимальному количеству элементов в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения (здесь, 2), или значение количества NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равно 0 ("Нет" на этапе S2201 по фиг. 29), обработка этапов S2202-S2209 по фиг. 29 опускается, и процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее количество numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное количество элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, и значение количества NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории превышает 0 ("Да" на этапе S2201 по фиг. 29), обработка этапов S2202-S2209 по фиг. 29 выполняется.
[0124] Затем, обработка этапов 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 выполняется.
[0125] Затем, обработка этапов S2205-S2207 выполняется для Y=0 и 1 (L0 и L1) (этапы S2204-S2208 по фиг. 29). Когда текущее количество numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно 2, что представляет собой максимальное количество элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S2205 по фиг. 29: "Нет"), обработка этапов S2206-S2209 по фиг. 29 опускается, и текущая процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее количество numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное количество элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S2205 по фиг. 29: "Да"), обработка с этапа S2206 по фиг. 29 выполняется.
[0126] Затем, в случае элемента, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Да" на этапе S2206 по фиг. 29), вектор движения LY потенциально подходящего варианта HmvpCandList[NumHmvpCand-i] предиктора вектора движения на основе предыстории добавляется в numCurrMvpCand-ый элемент mvpListLX[numCurrMvpCand] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения (этап S2207 по фиг. 29), и текущее количество numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения постепенно увеличивается на единицу. Когда отсутствует элемент, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Нет" на этапе S2206 по фиг. 29), дополнительная обработка этапа S2207 пропускается.
[0127] Вышеуказанная обработка этапов S2205-S2207 по фиг. 29 выполняется для L0 и L1 (этапы S2204-S2208 по фиг. 29). Когда индекс i постепенно увеличивается на 1, и индекс i меньше или равен меньшему значению из 4 и количества NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории, обработка с этапа S2203 выполняется снова (этапы S2202-S2209 по фиг. 29).
Процесс извлечения потенциально подходящих вариантов объединения на основе предыстории
[0128]
Далее подробно описывается способ извлечения потенциально подходящих вариантов объединения на основе предыстории из списка HmvpCandList потенциально подходящих вариантов объединения на основе предыстории, который представляет собой процедуру обработки этапа S404 по фиг. 21, которая представляет собой процесс, общий для модуля 345 извлечения потенциально подходящих вариантов объединения на основе предыстории модуля 302 извлечения режимов нормального объединения на стороне кодирования и модуля 445 извлечения потенциально подходящих вариантов объединения на основе предыстории модуля 402 извлечения режимов нормального объединения на стороне декодирования. Фиг. 30 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов объединения на основе предыстории.
[0129] Во-первых, процесс инициализации выполняется (этап S2301 по фиг. 30). Каждый (numCurrMergeCand-1)-ый элемент от 0 для isPruned[i] задается равным значению "ложь", и переменная numOrigMergeCand задается равным количеству numCurrMergeCand элементов, зарегистрированных в текущем списке потенциально подходящих вариантов объединения.
[0130]
Затем, начальное значение индекса hMvpIdx задается равным 1, и процесс добавления этапов S2303-S2310 по фиг. 30 итеративно выполняется до тех пор, пока индекс hMvpIdx не изменяется с начального значения до NumHmvpCand (этапы S2302-S2311 по фиг. 30). Ели количество numCurrMergeCand элементов, зарегистрированных в текущем списке потенциально подходящих вариантов объединения, не меньше или равно (максимальное количество MaxNumMergeCand потенциально подходящих вариантов объединения - 1), потенциально подходящие варианты объединения добавляются во все элементы списка потенциально подходящих вариантов объединения таким образом, что настоящий процесс извлечения потенциально подходящих вариантов объединения на основе предыстории завершается ("Нет" на этапе S2303 по фиг. 30). Когда количество numCurrMergeCand элементов, зарегистрированных в текущем списке потенциально подходящих вариантов объединения, меньше или равно (максимальное количество MaxNumMergeCand потенциально подходящих вариантов объединения - 1), обработка с этапа S2304 выполняется; sameMotion задается равным значению "ложь" (этап S2304 по фиг. 30). Затем, начальное значение индекса i задается равным 0, и обработка этапов S2306 и S2307 по фиг. 30 выполняется до тех пор, пока индекс не изменяется с начального значения до numOrigMergeCand-1 (S2305-S2308 на фиг. 30). Проводится сравнение в отношении того, имеет или нет (NumHmvpCand-hMvpIdx)-ый элемент HmvpCandList[NumHmvpCand-hMvpIdx] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предсказания векторов движения на основе предыстории значение, идентичное значению i-ого элемента mergeCandList[i] при подсчете с 0-ого элемента списка потенциально подходящих вариантов объединения (этап S2306 по фиг. 30).
[0131]
Потенциально подходящие варианты объединения имеют идентичное значение, когда значения всех компонентов (режима интер-предсказания, опорного индекса и вектора движения) потенциально подходящих вариантов объединения являются идентичными. Когда потенциально подходящие варианты объединения имеют идентичное значение, и isPruned[i] представляет собой "ложь" ("Да" на этапе S2306 по фиг. 30), как sameMotion, так и isPruned[i] задаются равными "истина" (этап S2307 по фиг. 30). Когда потенциально подходящие варианты объединения не имеют идентичного значения ("Нет" на этапе S2306 по фиг. 30), обработка этапа S2307 пропускается. Когда итеративная обработка этапов S2305-S2308 по фиг. 30 завершена, проводится сравнение в отношении того, представляет или нет sameMotion собой "ложь" (этап S2309 по фиг. 30). Если sameMotion представляет собой "ложь" ("Да" на этапе S2309 по фиг. 30), т.е. поскольку (NumHmvpCand-hMvpIdx)-ый элемент HmvpCandList[NumHmvpCand-hMvpIdx] при подсчете из с-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории не существует в mergeCandList, (NumHmvpCand-hMvpIdx)-ый элемент HmvpCandList[NumHmvpCand-hMvpIdx] при подсчете из с-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляется в numCurrMergeCand-ый элемент mergeCandList[numCurrMergeCand] списка потенциально подходящих вариантов объединения, и numCurrMergeCand постепенно увеличивается на 1 (этап S2310 по фиг. 30). Индекс hMvpIdx постепенно увеличивается на 1 (этап S2302 по фиг. 30), и процесс итеративного выполнения этапов S2302-S2311 по фиг. 30 выполняется.
Когда проверка всех элементов списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается, либо когда потенциально подходящие варианты объединения добавляются во все элементы списка потенциально подходящих вариантов объединения, текущий процесс извлечения потенциально подходящих вариантов объединения на основе предыстории завершается.
Процесс предсказания с компенсацией движения
[0132]
Модуль 306 предсказания с компенсацией движения получает позицию и размер блока, который представляет собой текущую цель процесса предсказания при кодировании. Кроме того, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания. Опорный индекс и вектор движения извлекаются из полученной информации интер-предсказания, и сигнал предсказания формируется после того, как получается сигнал кадров позиции, в которую опорный кадр, идентифицированный посредством опорного индекса в запоминающем устройстве 104 декодированных кадров, перемещается из позиции, идентичной позиции сигнала кадров блока предсказания, на величину вектора движения.
[0133] Сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания с использованием сигнала предсказания, полученного из одного опорного кадра, в качестве сигнала предсказания с компенсацией движения, когда режим интер-предсказания при интер-предсказании представляет собой предсказание из одного опорного кадра, такое как L0-предсказание или L1-предсказание, и с использованием сигнала предсказания, полученного посредством сигналов предсказания с усреднением со взвешиванием, полученных из двух опорных кадров, в качестве сигнала предсказания с компенсацией движения, когда режим предсказания представляет собой предсказание из двух опорных кадров, такое как режим интер-предсказания бипредсказания. Хотя средневзвешенный коэффициент бипредсказания здесь составляет 1:1, усреднение со взвешиванием может выполняться с использованием другого коэффициента. Например, весовой коэффициент может увеличиваться по мере того, как межкадровый интервал между кадром, который представляет собой цель предсказания, и опорным кадром снижается. Кроме того, весовой коэффициент может вычисляться с использованием соответствующей таблицы между комбинациями межкадровых интервалов и весовых коэффициентов.
[0134] Модуль 406 предсказания с компенсацией движения имеет функцию, аналогичную функции модуля 306 предсказания с компенсацией движения на стороне кодирования. Модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, модуля 402 извлечения режимов нормального объединения, модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков и модуля 404 извлечения режимов объединения на основе субблоков через переключатель 408. Модуль 406 предсказания с компенсацией движения предоставляет полученный сигнал предсказания с компенсацией движения в модуль 207 наложения сигналов кадров для декодирования.
Касательно режима интер-предсказания
[0135]
Процесс выполнения предсказания из одного опорного кадра задается как унипредсказание. В случае унипредсказания, выполняется предсказание с использованием одного из двух опорных кадров, зарегистрированных в опорных списках L0 и L1, такое как L0-предсказание или L1-предсказание.
[0136] Фиг. 32 показывает случай унипредсказания, в котором время такта опорного кадра (RefL0Pic) L0 находится раньше времени такта целевого кадра (CurPic). Фиг. 33 показывает случай унипредсказания, в котором время такта опорного кадра L0-предсказания находится позже времени такта целевого кадра. Аналогично, опорный кадр L0-предсказания по фиг. 32 и 33 может заменяться опорным кадром (RefL1Pic) L1-предсказания, чтобы выполнять унипредсказание.
[0137] Процесс выполнения предсказания из двух опорных кадров задается как бипредсказание, и бипредсказание представляется как бипредсказание с использованием как L0-предсказания, так и L1-предсказания. Фиг. 34 показывает случай бипредсказания, в котором время такта опорного кадра L0-предсказания находится раньше времени такта целевого кадра, и время такта опорного кадра L1-предсказания находится позже времени такта целевого кадра. Фиг. 35 показывает случай бипредсказания, в котором времена такта опорного кадра L0-предсказания и опорного кадра L1-предсказания находятся раньше времени такта целевого кадра. Фиг. 36 показывает случай бипредсказания, в котором время такта опорного кадра L0-предсказания и время такта опорного кадра L1-предсказания находятся позже времени такта целевого кадра.
[0138] Как описано выше, взаимосвязь между типом предсказания L0/L1 и временем может использоваться без ограничения L0, который находится в предыдущем направлении, и L1, который находится в будущем направлении. В случае бипредсказания, каждое из L0-предсказания и L1-предсказания может выполняться с использованием идентичного опорного кадра. Кроме того, определяется то, следует выполнять предсказание с компенсацией движения согласно унипредсказанию или бипредсказанию, на основе, например, информации (например, флага), указывающей то, следует или нет использовать L0-предсказание, и то, следует или нет использовать L1-предсказание.
Касательно опорного индекса
[0139]
В варианте осуществления настоящего изобретения, можно выбирать оптимальный опорный кадр из множества опорных кадров при предсказании с компенсацией движения, чтобы повышать точность предсказания с компенсацией движения. Таким образом, опорный кадр, используемый при предсказании с компенсацией движения, используется в качестве опорного индекса, и опорный индекс кодируется в потоке битов вместе с разностью векторов движения.
Процесс компенсации движения на основе режима идентификации предикторов нормальных векторов движения
[0140]
Как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0141] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 401 извлечения режимов идентификации предикторов нормальных векторов движения в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима нормального объединения
[0142]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания выбрана из модуля 302 извлечения режимов нормального объединения в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0143] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 402 извлечения режимов нормального объединения в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 402 извлечения режимов нормального объединения, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима идентификации предикторов векторов движения на основе субблоков
[0144]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0145] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима объединения на основе субблоков
[0146]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 304 извлечения режимов объединения на основе субблоков выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0147] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 404 извлечения режимов объединения на основе субблоков в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 404 извлечения режимов объединения на основе субблоков, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе предсказания с аффинным преобразованием
[0148]
В режиме идентификации предикторов нормальных векторов движения и режиме нормального объединения, компенсация движения аффинной модели может использоваться на основе следующих флагов. Следующие флаги отражаются в следующих флагах на основе условий интер-предсказания, определенных посредством модуля 305 определения режима интер-предсказания в процессе кодирования, и кодируются в потоке битов. В процессе декодирования, определяется то, следует или нет выполнять компенсацию движения аффинной модели, на основе следующих флагов в потоке битов.
[0149] sps_affine_enabled_flag представляет то, может или нет компенсация движения аффинной модели использоваться при интер-предсказании. Если sps_affine_enabled_flag равен 0, подавление выполняется без компенсации движения аффинной модели в единицах последовательностей. Кроме того, inter_affine_flag и cu_affine_type_flag не передаются в синтаксисе CU (блоков кодирования) видеопоследовательности для кодирования. Если sps_affine_enabled_flag равен 1, компенсация движения аффинной модели может использоваться в видеопоследовательности для кодирования.
[0150] sps_affine_type_flag представляет то, может или нет компенсация движения шестипараметрической аффинной модели использоваться при интер-предсказании. Если sps_affine_type_flag равен 0, подавление выполняется без компенсации движения шестипараметрической аффинной модели. Кроме того, cu_affine_type_flag не передается в CU-синтаксисе видеопоследовательности для кодирования. Если sps_affine_type_flag равен 1, компенсация движения шестипараметрической аффинной модели может использоваться в видеопоследовательности для кодирования. Когда sps_affine_type_flag не существует, он предположительно равен 0.
[0151] Когда P- или B-срез декодируется, если inter_affine_flag равен 1 в текущей целевой CU, компенсация движения аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU. Если inter_affine_flag равен 0, аффинная модель не используется в текущей целевой CU. Когда inter_affine_flag не существует, он предположительно равен 0.
[0152] Когда P- или B-срез декодируется, если cu_affine_type_flag равен 1 в текущей целевой CU, компенсация движения шестипараметрической аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU. Если cu_affine_type_flag равен 0, компенсация движения четырехпараметрической аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU.
[0153] В компенсации движения аффинной модели, поскольку опорный индекс и вектор движения извлекаются в единицах субблоков, сигнал предсказания с компенсацией движения формируется с использованием опорного индекса или вектора движения, который представляет собой цель в единицах субблоков.
[0154] Четырехпараметрическая аффинная модель представляет собой режим, в котором вектор движения субблока извлекается из четырех параметров горизонтальных компонентов и вертикальных компонентов векторов движения двух управляющих точек, и компенсация движения выполняется в единицах субблоков.
[0155]
В настоящем варианте осуществления, при извлечении списка потенциально подходящих вариантов предикторов векторов движения в режиме идентификации предикторов нормальных векторов движения, потенциально подходящие варианты добавляются в порядке потенциально подходящего варианта пространственного предиктора вектора движения, потенциально подходящего варианта предиктора вектора движения на основе предыстории и потенциально подходящего варианта временного предиктора вектора движения. За счет приспособления вышеуказанной конфигурации, могут обеспечиваться следующие преимущества.
[0156]
1. В процессе извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, процедура проверки на идентичные элементы выполняется для элементов, уже добавленных в список потенциально подходящих вариантов предикторов векторов движения, и элементов списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Поскольку элементы списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляются в список потенциально подходящих вариантов предикторов векторов движения только тогда, когда элементы не являются идентичными, гарантируется то, что список потенциально подходящих вариантов предикторов векторов движения имеет различные элементы. Дополнительно, потенциально подходящий вариант пространственного предиктора вектора движения с использованием пространственной корреляции и потенциально подходящий вариант предиктора вектора движения на основе предыстории с использованием предыстории обработки имеют различные характеристики Соответственно, имеется высокая вероятность того, что могут предоставляться множество потенциально подходящих вариантов предикторов векторов движения, имеющих различные характеристики, и может повышаться эффективность кодирования.
[0157]
2. В процессе извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, выполняется процесс проверки на идентичные элементы с потенциально подходящим вариантом пространственного предиктора вектора движения, но процесс проверки на идентичные элементы не выполняется с потенциально подходящим вариантом временного предиктора вектора движения. Соответственно, поскольку количество раз, когда идентичный элемент проверяется, может быть ограничено, нагрузка по обработке, связанная с извлечением списка потенциально подходящих вариантов предикторов векторов движения, может уменьшаться.
[0158]
3. В процессе извлечения потенциально подходящих вариантов временных предикторов векторов движения, не выполняется процесс проверки на идентичные элементы, ассоциированный с потенциально подходящим вариантом пространственного предиктора вектора движения и потенциально подходящим вариантом предиктора вектора движения на основе предыстории. Соответственно, потенциально подходящий вариант предиктора вектора движения на основе предыстории и потенциально подходящий вариант временного предиктора вектора движения могут извлекаться независимо. Пропускная способность может повышаться за счет параллельной обработки.
[0159]
Второй вариант осуществления
Во втором варианте осуществления, при формировании списка потенциально подходящих вариантов предикторов векторов движения в режиме идентификации предикторов нормальных векторов движения, потенциально подходящие варианты временных предикторов векторов движения не извлекаются, и потенциально подходящие варианты добавляются в порядке потенциально подходящего варианта пространственного предиктора вектора движения и потенциально подходящего варианта предиктора вектора движения на основе предыстории.
Фиг. 38 является блок-схемой подробной конфигурации модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 16 согласно второму варианту осуществления.
Фиг. 39 является блок-схемой подробной конфигурации модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 22 согласно второму варианту осуществления.
Во втором варианте осуществления, поскольку список потенциально подходящих вариантов предикторов векторов движения формируется без извлечения потенциально подходящих вариантов временных предикторов векторов движения, нагрузка по обработке может уменьшаться. Кроме того, в режиме идентификации предикторов нормальных векторов движения, поскольку потенциально подходящие варианты предикторов векторов движения на основе предыстории являются достаточными для списка потенциально подходящих вариантов предикторов векторов движения, эффективность кодирования не понижается.
[0160]
Третий вариант осуществления
В третьем варианте осуществления, при формировании списка потенциально подходящих вариантов предикторов векторов движения в режиме идентификации предикторов нормальных векторов движения, потенциально подходящие варианты добавляются в порядке потенциально подходящего варианта пространственного предиктора вектора движения, потенциально подходящего варианта временного предиктора вектора движения и потенциально подходящего варианта предиктора вектора движения на основе предыстории. Здесь, в процессе извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, процесс проверки на идентичные элементы, ассоциированный с потенциально подходящим вариантом пространственного предиктора вектора движения и потенциально подходящим вариантом временного предиктора вектора движения, не выполняется.
[0161]
Фиг. 40 является блок-схемой подробной конфигурации модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 16 согласно третьему варианту осуществления.
[0162]
Фиг. 41 является блок-схемой подробной конфигурации модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 22 согласно третьему варианту осуществления.
[0163]
В третьем варианте осуществления, аналогично первому варианту осуществления, количество раз, когда идентичный элемент проверяется, может быть ограничено, так что нагрузка по обработке, связанная с извлечением списка потенциально подходящих вариантов предикторов векторов движения, может уменьшаться. Кроме того, посредством добавления потенциально подходящих вариантов временных предикторов векторов движения, имеющих более высокое ранжирование, чем потенциально подходящие варианты предикторов векторов движения на основе предыстории, в список потенциально подходящих вариантов предикторов векторов движения, потенциально подходящий вариант временного предиктора вектора движения с высокой эффективностью предсказания может приоритезироваться по сравнению с потенциально подходящим вариантом предиктора вектора движения на основе предыстории, и список потенциально подходящих вариантов предикторов векторов движения с высокой эффективностью кодирования может формироваться, в то время как нагрузка по обработке ограничена без выполнения процесса проверки на идентичные элементы для предиктора вектора движения между различными типами потенциально подходящих вариантов (потенциально подходящими вариантами пространственных предикторов векторов движения, потенциально подходящими вариантами временных предикторов векторов движения и потенциально подходящими вариантами предикторов векторов движения на основе предыстории).
[0164] Два или более из всех вариантов осуществления, описанных выше, могут комбинироваться.
[0165] Во всех вариантах осуществления, описанных выше, поток битов, выводимый посредством устройства кодирования кадров, имеет конкретный формат данных таким образом, что поток битов может декодироваться в соответствии со способом кодирования, используемым в варианте осуществления. Кроме того, устройство декодирования кадров, соответствующее устройству кодирования кадров, может декодировать поток битов конкретного формата данных.
[0166] Когда проводная или беспроводная сеть используется для того, чтобы обмениваться потоком битов между устройством кодирования кадров и устройством декодирования кадров, поток битов может преобразовываться в формат данных, подходящий для формы передачи тракта связи, и передаваться. В этом случае, предоставляются передающее устройство для преобразования потока битов, выводимого из устройства кодирования кадров, в кодированные данные формата данных, подходящего для формы передачи тракта связи, и передачи кодированных данных в сеть, и приемное устройство для приема кодированных данных из сети, восстановления кодированных данных в поток битов и предоставления потока битов в устройство декодирования кадров. Передающее устройство включает в себя запоминающее устройство, которое буферизует поток битов, выводимый посредством устройства кодирования кадров, модуль обработки пакетов, который пакетизирует поток битов, и передающий модуль, который передает пакетизированные кодированные данные через сеть. Приемное устройство включает в себя приемный модуль, который принимает пакетизированные кодированные данные через сеть, запоминающее устройство, которое буферизует принимаемые кодированные данные, и модуль обработки пакетов, который формирует поток битов посредством выполнения обработки пакетов для кодированных данных и предоставляет поток битов в устройство декодирования кадров.
[0167] Кроме того, устройство отображения может предоставляться посредством добавления модуля отображения, который отображает кадр, декодированный посредством устройства декодирования кадров, в конфигурацию. В этом случае, модуль отображения считывает декодированный сигнал кадров, сформированный посредством модуля 207 наложения сигналов кадров для декодирования и сохраненный в запоминающем устройстве 208 декодированных кадров, и отображает декодированный сигнал кадров на экране.
[0168] Кроме того, устройство формирования изображений может предоставляться посредством добавления модуля формирования изображений, который вводит захваченный кадр в устройство кодирования кадров, в конфигурацию. В этом случае, модуль формирования изображений вводит захваченный сигнал кадров в модуль 101 разбиения блоков.
[0169] Фиг. 37 показывает пример аппаратной конфигурации устройства кодирования/декодирования согласно настоящему варианту осуществления. Устройство кодирования/декодирования включает в себя конфигурацию устройства кодирования кадров и устройства декодирования кадров согласно варианту осуществления настоящего изобретения. Связанное устройство 9000 кодирования/декодирования включает в себя CPU 9001, IC 9002 кодека, интерфейс 9003 ввода-вывода, запоминающее устройство 9004, накопитель 9005 на оптических дисках, сетевой интерфейс 9006 и видеоинтерфейс 9009, и соответствующие части соединяются посредством шины 9010.
[0170] Модуль 9007 кодирования кадров и модуль 9008 декодирования кадров типично реализуются в качестве IC 9002 кодека. Процесс кодирования кадров устройства кодирования кадров согласно варианту осуществления настоящего изобретения выполняется посредством модуля 9007 кодирования кадров, и процесс декодирования кадров в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения выполняется посредством модуля 9008 декодирования кадров. Интерфейс 9003 ввода-вывода реализуется посредством, например, USB-интерфейса и соединяется с внешней клавиатурой 9104, мышью 9105 и т.п. CPU 9001 управляет устройством 9000 кодирования/декодирования таким образом, что требуемая пользователем операция выполняется на основе пользовательской операции, вводимой через интерфейс 9003 ввода-вывода. Пользовательские операции с использованием клавиатуры 9104, мыши 9105 и т.п. включают в себя выбор функции кодирования или декодирования, которая должна выполняться, задание качества кодирования, указание назначения ввода-вывода потока битов, указание назначения ввода-вывода кадра и т.п.
[0171] Когда пользователю требуется операция воспроизведения кадра, записанного на дисковом носителе 9100 записи, накопитель 9005 на оптических дисках считывает поток битов из дискового носителя 9100 записи, который вставлен, и передает считываемый поток битов в модуль 9008 декодирования кадров IC 9002 кодека через шину 9010. Модуль 9008 декодирования кадров выполняет процесс декодирования кадров для входного потока битов в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения и передает декодированный кадр на внешний монитор 9103 через видеоинтерфейс 9009. Устройство 9000 кодирования/декодирования включает в себя сетевой интерфейс 9006 и может соединяться с внешним сервером 9106 распространения и портативным терминалом 9107 через сеть 9101. Когда пользователь хочет воспроизводить кадр, записанный на сервере 9106 распространения или в портативном терминале 9107, вместо кадра, записанного на дисковом носителе 9100 записи, сетевой интерфейс 9006 получает поток битов из сети 9101 вместо считывания потока битов из входного дискового носителя 9100 записи. Когда пользователь хочет воспроизводить кадр, записанный в запоминающем устройстве 9004, процесс декодирования кадров в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения выполняется для потока битов, записанного в запоминающем устройстве 9004.
[0172] Когда пользователь хочет выполнять операцию кодирования кадра, захваченного посредством внешней камеры 9102 и записи кодированного кадра в запоминающем устройстве 9004, видеоинтерфейс 9009 вводит кадр из камеры 9102 и передает кадр в модуль 9007 кодирования кадров IC 9002 кодека через шину 9010. Модуль 9007 кодирования кадров выполняет процесс кодирования кадров для ввода кадра через видеоинтерфейс 9009 в устройстве кодирования кадров согласно варианту осуществления настоящего изобретения, чтобы создавать поток битов. Затем поток битов передается в запоминающее устройство 9004 через шину 9010. Когда пользователь хочет записывать поток битов на дисковом носителе 9100 записи вместо запоминающего устройства 9004, накопитель 9005 на оптических дисках записывает поток битов на дисковый носитель 9100 записи, который вставлен.
[0173] Также можно реализовывать аппаратную конфигурацию, которая включает в себя устройство кодирования кадров без включения устройства декодирования кадров, либо аппаратную конфигурацию, которая включает в себя устройство декодирования кадров без включения устройства кодирования кадров. Такая аппаратная конфигурация реализуется, например, посредством замены IC 9002 кодека модулем 9007 кодирования кадров или модулем 9008 декодирования кадров.
[0174] Вышеуказанные процессы, связанные с кодированием и декодированием, могут реализовываться как устройство передачи, хранения и приема данных с использованием аппаратных средств и реализовываться посредством микропрограммного обеспечения, сохраненного в постоянном запоминающем устройстве (ROM), во флэш-памяти и т.п., либо как программное обеспечение компьютера и т.п. Микропрограммно-реализованная программа и программно-реализованная программа для нее могут предоставляться посредством записи программ на носителе записи, допускающем считывание посредством компьютера и т.п., либо могут предоставляться из сервера через проводную или беспроводную сеть, либо могут предоставляться в качестве широковещательных передач данных согласно наземной или спутниковой цифровой широковещательной передаче.
[0175] Настоящее изобретение описывается выше на основе вариантов осуществления. Варианты осуществления представляют собой примеры, и специалисты в данной области техники должны понимать, что различные модификации являются возможными в комбинациях соответствующих компонентов и процессов обработки, и такие модификации находятся в пределах объема настоящего изобретения.
Пояснение номеров ссылок
[0176]
100 - устройство кодирования кадров
101 - модуль разбиения блоков
102 - модуль интер-предсказания
103 - модуль интра-предсказания
104 - запоминающее устройство декодированных кадров
105 - модуль определения способа предсказания
106 - модуль формирования остатков
107 - модуль ортогонального преобразования/квантования
108 - модуль кодирования битовых строк
109 - модуль обратного квантования/обратного ортогонального преобразования
110 - модуль наложения сигналов кадров для декодирования
111 - запоминающее устройство для хранения информации кодирования
200 - устройство декодирования кадров
201 - модуль декодирования битовых строк
202 - модуль разбиения блоков
203 - модуль интер-предсказания
204 - модуль интра-предсказания
205 - запоминающее устройство для хранения информации кодирования
206 - модуль обратного квантования/обратного ортогонального преобразования
207 - модуль наложения сигналов кадров для декодирования
208 - запоминающее устройство декодированных кадров