УСТРОЙСТВО КОДИРОВАНИЯ ДВИЖУЩИХСЯ КАДРОВ, СПОСОБ КОДИРОВАНИЯ ДВИЖУЩИХСЯ КАДРОВ, УСТРОЙСТВО ДЕКОДИРОВАНИЯ ДВИЖУЩИХСЯ КАДРОВ, СПОСОБ ДЕКОДИРОВАНИЯ ДВИЖУЩИХСЯ КАДРОВ
DEVICE FOR ENCODING MOVING FRAMES, A METHOD FOR ENCODING MOVING FRAMES, A DEVICE FOR DECODING MOVING FRAMES, A METHOD FOR DECODING MOVING FRAMES

Уровень техники
Область техники, к которой относится изобретение
[0001] Настоящее изобретение относится к технологии кодирования и декодирования кадров для разделения кадра на блоки и выполнения предсказания.
Описание предшествующего уровня техники
[0002] При кодировании и декодировании кадров, целевой кадр разделяется на блоки, каждый из которых представляет собой набор из предписанного числа дискретных отсчетов, и процесс выполняется в единицах блоков. Эффективность кодирования повышается посредством разделения кадра на соответствующие блоки и надлежащего задания внутрикадрового предсказания (интра-предсказания) и межкадрового предсказания (интер-предсказания).
[0003] При кодировании/декодировании движущихся кадров, эффективность кодирования повышается посредством интер-предсказания для выполнения предсказания из кодированного/декодированного кадра. Патентный документ 1 описывает технологию для применения аффинного преобразования во время интер-предсказания. Довольно часто объект вызывает деформацию, такую как увеличение/уменьшение и вращение в движущихся кадрах, и эффективное кодирование обеспечивается за счет применения технологии патентного документа 1.
Документы предшествующего уровня техники
[0004]
Патентные документы
Патентный документ 1. Не прошедшая экспертизу заявка на патент (Япония), первая публикация, № H9-172644
Сущность изобретения
[0005] Тем не менее, поскольку технология патентного документа 1 заключает в себе преобразование кадров, имеется проблема в том, что нагрузка по обработке является большой. С учетом вышеизложенной проблемы, настоящее изобретение предоставляет эффективную технологию кодирования с низкой нагрузкой.
[0006] Например, варианты осуществления, которые описываются ниже, могут быть ассоциированы со следующими аспектами.
Согласно первому аспекту, предоставляется устройство кодирования движущихся кадров для выполнения аффинного преобразования в единицах блоков кодирования, причем устройство кодирования движущихся кадров включает в себя: модуль извлечения аффинных наследуемых потенциально подходящих вариантов объединения, выполненный с возможностью извлекать аффинный наследуемый потенциально подходящий вариант объединения для наследования аффинной модели блоков, соседних с целевым блоком кодирования, в пространственной области; модуль извлечения аффинных конструируемых потенциально подходящих вариантов объединения, выполненный с возможностью извлекать аффинный конструируемый потенциально подходящий вариант объединения из множества элементов информации движения блоков, соседних с целевым блоком кодирования, в пространственной или временной области; и модуль извлечения аффинных фиксированных потенциально подходящих вариантов объединения, выполненный с возможностью извлекать аффинный фиксированный потенциально подходящий вариант объединения, в котором информация движения аффинной управляющей точки является фиксированной, при этом вектор движения каждой аффинной управляющей точки задается фиксированно равным (0, 0) в аффинном фиксированном потенциально подходящем варианте объединения.
[0007] Согласно второму аспекту, предоставляется способ кодирования движущихся кадров для выполнения аффинного преобразования в единицах блоков кодирования, причем способ кодирования движущихся кадров включает в себя: этап извлечения аффинных наследуемых потенциально подходящих вариантов объединения для извлечения аффинного наследуемого потенциально подходящего варианта объединения для наследования аффинной модели блоков, соседних с целевым блоком кодирования, в пространственной области; этап извлечения аффинных конструируемых потенциально подходящих вариантов объединения для извлечения аффинного конструируемого потенциально подходящего варианта объединения из множества элементов информации движения блоков, соседних с целевым блоком кодирования, в пространственной или временной области; и этап извлечения аффинных фиксированных потенциально подходящих вариантов объединения для извлечения аффинного фиксированного потенциально подходящего варианта объединения, в котором информация движения аффинной управляющей точки является фиксированной, при этом вектор движения каждой аффинной управляющей точки задается фиксированно равным (0, 0) в аффинном фиксированном потенциально подходящем варианте объединения.
[0008] Согласно третьему аспекту, предоставляется программа для кодирования движущихся кадров для выполнения аффинного преобразования в единицах блоков кодирования, сохраненная на машиночитаемом долговременном (энергонезависимом) носителе записей, причем программа для кодирования движущихся кадров предписывает компьютеру выполнять: этап извлечения аффинных наследуемых потенциально подходящих вариантов объединения для извлечения аффинного наследуемого потенциально подходящего варианта объединения для наследования аффинной модели блоков, соседних с целевым блоком кодирования, в пространственной области; этап извлечения аффинных конструируемых потенциально подходящих вариантов объединения для извлечения аффинного конструируемого потенциально подходящего варианта объединения из множества элементов информации движения блоков, соседних с целевым блоком кодирования, в пространственной или временной области; и этап извлечения аффинных фиксированных потенциально подходящих вариантов объединения для извлечения аффинного фиксированного потенциально подходящего варианта объединения, в котором информация движения аффинной управляющей точки является фиксированной, при этом вектор движения каждой аффинной управляющей точки задается фиксированно равным (0, 0) в аффинном фиксированном потенциально подходящем варианте объединения.
[0009] Согласно четвертому аспекту, предоставляется устройство декодирования движущихся кадров для выполнения аффинного преобразования в единицах блоков кодирования, причем устройство декодирования движущихся кадров включает в себя: модуль извлечения аффинных наследуемых потенциально подходящих вариантов объединения, выполненный с возможностью извлекать аффинный наследуемый потенциально подходящий вариант объединения для наследования аффинной модели блоков, соседних с целевым блоком декодирования, в пространственной области; модуль извлечения аффинных конструируемых потенциально подходящих вариантов объединения, выполненный с возможностью извлекать аффинный конструируемый потенциально подходящий вариант объединения из множества элементов информации движения блоков, соседних с целевым блоком декодирования, в пространственной или временной области; и модуль извлечения аффинных фиксированных потенциально подходящих вариантов объединения, выполненный с возможностью извлекать аффинный фиксированный потенциально подходящий вариант объединения, в котором информация движения аффинной управляющей точки является фиксированной, при этом вектор движения каждой аффинной управляющей точки задается фиксированно равным (0, 0) в аффинном фиксированном потенциально подходящем варианте объединения.
[0010] Согласно пятому аспекту, предоставляется способ декодирования движущихся кадров для выполнения аффинного преобразования в единицах блоков кодирования, причем способ декодирования движущихся кадров включает в себя: этап извлечения аффинных наследуемых потенциально подходящих вариантов объединения для извлечения аффинного наследуемого потенциально подходящего варианта объединения для наследования аффинной модели блоков, соседних с целевым блоком декодирования, в пространственной области; этап извлечения аффинных конструируемых потенциально подходящих вариантов объединения для извлечения аффинного конструируемого потенциально подходящего варианта объединения из множества элементов информации движения блоков, соседних с целевым блоком декодирования, в пространственной или временной области; и этап извлечения аффинных фиксированных потенциально подходящих вариантов объединения для извлечения аффинного фиксированного потенциально подходящего варианта объединения, в котором информация движения аффинной управляющей точки является фиксированной, при этом вектор движения каждой аффинной управляющей точки задается фиксированно равным (0, 0) в аффинном фиксированном потенциально подходящем варианте объединения.
[0011] Согласно шестому аспекту, предоставляется программа для декодирования движущихся кадров для выполнения аффинного преобразования в единицах блоков декодирования, сохраненная на машиночитаемом долговременном носителе записей, причем программа для декодирования движущихся кадров предписывает компьютеру выполнять: этап извлечения аффинных наследуемых потенциально подходящих вариантов объединения для извлечения аффинного наследуемого потенциально подходящего варианта объединения для наследования аффинной модели блоков, соседних с целевым блоком декодирования, в пространственной области; этап извлечения аффинных конструируемых потенциально подходящих вариантов объединения для извлечения аффинного конструируемого потенциально подходящего варианта объединения из множества элементов информации движения блоков, соседних с целевым блоком декодирования, в пространственной или временной области; и этап извлечения аффинных фиксированных потенциально подходящих вариантов объединения для извлечения аффинного фиксированного потенциально подходящего варианта объединения, в котором информация движения аффинной управляющей точки является фиксированной, при этом вектор движения каждой аффинной управляющей точки задается фиксированно равным (0, 0) в аффинном фиксированном потенциально подходящем варианте объединения. Кроме того, эти описания представляют собой примеры. Объем настоящей заявки и настоящего изобретения вообще не ограничен этими описаниями. Кроме того, следует понимать, что описание "настоящего изобретения" в настоящем описании изобретения не ограничивает объем настоящего изобретения или настоящей заявки и используется в качестве примера.
Преимущества изобретения
[0012] Согласно настоящему изобретению, можно реализовывать высокоэффективный процесс кодирования/декодирования кадров с низкой нагрузкой.
Краткое описание чертежей
[0013] Фиг. 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 является блок-схемой модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков в устройстве кодирования настоящей заявки.
Фиг. 39 является блок-схемой модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков в устройстве декодирования настоящей заявки.
Фиг. 40 является блок-схемой модуля 304 извлечения режимов объединения на основе субблоков в устройстве кодирования настоящей заявки.
Фиг. 41 является блок-схемой модуля 404 извлечения режимов объединения на основе субблоков в устройстве декодирования настоящей заявки.
Фиг. 42 является пояснительной схемой, показывающей извлечение потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения.
Фиг. 43 является пояснительной схемой, показывающей извлечение потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения.
Фиг. 44 является пояснительной схемой, показывающей извлечение аффинных наследуемых потенциально подходящих вариантов объединения.
Фиг. 45 является схемой, показывающей извлечение аффинных конструируемых потенциально подходящих вариантов объединения.
Фиг. 46 является блок-схемой последовательности операций способа для описания извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения.
Фиг. 47 является блок-схемой последовательности операций способа для описания извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения.
Фиг. 48 является блок-схемой последовательности операций способа для описания извлечения аффинных наследуемых потенциально подходящих вариантов объединения.
Фиг. 49 является блок-схемой последовательности операций способа для описания извлечения аффинных конструируемых потенциально подходящих вариантов объединения.
Фиг. 50 является блок-схемой последовательности операций способа для описания работы модуля 381 извлечения временных потенциально подходящих вариантов объединения на основе субблоков.
Фиг. 51 является блок-схемой последовательности операций способа для описания процесса извлечения информации движения соседних элементов блоков.
Фиг. 52 является блок-схемой последовательности операций способа для описания процесса извлечения временных векторов движения.
Фиг. 53 является блок-схемой последовательности операций способа для описания извлечения информации интер-предсказания.
Фиг. 54 является блок-схемой последовательности операций способа для описания процесса извлечения информации движения субблоков.
Фиг. 55 является пояснительной схемой, показывающей временную взаимосвязь контекстов между кадрами.
Фиг. 56 является блок-схемой последовательности операций способа для описания процесса извлечения потенциально подходящих вариантов временных предикторов векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения.
Фиг. 57 является блок-схемой последовательности операций способа для описания процесса извлечения ColPic в процессе извлечения потенциально подходящих вариантов временных предикторов векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения.
Фиг. 58 является блок-схемой последовательности операций способа для описания процесса извлечения информации кодирования ColPic в процессе извлечения потенциально подходящих вариантов временных предикторов векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения.
Фиг. 59 является блок-схемой последовательности операций способа для описания процесса извлечения информации интер-предсказания.
Фиг. 60 является блок-схемой последовательности операций способа, показывающей процедуру обработки для извлечения информации интер-предсказания кодированного блока, когда режим интер-предсказания блока colCb кодирования представляет собой бипредсказание (Pred_BI).
Фиг. 61 является блок-схемой последовательности операций способа для описания процедуры функциональной обработки масштабирования векторов движения.
Фиг. 62 является блок-схемой последовательности операций способа для описания процесса извлечения временных потенциально подходящих вариантов объединения.
Фиг. 63 является схемой, показывающей сравнительные цели информации движения при извлечении аффинных конструируемых потенциально подходящих вариантов объединения.
Подробное описание изобретения
[0014] В дальнейшем задаются технологические и технические термины, используемые в варианте осуществления.
Древовидный блок
[0015]
В варианте осуществления, целевой кадр кодирования/декодирования одинаково разделяется на единицы предварительно определенного размера. Эта единица задается как древовидный блок. Хотя размер древовидного блока составляет 128×128 дискретных отсчетов на фиг. 4, размер древовидного блока не ограничен этим, и любой размер может задаваться. Древовидный блок цели (соответствующей цели кодирования в процессе кодирования или цели декодирования в процессе декодирования) переключается в порядке растрового сканирования, т.е. слева направо и сверху вниз. Внутренняя часть каждого древовидного блока дополнительно может рекурсивно разделяться. Блок, который представляет собой цель кодирования/декодирования после того, как древовидный блок рекурсивно разделяется, задается как блок кодирования. Кроме того, древовидный блок и блок кодирования совместно задаются в качестве блоков. Эффективное кодирование обеспечивается посредством выполнения соответствующего разбиения блоков. Размер древовидного блока может составлять фиксированное значение, предварительно определенное посредством устройства кодирования и устройства декодирования, или размер древовидного блока, определенный посредством устройства кодирования, может быть выполнен с возможностью передаваться в устройство декодирования. Здесь, максимальный размер древовидного блока составляет 128×128 дискретных отсчетов, и минимальный размер древовидного блока составляет 16×16 дискретных отсчетов. Кроме того, максимальный размер блока кодирования составляет 64×64 дискретных отсчета, и минимальный размер блока кодирования составляет 4×4 дискретных отсчета.
Режим предсказания
[0016]
Переключение выполняется между интра-предсказанием (MODE_INTRA), в котором предсказание выполняется из обработанного сигнала кадров для целевого кадра, и интер-предсказанием (MODE_INTER), в котором предсказание выполняется из сигнала кадров для обработанного кадра в единицах целевых блоков кодирования.
Обработанный кадр используется для кадра, сигнала кадров, древовидного блока, блока, блока кодирования и т.п., полученных посредством декодирования сигнала, полностью кодированного в процессе кодирования, и используется для кадра, сигнала кадров, древовидного блока, блока, блока кодирования и т.п., полученных посредством завершения декодирования в процессе декодирования.
Режим, в котором идентифицируются интра-предсказание (MODE_INTRA) и интер-предсказание (MODE_INTER), задается как режим предсказания (PredMode). Режим предсказания (PredMode) имеет интра-предсказание (MODE_INTRA) или интер-предсказание (MODE_INTER) в качестве значения.
Интер-предсказание
[0017]
При интер-предсказании, при котором предсказание выполняется из сигнала кадров для обработанного кадра, множество обработанных кадров могут использоваться в качестве опорных кадров. Чтобы управлять множеством опорных кадров, два типа опорных списков в виде 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.
Режим идентификации предикторов векторов движения
[0018]
Режим идентификации предикторов векторов движения представляет собой режим для передачи индекса для идентификации предиктора вектора движения, разности векторов движения, режима интер-предсказания и опорного индекса и определения информации интер-предсказания целевого блока. Предиктор вектора движения извлекается из потенциально подходящего варианта предиктора вектора движения, извлекаемого из обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру, и индекса для идентификации предиктора вектора движения.
Режим объединения
[0019]
Режим объединения представляет собой режим, в котором информация интер-предсказания целевого блока извлекается из информации интер-предсказания обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру, без передачи разности векторов движения и опорного индекса.
[0020] Обработанный блок, соседний с целевым блоком, и информация интер-предсказания обработанного блока задаются как пространственные потенциально подходящие варианты объединения. Блок, расположенный в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру, и информация интер-предсказания, извлекаемая из информации интер-предсказания блока, задаются как временные потенциально подходящие варианты объединения. Каждый потенциально подходящий вариант объединения регистрируется в списке потенциально подходящих вариантов объединения, и потенциально подходящий вариант объединения, используемый для предсказания целевого блока, идентифицируется посредством индекса объединения.
Соседний блок
[0021]
Фиг. 11 является пояснительной схемой, показывающей опорный блок, на который ссылаются при извлечении информации интер-предсказания в режиме идентификации предикторов векторов движения и режиме объединения. A0, A1, A2, B0, B1, B2 и B3 представляют собой обработанные блоки, соседние с целевым блоком. T0 представляет собой блок, расположенный в идентичной позиции или около (рядом) с целевым блоком в целевом кадре из числа блоков, принадлежащих обработанному кадру.
[0022] A1 и A2 представляют собой блоки, расположенные в левой стороне относительно целевого блока кодирования и соседние с целевым блоком кодирования. B1 и B3 представляют собой блоки, расположенные в верхней стороне относительно целевого блока кодирования и соседние с целевым блоком кодирования. A0, B0 и B2 представляют собой блоки, расположенные снизу слева, сверху справа и сверху слева относительно целевого блока кодирования, соответственно.
[0023] Ниже описываются подробности того, как обрабатывать соседние блоки в режиме идентификации предикторов векторов движения и режиме объединения.
Аффинная компенсация движения
[0024]
Аффинная компенсация движения представляет собой процесс выполнения компенсации движения посредством разделения блока кодирования на субблоки предварительно определенной единицы и отдельного определения вектора движения для каждого из субблоков, на которые разделяется блок кодирования. Вектор движения каждого субблока извлекается на основе одной или более управляющих точек, извлекаемых из информации интер-предсказания обработанного блока, соседнего с целевым блоком, либо блока, расположенного в идентичной позиции или около (рядом) с целевым блоком из числа блоков, принадлежащих обработанному кадру. Хотя размер субблока составляет 4×4 дискретных отсчета в настоящем варианте осуществления, размер субблока не ограничен этим, и вектор движения может извлекаться в единицах дискретных отсчетов.
[0025] Пример аффинной компенсации движения в случае двух управляющих точек показывается на фиг. 14. В этом случае, две управляющих точки имеют два параметра в виде компонента горизонтального направления и компонента вертикального направления. Таким образом, аффинное преобразование в случае двух управляющих точек называется "четырехпараметрическим аффинным преобразованием". CP1 и CP2 по фиг. 14 представляют собой управляющие точки.
Пример аффинной компенсации движения в случае трех управляющих точек показывается на фиг. 15. В этом случае, три управляющих точки имеют два параметра в виде компонента горизонтального направления и компонента вертикального направления. Таким образом, аффинное преобразование в случае трех управляющих точек называется "шестипараметрическим аффинным преобразованием". CP1, CP2 и CP3 по фиг. 15 представляют собой управляющие точки.
[0026] Аффинная компенсация движения может использоваться как в режиме идентификации предикторов векторов движения, так и в режиме объединения. Режим, в котором аффинная компенсация движения применяется в режиме идентификации предикторов векторов движения, задается как режим идентификации предикторов векторов движения на основе субблоков, и режим, в котором аффинная компенсация движения применяется в режиме объединения, задается как режим объединения на основе субблоков.
Синтаксис интер-предсказания
[0027]
В дальнейшем описывается синтаксис, связанный со интер-предсказанием, с использованием фиг. 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
[0028]
Номер в последовательности кадров (POC) представляет собой переменную, ассоциированную с кадром, который должен кодироваться, и задается равным значению, которое постепенно увеличивается на 1 согласно порядку вывода кадров. Согласно POC-значению, можно различать то, являются или нет кадры идентичными, чтобы различать переднезаднюю взаимосвязь между кадрами в порядке вывода или извлекать расстояние между кадрами. Например, если POC двух кадров имеют идентичное значение, может определяться то, что они представляют собой идентичный кадр. Когда POC двух кадров имеют различные значения, может определяться то, что кадр с меньшим POC-значением представляет собой кадр, который должен выводиться первым. Разность между POC двух кадров указывает межкадровое расстояние в направлении временной оси.
Первый вариант осуществления
[0029]
В дальнейшем описываются устройство 100 кодирования кадров и устройство 200 декодирования кадров согласно первому варианту осуществления настоящего изобретения.
[0030] Фиг. 1 является блок-схемой устройства 100 кодирования кадров согласно первому варианту осуществления. Устройство 100 кодирования кадров согласно варианту осуществления включает в себя модуль 101 разбиения блоков, модуль 102 интер-предсказания, модуль 103 интра-предсказания, запоминающее устройство 104 декодированных кадров, модуль 105 определения способа предсказания, модуль 106 формирования остатков, модуль 107 ортогонального преобразования/квантования, модуль 108 кодирования битовых строк, модуль 109 обратного квантования/обратного ортогонального преобразования, модуль 110 наложения сигналов кадров для декодирования и запоминающее устройство 111 для хранения информации кодирования.
[0031] Модуль 101 разбиения блоков рекурсивно разделяет входной кадр, чтобы формировать блок кодирования. Модуль 101 разбиения блоков включает в себя модуль квадратического разбиения, который разделяет разбитый целевой блок в горизонтальном направлении и в вертикальном направлении, и модуль двоичного/троичного разбиения, который разделяет разбитый целевой блок либо в горизонтальном направлении, либо в вертикальном направлении. Модуль 101 разбиения блоков задает сформированный блок кодирования в качестве целевого блока кодирования и предоставляет сигнал кадров целевого блока кодирования в модуль 102 интер-предсказания, модуль 103 интра-предсказания и модуль 106 формирования остатков. Кроме того, модуль 101 разбиения блоков предоставляет информацию, указывающую определенную структуру рекурсивного разбиения, в модуль 108 кодирования битовых строк. Ниже описывается подробная работа модуля 101 разбиения блоков.
[0032] Модуль 102 интер-предсказания выполняет интер-предсказание целевого блока кодирования. Модуль 102 интер-предсказания извлекает множество потенциально подходящих вариантов информации интер-предсказания из информации интер-предсказания, сохраненной в запоминающем устройстве 111 для хранения информации кодирования, и декодированного сигнала кадров, сохраненного в запоминающем устройстве 104 декодированных кадров, выбирает подходящий режим интер-предсказания из множества извлеченных потенциально подходящих вариантов и предоставляет выбранный режим интер-предсказания и предсказанный сигнал кадров согласно выбранному режиму интер-предсказания в модуль 105 определения способа предсказания. Ниже описывается подробная конфигурация и работа модуля 102 интер-предсказания.
[0033] Модуль 103 интра-предсказания выполняет интра-предсказание целевого блока кодирования. Модуль 103 интра-предсказания ссылается на декодированный сигнал кадров, сохраненный в запоминающем устройстве 104 декодированных кадров в качестве опорного дискретного отсчета, и формирует предсказанный сигнал кадров согласно интра-предсказанию на основе информации кодирования, такой как режим интра-предсказания, сохраненной в запоминающем устройстве 111 для хранения информации кодирования. При интра-предсказании, модуль 103 интра-предсказания выбирает подходящий режим интра-предсказания из множества режимов интра-предсказания и предоставляет выбранный режим интра-предсказания и предсказанный сигнал кадров согласно выбранному режиму интра-предсказания в модуль 105 определения способа предсказания.
Примеры интра-предсказания показаны на фиг. 10A и 10B. Фиг. 10A показывает соответствие между направлением предсказания интра-предсказания и номером режима интра-предсказания. Например, в режиме 50 интра-предсказания, кадр интра-предсказания формируется посредством копирования опорных дискретных отсчетов в вертикальном направлении. Режим 1 интра-предсказания представляет собой DC-режим и представляет собой режим, в котором все выборочные значения целевого блока составляют среднее значение опорных дискретных отсчетов. Режим 0 интра-предсказания представляет собой планарный режим и представляет собой режим для создания двумерного кадра интра-предсказания из опорных дискретных отсчетов в вертикальном и горизонтальном направлениях. Фиг. 10B представляет собой пример, в котором кадр интра-предсказания, формируется в случае режима 40 интра-предсказания. Модуль 103 интра-предсказания копирует значение опорного дискретного отсчета в направлении, указываемом посредством режима интра-предсказания, относительно каждого дискретного отсчета целевого блока. Когда опорный дискретный отсчет режима интра-предсказания не находится в целочисленной позиции, модуль 103 интра-предсказания определяет опорное выборочное значение согласно интерполяции из опорных выборочных значений соседних целочисленных позиций.
[0034] Запоминающее устройство 104 декодированных кадров сохраняет декодированный кадр, сформированный посредством модуля 110 наложения сигналов кадров для декодирования. Запоминающее устройство 104 декодированных кадров предоставляет сохраненный декодированный кадр в модуль 102 интер-предсказания и модуль 103 интра-предсказания.
[0035] Модуль 105 определения способа предсказания определяет оптимальный режим предсказания посредством оценки каждого интра-предсказания и интер-предсказания с использованием информации кодирования, остаточного объема кода, величины искажения между предсказанным сигналом кадров и целевым сигналом кадров и т.п. В случае интра-предсказания, модуль 105 определения способа предсказания предоставляет информацию интра-предсказания, такую как режим интра-предсказания, в качестве информации кодирования в модуль 108 кодирования битовых строк. В случае режима интер-предсказанного объединения, модуль 105 определения способа предсказания предоставляет информацию интер-предсказания, такую как индекс объединения и информация, указывающая то, представляет режим собой или нет режим объединения на основе субблоков (флаг объединения на основе субблоков), в качестве информации кодирования в модуль 108 кодирования битовых строк. В случае режима идентификации предикторов векторов движения интер-предсказания, модуль 105 определения способа предсказания предоставляет информацию интер-предсказания, такую как режим интер-предсказания, индекс предиктора вектора движения, опорные индексы L0 и L1, разность векторов движения и информация, указывающая то, представляет режим собой или нет режим идентификации предикторов векторов движения на основе субблоков (флаг предиктора вектора движения на основе субблоков), в качестве информации кодирования в модуль 108 кодирования битовых строк. Дополнительно, модуль 105 определения способа предсказания предоставляет определенную информацию кодирования в запоминающее устройство 111 для хранения информации кодирования. Модуль 105 определения способа предсказания предоставляет предсказанный сигнал кадров в модуль 106 формирования остатков и модуль 110 наложения сигналов кадров для декодирования.
[0036] Модуль 106 формирования остатков формирует остаток посредством вычитания предсказанного сигнала кадров из целевого сигнала кадров и предоставляет остаток в модуль 107 ортогонального преобразования/квантования.
[0037] Модуль 107 ортогонального преобразования/квантования выполняет ортогональное преобразование и квантование для остатка в соответствии с параметром квантования, чтобы формировать ортогонально преобразованный/квантованный остаток, и предоставляет сформированный остаток в модуль 108 кодирования битовых строк и модуль 109 обратного квантования/обратного ортогонального преобразования.
[0038] Модуль 108 кодирования битовых строк кодирует информацию кодирования согласно способу предсказания, определенному посредством модуля 105 определения способа предсказания для каждого блока кодирования, в дополнение к информации единиц последовательностей, кадров, срезов и блоков кодирования. В частности, модуль 108 кодирования битовых строк кодирует режим PredMode предсказания для каждого блока кодирования. Когда режим предсказания представляет собой интер-предсказание (MODE_INTER), модуль 108 кодирования битовых строк кодирует информацию кодирования (информацию интер-предсказания), такую как флаг для различения того, представляет или нет режим собой режим объединения, флаг объединения на основе субблоков, индекс объединения, когда режим представляет собой режим объединения, режим интер-предсказания, когда режим не представляет собой режим объединения, индекс предиктора вектора движения, информация относительно разности векторов движения и флаг предиктора вектора движения на основе субблоков в соответствии с указанным синтаксисом (синтаксическим правилом для битовых строк) и формирует первые битовые строки. Когда режим предсказания представляет собой интра-предсказание (MODE_INTRA), информация кодирования (информация интра-предсказания), такая как режим интра-предсказания кодируется в соответствии с указанным синтаксисом (синтаксическим правилом для битовых строк), и первые битовые строки формируются. Кроме того, модуль 108 кодирования битовых строк энтропийно кодирует ортогонально преобразованный и квантованный остаток в соответствии с указанным синтаксисом, чтобы формировать вторые битовые строки. Модуль 108 кодирования битовых строк мультиплексирует первые битовые строки и вторые битовые строки в соответствии с указанным синтаксисом и выводит поток битов.
[0039] Модуль 109 обратного квантования/обратного ортогонального преобразования вычисляет остаток посредством выполнения обратного квантования и обратного ортогонального преобразования для ортогонально преобразованного/квантованного остатка, предоставляемого из модуля 107 ортогонального преобразования/квантования, и предоставляет вычисленный остаток в модуль 110 наложения сигналов кадров для декодирования.
[0040] Модуль 110 наложения сигналов кадров для декодирования накладывает предсказанный сигнал кадров согласно определению модуля 105 определения способа предсказания и остаток, обратно квантованный и обратно ортогонально преобразованный посредством модуля 109 обратного квантования/обратного ортогонального преобразования, чтобы формировать декодированный кадр, и сохраняет декодированный кадр в запоминающем устройстве 104 декодированных кадров. Кроме того, модуль 110 наложения сигналов кадров для декодирования может сохранять декодированный кадр в запоминающем устройстве 104 декодированных кадров после выполнения процесса фильтрации для уменьшения искажения, такого как искажение в виде блочности вследствие кодирования для декодированного кадра.
[0041] Запоминающее устройство 111 для хранения информации кодирования сохраняет информацию кодирования, такую как режим предсказания (интер-предсказание или интра-предсказание), определенный посредством модуля 105 определения способа предсказания. В случае интер-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как определенный вектор движения, опорные индексы опорных списков L0 и L1 и списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Кроме того, в случае режима интер-предсказанного объединения, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как индекс объединения и информация, указывающая то, представляет режим собой или нет режим объединения на основе субблоков (флаг объединения на основе субблоков), в дополнение к вышеописанной информации. Кроме того, в случае режима идентификации предикторов векторов движения интер-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интер-предсказания, такую как режим интер-предсказания, индекс предиктора вектора движения, разность векторов движения и информация, указывающая то, представляет режим собой или нет режим идентификации предикторов векторов движения на основе субблоков (флаг предиктора вектора движения на основе субблоков), в дополнение к вышеописанной информации. В случае интра-предсказания, информация кодирования, сохраненная в запоминающем устройстве 111 для хранения информации кодирования, включает в себя информацию интра-предсказания, такую как определенный режим интра-предсказания.
[0042] Фиг. 2 является блок-схемой, показывающей конфигурацию устройства декодирования кадров согласно варианту осуществления настоящего изобретения, соответствующего устройству кодирования кадров по фиг. 1. Устройство декодирования кадров согласно варианту осуществления включает в себя модуль 201 декодирования битовых строк, модуль 202 разбиения блоков, модуль 203 интер-предсказания, модуль 204 интра-предсказания, запоминающее устройство 205 для хранения информации кодирования, модуль 206 обратного квантования/обратного ортогонального преобразования, модуль 207 наложения сигналов кадров для декодирования и запоминающее устройство 208 декодированных кадров.
[0043] Поскольку процесс декодирования устройства декодирования кадров по фиг. 2 соответствует процессу декодирования, предоставленному в устройстве кодирования кадров по фиг. 1, компоненты запоминающего устройства 205 для хранения информации кодирования, модуля 206 обратного квантования/обратного ортогонального преобразования, модуля 207 наложения сигналов кадров для декодирования и запоминающего устройства 208 декодированных кадров по фиг. 2 имеют функции, соответствующие компонентам запоминающего устройства 111 для хранения информации кодирования, модуля 109 обратного квантования/обратного ортогонального преобразования, модуля 110 наложения сигналов кадров для декодирования и запоминающего устройства 104 декодированных кадров устройства кодирования кадров по фиг. 1.
[0044] Поток битов, предоставляемый в модуль 201 декодирования битовых строк, разделяется в соответствии с указанным синтаксическим правилом. Модуль 201 декодирования битовых строк декодирует отделенную первую битовую строку и получает информацию единиц последовательностей, кадров, срезов, блоков кодирования и информацию кодирования единиц блоков кодирования. В частности, модуль 201 декодирования битовых строк декодирует режим PredMode предсказания для различения интер-предсказания (MODE_INTER) или интра-предсказания (MODE_INTRA) в единицах блоков кодирования. Когда режим предсказания представляет собой интер-предсказание (MODE_INTER), модуль 201 декодирования битовых строк декодирует информацию кодирования (информацию интер-предсказания) относительно флага для различения того, представляет или нет режим собой режим объединения, индекс объединения, когда режим представляет собой режим объединения, флаг объединения на основе субблоков, режим интер-предсказания, когда режим представляет собой режим идентификации предикторов векторов движения, индекс предиктора вектора движения, разность векторов движения, флаг предиктора вектора движения на основе субблоков и т.п. в соответствии с указанным синтаксисом и предоставляет информацию кодирования (информацию интер-предсказания) в запоминающее устройство 205 для хранения информации кодирования через модуль 203 интер-предсказания и модуль 202 разбиения блоков. Когда режим предсказания представляет собой интра-предсказание (MODE_INTRA), информация кодирования (информация интра-предсказания), такая как режим интра-предсказания декодируется в соответствии с указанным синтаксисом, и информация кодирования (информация интра-предсказания) предоставляется в запоминающее устройство 205 для хранения информации кодирования через модуль 203 интер-предсказания или модуль 204 интра-предсказания и модуль 202 разбиения блоков. Модуль 201 декодирования битовых строк декодирует отделенные вторые битовые строки, чтобы вычислять ортогонально преобразованный/квантованный остаток, и предоставляет ортогонально преобразованный/квантованный остаток в модуль 206 обратного квантования/обратного ортогонального преобразования.
[0045] Когда режим 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 интер-предсказания.
[0046] Модуль 204 интра-предсказания выполняет интра-предсказание, когда режим PredMode предсказания блока кодирования цели представляет собой интра-предсказание (MODE_INTRA). Информация кодирования, декодированная посредством модуля 201 декодирования битовых строк, включает в себя режим интра-предсказания. Модуль 204 интра-предсказания формирует предсказанный сигнал кадров согласно интра-предсказанию из декодированного сигнала кадров, сохраненного в запоминающем устройстве 208 декодированных кадров, в соответствии с режимом интра-предсказания, включенным в информацию кодирования, декодированную посредством модуля 201 декодирования битовых строк, и предоставляет сформированный предсказанный сигнал кадров в модуль 207 наложения сигналов кадров для декодирования. Поскольку модуль 204 интра-предсказания соответствует модулю 103 интра-предсказания устройства 100 кодирования кадров, процесс, аналогичный процессу модуля 103 интра-предсказания, выполняется.
[0047] Модуль 206 обратного квантования/обратного ортогонального преобразования выполняет обратное ортогональное преобразование и обратное квантование для ортогонально преобразованного/квантованного остатка, декодированного посредством модуля 201 декодирования битовых строк, и получает обратно ортогонально преобразованный/обратно квантованный остаток.
[0048] Модуль 207 наложения сигналов кадров для декодирования декодирует сигнал кадров для декодирования посредством наложения предсказанного сигнала кадров, предсказанного в интер-режиме посредством модуля 203 интер-предсказания, или предсказанного сигнала кадров, предсказанного в интра-режиме посредством модуля 204 интра-предсказания, и остатка, обратно ортогонально преобразованного/обратно квантованного посредством модуля 206 обратного квантования/обратного ортогонального преобразования, и сохраняет декодированный сигнал кадров для декодирования в запоминающем устройстве 208 декодированных кадров. Во время хранения в запоминающем устройстве 208 декодированных кадров, модуль 207 наложения сигналов кадров для декодирования может сохранять декодированный кадр в запоминающем устройстве 208 декодированных кадров после того, как процесс фильтрации для уменьшения искажения в виде блочности и т.п. вследствие кодирования выполняется для декодированного кадра.
[0049] Далее описывается работа модуля 101 разбиения блоков в устройстве 100 кодирования кадров. Фиг. 3 является блок-схемой последовательности операций способа, показывающей операцию разделения кадра на древовидные блоки и дополнительного разделения каждого древовидного блока. Во-первых, входной кадр разделяется на древовидные блоки, имеющие предварительно определенный размер (этап S1001). Каждый древовидный блок сканируется в предварительно определенном порядке, т.е. в порядке растрового сканирования (этап S1002), и внутренняя часть древовидного блока цели разделяется (этап S1003).
[0050] Фиг. 7 является блок-схемой последовательности операций способа, показывающей подробную работу процесса разбиения этапа S1003. Во-первых, определяется то, должен или нет целевой блок разделяться на четыре части (этап S1101).
[0051] Когда определяется то, что целевой блок должен разделяться на четыре части, целевой блок разделяется на четыре части (этап S1102). Каждый блок, полученный посредством разделения целевого блока, сканируется в порядке Z-сканирования, т.е. в порядке верхней левой, верхней правой, нижней левой и нижней правой частей (этап S1103). Фиг. 5 показывает пример порядка Z-сканирования, и ссылка с номером 601 по фиг. 6A показывает пример, в котором целевой блок разделяется на четыре части. Числа 0-3 ссылки с номером 601 по фиг. 6A указывают порядок обработки. Затем процесс разбиения по фиг. 7 рекурсивно выполняется для каждого блока из разделения на этапе S1101 (этап S1104).
[0052] Когда определяется то, что целевой блок не должен разделяться на четыре части, двоичное/троичное разбиение выполняется (этап S1105).
[0053] Фиг. 8 является блок-схемой последовательности операций способа, показывающей подробную работу процесса двоичного/троичного разбиения этапа S1105. Во-первых, определяется то, должен либо нет целевой блок разделяться на две или три части, т.е. то, должно либо нет выполняться двоичное или троичное разбиение (этап S1201).
[0054] Когда не определяется то, что целевой блок должен разделяться на две или три части, т.е. когда определяется то, что целевой блок не должен разделяться, разбиение завершается (этап S1211). Таким образом, процесс рекурсивного разбиения дополнительно не выполняется для блоков, разделенных согласно процессу рекурсивного разбиения.
[0055] Когда определяется то, что целевой блок должен разделяться на две или три части, дополнительно определяется то, должен или нет целевой блок разделяться на две части (этап S1202).
[0056] Когда определяется то, что целевой блок должен разделяться на две части, определяется то, должен или нет целевой блок разделяться на верхнюю и нижнюю части (в вертикальном направлении) (этап S1203). На основе результата определения, целевой блок разделяется на две части, которые представляют собой верхнюю и нижнюю части (в вертикальном направлении) (этап S1204), или целевой блок разделяется на две части, которые представляют собой левую и правую части (в горизонтальном направлении) (этап S1205). Как результат этапа S1204, целевой блок разделяется на две части, которые представляют собой верхнюю и нижнюю части (в вертикальном направлении), как указано посредством ссылки с номером 602 на фиг. 6B. Как результат этапа S1205, целевой блок разделяется на две части, которые представляют собой левую и правую части (в горизонтальном направлении), как указано посредством ссылки с номером 604 по фиг. 6D.
[0057] Когда не определяется то, что целевой блок должен разделяться на две части, т.е. когда определяется то, что целевой блок должен разделяться на три части, на этапе S1202, определяется то, должен или нет целевой блок разделяться на верхнюю, среднюю и нижнюю части (в вертикальном направлении) (этап S1206). На основе результата определения, целевой блок разделяется на три части, которые представляют собой верхнюю, среднюю и нижнюю части (в вертикальном направлении) (этап S1207), или целевой блок разделяется на три части, которые представляют собой левую, среднюю и правую части (в горизонтальном направлении) (этап S1208). Как результат этапа S1207, целевой блок разделяется на три части, которые представляют собой верхнюю, среднюю и нижнюю части (в вертикальном направлении), как указано посредством ссылки с номером 603 по фиг. 6C. Как результат этапа S1208, целевой блок разделяется на три части, которые представляют собой левую, среднюю и правую части (в горизонтальном направлении), как указано посредством ссылки с номером 605 по фиг. 6E.
[0058] После того, как любой из этапов S1204, S1205, S1207 и S1208 выполняется, каждый из блоков, на которые разделяется целевой блок, сканируется в порядке слева направо и сверху вниз (этапе S1209). Номера 0-2 ссылок с номерами 602-605 по фиг. 6B в 6E указывают порядок обработки. Для каждого из блоков, на которые разделяется целевой блок, процесс двоичного/троичного разбиения по фиг. 8 рекурсивно выполняется (этап S1210).
[0059] Рекурсивное разбиение блоков, описанное здесь, может ограничивать необходимость разбиения согласно числу разбиений или размеру целевого блока и т.п. Информация, которая ограничивает необходимость разбиения, может реализовываться посредством конфигурации, в которой информация не доставляется посредством выполнения согласования между устройством кодирования и устройством декодирования заранее, либо реализовываться посредством конфигурации, в которой устройство кодирования определяет информацию, которая ограничивает необходимость разбиения, записывает информацию в битовую строку и доставляет информацию в устройство декодирования.
[0060] Когда определенный блок разделяется, блок перед разбиением называется "родительским блоком", и каждый блок после разбиения называется "дочерним блоком".
[0061] Далее описывается работа модуля 202 разбиения блоков в устройстве 200 декодирования кадров. Модуль 202 разбиения блоков разделяет древовидный блок согласно процедуре обработки, аналогичной процедуре модуля 101 разбиения блоков устройства 100 кодирования кадров. Тем не менее, имеется отличие в том, что модуль 101 разбиения блоков устройства 100 кодирования кадров применяет технологию оптимизации, такую как оценка оптимальной формы на основе распознавания кадров либо оптимизация показателя искажения, чтобы определять оптимальную форму разбиения блоков, тогда как модуль 202 разбиения блоков устройства 200 декодирования кадров определяет форму разбиения блоков посредством информации разбиения декодирования блока, записанной в битовой строке.
[0062] Синтаксис (синтаксическое правило для битовых строк), связанный с разбиением блоков согласно первому варианту осуществления, показывается на фиг. 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.
Интер-предсказание
[0063]
Способ интер-предсказания согласно варианту осуществления осуществляется в модуле 102 интер-предсказания устройства кодирования кадров по фиг. 1 и в модуле 203 интер-предсказания устройства декодирования кадров по фиг. 2.
[0064] В дальнейшем описывается способ интер-предсказания согласно варианту осуществления со ссылкой на чертежи. Способ интер-предсказания осуществляется в процессах кодирования и декодирования в единицах блоков кодирования.
Описание модуля 102 интер-предсказания на стороне кодирования
[0065]
Фиг. 16 является схемой, показывающей подробную конфигурацию модуля 102 интер-предсказания устройства кодирования кадров на фиг. 1. Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения извлекает множество потенциально подходящих вариантов предикторов нормальных векторов движения, чтобы выбирать предиктор вектора движения, и вычисляет разность векторов движения между выбранным предиктором вектора движения и обнаруженным вектором движения. Обнаруженный режим интер-предсказания, опорный индекс и вектор движения и вычисленная разность векторов движения становятся информацией интер-предсказания режима идентификации предикторов нормальных векторов движения. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения.
[0066] Модуль 302 извлечения режимов нормального объединения извлекает множество потенциально подходящих вариантов нормального объединения, чтобы выбирать потенциально подходящий вариант нормального объединения, и получает информацию интер-предсказания режима нормального объединения. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 302 извлечения режимов нормального объединения.
[0067] Модуль 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков извлекает множество потенциально подходящих вариантов предикторов векторов движения на основе субблоков, чтобы выбирать предиктор вектора движения на основе субблоков, и вычисляет разность векторов движения между выбранным предиктором вектора движения на основе субблоков и обнаруженным вектором движения. Обнаруженный режим интер-предсказания, опорный индекс и вектор движения и вычисленная разность векторов движения становятся информацией интер-предсказания режима идентификации предикторов векторов движения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания.
[0068] Модуль 304 извлечения режимов объединения на основе субблоков извлекает множество потенциально подходящих вариантов объединения на основе субблоков, чтобы выбирать потенциально подходящий вариант объединения на основе субблоков, и получает информацию интер-предсказания режима объединения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 305 определения режима интер-предсказания.
[0069] Модуль 305 определения режима интер-предсказания определяет информацию интер-предсказания на основе информации интер-предсказания, предоставляемой из модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения, модуля 302 извлечения режимов нормального объединения, модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков и модуля 304 извлечения режимов объединения на основе субблоков. Информация интер-предсказания согласно результату определения предоставляется из модуля 305 определения режима интер-предсказания в модуль 306 предсказания с компенсацией движения.
[0070] Модуль 306 предсказания с компенсацией движения выполняет интер-предсказание для опорного сигнала кадров, сохраненного в запоминающем устройстве 104 декодированных кадров, на основе определенной информации интер-предсказания. Ниже описывается подробная конфигурация и процесс модуля 306 предсказания с компенсацией движения.
Описание модуля 203 интер-предсказания декодирования на стороне декодирования
[0071]
Фиг. 22 является схемой, показывающей подробную конфигурацию модуля 203 интер-предсказания устройства декодирования кадров по фиг. 2.
[0072] Модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения извлекает множество потенциально подходящих вариантов предикторов нормальных векторов движения, чтобы выбирать предиктор вектора движения, вычисляет сумму выбранного предиктора вектора движения и декодированной разности векторов движения и задает вычисленную сумму в качестве вектора движения. Декодированный режим интер-предсказания, опорный индекс и вектор движения становятся информацией интер-предсказания режима идентификации предикторов нормальных векторов движения. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408. Ниже описывается подробная конфигурация и процесс модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения.
[0073] Модуль 402 извлечения режимов нормального объединения извлекает множество потенциально подходящих вариантов нормального объединения, чтобы выбирать потенциально подходящий вариант нормального объединения, и получает информацию интер-предсказания режима нормального объединения. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408. Ниже описывается подробная конфигурация и процесс модуля 402 извлечения режимов нормального объединения.
[0074] Модуль 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков извлекает множество потенциально подходящих вариантов предикторов векторов движения на основе субблоков, чтобы выбирать предиктор вектора движения на основе субблоков, вычисляет сумму выбранного предиктора вектора движения на основе субблоков и декодированной разности векторов движения и задает вычисленную сумму в качестве вектора движения. Декодированный режим интер-предсказания, опорный индекс и вектор движения становятся информацией интер-предсказания режима идентификации предикторов векторов движения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408.
[0075] Модуль 404 извлечения режимов объединения на основе субблоков извлекает множество потенциально подходящих вариантов объединения на основе субблоков, чтобы выбирать потенциально подходящий вариант объединения на основе субблоков, и получает информацию интер-предсказания режима объединения на основе субблоков. Эта информация интер-предсказания предоставляется в модуль 406 предсказания с компенсацией движения через переключатель 408.
[0076] Модуль 406 предсказания с компенсацией движения выполняет интер-предсказание для опорного сигнала кадров, сохраненного в запоминающем устройстве 208 декодированных кадров, на основе определенной информации интер-предсказания. Подробная конфигурация и процесс модуля 406 предсказания с компенсацией движения являются аналогичными подробной конфигурации и процессу модуля 306 предсказания с компенсацией движения на стороне кодирования.
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP)
[0077]
Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 17 включает в себя модуль 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуль 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуль 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуль 325 пополнения потенциально подходящих вариантов предикторов векторов движения, модуль 326 обнаружения нормальных векторов движения, модуль 327 выбора потенциально подходящих вариантов предикторов векторов движения и модуль 328 вычитания векторов движения.
[0078] Модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 23 включает в себя модуль 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуль 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуль 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории, модуль 425 пополнения потенциально подходящих вариантов предикторов векторов движения, модуль 426 выбора потенциально подходящих вариантов предикторов векторов движения и модуль 427 суммирования векторов движения.
[0079] В дальнейшем описываются процедуры обработки модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования и модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования с использованием блок-схем последовательности операций способа по фиг. 19 и 25, соответственно. Фиг. 19 является блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения режимов идентификации предикторов нормальных векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования, и фиг. 25 является блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения режимов идентификации предикторов нормальных векторов движения модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования.
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): описание на стороне кодирования
[0080]
В дальнейшем описывается процедура обработки извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования со ссылкой на фиг. 19. В описании процедуры обработки по фиг. 19, термин "нормальный", показанный на фиг. 19, может опускаться.
[0081] Во-первых, модуль 326 обнаружения нормальных векторов движения обнаруживает нормальный вектор движения для каждого режима интер-предсказания и каждого опорного индекса (этап S100 по фиг. 19).
[0082] Затем, в модуле 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 вычисляется.
[0083] Хотя процесс вычисления разностей векторов движения выполняется для каждого из L0 и L1, процесс вычисления разностей векторов движения становится процессом, общим для L0 и L1. Следовательно, в нижеприведенном описании, L0 и L1 представляются как общий LX. X LX равен 0 в процессе вычисления разности векторов движения L0, и X LX равен 1 в процессе вычисления разности векторов движения L1. Кроме того, когда на информацию другого списка вместо LX ссылаются в ходе процесса вычисления разности векторов движения LX, другой список представляется как LY.
[0084] Когда вектор mvLX движения LX используется (этап S102 по фиг. 19: "Да"), потенциально подходящие варианты предикторов векторов движения LX вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения LX (этап S103 по фиг. 19). В модуле 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории и модуле 325 пополнения потенциально подходящих вариантов предикторов векторов движения модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения, множество потенциально подходящих вариантов предикторов векторов движения извлекаются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Ниже описывается подробная процедура обработки этапа S103 по фиг. 19 с использованием блок-схемы последовательности операций способа по фиг. 20.
[0085] Затем, модуль 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 получается.
[0086] Затем, модуль 328 вычитания векторов движения вычитает выбранный предиктор mvpLX вектора движения LX из вектора mvLX движения LX и вычисляет разность mvdLX векторов движения LX в качестве mvdLX=mvLX-mvpLX (этап S105 по фиг. 19).
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): описание на стороне декодирования
[0087]
Далее описывается процедура обработки режима идентификации предикторов нормальных векторов движения на стороне декодирования со ссылкой на фиг. 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 вычисляется.
[0088] Хотя процесс вычисления вектора движения выполняется для каждого из L0 и L1 на стороне декодирования, аналогично стороне кодирования, процесс вычисления вектора движения становится процессом, общим для L0 и L1. Следовательно, в нижеприведенном описании, L0 и L1 представляются как общий LX. LX представляет режим интер-предсказания для использования при интер-предсказании целевого блока кодирования. X равен 0 в процессе вычисления вектора движения L0, и X равен 1 в процессе вычисления вектора движения L1. Кроме того, когда на информацию другого опорного списка вместо опорного списка, идентичного опорному списку опорного списка, идентичного опорному списку LX цели вычисления, ссылаются в ходе процесса вычисления вектора движения LX, другой опорный список представляется как LY.
[0089] Когда вектор mvLX движения LX используется (этап S202 по фиг. 25: "Да"), потенциально подходящие варианты предикторов векторов движения LX вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения LX (этап S203 по фиг. 25). В модуле 421 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения, модуле 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения, модуле 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории и модуле 425 пополнения потенциально подходящих вариантов предикторов векторов движения модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, множество потенциально подходящих вариантов предикторов векторов движения вычисляются, чтобы конструировать список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Ниже описывается подробная процедура обработки этапа S203 по фиг. 25 с использованием блок-схемы последовательности операций способа по фиг. 20.
[0090] Затем, потенциально подходящий вариант mvpListLX[mvpIdxLX] предиктора вектора движения, соответствующий индексу mvpIdxLX предиктора вектора движения, декодированного и предоставляемого посредством модуля 201 декодирования битовых строк из списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, извлекается в качестве выбранного предиктора mvpLX вектора движения в модуле 426 выбора потенциально подходящих вариантов предикторов векторов движения (этап S204 по фиг. 25).
[0091] Затем, модуль 427 суммирования векторов движения суммирует разность mvdLX векторов движения LX, которая декодируется и предоставляется посредством модуля 201 декодирования битовых строк, и предиктор mvpLX вектора движения LX и вычисляет вектор mvLX движения LX в качестве mvLX=mvpLX+mvdLX (этап S205 по фиг. 25).
Модуль извлечения режимов идентификации предикторов нормальных векторов движения (нормальное AMVP): способ предсказания векторов движения
[0092]
Фиг. 20 является блок-схемой последовательности операций способа, показывающей процедуру обработки процесса извлечения режимов идентификации предикторов нормальных векторов движения, имеющего функцию, общую для модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения устройства кодирования кадров и модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения устройства декодирования кадров согласно варианту осуществления настоящего изобретения.
[0093] Модуль 301 извлечения режимов идентификации предикторов нормальных векторов движения и модуль 401 извлечения режимов идентификации предикторов нормальных векторов движения включают в себя список mvpListLX потенциально подходящих вариантов предикторов векторов движения. Список mvpListLX потенциально подходящих вариантов предикторов векторов движения имеет списковую структуру и содержит область хранения, в которой индекс предиктора вектора движения, указывающий местоположение в списке потенциально подходящих вариантов предикторов векторов движения, и потенциально подходящий вариант предиктора вектора движения, соответствующий индексу, сохраняется в качестве элементов. Номер индекса предиктора вектора движения начинается с 0, и потенциально подходящие варианты предикторов векторов движения сохраняются в области хранения списка mvpListLX потенциально подходящих вариантов предикторов векторов движения. В настоящем варианте осуществления, предполагается, что, по меньшей мере, два потенциально подходящих вариантов предикторов векторов движения (информация интер-предсказания) могут регистрироваться в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения. Кроме того, переменная numCurrMvpCand, указывающая число потенциально подходящих вариантов предикторов векторов движения, зарегистрированных в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения, задается равной 0.
[0094] Модули 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, и это справедливо далее).
[0095] Затем, модули 322 и 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения извлекают потенциально подходящие варианты предикторов векторов движения из блоков в кадре, время которого отличается от кадра текущего целевого кадра. В этом процессе, извлекаются флаг availableFlagLXCol, указывающий то, может или нет потенциально подходящий вариант предиктора вектора движения блока кодирования кадра другого момента времени использоваться, вектор mvLXCol движения, опорный индекс refIdxCol и опорный список listCol, и mvLXCol добавляется в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S303 по фиг. 20).
[0096] Кроме того, предполагается, что процессы модулей 322 и 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения могут опускаться в единицах последовательностей (SPS), кадров (PPS) или срезов.
[0097] Затем, модули 323 и 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляют потенциально подходящие варианты предикторов векторов движения на основе предыстории, зарегистрированные в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в список mvpListLX потенциально подходящих вариантов предикторов векторов движения (этап S304 по фиг. 20). Ниже описываются подробности процедуры обработки регистрации этапа S304 с использованием блок-схемы последовательности операций способа по фиг. 29.
[0098] Затем, модули 325 и 425 пополнения потенциально подходящих вариантов предикторов векторов движения добавляют потенциально подходящие варианты предикторов векторов движения, имеющие предварительно определенное значение, к примеру, (0, 0) до тех пор, пока список mvpListLX потенциально подходящих вариантов предикторов векторов движения не удовлетворяется (S305 по фиг. 20).
Модуль извлечения режимов нормального объединения (нормальное объединение)
[0099]
Модуль 302 извлечения режимов нормального объединения по фиг. 18 включает в себя модуль 341 извлечения пространственных потенциально подходящих вариантов объединения, модуль 342 извлечения временных потенциально подходящих вариантов объединения, модуль 344 извлечения средних потенциально подходящих вариантов объединения, модуль 345 извлечения потенциально подходящих вариантов объединения на основе предыстории, модуль 346 пополнения потенциально подходящих вариантов объединения и модуль 347 выбора потенциально подходящих вариантов объединения.
[0100] Модуль 402 извлечения режимов нормального объединения по фиг. 24 включает в себя модуль 441 извлечения пространственных потенциально подходящих вариантов объединения, модуль 442 извлечения временных потенциально подходящих вариантов объединения, модуль 444 извлечения средних потенциально подходящих вариантов объединения, модуль 445 извлечения потенциально подходящих вариантов объединения на основе предыстории, модуль 446 пополнения потенциально подходящих вариантов объединения и модуль 447 выбора потенциально подходящих вариантов объединения.
[0101] Фиг. 21 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру процесса извлечения режимов нормального объединения, имеющего функцию, общую для модуля 302 извлечения режимов нормального объединения устройства кодирования кадров и модуля 402 извлечения режимов нормального объединения устройства декодирования кадров согласно варианту осуществления настоящего изобретения.
[0102] Далее поэтапно описываются различные процессы. Хотя в дальнейшем описывается случай, в котором тип slice_type среза представляет собой B-срез, если не указано иное в нижеприведенном описании, настоящее изобретение также может применяться к случаю P-среза. Тем не менее, когда тип slice_type среза представляет собой P-срез, поскольку только L0-предсказание (Pred_L0) предоставляется в качестве режима интер-предсказания, и L1-предсказание (Pred_L1) и бипредсказание (Pred_BI) отсутствуют, процесс, связанный с L1, может опускаться.
[0103] Модуль 302 извлечения режимов нормального объединения и модуль 402 извлечения режимов нормального объединения имеют список mergeCandList потенциально подходящих вариантов объединения. Список mergeCandList потенциально подходящих вариантов объединения имеет списковую структуру и содержит индекс объединения, указывающий местоположение в списке потенциально подходящих вариантов объединения, и область хранения, в которой потенциально подходящие варианты объединения, соответствующие индексу, сохраняются в качестве элементов. Номер индекса объединения начинается с 0, и потенциально подходящие варианты объединения сохраняются в области хранения списка mergeCandList потенциально подходящих вариантов объединения. В последующем процессе, потенциально подходящий вариант объединения i индекса объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, представляется посредством mergeCandList[i]. В настоящем варианте осуществления, предполагается, что, по меньшей мере, шесть потенциально подходящих вариантов объединения (информация интер-предсказания) могут регистрироваться в списке mergeCandList потенциально подходящих вариантов объединения. Дополнительно, переменная numCurrMergeCand, указывающая число потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, задается равной 0.
[0104] Модуль 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. Тем не менее, в настоящем варианте осуществления, поскольку потенциально подходящий вариант объединения извлекается без ссылки на информацию интер-предсказания блока, включенную в блок кодирования, который служит в качестве цели, пространственный потенциально подходящий вариант объединения с использованием информации интер-предсказания блока, включенной в целевой блок кодирования, не извлекается.
[0105] Затем, модуль 342 извлечения временных потенциально подходящих вариантов объединения и модуль 442 извлечения временных потенциально подходящих вариантов объединения извлекают временные потенциально подходящие варианты объединения из кадров различных моментов времени и регистрируют извлеченные временные потенциально подходящие варианты объединения в списке mergeCandList потенциально подходящих вариантов объединения (этап S402 по фиг. 21). Извлекаются флаг availableFlagCol, указывающий то, может или нет временной потенциально подходящий вариант объединения использоваться, флаг predFlagL0Col L0-предсказания, указывающий то, выполняется или нет L0-предсказание временного потенциально подходящего варианта объединения, флаг predFlagL1Col L1-предсказания, указывающий то, выполняется или нет L1-предсказание, вектор mvL0Col движения L0 и вектор mvL1Col движения L1.
[0106] Кроме того, предполагается, что процессы модуля 342 извлечения временных потенциально подходящих вариантов объединения и модуля 442 извлечения временных потенциально подходящих вариантов объединения могут опускаться в единицах последовательностей (SPS), кадров (PPS) или срезов.
[0107] Затем, модуль 345 извлечения потенциально подходящих вариантов объединения на основе предыстории и модуль 445 извлечения потенциально подходящих вариантов объединения на основе предыстории регистрируют потенциально подходящие варианты предикторов векторов движения на основе предыстории, зарегистрированные в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в списке mergeCandList потенциально подходящих вариантов объединения (этап S403 по фиг. 21).
Кроме того, когда число numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела числа numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и потенциально подходящие варианты объединения на основе предыстории извлекаются и регистрируются в списке mergeCandList потенциально подходящих вариантов объединения.
[0108] Затем, модуль 344 извлечения средних потенциально подходящих вариантов объединения и модуль 444 извлечения средних потенциально подходящих вариантов объединения извлекают средний потенциально подходящий вариант объединения из списка mergeCandList потенциально подходящих вариантов объединения и добавляют извлеченный средний потенциально подходящий вариант объединения в список mergeCandList потенциально подходящих вариантов объединения (этап S404 по фиг. 21).
Кроме того, когда число numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела числа numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и средние потенциально подходящие варианты объединения извлекаются и регистрируются в списке mergeCandList потенциально подходящих вариантов объединения.
Здесь, средний потенциально подходящий вариант объединения представляет собой новый потенциально подходящий вариант объединения, имеющий вектор движения, полученный посредством усреднения векторов движения первого потенциально подходящего варианта объединения и второго потенциально подходящего варианта объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, для каждого из L0-предсказания и L1-предсказания.
[0109] Затем, в модуле 346 пополнения потенциально подходящих вариантов объединения и модуле 446 пополнения потенциально подходящих вариантов объединения, когда число numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения, меньше максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения, максимальное число MaxNumMergeCand потенциально подходящих вариантов объединения задается в качестве верхнего предела числа numCurrMergeCand потенциально подходящих вариантов объединения, зарегистрированного в списке mergeCandList потенциально подходящих вариантов объединения, и дополнительный потенциально подходящий вариант объединения извлекается и регистрируется в списке mergeCandList потенциально подходящих вариантов объединения (этап S405 по фиг. 21). В P-срезе, потенциально подходящий вариант объединения, для которого вектор движения имеет значение в (0, 0), и режим предсказания представляет собой L0-предсказание (Pred_L0), добавляется с использованием максимального числа MaxNumMergeCand потенциально подходящих вариантов объединения в качестве верхнего предела. В B-срезе, потенциально подходящий вариант объединения, для которого вектор движения имеет значение в (0, 0), и режим предсказания представляет собой бипредсказание (Pred_BI), добавляется. Опорный индекс, когда потенциально подходящий вариант объединения добавляется, отличается от ранее добавленного опорного индекса.
[0110] Затем, модуль 347 выбора потенциально подходящих вариантов объединения и модуль 447 выбора потенциально подходящих вариантов объединения выбирают потенциально подходящие варианты объединения из потенциально подходящих вариантов объединения, зарегистрированных в списке mergeCandList потенциально подходящих вариантов объединения. Модуль 347 выбора потенциально подходящих вариантов объединения на стороне кодирования выбирает потенциально подходящий вариант объединения посредством вычисления объема кода и величины искажения и предоставляет индекс объединения, указывающий выбранный потенциально подходящий вариант объединения, и информацию интер-предсказания потенциально подходящего варианта объединения в модуль 306 предсказания с компенсацией движения через модуль 305 определения режима интер-предсказания. С другой стороны, модуль 447 выбора потенциально подходящих вариантов объединения на стороне декодирования выбирает потенциально подходящий вариант объединения на основе декодированного индекса объединения и предоставляет выбранный потенциально подходящий вариант объединения в модуль 406 предсказания с компенсацией движения.
Извлечение режимов идентификации предикторов векторов движения на основе субблоков
[0111]
В дальнейшем описывается извлечение режимов идентификации предикторов векторов движения на основе субблоков.
Фиг. 38 является блок-схемой модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков в устройстве кодирования настоящей заявки.
[0112] Во-первых, модуль 361 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения извлекает потенциально подходящий вариант аффинного наследуемого предиктора вектора движения. Ниже описываются подробности извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения.
[0113] Затем, модуль 362 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения извлекает потенциально подходящий вариант аффинного конструируемого предиктора вектора движения. Ниже описываются подробности извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения.
[0114] Затем, модуль 363 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения извлекает идентичный потенциально подходящий вариант предиктора аффинного вектора движения. Ниже описываются подробности извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения.
[0115] Модуль 366 обнаружения векторов движения на основе субблоков обнаруживает вектор движения на основе субблоков, подходящий для режима идентификации предикторов векторов движения на основе субблоков, и предоставляет обнаруженный вектор в модуль 367 выбора потенциально подходящих вариантов предикторов векторов движения на основе субблоков и модуль 368 вычисления разности.
[0116] Модуль 367 выбора потенциально подходящих вариантов предикторов векторов движения на основе субблоков выбирает потенциально подходящий вариант предиктора вектора движения на основе субблоков из числа потенциально подходящих вариантов предикторов векторов движения на основе субблоков, извлекаемых посредством модуля 361 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения, модуля 362 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения и модуля 363 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения на основе вектора движения, предоставляемого из модуля 366 обнаружения векторов движения на основе субблоков, и предоставляет информацию относительно выбранного потенциально подходящего варианта предиктора вектора движения на основе субблоков в модуль 305 определения режима интер-предсказания и модуль 368 вычисления разности.
[0117] Модуль 368 вычисления разности предоставляет разность предиктора вектора движения, полученную посредством вычитания предиктора вектора движения на основе субблоков, выбранного посредством модуля 367 выбора потенциально подходящих вариантов предикторов векторов движения на основе субблоков, из вектора движения, предоставляемого из модуля 366 обнаружения векторов движения на основе субблоков, в модуль 305 определения режима интер-предсказания.
[0118] Фиг. 39 является блок-схемой модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков в устройстве декодирования настоящей заявки.
[0119] Во-первых, модуль 461 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения извлекает потенциально подходящий вариант аффинного наследуемого предиктора вектора движения. Процесс модуля 461 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения является идентичным процессу модуля 361 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения в устройстве кодирования настоящей заявки.
[0120] Затем, модуль 462 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения извлекает потенциально подходящий вариант аффинного конструируемого предиктора вектора движения. Процесс модуля 462 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения является идентичным процессу модуля 362 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения в устройстве кодирования настоящей заявки.
[0121] Затем, модуль 463 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения извлекает идентичный потенциально подходящий вариант предиктора аффинного вектора движения. Процесс модуля 463 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения является идентичным обработке модуля 363 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения в устройстве кодирования настоящей заявки.
[0122] Модуль 467 выбора потенциально подходящих вариантов предикторов векторов движения на основе субблоков выбирает потенциально подходящий вариант предиктора вектора движения на основе субблоков из числа потенциально подходящих вариантов предикторов векторов движения на основе субблоков, извлекаемых посредством модуля 461 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения, модуля 462 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения и модуля 463 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения на основе индекса предиктора вектора движения, который передается из устройства кодирования и декодируется, и предоставляет информацию относительно выбранного потенциально подходящего варианта предиктора вектора движения на основе субблоков в модуль 406 предсказания с компенсацией движения и функциональный модуль 467 суммирования.
[0123] Функциональный модуль 467 суммирования предоставляет вектор движения, сформированный посредством суммирования дифференциального вектора движения, который передается из устройства кодирования и декодируется, с предиктором вектора движения на основе субблоков, выбранным посредством модуля 466 выбора потенциально подходящих вариантов предикторов векторов движения на основе субблоков, в модуль 406 предсказания с компенсацией движения.
Извлечение потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения
[0124]
В дальнейшем описывается модуль 361 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения. Модуль 361 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения является аналогичным модулю 461 извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения.
[0125] Потенциально подходящий вариант аффинного наследуемого предиктора вектора движения наследует информацию вектора движения аффинной управляющей точки. Фиг. 42 является пояснительной схемой, показывающей извлечение потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения.
[0126] Потенциально подходящий вариант аффинного наследуемого предиктора вектора движения может получаться посредством поиска векторов движения аффинных управляющих точек соседних кодированных/декодированных блоков в пространственной области.
[0127] В частности, процесс поиска выполняется максимум для одного аффинного режима из каждого из блоков (A0 и A1), смежных с левой стороной целевого блока кодирования/декодирования, и блоков (B0, B1 и B2), смежных с верхней стороной целевого блока кодирования/декодирования, и результат поиска задается в качестве аффинного наследуемого предиктора вектора движения.
[0128] Фиг. 46 является блок-схемой последовательности операций способа извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения.
Во-первых, блоки (A0 и A1), смежные с левой стороной целевого блока кодирования/декодирования, задаются в качестве левой группы (S3101), и определяется то, представляет собой блок, включающий в себя A0, или нет блок с использованием аффинной гарантии (в аффинном режиме) (S3102). Когда A0 находится в аффинном режиме (S3102: "Да"), аффинная модель, используемая посредством A0, получается (S3103), и процесс переходит к обработке блоков, смежных с верхней стороной целевого блока кодирования/декодирования. Когда A0 не находится в аффинном режиме (S3102: "Нет"), цель извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения задается равной A0->A1, и предпринимается попытка получения аффинного режима из блока, включающего в себя A1.
[0129] Затем, блоки (B0, B1 и B2), смежные с верхней стороной целевого блока кодирования/декодирования, задаются в качестве верхней группы (S3104), и определяется то, находится или нет блок, включающий в себя B0, в аффинном режиме (S3105). Когда B0 находится в аффинном режиме (S3105: "Да"), аффинная модель, используемая посредством B0, получается (S3106), и процесс завершается. Когда B0 не находится в аффинном режиме (S3105: "Нет"), цель извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения задается равной B0->B1, и предпринимается попытка получения аффинного режима из блока, включающего в себя B1. Дополнительно, когда B1 не находится в аффинном режиме (S3105: "Нет"), цель извлечения потенциально подходящих вариантов аффинных наследуемых предикторов векторов движения задается равной B1->B2, и предпринимается попытка получения аффинного режима из блока, включающего в себя B2.
[0130] Таким образом, группы разделяются на левый блок и верхний блок, выполняется поиск аффинной модели в порядке от нижнего левого к верхнему левому блокам относительно левого блока, и выполняется поиск аффинной модели в порядке от верхнего правого угла к верхнему левому блокам относительно левого блока, так что можно получать две аффинных модели, которые являются различными в максимально возможной степени, и можно извлекать идентичный потенциально подходящий вариант предиктора аффинного вектора движения, в котором один из предикторов аффинных векторов движения имеет меньший разностный вектор движения.
Извлечение потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения
[0131]
В дальнейшем описывается модуль 362 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения. Модуль 362 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения является аналогичным модулю 462 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения.
[0132] Потенциально подходящий вариант аффинного конструируемого предиктора вектора движения конструирует информацию вектора движения аффинной управляющей точки из информации движения соседних блоков в пространственной области.
[0133] Фиг. 43 является пояснительной схемой, показывающей извлечение потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения.
Потенциально подходящие варианты аффинных конструируемых предикторов векторов движения могут получаться посредством конструирования новой аффинной модели посредством комбинирования векторов движения соседних кодированных/декодированных блоков в пространственной области.
В частности, вектор движения верхней левой аффинной управляющей точки CP0 извлекается из блоков (B2, B3 и A2), смежных с верхней левой стороной целевого блока кодирования/декодирования, вектор движения верхней правой аффинной управляющей точки CP1 извлекается из блоков (B1 и B0), смежных с верхней правой стороной целевого блока кодирования/декодирования, и вектор движения нижней левой аффинной управляющей точки CP2 извлекается из блоков (A1 и A0), смежных с нижней левой стороной целевого блока кодирования/декодирования.
[0134] Фиг. 47 является блок-схемой последовательности операций способа извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения.
Во-первых, верхняя левая управляющая точка CP0, верхняя правая управляющая точка CP1 и нижняя левая аффинная управляющая точка CP2 извлекаются (S3201). Верхняя левая аффинная управляющая точка CP0 вычисляется посредством поиска опорного блока, имеющего опорный кадр, идентичный опорному кадру целевого блока кодирования/декодирования в очередности по приоритету опорных блоков B2, B3 и A2. Верхняя правая аффинная управляющая точка CP1 вычисляется посредством поиска опорного блока, имеющего опорный кадр, идентичный опорному кадру целевого блока кодирования/декодирования в очередности по приоритету опорных блоков B1 и B0. Нижняя левая аффинная управляющая точка CP2 вычисляется посредством поиска опорного блока, имеющего опорный кадр, идентичный опорному кадру целевого блока кодирования/декодирования в очередности по приоритету опорных блоков A1 и A0.
[0135] Когда режим трех аффинных управляющих точек выбирается в качестве аффинного конструируемого предиктора вектора движения (S3202: "Да"), определяется то, извлечены или нет три аффинных управляющих точки (CP0, CP1 и CP2) (S3203). Когда три аффинных управляющих точки (CP0, CP1 и CP2) извлечены (S3203: "Да"), аффинная модель с использованием трех аффинных управляющих точек (CP0, CP1 и CP2) задается в качестве аффинного конструируемого предиктора вектора движения (S3204). Когда режим двух аффинных управляющих точек выбирается без выбора режима трех аффинных управляющих точек (S3202: "Нет"), определяется то, извлечены или нет две аффинных управляющих точки (CP0 и CP1) (S3205). Когда две аффинных управляющих точки (CP0 и CP1) извлечены (S3205: "Да"), аффинная модель с использованием двух аффинных управляющих точек (CP0 и CP1) задается в качестве аффинного конструируемого предиктора вектора движения (S3206).
Извлечение идентичных потенциально подходящих вариантов предикторов аффинных векторов движения
[0136]
В дальнейшем описывается модуль 363 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения. Модуль 363 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения является аналогичным модулю 463 извлечения идентичных потенциально подходящих вариантов предикторов аффинных векторов движения.
[0137] Идентичный потенциально подходящий вариант предиктора аффинного вектора движения может получаться посредством извлечения идентичного вектора движения в аффинных управляющих точках.
[0138] В частности, идентичный потенциально подходящий вариант предиктора аффинного вектора движения может получаться посредством извлечения информацию аффинных управляющих точек и задания всех аффинных управляющих точек идентичными любой из аффинных управляющих точек CP0-CP2, как указано в модуле 362/462 извлечения потенциально подходящих вариантов аффинных конструируемых предикторов векторов движения. Кроме того, идентичный потенциально подходящий вариант предиктора аффинного вектора движения может получаться посредством задания извлекаемого временного вектора движения как находящегося в режиме идентификации предикторов нормальных векторов движения во всех аффинных управляющих точках.
Извлечение режимов объединения на основе субблоков
[0139]
В дальнейшем описывается извлечение режимов объединения на основе субблоков.
[0140] Фиг. 40 является блок-схемой модуля 304 извлечения режимов объединения на основе субблоков в устройстве кодирования настоящей заявки. Модуль 304 извлечения режимов объединения на основе субблоков включает в себя список subblockMergeCandList потенциально подходящих вариантов объединения на основе субблоков. Список subblockMergeCandList потенциально подходящих вариантов объединения на основе субблоков является аналогичным списку mergeCandList потенциально подходящих вариантов объединения в модуле 302 извлечения режимов нормального объединения, за исключением того, что списки потенциально подходящих вариантов отличаются по единицам субблоков.
[0141] Во-первых, модуль 381 извлечения временных потенциально подходящих вариантов объединения на основе субблоков извлекает потенциально подходящий вариант временного объединения на основе субблоков. Ниже описываются подробности извлечения временных потенциально подходящих вариантов объединения на основе субблоков.
[0142] Затем, модуль 382 извлечения аффинных наследуемых потенциально подходящих вариантов объединения извлекает аффинный наследуемый потенциально подходящий вариант объединения. Ниже описываются подробности извлечения аффинных наследуемых потенциально подходящих вариантов объединения.
[0143] Затем, модуль 383 извлечения аффинных конструируемых потенциально подходящих вариантов объединения извлекает аффинный конструируемый потенциально подходящий вариант объединения. Ниже описываются подробности извлечения аффинных конструируемых потенциально подходящих вариантов объединения.
[0144] Затем, модуль 384 извлечения аффинных фиксированных потенциально подходящих вариантов объединения извлекает аффинный фиксированный потенциально подходящий вариант объединения. Ниже описываются подробности извлечения аффинных фиксированных потенциально подходящих вариантов объединения.
[0145] Модуль 386 выбора потенциально подходящих вариантов объединения на основе субблоков выбирает потенциально подходящий вариант объединения на основе субблоков из числа потенциально подходящих вариантов объединения на основе субблоков, извлекаемых посредством модуля 381 извлечения временных потенциально подходящих вариантов объединения на основе субблоков, модуля 382 извлечения аффинных наследуемых потенциально подходящих вариантов объединения, модуля 383 извлечения аффинных конструируемых потенциально подходящих вариантов объединения и модуля 384 извлечения аффинных фиксированных потенциально подходящих вариантов объединения, и предоставляет информацию относительно выбранного потенциально подходящего варианта объединения на основе субблоков в модуль 305 определения режима интер-предсказания.
[0146] Фиг. 41 является блок-схемой модуля 404 извлечения режимов объединения на основе субблоков в устройстве декодирования настоящей заявки. Модуль 404 извлечения режимов объединения на основе субблоков включает в себя список subblockMergeCandList потенциально подходящих вариантов объединения на основе субблоков. Этот список subblockMergeCandList потенциально подходящих вариантов объединения на основе субблоков является идентичным списку subblockMergeCandList потенциально подходящих вариантов объединения на основе субблоков модуля 304 извлечения режимов объединения на основе субблоков.
[0147] Во-первых, модуль 481 извлечения временных потенциально подходящих вариантов объединения на основе субблоков извлекает потенциально подходящий вариант временного объединения на основе субблоков. Процесс модуля 481 извлечения временных потенциально подходящих вариантов объединения на основе субблоков является идентичным процессу модуля 381 извлечения временных потенциально подходящих вариантов объединения на основе субблоков.
[0148] Затем, модуль 482 извлечения аффинных наследуемых потенциально подходящих вариантов объединения извлекает аффинный наследуемый потенциально подходящий вариант объединения. Процесс модуля 482 извлечения аффинных наследуемых потенциально подходящих вариантов объединения является идентичным процессу модуля 382 извлечения аффинных наследуемых потенциально подходящих вариантов объединения.
[0149] Затем, модуль 483 извлечения аффинных конструируемых потенциально подходящих вариантов объединения извлекает аффинный конструируемый потенциально подходящий вариант объединения. Процесс модуля 483 извлечения аффинных конструируемых потенциально подходящих вариантов объединения является идентичным процессу модуля 383 извлечения аффинных конструируемых потенциально подходящих вариантов объединения.
[0150] Затем, модуль 485 извлечения аффинных фиксированных потенциально подходящих вариантов объединения извлекает аффинный фиксированный потенциально подходящий вариант объединения. Процесс модуля 485 извлечения аффинных фиксированных потенциально подходящих вариантов объединения является идентичным процессу модуля 485 извлечения аффинных фиксированных потенциально подходящих вариантов объединения.
[0151] Модуль 486 выбора потенциально подходящих вариантов объединения на основе субблоков выбирает потенциально подходящий вариант объединения на основе субблоков из числа потенциально подходящих вариантов объединения на основе субблоков, извлекаемых посредством модуля 481 извлечения временных потенциально подходящих вариантов объединения на основе субблоков, модуля 482 извлечения аффинных наследуемых потенциально подходящих вариантов объединения, модуля 483 извлечения аффинных конструируемых потенциально подходящих вариантов объединения и модуля 484 извлечения аффинных фиксированных потенциально подходящих вариантов объединения на основе индекса, который передается из устройства кодирования и декодируется, и предоставляет информацию относительно выбранного потенциально подходящего варианта объединения на основе субблоков в модуль 406 предсказания с компенсацией движения.
Извлечение временных потенциально подходящих вариантов объединения на основе субблоков
[0152]
Ниже описывается работа модуля 381 извлечения временных потенциально подходящих вариантов объединения на основе субблоков.
Извлечение аффинных наследуемых потенциально подходящих вариантов объединения
[0153]
В дальнейшем описывается модуль 382 извлечения аффинных наследуемых потенциально подходящих вариантов объединения. Модуль 382 извлечения аффинных наследуемых потенциально подходящих вариантов объединения является аналогичным модулю 482 извлечения аффинных наследуемых потенциально подходящих вариантов объединения.
[0154] Аффинный наследуемый потенциально подходящий вариант объединения наследует аффинную модель аффинных управляющих точек из аффинных моделей соседних блоков в пространственной области. Аффинная модель определяется посредством размеров соседних блоков в пространственной области и информации движения аффинных управляющих точек.
[0155] Фиг. 44 является пояснительной схемой, показывающей извлечение аффинных наследуемых потенциально подходящих вариантов объединения. Аффинный потенциально подходящий вариант режима объединения наследования объединения может извлекаться посредством поиска векторов движения аффинных управляющих точек соседних кодированных/декодированных блоков в пространственной области, аналогично извлечению аффинных наследуемых предикторов векторов движения.
[0156] В частности, выполняется поиск максимум для одного аффинного режима из каждого из блоков (A0 и A1), смежных с левой стороной целевого блока кодирования/декодирования, и блоков (B0, B1 и B2), смежных с верхней стороной целевого блока кодирования/декодирования, и он используется для аффинного режима объединения.
[0157] Фиг. 48 является блок-схемой последовательности операций способа извлечения аффинных наследуемых потенциально подходящих вариантов объединения.
Во-первых, блоки (A0 и A1), смежные с левой стороной целевого блока кодирования/декодирования, задаются в качестве левой группы (S3301), и определяется то, находится или нет блок, включающий в себя A0, в аффинном режиме (S3302). Когда A0 находится в аффинном режиме (S3102: "Да"), аффинная модель, используемая посредством A0, получается (S3303), и процесс переходит к обработке блоков, смежных с верхней стороной целевого блока кодирования/декодирования. Когда A0 не находится в аффинном режиме (S3302: "Нет"), цель извлечения аффинных наследуемых потенциально подходящих вариантов объединения задается равной A0->A1, и предпринимается попытка получения аффинного режима из блока, включающего в себя A1.
[0158] Затем, блоки (B0, B1 и B2), смежные с верхней стороной целевого блока кодирования/декодирования, задаются в качестве верхней группы (S3304), и определяется то, находится или нет блок, включающий в себя B0, в аффинном режиме (S3305). Когда B0 находится в аффинном режиме (S3305: "Да"), аффинная модель, используемая посредством B0, получается (S3306), и процесс завершается. Когда B0 не находится в аффинном режиме (S3305: "Нет"), цель извлечения аффинных наследуемых потенциально подходящих вариантов объединения задается равной B0->B1, и предпринимается попытка получения аффинного режима из блока, включающего в себя B1. Дополнительно, когда B1 не находится в аффинном режиме (S3305: "Нет"), цель извлечения аффинных наследуемых потенциально подходящих вариантов объединения задается равной B1->B2, и предпринимается попытка получения аффинного режима из блока, включающего в себя B2.
Извлечение аффинных конструируемых потенциально подходящих вариантов объединения
[0159]
В дальнейшем описывается модуль 383 извлечения аффинных конструируемых потенциально подходящих вариантов объединения. Модуль 383 извлечения аффинных конструируемых потенциально подходящих вариантов объединения является аналогичным модулю 483 извлечения аффинных конструируемых потенциально подходящих вариантов объединения.
[0160] Фиг. 45 является пояснительной схемой, показывающей извлечение аффинных конструируемых потенциально подходящих вариантов объединения. Аффинный конструируемый потенциально подходящий вариант объединения конструирует аффинную модель аффинных управляющих точек из информации движения соседних блоков в пространственной области и временного блока кодирования.
[0161] В частности, вектор движения верхней левой аффинной управляющей точки CP0 извлекается из блоков (B2, B3 и A2), смежных с верхней левой стороной целевого блока кодирования/декодирования, вектор движения верхней правой аффинной управляющей точки CP1 извлекается из блоков (B1 и B0), смежных с верхней правой стороной целевого блока кодирования/декодирования, вектор движения нижней левой аффинной управляющей точки CP2 извлекается из блоков (A1 и A0), смежных с нижней левой стороной целевого блока кодирования/декодирования, и вектор движения нижней правой аффинной управляющей точки CP3 извлекается из временного блока (T0) кодирования, смежного с нижней правой стороной целевого блока кодирования/определения.
[0162] Фиг. 49 является блок-схемой последовательности операций способа извлечения аффинных конструируемых потенциально подходящих вариантов объединения.
Во-первых, верхняя левая аффинная управляющая точка CP0, верхняя правая аффинная управляющая точка CP1, нижняя левая аффинная управляющая точка CP2 и нижняя правая аффинная управляющая точка CP3 извлекаются (S3401). Верхняя левая аффинная управляющая точка CP0 вычисляется посредством поиска блоков, имеющих информацию движения, в очередности по приоритету блоков B2, B3 и A2. Верхняя правая аффинная управляющая точка CP1 вычисляется посредством поиска блоков, имеющих информацию движения, в очередности по приоритету блоков B1 и B0. Нижняя левая аффинная управляющая точка CP2 вычисляется посредством поиска блоков, имеющих информацию движения, в очередности по приоритету блоков A1 и A0. Нижняя правая аффинная управляющая точка CP3 вычисляется посредством поиска информации движения временных блоков.
[0163] Затем, определяется то, может или нет аффинная модель из трех аффинных управляющих точек конструироваться посредством извлеченной верхней левой аффинной управляющей точки CP0, извлеченной верхней правой аффинной управляющей точки CP1 и извлеченной нижней левой аффинной управляющей точки CP2 (S3402). Когда аффинная модель может конструироваться (S3402: "Да"), аффинная модель из трех аффинных управляющих точек на основе верхней левой аффинной управляющей точки CP0, верхней правой аффинной управляющей точки CP1 и нижней левой аффинной управляющей точки CP2 задается в качестве аффинного потенциально подходящего варианта объединения (S3403).
[0164] Затем, определяется то, может или нет аффинная модель из трех аффинных управляющих точек конструироваться посредством извлеченной верхней левой аффинной управляющей точки CP0, извлеченной верхней правой аффинной управляющей точки CP1 и извлеченной нижней правой аффинной управляющей точки CP3 (S3404). Когда аффинный режим может конструироваться (S3404: "Да"), аффинная модель из трех аффинных управляющих точек на основе верхней левой аффинной управляющей точки CP0, верхней правой аффинной управляющей точки CP1 и нижней правой аффинной управляющей точки CP3 задается в качестве аффинного потенциально подходящего варианта объединения (S3405).
[0165] Затем, определяется то, может или нет аффинная модель из трех аффинных управляющих точек конструироваться посредством извлеченной верхней левой аффинной управляющей точки CP0, извлеченной нижней левой аффинной управляющей точки CP2 и извлеченной нижней правой аффинной управляющей точки CP3 (S3406). Когда аффинная модель может конструироваться (S3406: "Да"), аффинная модель из трех аффинных управляющих точек на основе верхней левой аффинной управляющей точки CP0, нижней левой аффинной управляющей точки CP2 и нижней правой аффинной управляющей точки CP3 задается в качестве аффинного потенциально подходящего варианта объединения (S3407).
[0166] Затем, определяется то, может или нет аффинная модель из двух аффинных управляющих точек конструироваться посредством извлеченной верхней левой аффинной управляющей точки CP0 и извлеченной верхней правой аффинной управляющей точки CP1 (S3408). Когда аффинная модель может конструироваться (S3408: "Да"), аффинная модель из двух аффинных управляющих точек на основе верхней левой аффинной управляющей точки CP0 и верхней правой аффинной управляющей точки CP1 задается в качестве аффинного потенциально подходящего варианта объединения (S3409).
[0167] Затем, определяется то, может или нет аффинная модель из двух аффинных управляющих точек конструироваться посредством извлеченной верхней левой аффинной управляющей точки CP0 и извлеченной нижней левой аффинной управляющей точки CP2 (S3410). Когда аффинная модель может конструироваться (S3410: "Да"), аффинная модель из двух аффинных управляющих точек на основе верхней левой аффинной управляющей точки CP0 и нижней левой аффинной управляющей точки CP2 задается в качестве аффинного потенциально подходящего варианта объединения (S3411).
[0168] Здесь, определяется то, должна или нет аффинная модель конструироваться при следующих условиях.
1. Опорные кадры всех аффинных управляющих точек являются идентичными. (Аффинное преобразование является возможным),
2. Другой вектор движения предоставляется, по меньшей мере, в одной аффинной управляющей точке. (Выражение посредством параллельного сдвига является затруднительным),
[0169] Как описано выше, в первом варианте осуществления, верхняя левая аффинная управляющая точка CP0 включается относительно всех аффинных конструируемых потенциально подходящих вариантов объединения. В верхней левой аффинной управляющей точке CP0, вероятность того, что имеется кодированный/декодированный блок, является наибольшей, т.е. вероятность того, что имеется информация движения, является наибольшей, когда кадр обрабатывается в порядке растрового сканирования слева направо и сверху вниз.
[0170] Посредством извлечения аффинного конструируемого потенциально подходящего варианта объединения с использованием верхней левой аффинной управляющей точки CP0, уменьшается объем обработки для определения того, являются или нет опорные кадры идентичными, когда аффинные управляющие точки комбинируются. Кроме того, при извлечении аффинных управляющих точек в форме верхней правой аффинной управляющей точки CP1, нижней левой аффинной управляющей точки CP2 и нижней правой аффинной управляющей точки CP3 (S3401), можно предпочтительно выполнять поиск опорного кадра, который является идентичным опорному кадру верхней левой аффинной управляющей точки CP0. В этом случае, аффинные конструируемые потенциально подходящие варианты объединения, имеющие идентичный опорный кадр, могут извлекаться, допустимые аффинные конструируемые потенциально подходящие варианты объединения с идентичным опорным кадром могут извлекаться, и аффинные потенциально подходящие варианты объединения с высокой эффективностью кодирования могут извлекаться.
[0171] Здесь, подробнее описывается определение опорного кадра на основе верхней левой аффинной управляющей точки CP0.
[0172] Фиг. 62 является схемой, показывающей сравнительные цели информации движения, когда аффинный конструируемый потенциально подходящий вариант объединения извлекается посредством комбинирования извлеченных аффинных управляющих точек при извлечении аффинных конструируемых потенциально подходящих вариантов объединения.
[0173] Фиг. 62(A) является схемой для случая, в котором аффинная модель из трех аффинных управляющих точек конструируется посредством верхней левой аффинной управляющей точки CP0, верхней правой аффинной управляющей точки CP1 и нижней левой аффинной управляющей точки CP2. В этом случае, информация движения верхней левой аффинной управляющей точки CP0 и верхней правой аффинной управляющей точки CP1 сравнивается, и сравнение проводится относительно того, являются или нет опорные кадры верхней левой аффинной управляющей точки CP0 и верхней правой аффинной управляющей точки CP1 идентичными, и относительно того, отличаются или нет векторы движения верхней левой аффинной управляющей точки CP0 и верхней правой аффинной управляющей точки CP1. Аналогично, информация движения верхней левой аффинной управляющей точки CP0 и нижней левой аффинной управляющей точки CP2 сравнивается.
[0174] Фиг. 62(B) является схемой для случая, в котором аффинная модель из трех аффинных управляющих точек конструируется посредством верхней левой аффинной управляющей точки CP0, нижней левой аффинной управляющей точки CP2 и нижней правой аффинной управляющей точки CP3. В этом случае, информация движения верхней левой аффинной управляющей точки CP0 и нижней левой аффинной управляющей точки CP2 сравнивается, и информация движения верхней левой аффинной управляющей точки CP0 и нижней правой аффинной управляющей точки CP3 сравнивается.
[0175] Фиг. 62(C) является схемой для случая, в котором аффинная модель из трех аффинных управляющих точек конструируется посредством верхней левой аффинной управляющей точки CP0, верхней правой аффинной управляющей точки CP1 и нижней правой аффинной управляющей точки CP3. В этом случае, информация движения верхней левой аффинной управляющей точки CP0 и верхней правой аффинной управляющей точки CP1 сравнивается, и информация движения верхней левой аффинной управляющей точки CP0 и нижней правой аффинной управляющей точки CP3 сравнивается.
[0176] Фиг. 62(D) является схемой для случая, в котором аффинная модель из двух аффинных управляющих точек конструируется посредством верхней левой аффинной управляющей точки CP0 и верхней правой аффинной управляющей точки CP1. В этом случае, информация движения верхней левой аффинной управляющей точки CP0 и верхней правой аффинной управляющей точки CP1 сравнивается.
[0177] Фиг. 62(E) является схемой для случая, в котором аффинная модель из двух аффинных управляющих точек конструируется посредством верхней левой аффинной управляющей точки CP0 и нижней левой аффинной управляющей точки CP2. В этом случае, информация движения верхней левой аффинной управляющей точки CP0 и нижней левой аффинной управляющей точки CP2 сравнивается.
[0178] Таким образом, во всех комбинациях извлечения аффинных конструируемых потенциально подходящих вариантов объединения, информация движения верхней левой аффинной управляющей точки CP0 и каждой аффинной управляющей точки CPx (x=1, 2, 3) сравнивается, и определяется то, являются или нет опорные кадры идентичными, и то, является или нет аффинное преобразование возможным.
Извлечение аффинных фиксированных потенциально подходящих вариантов объединения
[0179]
В дальнейшем описывается модуль 385 извлечения аффинных фиксированных потенциально подходящих вариантов объединения. Модуль 385 извлечения аффинных фиксированных потенциально подходящих вариантов объединения является аналогичным модулю 485 извлечения аффинных фиксированных потенциально подходящих вариантов объединения. В аффинном фиксированном потенциально подходящем варианте объединения, информация движения аффинной управляющей точки является фиксированной за счет фиксированной информации движения. В частности, вектор движения каждой аффинной управляющей точки задается фиксированно равным (0, 0).
Временной предиктор вектора движения
[0180]
До описания временного предиктора вектора движения, в дальнейшем описывается временная взаимосвязь контекстов между кадрами. Фиг. 55(a) показывает взаимосвязь, в которой блок кодирования цели кодирования и целевой кадр кодирования представляют собой кодированные кадры, отличающиеся во временной области. В целевом кадре кодирования, конкретный кодированный кадр, на который ссылаются для кодирования, задается как ColPic. ColPic идентифицируется посредством синтаксиса.
[0181] Кроме того, фиг. 55(b) показывает кодированный блок кодирования, расположенный в позиции, идентичной позиции блока кодирования цели кодирования, и в его окрестности в ColPic. Блоки T0 и T1 кодирования представляют собой блоки кодирования в практически идентичной позиции в кадре, отличающемся от целевого кадра кодирования во временной области.
[0182] Хотя описание временного контекста кадра, описанного выше, приводится для кодирования, это справедливо для декодирования. Таким образом, во время декодирования, кодирование в вышеприведенном описании заменяется декодированием, и приводится аналогичное описание.
[0183] В дальнейшем описывается работа модуля 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения в модуле 301 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 17 со ссылкой на фиг. 56.
[0184] Во-первых, ColPic извлекается (этап S4201). В дальнейшем описывается извлечение ColPic со ссылкой на фиг. 57.
[0185] Когда тип slice_type среза представляет собой B-срез, и флаг collocated_from_l0_flag равен 0 (этап S4211: "Да" и этап S4212: "Да"), кадр, опорный индекс которого равен 0 в RefPicList1[0], т.е. опорный список L1, становится кадром colPic в другое время (этап S4213). В противном случае, т.е. когда тип slice_type среза представляет собой B-срез, и вышеописанный флаг collocated_from_l0_flag равен 1 (этап S4211: "Да" и этап S4212: "Нет"), либо когда тип slice_type среза представляет собой P-срез (этап S4211: "Нет" и этап S4214: "Да"), кадр, опорный индекс которого равен 0 в RefPicList0[0], т.е. опорный список L0, становится кадром colPic в другое время (этап S4215). Когда slice_type не представляет собой P-срез (этап S4214: "Нет"), процесс завершается.
[0186] Снова обратимся к фиг. 56. После того, как ColPic извлекается, блок colCb кодирования извлекается, и его информация кодирования получается (этап S4202). В дальнейшем описывается этот процесс со ссылкой на фиг. 58.
[0187] Во-первых, блок кодирования, расположенный в нижнем правом углу (снаружи), имеющий позицию, идентичную позиции целевого блока кодирования в кадре colPic в другое время, задается в качестве блока colCb кодирования в другое время (этап S4221). Этот блок кодирования соответствует блоку T0 кодирования по фиг. 49.
[0188] Затем, информация кодирования блока colCb кодирования в другое время получается (этап S4222). Когда режим PredMode предсказания блока colCb кодирования в другое время не доступен, или режим PredMode предсказания блока colCb кодирования в другое время представляет собой интра-предсказание (MODE_INTRA) (этап S4223: "Нет" и этап S4224: "Да"), блок кодирования, расположенный в нижнем правом углу центра, имеющий позицию, идентичную позиции целевого блока кодирования в кадре colPic в другое время, задается в качестве блока colCb кодирования в другое время (этап S4225). Этот блок кодирования соответствует блоку T1 кодирования по фиг. 55.
[0189] Снова обратимся к фиг. 56. Затем, информация интер-предсказания извлекается для каждого опорного списка (S4203 и S4204). Здесь, вектор mvLXCol движения для каждого опорного списка и флаг availableFlagLXCol, указывающий то, является или нет информация кодирования допустимой, извлекаются относительно блока colCb кодирования. LX указывает опорный список, LX становится L0 при извлечении опорного списка 0, и LX становится L1 при извлечении опорного списка 1. В дальнейшем описывается извлечение информации интер-предсказания со ссылкой на фиг. 59.
[0190] Когда блок colCb кодирования в другое время не доступен (S4231S4231: "Нет"), либо когда режим PredMode предсказания представляет собой интра-предсказание (MODE_INTRA) (S4232: "Нет"), как флаг availableFlagLXCol, так и флаг predFlagLXCol задаются равными 0 (этап S4233). Вектор mvLXCol движения задается равным (0, 0) (S4234), и процесс завершается.
[0191] Когда блок colCb кодирования доступен (S4231: "Да"), и режим PredMode предсказания не представляет собой интра-предсказание (MODE_INTRA) (S4232: "Да"), mvCol, refIdxCol и availableFlagCol вычисляются в следующей процедуре.
[0192] Когда флаг PredFlagL0[xPCol][yPCol], указывающий то, используется или нет L0-предсказание блока colCb кодирования, равен 0 (S4235: "Да"), режим предсказания блока colCb кодирования представляет собой Pred_L1, так что вектор mvCol движения задается с возможностью иметь значение, идентичное значению MvL1[xPCol][yPCol], который представляет собой вектор движения L1 блока colCb кодирования (S4236), опорный индекс refIdxCol задается с возможностью иметь значение, идентичное значению опорного индекса RefIdxL1[xPCol][yPCol] L1 (S4237), и список ListCol задается равным L1 (S4238). Здесь, xPCol и yPCol представляют собой индексы, указывающие позицию верхнего левого дискретного отсчета блока colCb кодирования в кадре colPic в другое время.
[0193] С другой стороны, когда флаг predFlagL0[xPCol][yPCol] L0-предсказания блока colCb кодирования не равен 0 (S4235: "Нет"), определяется то, равен или нет флаг predFlagL1[xPCol][yPCol] L1-предсказания блока colCb кодирования 0. Когда флаг predFlagL1[xPCol][yPCol] L1-предсказания блока colCb кодирования равен 0 (S4239: "Да"), вектор mvCol движения задается с возможностью иметь значение, идентичное значению MvL0[xPCol][yPCol], который представляет собой вектор движения L0 блока colCb кодирования (S4240), опорный индекс refIdxCol задается с возможностью иметь значение, идентичное значению опорного индекса RefIdxL0[xPCol][yPCol] L0 (S4241), и список ListCol задается равным L0 (S4242).
[0194] Когда флаг predFlagL0[xPCol][yPCol] L0-предсказания блока colCb кодирования и флаг predFlagL1[xPCol][yPCol] L1-предсказания блока colCb кодирования являются ненулевыми (S4235: "Нет" и S4239: "Нет"), один из двух векторов движения L0 и L1 выбирается, поскольку режим интер-предсказания блока colCb кодирования представляет собой бипредсказание (Pred_BI) (S4243). Фиг. 60 является блок-схемой последовательности операций способа, показывающей процедуру обработки для извлечения информации интер-предсказания блока кодирования, когда режим интер-предсказания блока colCb кодирования представляет собой бипредсказание (Pred_BI).
[0195] Во-первых, определяется то, меньше или нет POC всех кадров, зарегистрированных во всех опорных списках, POC текущего целевого кадра кодирования (S4251). Когда POC всех кадров, зарегистрированных в L0 и L1, которые представляют собой опорные списки блока colCb кодирования, меньше POC текущего целевого кадра кодирования (S4251: "Да"), информация интер-предсказания L0 блока colCb кодирования выбирается, если LX представляет собой L0, т.е. потенциально подходящий вариант предиктора вектора для вектора движения L0 блока кодирования цели кодирования извлекается (S4252: "Да"), и информация интер-предсказания L1 блока colCb кодирования выбирается, если LX представляет собой L1, т.е. потенциально подходящий вариант предиктора вектора для вектора движения L1 блока кодирования цели кодирования извлекается (S4252: "Нет"). С другой стороны, когда, по меньшей мере, один из POC кадров, зарегистрированных во всех опорных списках L0 и L1 блока colCb кодирования, превышает POC текущего целевого кадра кодирования (S4251: "Нет"), информация интер-предсказания L0 блока colCb кодирования выбирается, если флаг colllocated_from_l0_flag равен 0 (S4253: "Да"), и информация интер-предсказания L1 блока colCb кодирования выбирается, если флаг collocated_from_l0_flag равен 1 (S4253: "Нет").
[0196] Когда информация интер-предсказания L0 блока colCb кодирования выбирается (S4252: "Да" и S4253: "Да"), вектор mvCol движения задается с возможностью иметь значение, идентичное значению MvL0[xPCol][yPCol] (S4254), опорный индекс refIdxCol задается с возможностью иметь значение, идентичное значению RefIdxL0[xPCol][yPCol] (S4255), и список ListCol задается равным L0 (S4256).
[0197] Когда информация интер-предсказания L1 блока colCb кодирования выбирается (S4252: "Нет" и S4253: "Нет"), вектор mvCol движения задается с возможностью иметь значение, идентичное значению MvL1[xPCol][yPCol] (S4257), опорный индекс refIdxCol задается с возможностью иметь значение, идентичное значению RefIdxL1[xPCol][yPCol] (S4258), и список ListCol задается равным L1 (S4259).
[0198] Возвращаясь к фиг. 59, когда информация интер-предсказания может получаться из блока colCb кодирования, как флаг availableFlagLXCol, так и флаг predFlagLXCol задаются равными 1 (S4244).
[0199] Затем, вектор mvCol движения масштабируется и задается равным вектору mvLXCol движения (S4245S4245). В дальнейшем описывается процедура обработки операции масштабирования этого вектора mvLXCol движения со ссылкой на фиг. 61.
[0200] Межкадровое расстояние td вычисляется посредством вычитания POC опорного кадра, соответствующего опорному индексу refIdxCol, на который ссылаются в списке ListCol блока colCb кодирования, из POC кадра colPic в другое время (S4261). Кроме того, межкадровое расстояние td становится положительным значением, когда POC опорного кадра, на который ссылаются в списке ListCol блока colCb кодирования, составляет раньше POC кадра colPic в другое время в порядке отображения, и межкадровое расстояние td является отрицательным значением, когда POC опорного кадра, на который ссылаются в списке ListCol блока colCb кодирования, составляет позже POC кадра colPic в другое время в порядке отображения.
td=POC кадра colPic в другое время - POC опорного кадра, на который ссылаются в списке ListCol блока colCb кодирования
[0201] Межкадровое расстояние tb вычисляется посредством вычитания POC опорного кадра, на который ссылаются в списке LX текущего целевого кадра кодирования, из POC текущего целевого кадра кодирования (S4262). Кроме того, межкадровое расстояние tb становится положительным значением, когда опорный кадр, на который ссылаются в списке LX текущего целевого кадра кодирования, находится раньше текущего целевого кадра кодирования в порядке отображения, и межкадровое расстояние tb становится отрицательным значением, когда опорный кадр, на который ссылаются в списке LX текущего целевого кадра кодирования, находится позже текущего целевого кадра кодирования в порядке отображения.
[0202] tb=POC текущего целевого кадра кодирования/декодирования - POC опорного кадра, соответствующего опорному индексу LX временных потенциально подходящих вариантов объединения
[0203] Затем, когда межкадровые расстояния td и tb сравниваются (S4263). Когда межкадровые расстояния td и tb равны (S4263: "Да"), вектор mvLXCol движения вычисляется посредством следующего уравнения (S4264). Настоящий процесс на основе операции масштабирования завершается.
[0204] mvLXCol=mvCol
[0205] С другой стороны, когда межкадровые расстояния td и tb между кадрами не равны (S4263: "Нет"), переменная tx вычисляется согласно следующему уравнению (S4265).
[0206] tx=(16384+Abs(td)>>1)/td
[0207] Затем, коэффициент distScaleFactor масштабирования вычисляется согласно следующему уравнению (S4266).
distScaleFactor=Clip3(-4096, 4095, (tb*tx+32)>>6)
Здесь, Clip3 (x, y, z) представляет собой функцию, которая ограничивает минимальное значение x и ограничивает максимальное значение y относительно значения z. Затем, вектор mvLXCol движения вычисляется согласно следующему уравнению (S4267). Настоящий процесс на основе операции масштабирования завершается.
[0208] mvLXCol=Clip3(-32768, 32767, Sign(distScaleFactor*mvLXCol)*((Abs(distScaleFactor*mvLXCol)+127)>>8))
[0209] Здесь, Sign(x) представляет собой функцию, которая возвращает знак значения x, и Abs(x) представляет собой функцию, которая возвращает абсолютное значение значения x.
[0210] Снова обратимся к фиг. 56. Вектор mvL0Col движения L0 добавляется в качестве потенциально подходящего варианта в список mvpListLXN потенциально подходящих вариантов предикторов векторов движения в вышеописанном модуле 301 извлечения режимов идентификации предикторов нормальных векторов движения (S4205). Тем не менее, это добавление выполняется только тогда, когда флаг, указывающий то, является или нет блок colCb кодирования опорного списка 0 допустимым, равен availableFlagL0Col=1. Кроме того, вектор mvL1Col движения L1 добавляется в качестве потенциально подходящего варианта в список mvpListLXN потенциально подходящих вариантов предикторов векторов движения в вышеописанном модуле 301 извлечения режимов идентификации предикторов нормальных векторов движения (S4205). Тем не менее, это добавление выполняется только тогда, когда флаг, указывающий то, является или нет блок colCb кодирования в опорном списке 1 допустимым, равен availableFlagL1Col=1. Соответственно, процесс модуля 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения завершается.
Хотя вышеприведенное описание модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения приводится для кодирования, это справедливо для декодирования. Таким образом, работа модуля 422 извлечения потенциально подходящих вариантов временных предикторов векторов движения в модуле 401 извлечения режимов идентификации предикторов нормальных векторов движения по фиг. 23 может аналогично описываться посредством замены кодирования в вышеприведенном описании на декодирование.
Временное объединение
[0211]
В дальнейшем описывается работа модуля 342 извлечения временных потенциально подходящих вариантов объединения в модуле 302 извлечения режимов нормального объединения по фиг. 18 со ссылкой на фиг. 62.
[0212] Во-первых, ColPic извлекается (этап S4301). Затем, блок colCb кодирования извлекается, и его информация кодирования получается (этап S4302). Дополнительно, информация интер-предсказания извлекается для каждого опорного списка (S4303 и S4304). Поскольку вышеуказанная обработка является идентичной обработке S4201-S4204 в модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, ее описание опускается.
[0213] Затем, флаг availableFlagCol, указывающий то, является или нет блок colCb кодирования допустимым, вычисляется (S4305). Когда флаг availableFlagL0Col или флаг availableFlagL1Col равен 1, availableFlagCol становится 1. В противном случае, availableFlagCol становится 0.
[0214] Вектор mvL0Col движения L0 и вектор mvL1Col движения L1 добавляются в качестве потенциально подходящих вариантов в список mergeCandList потенциально подходящих вариантов объединения в вышеописанном модуле 302 извлечения режимов нормального объединения (S4306). Тем не менее, это добавление выполняется только тогда, когда флаг, указывающий то, является или нет блок colCb кодирования допустимым, равен availableFlagCol=1. Соответственно, процесс модуля 342 извлечения временных потенциально подходящих вариантов объединения завершается.
[0215] Хотя вышеприведенное описание модуля 342 извлечения временных потенциально подходящих вариантов объединения приводится для кодирования, это справедливо для декодирования. Таким образом, работа модуля 442 извлечения временных потенциально подходящих вариантов объединения в модуле 402 извлечения режимов нормального объединения по фиг. 24 может аналогично описываться посредством замены кодирования в вышеприведенном описании на декодирование.
Обновление списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории
[0216]
Далее подробно описываются способ инициализации и способ обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленного в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования. Фиг. 26 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки для инициализации/обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0217] В настоящем варианте осуществления, предполагается, что список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется в запоминающем устройстве 111 для хранения информации кодирования и в запоминающем устройстве 205 для хранения информации кодирования. Модуль обновления списков потенциально подходящих вариантов предикторов векторов движения на основе предыстории может устанавливаться в модуле 102 интер-предсказания и модуле 203 интер-предсказания, чтобы обновлять список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0218] Список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории первоначально задается в начале среза, список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется, когда режим идентификации предикторов нормальных векторов движения или режим нормального объединения выбран посредством модуля 105 определения способа предсказания на стороне кодирования, и список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории обновляется, когда информация предсказания, декодированная посредством модуля 201 декодирования битовых строк, задается относительно режима идентификации предикторов нормальных векторов движения или режима нормального объединения на стороне декодирования.
[0219] Информация интер-предсказания, используемая, когда интер-предсказание выполняется в режиме идентификации предикторов нормальных векторов движения или режиме нормального объединения, регистрируется в качестве потенциально подходящего варианта hMvpCand информации интер-предсказания в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Потенциально подходящий вариант hMvpCand информации интер-предсказания включает в себя опорный индекс refIdxL0 L0, опорный индекс refIdxL1 L1, флаг predFlagL0 L0-предсказания, указывающий то, выполняется или нет L0-предсказание, флаг predFlagL1 L1-предсказания, указывающий то, выполняется или нет L1-предсказание, вектор mvL0 движения L0 и вектор mvL1 движения L1.
[0220] Когда имеется информация интер-предсказания, имеющая значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания, из числа элементов (т.е. информации интер-предсказания), зарегистрированных в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленном в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования, элемент удаляется из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории. С другой стороны, когда отсутствует информация интер-предсказания, имеющая значение, идентичное значению потенциально подходящего варианта hMvpCand информации интер-предсказания, элемент в начале списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории удаляется, и потенциально подходящий вариант hMvpCand информации интер-предсказания добавляется в конец списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0221] Число элементов списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, предоставленного в запоминающем устройстве 111 для хранения информации кодирования на стороне кодирования и в запоминающем устройстве 205 для хранения информации кодирования на стороне декодирования согласно настоящему изобретению, предположительно составляет шесть.
[0222] Во-первых, список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории инициализируется в единицах срезов (этап S2101 по фиг. 26). Все элементы списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории являются пустыми в начале среза, и значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории (текущего числа потенциально подходящих вариантов), зарегистрированных в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, задается равным 0.
[0223] Кроме того, инициализация списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории выполняется в единицах срезов (первого блока кодирования среза), но может выполняться в единицах кадров, плиток или строк древовидного блока.
[0224] Затем, следующий процесс обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории итеративно выполняется для каждого блока кодирования в срезе (этапы S2102-S2107 по фиг. 26).
[0225] Во-первых, начальная настройка выполняется для каждого блока кодирования. Флаг identicalCandExist, указывающий то, имеется или нет идентичный потенциально подходящий вариант, задается равным значению "ложь", и индекс removeIdx цели удаления, указывающий потенциально подходящий вариант цели удаления, задается равным 0 (этап S2103 по фиг. 26).
[0226] Определяется то, имеется или нет потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации (этап S2104 по фиг. 26). Когда модуль 105 определения способа предсказания на стороне кодирования определяет то, что режим представляет собой режим идентификации предикторов нормальных векторов движения или режим нормального объединения, либо когда модуль 201 декодирования битовых строк на стороне декодирования декодирует режим в качестве режима идентификации предикторов нормальных векторов движения или режима нормального объединения, его информация интер-предсказания задается в качестве потенциально подходящего варианта hMvpCand информации интер-предсказания цели регистрации. Когда модуль 105 определения способа предсказания на стороне кодирования определяет то, что режим представляет собой режим интра-предсказания, режим идентификации предикторов векторов движения на основе субблоков или режим объединения на основе субблоков, либо когда модуль 201 декодирования битовых строк на стороне декодирования декодирует режим в качестве режима интра-предсказания, режима идентификации предикторов векторов движения на основе субблоков или режима объединения на основе субблоков, процесс обновления списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории не выполняется, и потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации не существует. Когда отсутствует потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации, этапы S2105-S2106 пропускаются (этап S2104 по фиг. 26: "Нет"). Когда имеется потенциально подходящий вариант hMvpCand информации интер-предсказания цели регистрации, обработка с этапа S2105 выполняется (этап S2104 по фиг. 26: "Да").
[0227] Затем, определяется то, имеется или нет элемент (информация интер-предсказания), имеющий значение, идентичное значению потенциально подходящего варианта 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 выполняется.
[0228] Со ссылкой на блок-схему последовательности операций способа по фиг. 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 потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается.
[0229] Фиг. 31 является пояснительной схемой, показывающей пример процесса обновления списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории. Когда новый элемент добавляется в список HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, в котором зарегистрированы шесть элементов (информация интер-предсказания), элементы сравниваются с новой информацией интер-предсказания в порядке от переднего элемента списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31A). Если новый элемент имеет значение, идентичное значению третьего элемента HMVP2 с начала списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, элемент HMVP2 удаляется из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, и последующие элементы HMVP3-HMVP5 сдвигаются вперед (копируются) по одному, и новый элемент добавляется в конец списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31B), чтобы завершать обновление списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории (фиг. 31C).
Процесс извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории
[0230]
Далее подробно описывается способ извлечения потенциально подходящего варианта предиктора вектора движения на основе предыстории из списка HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории, который представляет собой процедуру обработки этапа S304 по фиг. 20, которая представляет собой процесс, общий для модуля 323 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения на стороне кодирования и модуля 423 извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения на стороне декодирования. Фиг. 29 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории.
[0231] Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения превышает или равно максимальному числу элементов в списке mvpListLX потенциально подходящих вариантов предикторов векторов движения (здесь, 2), или значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории равно 0 ("Нет" на этапе S2201 по фиг. 29), обработка этапов S2202-S2209 по фиг. 29 опускается, и процедура обработки извлечения потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается. Когда текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения меньше 2, что представляет собой максимальное число элементов списка mvpListLX потенциально подходящих вариантов предикторов векторов движения, и значение числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории превышает 0 ("Да" на этапе S2201 по фиг. 29), обработка этапов S2202-S2209 по фиг. 29 выполняется.
[0232] Затем, обработка этапов 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 выполняется.
[0233] Затем, обработка этапа 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 выполняется.
[0234] Затем, в случае элемента, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Да" на этапе S2206 по фиг. 29), вектор движения LY потенциально подходящего варианта HmvpCandList[NumHmvpCand-i] предиктора вектора движения на основе предыстории добавляется в numCurrMvpCand-ый элемент mvpListLX[numCurrMvpCand] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения (этап S2207 по фиг. 29), и текущее число numCurrMvpCand потенциально подходящих вариантов предикторов векторов движения постепенно увеличивается на единицу. Когда отсутствует элемент, который имеет опорный индекс, идентичный опорному индексу refIdxLX вектора движения цели кодирования/декодирования, и который отличается от любого элемента списка mvpListLX предикторов векторов движения в списке HmvpCandList потенциально подходящих вариантов предикторов векторов движения на основе предыстории ("Нет" на этапе S2207 по фиг. 29), дополнительная обработка этапа S2207 пропускается.
[0235] Вышеуказанная обработка этапов S2205-S2207 по фиг. 29 выполняется для L0 и L1 (этапы S2204-S2208 по фиг. 29). Когда индекс i постепенно увеличивается на 1, и индекс i меньше или равен меньшему значению из 4 и числа NumHmvpCand потенциально подходящих вариантов предикторов векторов движения на основе предыстории, обработка с этапа S2203 выполняется снова (этапы S2202-S2209 по фиг. 29).
Процесс извлечения потенциально подходящих вариантов объединения на основе предыстории
[0236]
Далее подробно описывается способ извлечения потенциально подходящих вариантов объединения на основе предыстории из списка HmvpCandList потенциально подходящих вариантов объединения на основе предыстории, который представляет собой процедуру обработки этапа S404 по фиг. 21, которая представляет собой процесс, общий для модуля 345 извлечения потенциально подходящих вариантов объединения на основе предыстории модуля 302 извлечения режимов нормального объединения на стороне кодирования и модуля 445 извлечения потенциально подходящих вариантов объединения на основе предыстории модуля 402 извлечения режимов нормального объединения на стороне декодирования. Фиг. 30 является пояснительной блок-схемой последовательности операций способа, показывающей процедуру обработки извлечения потенциально подходящих вариантов объединения на основе предыстории.
[0237] Во-первых, процесс инициализации выполняется (этап S2301 по фиг. 30). Каждый (numCurrMergeCand-1)-ый элемент от 0 для isPruned[i] задается равным значению "ложь", и переменная numOrigMergeCand задается равным числу numCurrMergeCand элементов, зарегистрированных в текущем списке потенциально подходящих вариантов объединения.
[0238] Затем, начальное значение индекса 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).
[0239] Потенциально подходящие варианты объединения имеют идентичное значение, когда значения всех компонентов (режима интер-предсказания, опорного индекса и вектора движения) потенциально подходящих вариантов объединения являются идентичными. Когда потенциально подходящие варианты объединения имеют идентичное значение, и 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] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории не существует в mergeCandList, (NumHmvpCand-hMvpIdx)-ый элемент HmvpCandList[NumHmvpCand-hMvpIdx] при подсчете с 0-ого элемента списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории добавляется в numCurrMergeCand-ый элемент mergeCandList[numCurrMergeCand] списка потенциально подходящих вариантов объединения, и numCurrMergeCand постепенно увеличивается на 1 (этап S2310 по фиг. 30). Индекс hMvpIdx постепенно увеличивается на 1 (этап S2302 по фиг. 30), и процесс итеративного выполнения этапов S2302-S2311 по фиг. 30 выполняется.
Когда проверка всех элементов списка потенциально подходящих вариантов предикторов векторов движения на основе предыстории завершается, либо когда потенциально подходящие варианты объединения добавляются во все элементы списка потенциально подходящих вариантов объединения, текущий процесс извлечения потенциально подходящих вариантов объединения на основе предыстории завершается.
Извлечение временных потенциально подходящих вариантов объединения на основе субблоков
[0240]
В дальнейшем описывается работа модуля 381 извлечения временных потенциально подходящих вариантов объединения на основе субблоков в модуле 304 извлечения режимов объединения на основе субблоков по фиг. 16 со ссылкой на фиг. 50.
[0241] Во-первых, определяется то, меньше или нет блок кодирования 8×8 дискретных отсчетов (S4002).
Когда блок кодирования меньше 8×8 дискретных отсчетов (S4002: "Да"), флаг, указывающий присутствие потенциально подходящего варианта временного объединения на основе субблоков, задается равным availableFlagSbCol=0 (S4003). Процесс модуля извлечения временных потенциально подходящих вариантов объединения на основе субблоков завершается. Здесь, когда временное предсказание векторов движения запрещается посредством синтаксиса, или когда временное объединение на основе субблоков запрещается, выполняется обработка, которая является идентичной обработке, когда блок кодирования меньше 8×8 дискретных отсчетов (S4002: "Да").
[0242] С другой стороны, когда блок кодирования имеет 8×8 дискретных отсчетов или более (S4002: "Нет"), информация движения соседних элементов блока кодирования в кадре кодирования извлекается (S4004).
[0243] В дальнейшем описывается процесс извлечения информации движения соседних элементов блока кодирования со ссылкой на фиг. 51. Процесс извлечения информации движения соседних элементов является аналогичным вышеописанному процессу модуля 321 извлечения потенциально подходящих вариантов пространственных предикторов векторов движения. Здесь, порядок, в котором выполняется поиск соседних блоков, представляет собой A0, B0, B1, и поиск A1 и B2 не выполняется. Во-первых, информация кодирования получается с соседним блоком n=A0 (S4052). Информация кодирования указывает флаг availableFlagN, указывающий то, доступен или нет соседний блок, опорный индекс refIdxLXN для каждого опорного списка и вектор mvLXN движения.
[0244] Затем, определяется, является соседний блок n допустимым или недопустимым (S4054). Если флаг, указывающий то, доступен или нет соседний блок, равен availableFlagN=1, соседний блок n является допустимым. В противном случае, соседний блок n является недопустимым.
Если соседний блок n является допустимым (S4054: "Да"), опорный индекс refIdxLXN задается равным опорному индексу refIdxLXn соседнего блока n (S4056). Кроме того, вектор mvLXN движения задается в качестве вектора движения mvLXn соседнего блока n (S4056). Процесс извлечения информации движения соседних элементов блоков завершается.
[0245] С другой стороны, если соседний блок n является недопустимым (S4106: "Нет"), информация кодирования получается с соседним блоком n=B0 (S4104). В дальнейшем в этом документе, аналогичный процесс выполняется в качестве циклического процесса в порядке B1 и A1. Процесс извлечения информации движения соседних элементов выполняется в качестве циклического процесса до тех пор, пока соседний блок не становится допустимым, и процесс извлечения информации движения соседних элементов блока завершается, если все соседние блоки A0, B0, B1 и A1 являются недопустимыми.
[0246] Снова обратимся к фиг. 50. После того, как информация движения соседних элементов извлекается (S4004), временной вектор движения извлекается (S4006).
В дальнейшем описывается процесс извлечения временного вектора движения со ссылкой на фиг. 52. Во-первых, временной вектор движения инициализируется в качестве tempMv=(0, 0) (S4062).
[0247] Затем, определяется то, является информация движения соседних элементов допустимой или недопустимой (S4064). Если флаг, указывающий то, доступен или нет соседний блок, равен availableFlagN=1, информация движения соседних элементов является допустимой. В противном случае, информация движения соседних элементов является недопустимой. Когда информация движения соседних элементов является недопустимой (S4064: "Нет"), процесс извлечения временного вектора движения завершается.
[0248] С другой стороны, когда информация движения соседних элементов является допустимой (S4064: "Да"), определяется то, равен или нет флаг predFlagL1N, указывающий то, использовано или нет L1-предсказание в соседнем блоке N, 1 (S4066). Когда predFlagL1N=0 (S4066: "Нет"), процесс переходит к следующему процессу (S4078). Когда predFlagL1N=1 (S4066: "Да"), определяется то, POC всех кадров, зарегистрированных во всех опорных списках, меньше или равны либо нет POC текущего целевого кадра кодирования (S4068). Когда это определение представляет собой "истина" (S4068: "Да"), процесс переходит к следующей обработке (S4070).
[0249] Когда тип slice_type среза представляет собой B-срез, и флаг collocated_from_l0_flag равен 0 (S4070: "Да" и S4072: "Да"), определяется то, является или нет ColPic идентичным опорному кадру RefPicList1[refIdxL1N] (кадру опорного индекса refIdxL1N опорного списка L1) (S4074). Когда это определение представляет собой "истина" (S4074: "Да"), временной вектор движения tempMv=mvL1N задается (S4076). Когда это определение представляет собой "ложь" (S4074: "Нет"), процесс переходит к следующей обработке (S4078). Когда тип slice_type среза не является B-срезом, и флаг collocated_from_l0_flag не равен 0 (S4070: "Нет" или S4072: "Нет"), процесс переходит к следующей обработке (S4078).
[0250] Затем определяется то, равен или нет флаг predFlagL0N, указывающий то, использовано или нет L0-предсказание в соседнем блоке N, равен 1 (S4078). Когда predFlagL0N=1 (S4078: "Да"), определяется то, является или нет ColPic идентичным опорному кадру RefPicList0[refIdxL0N] (кадру опорного индекса refIdxL0N опорного списка L0) (S4080). Когда это определение представляет собой "истина" (S4080: "Да"), временной вектор движения tempMv=mvL0N задается (S4082). Когда это определение представляет собой "ложь" (S4080: "Нет"), процесс извлечения временного вектора движения завершается.
Снова обратимся к фиг. 50. Затем, ColPic извлекается (S4016). Поскольку эта обработка является идентичной обработке S4201 в модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, ее описание опускается.
[0251] Блок colCb кодирования в другое время задается (S4017). Здесь, блок кодирования, расположенный в нижнем правом углу центра, имеющий позицию, идентичную позиции целевого блока кодирования в кадре colPic в другое время, задается в качестве colCb. Этот блок кодирования соответствует блоку T1 кодирования по фиг. 55.
[0252] Затем, позиция, в которой временной вектор tempMv движения добавляется в блок colCb кодирования, становится новым блоком colCb кодирования (S4018). При условии, что верхняя левая позиция блока colCb кодирования представляет собой (xColCb, yColCb), и временной вектор tempMv движения представляет собой (tempMv[0], tempMv[1]) с точностью в 1/16 дискретного отсчета, верхняя левая позиция нового блока colCb кодирования является следующей.
[0253] xColCb=Clip3(xCtb, xCtb+CtbSizeY+3, xcolCb+(tempMv[0]>>4))
yColCb=Clip3(yCtb, yCtb+CtbSizeY-1, ycolCb+(tempMv[1]>>4))
[0254] Здесь, верхняя левая позиция древовидного блока представляет собой (xCtb, yCtb), и размер древовидного блока представляет собой CtbSizeY. Как показано в вышеприведенных уравнениях, позиция после добавления tempMv корректируется в диапазоне приблизительно размера древовидного блока таким образом, что позиция после добавления tempMv не отклоняется значительно от позиции перед добавлением tempMv. Когда эта позиция находится за пределами кадра, позиция корректируется внутри кадра.
[0255] Определяется то, представляет собой режим PredMode предсказания блока colCb кодирования или нет интер-предсказание (MODE_INTER) (S4020). Когда режим предсказания colCb не представляет собой интер-предсказание (S4020: "Нет"), флаг, указывающий присутствие потенциально подходящего варианта временного объединения на основе субблоков, задается равным availableFlagSbCol=0 (S4003). Процесс модуля извлечения временных потенциально подходящих вариантов объединения на основе субблоков завершается.
[0256] С другой стороны, когда режим предсказания colCb представляет собой интер-предсказание (S4020: "Да"), информация интер-предсказания извлекается для каждого опорного списка (S4022 и S4023). Здесь, центральный вектор ctrMvLX движения для каждого опорного списка и флаг ctrPredFlagLX, указывающий то, использовано или нет LX-предсказание, извлекаются относительно colCb. LX указывает опорный список, LX становится L0 при извлечении опорного списка 0, и LX становится L1 при извлечении опорного списка 1. В дальнейшем описывается извлечение информации интер-предсказания со ссылкой на фиг. 53.
[0257] Когда блок colCb кодирования в другое время не доступен (S4112: "Нет"), либо когда режим PredMode предсказания представляет собой интра-предсказание (MODE_INTRA) (S4114: "Нет"), как флаг availableFlagLXCol, так и флаг predFlagLXCol задаются равными 0 (этап S4116), и вектор mvCol задается равным (0, 0) (S4118). Процесс извлечения информации интер-предсказания завершается.
[0258] Когда блок colCb кодирования доступен (S4112: "Да"), и режим PredMode предсказания не представляет собой интра-предсказание (MODE_INTRA) (S4114: "Да"), mvCol, refIdxCol и availableFlagCol вычисляются в следующей процедуре.
[0259] Когда флаг PredFlagLX[xPCol][yPCol], указывающий то, использовано или нет LX-предсказание блока colCb кодирования, равен 1 (S4120: "Да"), вектор mvCol движения задается с возможностью иметь значение, идентичное значению MvLX[xPCol][yPCol], который представляет собой вектор движения LX блока colCb кодирования (S4122), опорный индекс refIdxCol задается с возможностью иметь значение, идентичное значению опорного индекса refIdxLX[xPCol][yPCol] LX (S4124), и список listCol задается равным LX (S4126). Здесь, xPCol и yPCol представляют собой индексы, указывающие позицию верхнего левого дискретного отсчета блока colCb кодирования в кадре colPic в другое время.
[0260] С другой стороны, когда флаг PredFlagLX[xPCol][yPCol], указывающий то, использовано или нет LX-предсказание блока colCb кодирования, равен 0 (S4120: "Нет"), следующий процесс выполняется. Во-первых, определяется то, меньше или равны либо нет POC всех кадров, зарегистрированных во всех опорных списках, POC текущего целевого кадра кодирования (S4128). Помимо этого, определяется то, равен или нет флаг PredFlagLY[xPCol][yPCol], указывающий то, использовано или нет LY-предсказание colCb, 1 (S4128). Здесь, опорный список LY-предсказания задается таким образом, что он отличается от опорного списка LX-предсказания. Таким образом, LY=L1 при LX=L0 и LY=L0 при LX=L1.
[0261] Когда это определение представляет собой "истина" (S4128: "Да"), вектор mvCol движения задается с возможностью иметь значение, идентичное значению MvLY[xPCol][yPCol], который представляет собой вектор движения LY блока colCb кодирования (S4130), опорный индекс refIdxCol задается с возможностью иметь значение, идентичное значению опорного индекса RefIdxLY[xPCol][yPCol] LY (S4132), и список listCol задается равным LX (S4134).
[0262] С другой стороны, когда это определение представляет собой "ложь" (S4128: "Нет"), как флаг availableFlagLXCol, так и флаг predFlagLXCol задаются равными 0 (этап S4116), и вектор mvCol движения задается равным (0, 0) (S4118). Процесс извлечения информации интер-предсказания завершается.
Когда информация интер-предсказания может получаться из блока colCb кодирования, как флаг availableFlagLXCol, так и флаг predFlagLXCol задаются равными 1 (S4136).
[0263] Затем, вектор mvCol движения масштабируется и задается равным вектору mvLXCol движения (S4138). Поскольку эта обработка является идентичной обработке S4245 в модуле 322 извлечения потенциально подходящих вариантов временных предикторов векторов движения, ее описание опускается.
[0264] Снова обратимся к фиг. 50. После того, как информация интер-предсказания извлекается для каждого опорного списка, вычисленный вектор mvLXCol движения задается в качестве центрального вектора ctrMvLX движения, и вычисленный флаг predFlagLXCol задается в качестве флага ctrPredFlagLX (S4022 и S4023).
[0265] Затем определяется то, является центральный вектор движения допустимым или недопустимым (S4024). Если ctrPredFlagL0=0 и ctrPredFlagL1=0, определяется то, что центральный вектор движения является недопустимым. В противном случае, определяется то, что центральный вектор движения является недопустимым. Когда центральный вектор движения является недопустимым (S4024: "Нет"), флаг, указывающий существование потенциально подходящего варианта временного объединения на основе субблоков, задается равным availableFlagSbCol=0 (S4003). Процесс модуля извлечения временных потенциально подходящих вариантов объединения на основе субблоков завершается.
[0266] С другой стороны, когда центральный вектор движения является допустимым (S4024: "Да"), флаг, указывающий присутствие потенциально подходящего варианта временного объединения на основе субблоков, задается равным availableFlagSbCol=1 (S4025), и информация движения субблоков извлекается (S4026). В дальнейшем описывается эта обработка со ссылкой на фиг. 54.
[0267] Во-первых, число numSbX субблоков в направлении ширины и число субблоков numSbY в направлении высоты вычисляются из ширины cbWidth и высоты cBheight блока colCb кодирования (S4152). Кроме того, refIdxLXSbCol=0 задается (S4152). После этой обработки, итеративный процесс выполняется в единицах субблоков colSb предсказания. Этот итеративный процесс выполняется, в то время как индекс ySbIdx в направлении высоты изменяется с 0 до numSbY, и индекс xSbIdx в направлении изменяется ширины с 0 до numSbX.
[0268] При условии, что верхняя левая позиция блока colCb кодирования представляет собой (xCb, yCb), верхняя левая позиция (xSb, ySb) субблока colSb предсказания вычисляется следующим образом.
[0269] xSb=xCb+xSbIdx*sbWidth
ySb=yCb+ySbIdx*sbHeight
[0270] Затем, позиция, в которой временной вектор tempMv движения добавляется в субблок colSb предсказания, становится новым субблоком colSb предсказания (S4154). При условии, что верхняя левая позиция субблока colSb предсказания представляет собой (xColSb, yColSb), и временной вектор tempMv движения представляет собой (tempMv[0], tempMv[1]) с точностью в 1/16 дискретного отсчета, верхняя левая позиция нового субблока colSb предсказания является следующей.
[0271] xColSb=Clip3 (xCtb, xCtb+CtbSizeY+3, xSb+(tempMv[0]>>4))
yColSb=Clip3(yCtb, yCtb+CtbSizeY-1, ySb+(tempMv[1]>>4))
[0272] Здесь, верхняя левая позиция древовидного блока представляет собой (xCtb, yCtb), и размер древовидного блока представляет собой CtbSizeY. Как показано в вышеприведенных уравнениях, позиция после добавления tempMv корректируется в диапазоне приблизительно размера древовидного блока таким образом, что позиция после добавления tempMv не отклоняется значительно от позиции перед добавлением tempMv. Когда эта позиция находится за пределами кадра, позиция корректируется внутри кадра.
[0273] Информация интер-предсказания извлекается для каждого опорного списка (S4156 и S4158). Здесь, вектор движения mvLXSbCol для каждого опорного списка и флаг availableFlagLXSbCol, указывающий то, является или нет субблок предсказания допустимым, извлекаются в единицах субблоков относительно субблока colSb предсказания. LX указывает опорный список, LX становится L0 при извлечении опорного списка 0, и LX становится L1 при извлечении опорного списка 1. Поскольку извлечение информации интер-предсказания является идентичным обработке S4022 и S4023 на фиг. 50, ее описание опускается.
[0274] После того, как информация интер-предсказания извлекается (S4156 и S4158), определяется то, является или нет субблок colSb предсказания допустимым (S4160). Когда availableFlagL0SbCol=0 и availableFlagL1SbCol=0, определяется то, что colSb является недопустимым. В противном случае, определяется то, что colSb является допустимым. Когда colSb является недопустимым (S4160: "Нет"), вектор движения mvLXSbCol задается равным центральному вектору ctrMvLX движения (S4162). Дополнительно, флаг predFlagLXSbCol, указывающий то, использовано или нет LX-предсказание, задается равным флагу ctrPredFlagLX в центральном векторе движения (S4162). Соответственно, извлечение информации движения субблоков завершается.
[0275] Снова обратимся к фиг. 50. Вектор mvL0SbCol движения L0 и вектор mvL1SbCol движения L1 добавляются в качестве потенциально подходящих вариантов в список subblockMergeCandList потенциально подходящих вариантов объединения на основе субблоков в вышеописанном модуле 304 извлечения режимов объединения на основе субблоков (S4028). Тем не менее, это добавление выполняется только тогда, когда флаг, указывающий присутствие потенциально подходящего варианта временного объединения на основе субблоков, равен availableSbCol=1. Соответственно, процесс модуля 342 извлечения временных потенциально подходящих вариантов объединения завершается.
[0276] Хотя вышеприведенное описание модуля 381 извлечения временных потенциально подходящих вариантов объединения на основе субблоков приводится для кодирования, это справедливо для декодирования. Таким образом, работа модуля 481 извлечения временных потенциально подходящих вариантов объединения на основе субблоков в модуле 404 извлечения режимов объединения на основе субблоков по фиг. 22 может аналогично описываться посредством замены кодирования в вышеприведенном описании на декодирование.
Процесс предсказания с компенсацией движения
[0277]
Модуль 306 предсказания с компенсацией движения получает позицию и размер блока, который представляет собой текущую цель процесса предсказания при кодировании. Кроме того, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания. Опорный индекс и вектор движения извлекаются из полученной информации интер-предсказания, и сигнал предсказания формируется после того, как получается сигнал кадров позиции, в которую опорный кадр, идентифицированный посредством опорного индекса в запоминающем устройстве 104 декодированных кадров, перемещается из позиции, идентичной позиции сигнала кадров блока предсказания, на величину вектора движения.
[0278] Сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания с использованием сигнала предсказания, полученного из одного опорного кадра, в качестве сигнала предсказания с компенсацией движения, когда режим интер-предсказания при интер-предсказании представляет собой предсказание из одного опорного кадра, такое как L0-предсказание или L1-предсказание, и с использованием сигнала предсказания, полученного посредством сигналов предсказания с усреднением со взвешиванием, полученных из двух опорных кадров, в качестве сигнала предсказания с компенсацией движения, когда режим предсказания представляет собой предсказание из двух опорных кадров, такое как режим интер-предсказания бипредсказания. Хотя средневзвешенный коэффициент бипредсказания здесь составляет 1:1, усреднение со взвешиванием может выполняться с использованием другого коэффициента. Например, весовой коэффициент может увеличиваться по мере того, как межкадровый интервал между кадром, который представляет собой цель предсказания, и опорным кадром снижается. Кроме того, весовой коэффициент может вычисляться с использованием соответствующей таблицы между комбинациями межкадровых интервалов и весовых коэффициентов.
[0279] Модуль 406 предсказания с компенсацией движения имеет функцию, аналогичную функции модуля 306 предсказания с компенсацией движения на стороне кодирования. Модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, модуля 402 извлечения режимов нормального объединения, модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков и модуля 404 извлечения режимов объединения на основе субблоков через переключатель 408. Модуль 406 предсказания с компенсацией движения предоставляет полученный сигнал предсказания с компенсацией движения в модуль 207 наложения сигналов кадров для декодирования.
Касательно режима интер-предсказания
[0280]
Процесс выполнения предсказания из одного опорного кадра задается как унипредсказание. В случае унипредсказания, выполняется предсказание с использованием одного из двух опорных кадров, зарегистрированных в опорных списках L0 и L1, такое как L0-предсказание или L1-предсказание.
[0281] Фиг. 32 показывает случай унипредсказания, в котором время такта опорного кадра (RefL0Pic) L0 находится раньше времени такта целевого кадра (CurPic). Фиг. 33 показывает случай унипредсказания, в котором время такта опорного кадра L0-предсказания находится позже времени такта целевого кадра. Аналогично, опорный кадр L0-предсказания по фиг. 32 и 33 может заменяться опорным кадром (RefL1Pic) L1-предсказания, чтобы выполнять унипредсказание.
[0282] Процесс выполнения предсказания из двух опорных кадров задается как бипредсказание, и бипредсказание представляется как бипредсказание с использованием как L0-предсказания, так и L1-предсказания. Фиг. 34 показывает случай бипредсказания, в котором время такта опорного кадра L0-предсказания находится раньше времени такта целевого кадра, и время такта опорного кадра L1-предсказания находится позже времени такта целевого кадра. Фиг. 35 показывает случай бипредсказания, в котором времена такта опорного кадра L0-предсказания и опорного кадра L1-предсказания находятся раньше времени такта целевого кадра. Фиг. 36 показывает случай бипредсказания, в котором время такта опорного кадра L0-предсказания и время такта опорного кадра L1-предсказания находятся позже времени такта целевого кадра.
[0283] Как описано выше, взаимосвязь между типом предсказания L0/L1 и временем может использоваться без ограничения L0, который находится в предыдущем направлении, и L1, который находится в будущем направлении. В случае бипредсказания, каждое из L0-предсказания и L1-предсказания может выполняться с использованием идентичного опорного кадра. Кроме того, определяется то, следует выполнять предсказание с компенсацией движения согласно унипредсказанию или бипредсказанию, на основе, например, информации (например, флага), указывающей то, следует или нет использовать L0-предсказание, и то, следует или нет использовать L1-предсказание.
Касательно опорного индекса
[0284]
В варианте осуществления настоящего изобретения, можно выбирать оптимальный опорный кадр из множества опорных кадров при предсказании с компенсацией движения, чтобы повышать точность предсказания с компенсацией движения. Таким образом, опорный кадр, используемый при предсказании с компенсацией движения, используется в качестве опорного индекса, и опорный индекс кодируется в потоке битов вместе с разностью векторов движения.
Процесс компенсации движения на основе режима идентификации предикторов нормальных векторов движения
[0285]
Как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 301 извлечения режимов идентификации предикторов нормальных векторов движения выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0286] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 401 извлечения режимов идентификации предикторов нормальных векторов движения в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 401 извлечения режимов идентификации предикторов нормальных векторов движения, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима нормального объединения
[0287]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания выбрана из модуля 302 извлечения режимов нормального объединения в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0288] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 402 извлечения режимов нормального объединения в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 402 извлечения режимов нормального объединения, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима идентификации предикторов векторов движения на основе субблоков
[0289]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 303 извлечения режимов идентификации предикторов векторов движения на основе субблоков выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0290] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 403 извлечения режимов идентификации предикторов векторов движения на основе субблоков, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе режима объединения на основе субблоков
[0291]
Кроме того, как показано в модуле 102 интер-предсказания на стороне кодирования по фиг. 16, когда информация интер-предсказания из модуля 304 извлечения режимов объединения на основе субблоков выбрана в модуле 305 определения режима интер-предсказания, модуль 306 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 305 определения режима интер-предсказания, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 105 определения способа предсказания.
[0292] Аналогично, как показано в модуле 203 интер-предсказания на стороне декодирования по фиг. 22, когда переключатель 408 соединен с модулем 404 извлечения режимов объединения на основе субблоков в процессе декодирования, модуль 406 предсказания с компенсацией движения получает информацию интер-предсказания из модуля 404 извлечения режимов объединения на основе субблоков, извлекает режим интер-предсказания, опорный индекс и вектор движения текущего целевого блока и формирует сигнал предсказания с компенсацией движения. Сформированный сигнал предсказания с компенсацией движения предоставляется в модуль 207 наложения сигналов кадров для декодирования.
Процесс компенсации движения на основе предсказания с аффинным преобразованием
[0293]
В режиме идентификации предикторов нормальных векторов движения и режиме нормального объединения, компенсация движения аффинной модели может использоваться на основе следующих флагов. Следующие флаги отражаются в следующих флагах на основе условий интер-предсказания, определенных посредством модуля 305 определения режима интер-предсказания в процессе кодирования, и кодируются в потоке битов. В процессе декодирования, идентифицируется то, следует или нет выполнять компенсацию движения аффинной модели, на основе следующих флагов в потоке битов.
[0294] sps_affine_enabled_flag представляет то, может или нет компенсация движения аффинной модели использоваться при интер-предсказании. Если sps_affine_enabled_flag равен 0, подавление выполняется таким образом, что она не представляет собой компенсацию движения аффинной модели в единицах последовательностей. Кроме того, inter_affine_flag и cu_affine_type_flag не передаются в синтаксисе CU (блоков кодирования) видеопоследовательности для кодирования. Если sps_affine_enabled_flag равен 1, компенсация движения аффинной модели может использоваться в видеопоследовательности для кодирования.
[0295] sps_affine_type_flag представляет то, может или нет компенсация движения шестипараметрической аффинной модели использоваться при интер-предсказании. Если sps_affine_type_flag равен 0, подавление выполняется таким образом, что она не представляет собой компенсацию движения шестипараметрической аффинной модели. Кроме того, cu_affine_type_flag не передается в CU-синтаксисе видеопоследовательности для кодирования. Если sps_affine_type_flag равен 1, компенсация движения шестипараметрической аффинной модели может использоваться в видеопоследовательности для кодирования. Когда sps_affine_type_flag не существует, он предположительно равен 0.
[0296] Когда P- или B-срез декодируется, если inter_affine_flag равен 1 в текущей целевой CU, компенсация движения аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU. Если inter_affine_flag равен 0, аффинная модель не используется в текущей целевой CU. Когда inter_affine_flag не существует, он предположительно равен 0.
[0297] Когда P- или B-срез декодируется, если cu_affine_type_flag равен 1 в текущей целевой CU, компенсация движения шестипараметрической аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU. Если cu_affine_type_flag равен 0, компенсация движения четырехпараметрической аффинной модели используется для того, чтобы формировать сигнал предсказания с компенсацией движения текущей целевой CU.
[0298] В компенсации движения аффинной модели, поскольку опорный индекс и вектор движения извлекаются в единицах субблоков, сигнал предсказания с компенсацией движения формируется с использованием опорного индекса или вектора движения, который представляет собой цель в единицах субблоков.
[0299] Четырехпараметрическая аффинная модель представляет собой режим, в котором вектор движения субблока извлекается из четырех параметров горизонтальных компонентов и вертикальных компонентов векторов движения двух управляющих точек, и компенсация движения выполняется в единицах субблоков.
Второй вариант осуществления
[0300]
Во втором варианте осуществления, во время извлечения аффинных конструируемых потенциально подходящих вариантов объединения в модулях 304 извлечения режимов объединения на основе субблоков и 404, целевой опорный кадр, который должен сравниваться с опорными кадрами аффинных управляющих точек (CP0, CP1, CP2 и CP3) является фиксированным, и определяется то, является или нет возможным аффинное преобразование. Например, целевой опорный кадр является фиксированной равным опорному кадру, имеющему индекс опорного кадра в 0, и определяется то, является или нет аффинное преобразование возможным, согласно каждой комбинации аффинных управляющих точек (CP0, CP1, CP2 и CP3).
[0301] Посредством сравнения опорного кадра каждой аффинной управляющей точки с фиксированным опорным кадром, можно конструировать аффинную модель трех аффинных управляющих точек на основе верхней правой аффинной управляющей точки CP1, нижней левой аффинной управляющей точки CP2 и нижней правой аффинной управляющей точки CP3 без использования верхней левой аффинной управляющей точки CP0. В силу этого, можно повышать вероятность того, что аффинный конструируемый потенциально подходящий вариант объединения может извлекаться, точность предсказания аффинного режима объединения повышается, и эффективность кодирования повышается.
[0302] Два или более из всех вариантов осуществления, описанных выше, могут комбинироваться.
[0303] Во всех вариантах осуществления, описанных выше, поток битов, выводимый посредством устройства кодирования кадров, имеет конкретный формат данных таким образом, что поток битов может декодироваться в соответствии со способом кодирования, используемым в варианте осуществления. Кроме того, устройство декодирования кадров, соответствующее устройству кодирования кадров, может декодировать поток битов конкретного формата данных.
[0304] Когда проводная или беспроводная сеть используется для того, чтобы обмениваться потоком битов между устройством кодирования кадров и устройством декодирования кадров, поток битов может преобразовываться в формат данных, подходящий для формы передачи тракта связи, и передаваться. В этом случае, предоставляются передающее устройство для преобразования потока битов, выводимого из устройства кодирования кадров, в кодированные данные формата данных, подходящего для формы передачи тракта связи, и передачи кодированных данных в сеть, и приемное устройство для приема кодированных данных из сети, восстановления кодированных данных в поток битов и предоставления потока битов в устройство декодирования кадров. Передающее устройство включает в себя запоминающее устройство, которое буферизует поток битов, выводимый посредством устройства кодирования кадров, модуль обработки пакетов, который пакетизирует поток битов, и передающий модуль, который передает пакетизированные кодированные данные через сеть. Приемное устройство включает в себя приемный модуль, который принимает пакетизированные кодированные данные через сеть, запоминающее устройство, которое буферизует принимаемые кодированные данные, и модуль обработки пакетов, который формирует поток битов посредством выполнения обработки пакетов для кодированных данных и предоставляет поток битов в устройство декодирования кадров.
[0305] Кроме того, устройство отображения может предоставляться посредством добавления модуля отображения, который отображает кадр, декодированный посредством устройства декодирования кадров, в конфигурацию. В этом случае, модуль отображения считывает декодированный сигнал кадров, сформированный посредством модуля 207 наложения сигналов кадров для декодирования и сохраненный в запоминающем устройстве 208 декодированных кадров, и отображает декодированный сигнал кадров на экране.
[0306] Кроме того, устройство формирования изображений может предоставляться посредством добавления модуля формирования изображений, который вводит захваченный кадр в устройство кодирования кадров, в конфигурацию. В этом случае, модуль формирования изображений вводит захваченный сигнал кадров в модуль 101 разбиения блоков.
[0307] Фиг. 37 показывает пример аппаратной конфигурации устройства кодирования/декодирования согласно настоящему варианту осуществления. Устройство кодирования/декодирования включает в себя конфигурацию устройства кодирования кадров и устройства декодирования кадров согласно варианту осуществления настоящего изобретения. Связанное устройство 9000 кодирования/декодирования включает в себя CPU 9001, IC 9002 кодека, интерфейс 9003 ввода-вывода, запоминающее устройство 9004, накопитель 9005 на оптических дисках, сетевой интерфейс 9006 и видеоинтерфейс 9009, и соответствующие части соединяются посредством шины 9010.
[0308] Модуль 9007 кодирования кадров и модуль 9008 декодирования кадров типично реализуются в качестве IC 9002 кодека. Процесс кодирования кадров устройства кодирования кадров согласно варианту осуществления настоящего изобретения выполняется посредством модуля 9007 кодирования кадров, и процесс декодирования кадров в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения выполняется посредством модуля 9008 декодирования кадров. Интерфейс 9003 ввода-вывода реализуется посредством, например, USB-интерфейса и соединяется с внешней клавиатурой 9104, мышью 9105 и т.п. CPU 9001 управляет устройством 9000 кодирования/декодирования таким образом, что требуемая пользователем операция выполняется на основе пользовательской операции, вводимой через интерфейс 9003 ввода-вывода. Пользовательские операции с использованием клавиатуры 9104, мыши 9105 и т.п. включают в себя выбор функции кодирования или декодирования, которая должна выполняться, задание качества кодирования, указание назначения ввода-вывода потока битов, указание назначения ввода-вывода кадра и т.п.
[0309] Когда пользователю требуется операция воспроизведения кадра, записанного на дисковом носителе 9100 записей, накопитель 9005 на оптических дисках считывает поток битов из дискового носителя 9100 записей, который вставлен, и передает считываемый поток битов в модуль 9008 декодирования кадров IC 9002 кодека через шину 9010. Модуль 9008 декодирования кадров выполняет процесс декодирования кадров для входного потока битов в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения и передает декодированный кадр на внешний монитор 9103 через видеоинтерфейс 9009. Устройство 9000 кодирования/декодирования включает в себя сетевой интерфейс 9006 и может соединяться с внешним сервером 9106 распространения и портативным терминалом 9107 через сеть 9101. Когда пользователь хочет воспроизводить кадр, записанный на сервере 9106 распространения или в портативном терминале 9107, вместо кадра, записанного на дисковом носителе 9100 записей, сетевой интерфейс 9006 получает поток битов из сети 9101 вместо считывания потока битов из входного дискового носителя 9100 записей. Когда пользователь хочет воспроизводить кадр, записанный в запоминающем устройстве 9004, процесс декодирования кадров в устройстве декодирования кадров согласно варианту осуществления настоящего изобретения выполняется для потока битов, записанного в запоминающем устройстве 9004.
[0310] Когда пользователь хочет выполнять операцию кодирования кадра, захваченного посредством внешней камеры 9102 и записи кодированного кадра в запоминающем устройстве 9004, видеоинтерфейс 9009 вводит кадр из камеры 9102 и передает кадр в модуль 9007 кодирования кадров IC 9002 кодека через шину 9010. Модуль 9007 кодирования кадров выполняет процесс кодирования кадров для ввода кадра через видеоинтерфейс 9009 в устройстве кодирования кадров согласно варианту осуществления настоящего изобретения, чтобы создавать поток битов. Затем поток битов передается в запоминающее устройство 9004 через шину 9010. Когда пользователь хочет записывать поток битов на дисковом носителе 9100 записей вместо запоминающего устройства 9004, накопитель 9005 на оптических дисках записывает поток битов на дисковый носитель 9100 записей, который вставлен.
[0311] Также можно реализовывать аппаратную конфигурацию, которая включает в себя устройство кодирования кадров без включения устройства декодирования кадров, либо аппаратную конфигурацию, которая включает в себя устройство декодирования кадров без включения устройства кодирования кадров. Такая аппаратная конфигурация реализуется, например, посредством замены IC 9002 кодека модулем 9007 кодирования кадров или модулем 9008 декодирования кадров.
[0312] Вышеуказанные процессы, связанные с кодированием и декодированием, могут реализовываться как устройство передачи, хранения и приема данных с использованием аппаратных средств и реализовываться посредством микропрограммного обеспечения, сохраненного в постоянном запоминающем устройстве (ROM), во флэш-памяти и т.п., либо как программное обеспечение компьютера и т.п. Микропрограммно-реализованная программа и программно-реализованная программа для нее могут предоставляться посредством записи программ на носителе записей, допускающем считывание посредством компьютера и т.п., либо могут предоставляться из сервера через проводную или беспроводную сеть, либо могут предоставляться в качестве широковещательных передач данных согласно наземной или спутниковой цифровой широковещательной передаче.
[0313] Настоящее изобретение описывается выше на основе вариантов осуществления. Варианты осуществления представляют собой примеры, и специалисты в данной области техники должны понимать, что различные модификации являются возможными в комбинациях соответствующих компонентов и процессов обработки, и такие модификации находятся в пределах объема настоящего изобретения.
[0314]
Пояснение номеров ссылок
100 - устройство кодирования кадров
101 - модуль разбиения блоков
102 - модуль интер-предсказания
103 - модуль интра-предсказания
104 - запоминающее устройство декодированных кадров
105 - модуль определения способа предсказания
106 - модуль формирования остатков
107 - модуль ортогонального преобразования/квантования
108 - модуль кодирования битовых строк
109 - модуль обратного квантования/обратного ортогонального преобразования
110 - модуль наложения сигналов кадров для декодирования
111 - запоминающее устройство для хранения информации кодирования
200 - устройство декодирования кадров
201 - модуль декодирования битовых строк
202 - модуль разбиения блоков
203 - модуль интер-предсказания
204 - модуль интра-предсказания
205 - запоминающее устройство для хранения информации кодирования
206 - модуль обратного квантования/обратного ортогонального преобразования
207 - модуль наложения сигналов кадров для декодирования
208 - запоминающее устройство декодированных кадров