Способ и устройство декодирования изображения на основе предсказания аффинного движения с использованием списка кандидатов аффинного MVP в системе кодирования изображения
METHOD AND APPARATUS FOR DECODING IMAGE BASED ON AFFINE MOTION PREDICTION USING AFFINE MVP CANDIDATE LIST IN IMAGE CODING SYSTEM

Область РАСКРЫТИЯ
[1] Настоящее раскрытие относится к методу кодирования видео и, более конкретно, к способу и устройству декодирования видео на основе предсказания аффинного движения в системе кодирования видео.
Предшествующий уровень техники
[2] Потребности в высококачественных изображениях высокого разрешения, таких как изображения HD (высокой четкости) и изображения UHD (сверхвысокой четкости) возрастают в различных областях. Когда данные изображения имеют высокое разрешение и высокое качество, количество информации или битов, подлежащих передаче, возрастает по сравнению с данными унаследованных изображений. Поэтому, когда данные изображения передаются с использованием носителя, такого как традиционный проводной/беспроводной широкополосный канал, или данные изображения сохраняются с использованием существующего носителя данных, затраты на передачу и затраты на хранение возрастают.
[3] Соответственно, имеется потребность в высокоэффективном методе сжатия изображений для эффективной передачи, хранения и воспроизведения информации высококачественных изображений высокого разрешения.
сущность изобретения
[4] Технической задачей настоящего раскрытия является обеспечить способ и устройство для повышения эффективности кодирования видео.
[5] Другой технической задачей настоящего раскрытия является обеспечить способ и устройство декодирования видео, которые формируют список потенциально подходящих аффинных MVP (кандидатов аффинного MVP) текущего блока путем выведения сформированных кандидатов аффинного MVP на основе соседних блоков, только когда все векторы движения-кандидаты для CP доступны, и выполнять предсказание текущего блока на основе списка сформированных кандидатов аффинного MVP.
[6] Еще одной технической задачей настоящего раскрытия является обеспечить способ и устройство декодирования видео, которые выводят кандидата аффинного MVP с использованием вектора движения-кандидата, выведенного из процесса для выведения сформированного кандидата аффинного MVP, в качестве добавленного кандидата аффинного MVP, когда количество доступных унаследованных кандидатов аффинного MVP и сформированных кандидатов аффинного MVP, то есть, количество кандидатов списка кандидатов MVP меньше, чем максимальное количество; и выполняют предсказание текущего блока на основе списка сформированных кандидатов аффинного MVP.
[7] В соответствии с одним вариантом осуществления настоящего раскрытия, обеспечен способ декодирования видео, выполняемый устройством декодирования. Способ содержит получение информации предсказания движения для текущего блока из битового потока; формирование списка кандидатов аффинного предсказателя (предиктора) вектора движения (MVP) для текущего блока; выведение предсказателей векторов движения контрольных точек (CPMVP) для контрольных точек (CP) текущего блока на основе списка кандидатов аффинного MVP; выведение разностей векторов движения контрольных точек (CPMVD) для CP текущего блока на основе информации предсказания движения; выведение векторов движения контрольных точек (CPMV) для CP текущего блока на основе CPMVP и CPMVD; выведение выборок предсказания для текущего блока на основе CPMV; и генерацию восстановленной картинки для текущего блока на основе выведенных выборок предсказания, причем формирование списка кандидатов аффинного MVP содержит проверку, доступен ли унаследованный кандидат аффинного MVP текущего блока, причем унаследованный кандидат аффинного MVP выводится, когда унаследованный кандидат аффинного MVP доступен; проверку, доступен ли сформированный кандидат аффинного MVP текущего блока, причем сформированный кандидат аффинного MVP выводится, когда сформированный кандидат аффинного MVP доступен, и сформированный кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 текущего блока, вектор движения-кандидат для CP1 текущего блока, и вектор движения-кандидат для CP2 текущего блока; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP0 доступен, выведение первого кандидата аффинного MVP, причем первый кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP0 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP1 доступен, выведение второго кандидата аффинного MVP, причем второй кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP1 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP2 доступен, выведение третьего кандидата аффинного MVP, причем третий кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP2 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведение четвертого кандидата аффинного MVP, включающего в себя временной MVP, выведенный на основе временного соседнего блока текущего блока, в качестве векторов движения-кандидатов для CP; и когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведение пятого кандидата аффинного MVP, включающего в себя нулевой вектор движения в качестве векторов движения-кандидатов для CP.
[8] В соответствии с другим вариантом осуществления настоящего раскрытия, обеспечено устройство декодирования, выполняющее кодирование видео. Устройство декодирования содержит энтропийный декодер, получающий информацию предсказания движения для текущего блока; предсказатель, формирующий список кандидатов аффинного предсказателя вектора движения (MVP) для текущего блока, выводящий предсказателей векторов движения контрольных точек (CPMVP) для контрольных точек (CP) текущего блока на основе списка кандидатов аффинного MVP, выводящий разности векторов движения контрольных точек (CPMVD) для CP текущего блока на основе информации предсказания движения, выводящий вектора движения контрольных точек (CPMV) для CP текущего блока на основе CPMVD, выводящий выборки предсказания для текущего блока на основе CPMV; и сумматор, генерирующий восстановленную картинку для текущего блока на основе выведенных выборок предсказания, причем список кандидатов аффинного MVP формируется на основе проверки, доступен ли унаследованный кандидат аффинного MVP текущего блока, причем унаследованный кандидат аффинного MVP выводится, когда унаследованный кандидат аффинного MVP доступен; проверки, доступен ли сформированный кандидат аффинного MVP текущего блока, причем сформированный кандидат аффинного MVP выводится, когда сформированный кандидат аффинного MVP доступен, и сформированный кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 текущего блока, вектор движения-кандидат для CP1 текущего блока и вектор движения-кандидат для CP2 текущего блока; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP0 доступен, выведения первого кандидата аффинного MVP, причем первый кандидат аффинного MVP представляет собой кандидат аффинного MVP, включающий в себя вектор движения для CP0 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP1 доступен, выведения второго кандидата аффинного MVP, причем второй кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP1 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP2 доступен, выведения третьего кандидата аффинного MVP, причем третий кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP2 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведения четвертого кандидата аффинного MVP, включающего в себя временной MVP, выведенный на основе временного соседнего блока текущего блока, в качестве векторов движения-кандидатов для CP; и когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведения пятого кандидата аффинного MVP, включающего в себя нулевой вектор движения в качестве векторов движения-кандидатов для CP.
[9] В соответствии с еще одним вариантом осуществления настоящего раскрытия, обеспечен способ кодирования видео, выполняемый устройством кодирования. Способ содержит формирование списка кандидатов аффинного предсказателя вектора движения (MVP) для текущего блока; выведение предсказателей векторов движения контрольных точек (CPMVP) для контрольных точек (CP) текущего блока на основе списка кандидатов аффинного MVP; выведение CPMV для CP текущего блока; выведение разностей векторов движения контрольных точек (CPMVD) для CP текущего блока на основе CPMVP и CPMV; и кодирование информации предсказания движения, включающей в себя информацию о CPMVD, причем формирование списка кандидатов аффинного MVP содержит проверку, доступен ли унаследованный кандидат аффинного MVP текущего блока, причем унаследованный кандидат аффинного MVP выводится, когда унаследованный кандидат аффинного MVP доступен; проверку, доступен ли сформированный кандидат аффинного MVP текущего блока, причем сформированный кандидат аффинного MVP выводится, когда сформированный кандидат аффинного MVP доступен, и сформированный кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 текущего блока, вектор движения-кандидат для CP1 текущего блока и вектор движения-кандидат для CP2 текущего блока; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP0 доступен, выведение первого кандидата аффинного MVP, причем первый кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP0 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP1 доступен, выведение второго кандидата аффинного MVP, причем второй кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP1 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP2 доступен, выведение третьего кандидата аффинного MVP, причем третий кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP2 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведение четвертого кандидата аффинного MVP, включающего в себя временной MVP, выведенный на основе временного соседнего блока текущего блока, в качестве векторов движения-кандидатов для CP; и когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведение пятого кандидата аффинного MVP, включающего в себя нулевой вектор движения в качестве векторов движения-кандидатов для CP.
[10] В соответствии с еще одним вариантом осуществления настоящего раскрытия, обеспечено устройство кодирования видео. Устройство кодирования содержит предсказатель, формирующий список кандидатов аффинного предсказателя вектора движения (MVP) для текущего блока, выводящий предсказателей векторов движения контрольных точек (CPMVP) для контрольных точек (CP) текущего блока, и выводящий CPMV для CP текущего блока; вычитатель, выводящий разности векторов движения контрольных точек (CPMVD) для CP текущего блока на основе CPMVP и CPMV; и энтропийный кодер, кодирующий информацию предсказания движения, включающую в себя информацию о CPMVD, причем список кандидатов аффинного MVP формируется на основе проверки, доступен ли унаследованный кандидат аффинного MVP текущего блока, причем унаследованный кандидат аффинного MVP выводится, когда унаследованный кандидата аффинного MVP доступен; проверки, доступен ли сформированный кандидат аффинного MVP текущего блока, причем сформированный кандидат аффинного MVP выводится, когда сформированный кандидат аффинного MVP доступен, и сформированный кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 текущего блока, вектор движения-кандидат для CP1 текущего блока и вектор движения-кандидат для CP2 текущего блока; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP0 доступен, выведения первого кандидата аффинного MVP, причем первый кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP0 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP1 доступен, выведения второго кандидата аффинного MVP, причем второй кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP1 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP2 доступен, выведения третьего кандидата аффинного MVP, причем третий кандидат аффинного MVP представляет собой кандидата аффинного MVP, включающего в себя вектор движения для CP2 в качестве векторов движения-кандидатов для CP; когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведения четвертого кандидата аффинного MVP, включающего в себя временной MVP, выведенный на основе временного соседнего блока текущего блока, в качестве векторов движения-кандидатов для CP; и когда количество выведенных кандидатов аффинного MVP меньше, чем 2, выведения пятого кандидата аффинного MVP, включающего в себя нулевой вектор движения в качестве векторов движения-кандидатов для CP.
[11] В соответствии с настоящим раскрытием, общая эффективность сжатия изображения/видео может быть повышена.
[12] В соответствии с настоящим раскрытием, эффективность кодирования видео может быть повышена на основе предсказания аффинного движения.
[13] В соответствии с настоящим раскрытием, при выведении списка кандидатов аффинного MVP, только когда все вектора движения-кандидаты для CP сформированного кандидата аффинного MVP доступны, сформированный кандидат аффинного MVP может быть добавлен, за счет чего сложность выведения сформированного кандидата аффинного MVP и формирования списка кандидатов аффинного MVP может быть снижена, и эффективность кодирования может быть повышена.
[14] В соответствии с настоящим раскрытием, при выведении списка кандидатов аффинного MVP, дополнительный кандидат аффинного MVP может быть выведен на основе вектора движения-кандидата для CP, выведенного из процесса для выведения сформированного кандидата аффинного MVP, за счет чего сложность формирования списка кандидатов аффинного MVP может быть снижена, и эффективность кодирования может быть повышена.
[15] В соответствии с настоящим раскрытием, при выведении унаследованного кандидата аффинного MVP, только когда верхний соседний блок включен в текущую CTU, унаследованный кандидат аффинного MVP может быть выведен с использованием верхнего соседнего блока, за счет чего объем памяти линейного буфера для аффинного предсказания может быть снижен и затраты на аппаратные средства могут быть минимизированы.
Краткое описание чертежей
[16] Фиг. 1 иллюстрирует пример системы кодирования видео/изображения, в которой может быть применено настоящее раскрытие.
[17] Фиг. 2 представляет собой схематичное представление, иллюстрирующее конфигурацию устройства кодирования видео/изображения, в котором может быть применен вариант(ы) осуществления настоящего документа.
[18] Фиг. 3 представляет собой схематичное представление, иллюстрирующее конфигурацию устройства декодирования видео/изображения, в котором может быть применен вариант(ы) осуществления настоящего документа.
[19] Фиг. 4 иллюстрирует движение, выраженное через аффинная модель движения.
[20] Фиг. 5 иллюстрирует аффинная модель движения, в которой использованы векторы движения для 3 контрольных точек.
[21] Фиг. 6 иллюстрирует аффинная модель движения, в которой использованы векторы движения для 2 контрольных точек.
[22] Фиг. 7 иллюстрирует способ выведения вектора движения на базе подблока на основе аффинной модели движения.
[23] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую способ предсказания аффинного движения в соответствии с вариантом осуществления настоящего раскрытия.
[24] Фиг. 9 иллюстрирует способ для выведения предсказателя вектора движения в контрольной точке в соответствии с одним вариантом осуществления настоящего раскрытия.
[25] Фиг. 10 иллюстрирует способ для выведения предсказателя вектора движения в контрольной точке в соответствии с одним вариантом осуществления настоящего раскрытия.
[26] Фиг. 11 иллюстрирует один пример аффинного предсказания, выполняемого, когда соседний блок A выбран в качестве кандидата аффинного слияния.
[27] Фиг. 12 иллюстрирует соседние блоки для выведения унаследованного аффинного кандидата.
[28] Фиг. 13 иллюстрирует пространственных кандидатов для сформированного аффинного кандидата.
[29] Фиг. 14 иллюстрирует один пример формирования списка аффинных MVP.
[30] Фиг. 15 иллюстрирует один пример выведения сформированного кандидата.
[31] Фиг. 16 иллюстрирует один пример выведения сформированного кандидата.
[32] Фиг. 17 иллюстрирует позиции соседних блоков, сканируемых для выведения унаследованных аффинных кандидатов.
[33] Фиг. 18 иллюстрирует один пример выведения сформированного кандидата, когда четырех-параметрическая аффинная модель движения применяется к текущему блоку.
[34] Фиг. 19 иллюстрирует один пример выведения сформированного кандидата, когда шести-параметрическая аффинная модель движения применяется к текущему блоку.
[35] Фиг. 20a-20b иллюстрируют вариант осуществления для выведения унаследованного аффинного кандидата.
[36] Фиг. 21 иллюстрирует способ кодирования видео, выполняемый устройством кодирования в соответствии с настоящим раскрытием.
[37] Фиг. 22 иллюстрирует устройство кодирования, выполняющее способ кодирования видео в соответствии с настоящим раскрытием.
[38] Фиг. 23 иллюстрирует способ декодирования видео, выполняемый устройством декодирования в соответствии с настоящим раскрытием.
[39] Фиг. 24 иллюстрирует устройство декодирования, выполняющее способ декодирования видео в соответствии с настоящим раскрытием.
[40] Фиг. 25 иллюстрирует структуру системы потоковой передачи, в которой применяются варианты осуществления настоящего раскрытия.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[41] Настоящее раскрытие может быть модифицировано в различных формах, и его конкретные варианты осуществления будут описаны и проиллюстрированы на чертежах. Однако варианты осуществления не предназначены для ограничения раскрытия. Термины, используемые в последующем описании, используются просто для описания конкретных вариантов осуществления, но не предназначены для ограничения раскрытия. Выражение в единственном числе включает в себя выражение во множественном числе, если только оно явно читается по-разному. Такие термины, как “включать в себя” и “иметь”, предназначены, чтобы указывать, что признаки, количества, этапы, операции, элементы, компоненты или их комбинации, используемые в последующем описании, существуют, и, таким образом, следует понимать, что не исключается возможность существования или добавления одного или более других признаков, количеств, этапов, операций, элементов, компонентов или их комбинаций.
[42] С другой стороны, элементы на чертежах, описанные в раскрытии, изображены независимо в целях удобства для пояснения различных конкретных функций и не означают, что элементы воплощаются независимыми аппаратными средствами или независимым программным обеспечением. Например, два или более элементов из этих элементов могут комбинироваться для формирования отдельного элемента, или один элемент может быть разделен на множество элементов. Варианты осуществления, в которых элементы комбинируются и/или разделяются, принадлежат раскрытию без отклонения от концепции раскрытия.
[43] Далее, варианты осуществления настоящего раскрытия будут описаны подробно со ссылками на приложенные чертежи. Кроме того, одинаковые ссылочные позиции используются для указания сходных элементов на всех чертежах, и одинаковые описания сходных элементов будут опущены.
[44] Фиг. 1 иллюстрирует пример системы кодирования видео/ изображения, в которой может быть применено настоящее раскрытие.
[45] Со ссылкой на фиг. 1, система кодирования видео/изображения может включать в себя первое устройство (устройство источника) и второе устройство (принимающее устройство). Устройство источника может доставлять информацию или данные кодированного видео/изображения в форме файла или потоковой передачи на принимающее устройство посредством цифрового носителя данных или сети.
[46] Устройство источника может включать в себя источник видео, устройство кодирования и передатчик. Принимающее устройство может включать в себя приемник, устройство декодирования и устройство визуализации. Устройство кодирования может называться устройством кодирования видео/изображения, и устройство декодирования может называться устройством декодирования видео/изображения. Передатчик может быть включен в устройство кодирования. Приемник может быть включен в устройство декодирования. Устройство визуализации может включать в себя дисплей, и дисплей может быть выполнен как отдельное устройство или внешний компонент.
[47] Источник видео может получать видео/изображение посредством процесса захвата, синтеза или генерации видео/изображения. Источник видео может включать в себя устройство захвата видео/изображения и/или устройство генерации видео/изображения. Устройство захвата видео/изображения может включать в себя, например, одну или более камер, архивы видео/изображения, включающие в себя ранее захваченное видео/изображения и тому подобное. Устройство генерации видео/изображения может включать в себя, например, компьютеры, планшеты и смартфоны и может (электронным способом) генерировать видео/изображения. Например, виртуальное видео/изображение может генерироваться компьютером или т.п. В этом случае, процесс захвата видео/изображения может заменяться процессом генерации соответствующих данных.
[48] Устройство кодирования может кодировать входное видео/изображение. Устройство кодирования может выполнять ряд процедур, таких как предсказание, преобразование и квантование для эффективности сжатия и кодирования. Кодированные данные (кодированная информация видео/изображения) может выводиться в форме битового потока.
[49] Передатчик может передавать кодированную информацию видео/изображения или вывод данных в форме битового потока на приемник принимающего устройства посредством цифрового носителя данных или сети в форме файла или потоковой передачи. Цифровой носитель данных может включать в себя различные носители данных, такие как USB, SD, CD, DVD, Blu-ray, HDD, SSD и тому подобное. Передатчик может включать в себя элемент для генерации медиа-файла посредством предопределенного файлового формата и может включать в себя элемент для передачи через широковещательную/коммуникационную сеть. Приемник может принимать/извлекать битовый поток и передавать принятый битовый поток на устройство декодирования.
[50] Устройство декодирования может декодировать видео/изображение путем выполнения ряда процедур, таких как деквантование, обратное преобразование и предсказание, соответствующие операции устройства кодирования.
[51] Устройство визуализации может визуализировать декодированное видео/изображение. Визуализированное видео/изображение может быть отображено посредством дисплея.
[52] Настоящий документ относится к кодированию видео/изображения. Например, способы/варианты осуществления, раскрытые в настоящем документе, могут применяться к способу, раскрытому в многоцелевом кодировании видео (VVC), стандарте EVC (основного кодирования видео), стандарте AOMedia Video 1 (AV1), 2-ом поколении стандарта кодирования аудио-видео (AVS2) или стандарте кодирования видео/изображение следующего поколения (например, H.267 или H.268 и т.д.).
[53] Настоящий документ представляет различные варианты осуществления кодирования видео/изображения, и варианты осуществления могут выполняться в комбинации друг с другом, если не упомянуто иное.
[54] В настоящем документе, видео может относиться к последовательности изображений во времени. Картинка обычно относится к единице, представляющей одно изображение в конкретной временной зоне, и вырезка (слайс)/мозаичный элемент представляет собой единицу, образующую часть картинки в кодировании. Вырезка/мозаичный элемент может включать в себя одну или более единиц дерева кодирования (CTU). Одна картинка может состоять из одной или более вырезок/мозаичных элементов. Одна картинка может состоять из одной или более групп мозаичных элементов. Одна группа мозаичных элементов может включать в себя один или более мозаичных элементов. Кирпичик может представлять прямоугольную область строк CTU в мозаичном элементе в картинке. Мозаичный элемент может разбиваться на множество кирпичиков, каждый из которых состоит из одной или более строк CTU в мозаичном элементе. Мозаичный элемент, который не разбивается на множество кирпичиков, может также упоминаться как кирпичик. Сканирование кирпичиков является конкретным последовательным упорядочиванием CTU, разбивающих картинку, в которой CTU упорядочены последовательно в растровом сканировании CTU в кирпичике, кирпичики в мозаичном элементе упорядочены последовательно в растровом сканировании кирпичиков мозаичного элемента, и мозаичные элементы в картинке упорядочены последовательно в растровом сканировании мозаичных элементов картинки. Мозаичный элемент представляет собой прямоугольную область CTU в конкретном столбце мозаичных элементов и конкретной строке мозаичных элементов в картинке. Столбец мозаичных элементов представляет собой прямоугольную область CTU, имеющую высоту, равную высоте картинки, и ширину, специфицированную синтаксическими элементами в наборе параметров картинки. Строка мозаичных элементов представляет собой прямоугольную область CTU, имеющую высоту, специфицированную синтаксическими элементами в наборе параметров картинки, и ширину, равную ширине картинки. Сканирование мозаичного элемента представляет собой конкретное последовательное упорядочивание CTU, разбивающих картинку, в которой CTU упорядочены последовательно в растровом сканировании CTU в мозаичном элементе, в то время как мозаичные элементы в картинке упорядочены последовательно в растровом сканировании мозаичных элементов картинки. Вырезка включает в себя целое число кирпичиков картинки, которые могут исключительно содержаться в одной единице NAL. Вырезка может состоять либо из ряда полных мозаичных элементов, либо только жесткой последовательности полных кирпичиков одного мозаичного элемента. Группы мозаичных элементов и вырезки могут использоваться взаимозаменяемым образом в настоящем документе. Например, в настоящем документе, заголовок группа мозаичных элементов/заголовок группы мозаичных элементов может называться вырезкой/заголовком вырезки.
[55] Пиксел или пел (элемент изображения) может означать наименьшую единицу, составляющую одну картинку (или изображение). Также, ‘выборка’ (‘дискретный отсчет’) может использоваться как термин, соответствующий пикселу. Выборка может обычно представлять пиксел или значение пиксела и может представлять только пиксел/пиксельное значение компонента яркости или только пиксел/пиксельное значение компонента цветности.
[56] Единица может представлять базовую единицу обработки изображения. Единица может включать в себя по меньшей мере одну из конкретных областей картинки и информацию, относящуюся к области. Одна единица может включать в себя один блок яркости и два блока цветности (например, cb, cr). Единица может использоваться взаимозаменяемо с такими терминами, как блок или площадь (область), в некоторых случаях. В общем случае, блок M×N может включать в себя выборки (или массивы выборок) или набор (или массив) коэффициентов преобразования из M столбцов и N строк.
[57] В настоящем документе, термин “/” и “,” должен интерпретироваться, чтобы указывать “и/или”. Например, выражение “A/B” может означать “A и/или B”. Далее, “A, B” может означать “A и/или B”. Далее, “A/B/C” может означать “по меньшей мере одно из A, B и/или C”. Также, “A/B/C” может означать “по меньшей мере одно из A, B и/или C”.
[58] Далее, в настоящем документе, термин “или” должен интерпретироваться, чтобы указывать “и/или”. Например, выражение “A или B” может содержать 1) только A, 2) только B и/или 3) как A, так и B. Иными словами, термин “или” в настоящем документе должен интерпретироваться, чтобы указывать “дополнительно или альтернативно”.
[59] Фиг. 2 представляет собой схематичное представление, иллюстрирующее конфигурацию устройства кодирования видео/изображения, в котором может быть применен вариант(ы) осуществления настоящего документа. Далее, устройство кодирования видео может включать в себя устройство кодирования изображения.
[60] Со ссылкой на фиг. 2, устройство кодирования 200 включает в себя модуль 210 разбиения изображения, предсказатель 220, процессор 230 остатка и энтропийный кодер 240, сумматор 250, фильтр 260 и память 270. Предсказатель 220 может включать в себя интер-предсказатель 221 и интра-предсказатель 222. Процессор 230 остатка может включать в себя преобразователь 232, квантователь 233, деквантователь 234 и обратный преобразователь 235. Процессор 230 остатка может дополнительно включать в себя вычитатель 231. Сумматор 250 может называться модулем восстановления или генератором восстановленного блока. Модуль 210 разбиения изображения, предсказатель 220, процессор 230 остатка, энтропийный кодер 240, сумматор 250 и фильтр 260 могут быть выполнены в виде по меньшей мере одного аппаратного компонента (например, чипсета кодера или процессора) в соответствии с вариантом осуществления. Кроме того, память 270 может включать в себя буфер декодированных картинок (DPB) или может быть выполнена в виде цифрового носителя данных. Аппаратный компонент может дополнительно включать в себя память 270 как внутренний/внешний компонент.
[61] Модуль 210 разбиения изображения может разделять входное изображение (или картинку или кадр), введенное в устройство кодирования 200, на один или более процессоров. Например, процессор может называться единицей кодирования (CU). В этом случае, единица кодирования может рекурсивно разбиваться в соответствии со структурой квадродерева/двоичного дерева/ троичного дерева (QTBTTT) из единицы дерева кодирования (CTU) или набольшей единицы кодирования (LCU). Например, одна единица кодирования может разбиваться на множество единиц кодирования большей глубины на основе структуры квадродерева, структуры двоичного дерева и/или структуры троичного дерева. В этом случае, например, структура квадродерева может применяться первой, и структура двоичного дерева и/или структура троичного дерева может применяться позже. Альтернативно, структура двоичного дерева может применяться первой. Процедура кодирования в соответствии с этим документом может выполняться на основе конечной единицы кодирования, которая далее не разбивается. В этом случае, наибольшая единица кодирования может использоваться как конечная единица кодирования на основе эффективности кодирования в соответствии с характеристиками изображения, или если необходимо, единица кодирования может рекурсивно разбиваться на единицы кодирования большей глубины, и единица кодирования, имеющая оптимальный размер, может использоваться как конечная единица кодирования. Здесь, процедура кодирования может включать в себя процедуру предсказания, преобразования и восстановления, что будет описано далее. В качестве другого примера, процессор может дополнительно включать в себя единицу предсказания (PU) или единицу преобразования (TU). В этом случае, единица предсказания и единица преобразования могут разделяться или разбиваться из вышеупомянутой конечной единицы кодирования. Единица предсказания может быть единицей предсказания выборки, единица преобразования может быть единицей для выведения коэффициента преобразования и/или единицей для выведения остаточного сигнала из коэффициента преобразования.
[62] Единица может использоваться взаимозаменяемо с такими терминами, как блок или площадь в некоторых случаях. В общем случае, блок M×N может представлять набор выборок или коэффициентов преобразования, составленный из M столбцов и N строк. Выборка может обычно представлять пиксел или значение пиксела, может представлять только пиксел/пиксельное значение компонента яркости или представлять только пиксел/пиксельное значение компонента цветности. Выборка может использоваться как термин, соответствующий одной картинке (или изображению) для пиксела или пела.
[63] В устройстве 200 кодирования, сигнал предсказания (предсказанный блок, массив выборки предсказания), выведенный из интер-предсказателя 221 или интра-предсказателя 222, вычитается из входного сигнала изображения (исходного блока, массива исходной выборки), чтобы генерировать остаточный сигнал (остаточный блок, массив остаточной выборки), и сгенерированный остаточный сигнал передается на преобразователь 232. В этом случае, как показано, модуль для вычитания сигнала предсказания (предсказанного блока, массива выборки предсказания) из входного сигнала изображения (исходного блока, массива исходной выборки) в кодере 200 может называться вычитателем 231. Предсказатель может выполнять предсказание на блоке, подлежащем обработке (далее упоминаемом как текущий блок), и генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Предсказатель может определять, применяется ли интра-предсказание или интер-предсказание к текущему блоку на базе CU. Как описано далее в описании каждого режима предсказания, предсказатель может генерировать различную информацию, относящуюся к предсказанию, такую как информация режима предсказания, и передавать сгенерированную информацию на энтропийный кодер 240. Информация о предсказании может кодироваться в энтропийном кодере 240 и выводиться в форме битового потока.
[64] Интра-предсказатель 222 может предсказывать текущий блок путем обращения к выборкам в текущей картинке. Опорные выборки могут располагаться по соседству с текущим блоком или могут располагаться на отдалении в соответствии с режимом предсказания. В интра-предсказании, режимы предсказания могут включать в себя множество ненаправленных режимов и множество направленных режимов. Ненаправленный режим может включать в себя, например, режим DC и планарный режим. Направленный режим может включать в себя, например, 33 направленных режима предсказания или 65 направленных режимов предсказания в соответствии со степенью детальности направления предсказания. Однако это только пример, больше или меньше направленных режимов предсказания может использоваться в зависимости от настройки. Интра-предсказатель 222 может определять режим предсказания, применяемый к текущему блоку, с использованием режима предсказания, применяемого к соседнему блоку.
[65] Интер-предсказатель 221 может выводить предсказанный блок для текущего блока на основе опорного блока (массива опорной выборки), специфицированного вектором движения на опорной картинке. Здесь, чтобы уменьшить количество информации движения, передаваемой в режиме интер-предсказания, информация движения может предсказываться в единицах блоков, подблоков или выборок на основе корреляции информации движения между соседним блоком и текущим блоком. Информация движения может включать в себя вектор движения и индекс опорной картинки. Информация движения может дополнительно включать в себя информацию направления интер-предсказание (L0-предсказания, L1- предсказания, Bi-предсказания и т.д.). В случае интер-предсказания, соседний блок может включать в себя пространственный соседний блок, присутствующий в текущей картинке, и временной соседний блок, присутствующий в опорной картинке. Опорная картинка, включающая в себя опорный блок, и опорная картинка, включающая в себя временной соседний блок, может быть той же самой или различной. Временной соседний блок может называться совмещенным опорным блоком, совмещенной CU (colCU) и тому подобным, и опорная картинка, включающая в себя временной соседний блок, может называться совмещенной картинкой (colPic). Например, интер-предсказатель 221 может конфигурировать список кандидатов информации движения на основе соседних блоков и генерировать информацию, указывающую, какой кандидат используется для выведения вектора движения и/или индекса опорной картинки текущего блока. Интер-предсказание может выполняться на основе различных режимов предсказания. Например, в случае режима пропуска и режима слияния, интер-предсказатель 221 может использовать информацию движения соседнего блока как информацию движения текущего блока. В режиме пропуска, в отличие от режима слияния, остаточный сигнал может не передаваться. В случае режима предсказания вектора движения (MVP), вектор движения соседнего блока может использоваться как предсказатель вектора движения, и вектор движения текущего блока может указываться сигнализацией разности векторов движения.
[66] Предсказатель 220 может генерировать сигнал предсказания на основе различных способов предсказания, описанных ниже. Например, предсказатель может не только применять интра-предсказание или интер-предсказание, чтобы предсказывать один блок, но также применять как интра-предсказание, так и интер-предсказание. Это может называться комбинированным интер- и интра-предсказанием (CIIP). Кроме того, предсказатель может основываться на режиме предсказания с внутриблочным копированием (IBC) или режиме палитры для предсказания блока. Режим предсказания IBC или режим палитры может использоваться для кодирования изображения/видео контента игры или тому подобного, например, кодирования экранного контента (SCC). IBC в основном выполняет предсказание в текущей картинке, но может выполняться подобно интер-предсказанию, причем опорный блок выводится в текущей картинке. То есть, IBC может использовать по меньшей мере один из методов интер-предсказания, описанных в настоящем документе. Режим палитры может рассматриваться как пример интра-кодирования или интра-предсказания. Когда применяется режим палитры, значение выборки в картинке может сигнализироваться на основе информации о таблице палитры и индексе палитры.
[67] Сигнал предсказания, генерируемый предсказателем (включая интер-предсказатель 221 и/или интра-предсказатель 222), может использоваться для генерации восстановленного сигнала или генерации остаточного сигнала. Преобразователь 232 может генерировать коэффициенты преобразования путем применения метода преобразования к остаточному сигналу. Например, метод преобразования может включать в себя по меньшей мере одно из дискретного косинусного преобразования (DCT), дискретного синусного преобразования (DST), преобразования Карунена-Лоэва (KLT), преобразования на основе графа (GBT) или условно нелинейного преобразования (CNT). Здесь, GBT означает преобразование, полученное из графа, когда информация отношения между пикселами представлена графом. CNT относится к преобразованию, генерируемому на основе сигнала предсказания, сгенерированного с использованием всех ранее восстановленных пикселов. Кроме того, процесс преобразования может применяться к квадратным пиксельным блокам, имеющим тот же самый размер, или может применяться к блокам, имеющим переменный, а не квадратный размер.
[68] Квантователь 233 может квантовать коэффициенты преобразования и передавать их на энтропийный кодер 240, и энтропийный кодер 240 может кодировать квантованный сигнал (информацию о квантованных коэффициентах преобразования) и выводить битовый поток. Информация о квантованных коэффициентах преобразования может упоминаться как остаточная информация. Квантователь 233 может переупорядочивать тип блока квантованных коэффициентов преобразования в форму одномерного вектора на основе порядка сканирования коэффициентов и генерировать информацию о квантованных коэффициентах преобразования на основе квантованных коэффициентов преобразования в форме одномерного вектора. Информация о коэффициентах преобразования может генерироваться. Энтропийный кодер 240 может выполнять различные способы кодирования, такие как, например, экспоненциальное кодирование Голомба, контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC) и т.д. Энтропийный кодер 240 может кодировать информацию, необходимую для восстановления видео/изображения иную, чем квантованные коэффициенты преобразования (например, значения синтаксических элементов и т.д.) вместе или отдельно. Кодированная информация (например, кодированная информация видео/изображения) может быть передана или сохранена в единицах NAL (уровня сетевой абстракции) в форме битового потока. Информация видео/изображения может дополнительно включать в себя информацию о различных наборах параметров, таких как набор параметров адаптации (APS), набор параметров картинки (PPS), набор параметров последовательности (SPS) или набор параметров видео (VPS). Кроме того, информация видео/изображения может дополнительно включать в себя информацию общих ограничений. В настоящем документе, информация и/или синтаксические элементы, переданные/сигнализированные от устройства кодирования на устройство декодирования, могут быть включены в информацию видео/картинки. Информация видео/ изображения может кодироваться посредством вышеописанной процедуры кодирования и включаться в битовый поток. Битовый поток может быть передан по сети или может быть сохранен в цифровом носителе данных. Сеть может включать в себя широковещательную сеть и/или сеть связи, и цифровой носитель данных может включать в себя различные носители данных, такие как USB, SD, CD, DVD, Blu-ray, HDD, SSD и тому подобное. Передатчик (не показан), передающий сигнал, выведенный из энтропийного кодера 240, и/или носитель данных (не показан), хранящий сигнал, могут быть включены как внутренний/внешний элемент устройства кодирования 200, и альтернативно, передатчик может быть включен в энтропийный кодер 240.
[69] Квантованные коэффициенты преобразования, выведенные из квантователя 233, могут использоваться, чтобы генерировать сигнал предсказания. Например, остаточный сигнал (остаточный блок или остаточные выборки) могут восстанавливаться путем применения деквантования и обратного преобразования к квантованным коэффициентам преобразования посредством деквантователя 234 и обратного преобразователя 235. Сумматор 250 суммирует восстановленный остаточный сигнал с сигналом предсказания, выведенным из интер-предсказателя 221 или интра-предсказателя 222, чтобы генерировать восстановленный сигнал (восстановленную картинку, восстановленный блок, восстановленный массив выборки). Если не имеется остатка для блока, подлежащего обработке, как в случае применения режима пропуска, предсказанный блок может использоваться в качестве восстановленного блока. Сумматор 250 может называться модулем восстановления или генератором восстановленного блока. Сгенерированный восстановленный сигнал может использоваться для интра-предсказания следующего блока, подлежащего обработке в текущей картинке, и может использоваться для интер-предсказания следующей картинки посредством фильтрации, как описано ниже.
[70] Между тем, отображение яркости с масштабированием цветности (LMCS) может применяться при кодировании и/или восстановлении картинки.
[71] Фильтр 260 может улучшать субъективное/объективное качество изображения путем применения фильтрации к восстановленному сигналу. Например, фильтр 260 может генерировать модифицированную восстановленную картинку путем применения различных способов фильтрации к восстановленной картинке и сохранять модифицированную восстановленную картинку в памяти 270, в частности DPB памяти 270. Различные способы фильтрации могут включать в себя, например, фильтрацию устранения блочности, адаптивное смещение выборки, адаптивный контурный фильтр, двунаправленный фильтр и тому подобное. Фильтр 260 может генерировать различную информацию, относящуюся к фильтрации, и передать сгенерированную информацию на энтропийный кодер 240, как описано далее в описании каждого способа фильтрации. Информация, относящаяся к фильтрации, может кодироваться энтропийным кодером 240 и выводиться в форме битового потока.
[72] Модифицированная восстановленная картинка, переданная в память 270, может использоваться как опорная картинка в интер-предсказателе 221. Когда интер-предсказание применяется посредством устройства кодирования, можно избежать несогласованности между устройством 200 кодирования 200 и устройством декодирования, и эффективность кодирования может быть повышена.
[73] DPB памяти 270 DPB может хранить модифицированную восстановленную картинку для использования в качестве опорной картинки в интер-предсказателе 221. Память 270 может хранить информацию движения блока, из которого выводится (или кодируется) информация движения в текущей картинке и/или информация движения блоков в картинке, которая уже была восстановлена. Сохраненная информация движения может быть передана на интер-предсказатель 221 и использована как информация движения пространственного соседнего блока или информация движения временного соседнего блока. Память 270 может хранить восстановленные выборки восстановленных блоков в текущей картинке и может переносить восстановленные выборки на интра-предсказатель 222.
[74] Фиг. 3 представляет собой схематичное представление, иллюстрирующее конфигурацию устройства декодирования видео/изображения, в котором может быть применен вариант(ы) осуществления настоящего документа.
[75] Со ссылкой на фиг. 3, устройство декодирования 300 может включать в себя энтропийный декодер 310, процессор 320 остатка, предсказатель 330, сумматор 340, фильтр 350, память 360. Предсказатель 330 может включать в себя интер-предсказатель 332 и интра-предсказатель 331. Процессор 320 остатка может включать в себя деквантователь 321 и обратный преобразователь 322. Энтропийный декодер 310, процессор 320 остатка, предсказатель 330, сумматор 340 и фильтр 350 могут быть выполнены в виде аппаратного компонента (например, чипсета декодера или процессора) в соответствии с вариантом осуществления. Кроме того, память 360 может включать в себя буфер декодированных картинок (DPB) или может быть выполнена в виде цифрового носителя данных. Аппаратный компонент может дополнительно включать в себя память 360 в качестве внутреннего/внешнего компонента.
[76] Когда битовый поток, включающий в себя информацию видео/изображения, введен, устройство 300 декодирования может восстановить изображение соответственно процессу, в котором информация видео/изображения обработана в устройстве кодирования согласно фиг. 2. Например, устройство 300 декодирования может выводить единицы/блоки на основе информации, относящейся к блочному разбиению, полученной из битового потока. Устройство 300 декодирования может выполнять декодирование с использованием процессора, применяемого в устройстве кодирования. Таким образом, процессор декодирования может быть единицей кодирования, например, единица кодирования может разбиваться в соответствии со структурой квадродерева, структурой двоичного дерева и/или структурой троичного дерева из единицы дерева кодирования или наибольшей единицы кодирования. Одна или более единиц преобразования могут быть выведены из единицы кодирования. Восстановленный сигнал изображения, декодированный и выведенный посредством устройства 300 декодирования, может восстанавливаться посредством устройства воспроизведения.
[77] Устройство 300 декодирования может принимать сигнал, выведенный из устройства кодирования согласно фиг. 2 в форме битового потока, и принятый сигнал может декодироваться посредством энтропийного декодера 310. Например, энтропийный декодер 310 может синтаксически анализировать битовый поток, чтобы вывести информацию (например, информацию видео/ изображения), необходимую для восстановления изображения (или восстановлении картинки). Информация видео/изображения может дополнительно включать в себя информацию о различных наборах параметров, таких как набор параметров адаптации (APS), набор параметров картинки (PPS), набор параметров последовательности (SPS), или набор параметров видео (VPS). Кроме того, информация видео/изображения может дополнительно включать в себя информацию общих ограничений. Устройство декодирования может дополнительно декодировать картинку на основе информации о наборе параметров и/или информации общих ограничений. Сигнализированная/принятая информация и/или синтаксические элементы, описанные далее в настоящем документе, могут быть декодированы, чтобы декодировать процедуру декодирования, и получены из битового потока. Например, энтропийный декодер 310 декодирует информацию в битовом потоке на основе способа кодирования, такого как экспоненциальное кодирование Голомба, CAVLC или CABAC, и выводит синтаксические элементы, требуемые для восстановления изображения, и квантованные значения коэффициентов преобразования для остатка. Более конкретно, способ энтропийного декодирования CABAC может принимать бин, соответствующий синтаксическому элементу в битовом потоке, определять контекстную модель с использованием информации декодирования целевого синтаксического элемента, информации декодирования для декодирования целевого блока или информации о символе/бине, декодированном на предыдущей стадии, и выполнять арифметическое декодирование на бине путем предсказания вероятности появления бина в соответствии с определенной контекстной моделью, и генерировать символ, соответствующий значению каждого синтаксического элемента. В этом случае, способ энтропийного декодирования CABAC может обновлять контекстную модель с использованием информации о декодированном символе/бине для контекстной модели следующего символа/бина после определения контекстной модели. Информация, относящаяся к предсказанию, среди информации, декодированной энтропийным декодером 310, может предоставляться на предсказатель (интер-предсказатель 332 и интра-предсказатель 331), и остаточное значение, на котором выполнялось энтропийное декодирование в энтропийном декодере 310, то есть, квантованные коэффициенты преобразования и информация о связанных параметрах, могут вводиться в процессор 320 остатка. Процессор 320 остатка может выводить остаточный сигнал (остаточный блок, остаточные выборки, массив остаточной выборки). Кроме того, информация о фильтрации среди информации, декодированной энтропийным декодером 310, может предоставляться в фильтр 350. Между тем, приемник (не показан) для приема сигнала, выведенного из устройства кодирования, может дополнительно быть выполнен как внутренний/внешний элемент устройства 300 декодирования, или приемник может быть компонентом энтропийного декодера 310. Между тем, устройство декодирования в соответствии с настоящим документом может упоминаться как устройство декодирования видео/изображения/ картинки устройства декодирования, и устройство декодирования может быть классифицировано на декодер информации (декодер информации видео/изображения/картинки) и декодер выборки (декодер выборки видео/изображения/картинки). Декодер информации может включать в себя энтропийный декодер 310, и декодер выборки может включать в себя по меньшей мере одно из деквантователя 321, обратного преобразователя 322, сумматора 340, фильтра 350, памяти 360, интер-предсказателя 332 и интра-предсказателя 331.
[78] Деквантователь 321 может деквантовать квантованные коэффициенты преобразования и выводить коэффициенты преобразования. Деквантователь 321 может переупорядочивать квантованные коэффициенты преобразования в форму двумерного блока. В этом случае, переупорядочение может выполняться на основе порядка сканирования коэффициентов, выполняемого в устройстве кодирования. Деквантователь 321 может выполнять деквантование на квантованных коэффициентах преобразования с использованием параметра квантования (например, информации о размере шага квантования) и получать коэффициенты преобразования.
[79] Обратный преобразователь 322 обратно преобразует коэффициенты преобразования, чтобы получить остаточный сигнал (остаточный блок, массив остаточной выборки).
[80] Предсказатель может выполнять предсказание на текущем блоке и генерировать предсказанный блок, включающий в себя выборки предсказания для текущего блока. Предсказатель может определять, применяется ли интра-предсказание или интер-предсказание к текущему блоку, на основе информации о предсказании, выведенной из энтропийного декодера 310, и может определять конкретный режим интра/интер-предсказания.
[81] Предсказатель 320 может генерировать сигнал предсказания на основе различных способов предсказания, описанных ниже. Например, предсказатель может не только применять интра-предсказание или интер-предсказание, чтобы предсказать один блок, но также одновременно применять интра-предсказание и интер-предсказание. Это может называться комбинированным интер- и интра-предсказанием (CIIP). Кроме того, предсказатель может основываться на режиме предсказания с внутриблочным копированием (IBC) или режиме палитры для предсказания блока. Режим предсказания IBC или режим палитры может использоваться для кодирования изображения/видео контента игры или тому подобного, например, кодирования экранного контента (SCC). IBC в основном выполняет предсказание в текущей картинке, но может выполняться подобно интер-предсказанию в том, что опорный блок выводится в текущей картинке. То есть, IBC может использовать по меньшей мере один из методов интер-предсказания, описанных в настоящем документе. Режим палитры может рассматриваться как пример интра-кодирования или интра-предсказания. Когда применяется режим палитры, значение выборки в картинке может сигнализироваться на основе информации о таблице палитры и индексе палитры.
[82] Интра-предсказатель 331 может предсказывать текущий блок путем обращения к выборкам в текущей картинке. Опорные выборки могут располагаться по соседству с текущим блоком или могут располагаться на отдалении в соответствии с режимом предсказания. В интра-предсказании, режимы предсказания могут включать в себя множество ненаправленных режимов и множество направленных режимов. Интра-предсказатель 331 может определять режим предсказания, применяемый к текущему блоку, с использованием режима предсказания, применяемого к соседнему блоку.
[83] Интер-предсказатель 332 может выводить предсказанный блок для текущего блока на основе опорного блока (массива опорной выборки), специфицированного вектором движения на опорной картинке. В этом случае, чтобы уменьшить количество информации движения, передаваемой в режиме интер-предсказания, информация движения может предсказываться в единицах блоков, подблоков или выборок на основе корреляции информации движения между соседним блоком и текущим блоком. Информация движения может включать в себя вектор движения и индекс опорной картинки, информация движения может дополнительно включать в себя информацию направления интер-предсказания (L0-предсказания, L1-предсказания, Bi-предсказания и т.д.). В случае интер-предсказания, соседний блок может включать в себя пространственный соседний блок, присутствующий в текущей картинке, и временной соседний блок, присутствующий в опорной картинке. Например, интер-предсказатель 332 может конфигурировать список кандидатов информации движения на основе соседних блоков и выводить вектор движения текущего блока и/или индекс опорной картинки, основанный на принятой информации о выборе кандидата. Интер-предсказание может выполняться на основе различных режимов предсказания, и информация о предсказании может включать в себя информацию, указывающую режим интер-предсказания для текущего блока.
[84] Сумматор 340 может генерировать восстановленный сигнал (восстановленную картинку, восстановленный блок, восстановленный массив выборки) путем суммирования полученного остаточного сигнала с сигналом предсказания (предсказанный блок, предсказанный массив выборки), выведенным из предсказателя (включая интер-предсказатель 332 и/или интра-предсказатель 331). Ели не имеется остатка для блока, подлежащего обработке, как при применении режима пропуска, предсказанный блок может использоваться как восстановленный блок.
[85] Сумматор 340 может называться модулем восстановления или генератором восстановленного блока. Генерируемый восстановленный сигнал может использоваться для интра-предсказания следующего блока подлежащего обработке в текущей картинке, может выводиться посредством фильтрации, как описано ниже, или может использоваться для интер-предсказания следующей картинки.
[86] Между тем, отображение яркости с масштабированием цветности (LMCS) может применяться в процессе декодирования картинки.
[87] Фильтр 350 может улучшать субъективное/объективное качество изображения путем применения фильтрации к восстановленному сигналу. Например, фильтр 350 может генерировать модифицированную восстановленную картинку путем применения различных способов фильтрации к восстановленной картинке и сохранять модифицированную восстановленную картинку в памяти 360, в частности, DPB памяти 360. Различные способы фильтрации могут включать в себя, например, фильтрацию устранения блочности, адаптивное смещение выборки, адаптивный контурный фильтр, двунаправленный фильтр и тому подобное.
[88] (Модифицированная) восстановленная картинка, сохраненная в DPB памяти 360, может использоваться в качестве опорной картинки в интер-предсказателе 332. Память 360 может хранить информацию движения блока, из которой выводится (или декодируется) информация движения в текущей картинке и/или информация движения блоков в картинке, которая уже была восстановлена. Сохраненная информация движения может быть передана на интер-предсказатель 260, чтобы использоваться как информация движения пространственного соседнего блока или информация движения временного соседнего блока. Память 360 может хранить восстановленные выборки восстановленных блоков в текущей картинке и переносить восстановленные выборки на интра-предсказатель 331.
[89] В настоящем раскрытии, варианты осуществления, описанные в фильтре 260, интер-предсказателе 221 и интра-предсказателе 222 устройства кодирования 200, могут быть теми же или соответственно применимыми к фильтру 350, интер-предсказателю 332 и интра-предсказателю 331 устройства 300 декодирования. То же самое применимо к интер-предсказателю 332 и интра-предсказателю 331.
[90] Между тем, в отношении интер-предсказания, был предложен способ интер-предсказания, который учитывает искажение изображения. Более конкретно, была предложена аффинная модель движения, которая эффективно выводит векторы движения для подблоков или точек выборок текущего блока и улучшает точность интер-предсказания независимо от деформации вследствие вращения изображения, увеличения или уменьшения масштаба. Иными словами, предложена аффинная модель движения, которая выводит векторы движения для подблоков или точек выборок текущего блока. Предсказание, которое использует аффинная модель движения, может упоминаться как аффинное интер-предсказание или предсказание аффинного движения.
[91] Например, аффинное интер-предсказание с использованием аффинной модели движения может эффективно выражать четыре вида движения, то есть, четыре деформации, как описано ниже.
[92] Фиг. 4 иллюстрирует движение, выраженное посредством аффинной модели движения. Со ссылкой на фиг. 4, движение, которое может быть представлено посредством аффинной модели движения, может включать в себя поступательное движение, масштабирующее движение, вращательное движение и сдвиговое движение. То есть, масштабирующее движение, в котором изображение (его часть) масштабируется с течением времени, вращательное движение, в котором изображение (его часть) поворачивается с течением времени, и сдвиговое движение, в котором изображение (его часть) деформируется в форме параллелограмма с течением времени, а также поступательное движение, в котором изображение (его часть) планарно перемещается с течением времени, иллюстрируемые на фиг. 4, могут быть эффективно представлены, как иллюстрируется на фиг. 3.
[93] Устройство кодирования/устройство декодирования может предсказывать форму искажения изображения на основе векторов движения в контрольных точках (CP) текущего блока посредством аффинного интер-предсказания, при этом эффективность сжатия изображения может быть повышена за счет увеличения точности предсказания. Кроме того, поскольку вектор движения для по меньшей мере одной контрольной точки текущего блока может быть выведен с использованием вектора движения соседнего блока текущего блока, количество данных в дополнительной информации может быть уменьшено, и эффективность интер-предсказания может быть существенно повышена.
[94] В качестве примера аффинного интер-предсказания, может потребоваться информация движения в трех контрольных точках, то есть, трех опорных точках.
[95] Фиг. 5 иллюстрирует аффинная модель движения, в которой используются векторы движения для трех контрольных точек.
[96] Когда верхней-левой позицией выборки в текущем блоке 500 является (0, 0), позиции выборок (0, 0), (w, 0) и (0, h) могут быть определены как контрольные точки, как показано на фиг. 5. Затем, контрольная точка позиции выборки (0, 0) может быть представлена как CP0, контрольная точка позиции выборки (w, 0) может быть представлена как CP1, и контрольная точка позиции выборки (0, h) может быть представлена как CP2.
[97] Уравнение для аффинной модели движения может быть выведено с использованием контрольных точек и векторов движения соответствующих контрольных точек, описанных выше. Уравнение для аффинной модели движения может быть выражено следующим образом.
[98] [Уравнение 1]
0x
0y
1x
1y
2x
2y
x
y
[99] Здесь, w обозначает ширину текущего блока 500, h обозначает высоту текущего блока 500, v и v обозначают х-компонент и y-компонент вектора движения CP0, соответственно, v и v обозначают х-компонент и y-компонент вектора движения CP1, соответственно, и v и v обозначают х-компонент и y-компонент вектора движения CP2, соответственно. Кроме того, x обозначает х-компонент позиции целевой выборки в текущем блоке 500, y обозначает y-компонент позиции целевой выборки в текущем блоке 500, v обозначает х-компонент вектора движения целевой выборки в текущем блоке 500, и v обозначает y-компонент вектора движения целевой выборки в текущем блоке 500.
0x
0y
1x
1y
2x
2y
[100] Поскольку вектор движения CP0, вектор движения CP1 и вектор движения CP2 известны, вектор движения, основанный на позиции выборки в текущем блоке, может быть выведен на основе уравнения 1. То есть, в соответствии с аффинной моделью движения, векторы движения v0(v, v), v1(v, v) и v2(v, v) в контрольных точках могут масштабироваться на основе отношения расстояний между координатами (x, y) целевой выборки и трех контрольных точек, чтобы вывести векторы движения целевой выборки в соответствии с позицией целевой выборки. То есть, в соответствии с аффинной моделью движения, вектор движения каждой выборки в текущем блоке может выводиться на основе векторов движения контрольных точек. Между тем, набор векторов движения выборок в текущем блоке, выведенном в соответствии с аффинной моделью движения, может упоминаться как аффинное поле векторов движения (MVF).
[101] Между тем, шесть параметров для уравнения 1 могут быть представлены как a, b, c, d, e и f, как показано в уравнении 1 ниже, и уравнение для аффинной модели движения, представленной шестью параметрами, может быть следующим.
[102] [Уравнение 2]
0x
0y
1x
1y
2x
2y
x
y
[103] Здесь, w обозначает ширину текущего блока 500, h обозначает высоту текущего блока 500, v и v обозначают х-компонент и y-компонент вектора движения CP0, v и v представляют х-компонент и y-компонент вектора движения CP1, соответственно, и v и v представляют х-компонент и y-компонент вектора движения CP2, соответственно. Кроме того, x обозначает х-компонент позиции целевой выборки в текущем блоке 500, y обозначает y-компонент позиции целевой выборки в текущем блоке 500, v обозначает х-компонент вектора движения целевой выборки в текущем блоке 500, v обозначает y-компонент вектора движения целевой выборки в текущем блоке 500.
[104] Аффинная модель движения или аффинное интер-предсказание с использованием шести параметров может упоминаться как 6-параметрическая аффинная модель движения или AF6.
[105] Кроме того, в качестве примера аффинного интер-предсказания, может потребоваться информация движения в двух контрольных точках, т.е., двух опорных точках.
[106] Фиг. 6 иллюстрирует аффинная модель движения, в которой используются векторы движения для двух контрольных точек. Аффинная модель движения, использующая две контрольные точки, может представлять три движения, включая поступательное движение, масштабирующее движение и вращательное движение. Аффинная модель движения, представляющая три движения, может упоминаться как аффинная модель движения подобия или упрощенная аффинная модель движения.
[107] Когда верхней-левой позицией выборки в текущем блоке 600 является (0, 0), позиции выборок (0, 0) и (w, 0) могут быть определены как контрольные точки, как показано на фиг. 6. Затем, контрольная точка позиции выборки (0, 0) может быть представлена как CP0, и контрольная точка позиции выборки (w, 0) может быть представлена как как CP1.
[108] Уравнение для аффинной модели движения может быть выведено с использованием контрольных точек и векторов движения соответствующих контрольных точек, описанных выше. Уравнение для аффинной модели движения может быть выражено следующим образом.
[109] [Уравнение 3]
0x
0y
1x
1y
x
y
[110] Здесь, w обозначает ширину текущего блока 600, v и v обозначают x и y-компоненты вектора движения CP0, соответственно, и v и v обозначают x- и y-компоненты вектора движения CP1. Кроме того, x обозначает х-компонент позиции целевой выборки в текущем блоке 600, y обозначает y-компонент позиции целевой выборки в текущем блоке 600, v обозначает х-компонент вектора движения целевой выборки в текущем блоке 600, и v обозначает y-компонент вектора движения целевой выборки в текущем блоке 600.
[111] Между тем, четыре параметра уравнения 3 могут быть представлены как a, b, c и d, как в следующем уравнении, и уравнение для аффинной модели движения, представленной четырьмя параметрами, может быть следующим.
[112] [Уравнение 4]
0x
0y
1x
1y
x
y
[113] Здесь, w обозначает ширину текущего блока 600, v и v обозначают x- и y-компоненты вектора движения CP0, соответственно, и v и v обозначают x- и y-компоненты вектора движения CP1, соответственно. Кроме того, x обозначает х-компонент позиции целевой выборки в текущем блоке 600, y обозначает y-компонент позиции целевой выборки в текущем блоке 600, v обозначает х-компонент вектора движения целевой выборки в текущем блоке 600, и v обозначает y-компонент вектора движения целевой выборки в текущем блоке 600. Аффинная модель движения, использующая две контрольные точки, может быть представлена четырьмя параметрами a, b, c и d, как показано в уравнении 4, и, таким образом, аффинная модель движения, использующая четыре параметра, или аффинное интер-предсказание может упоминаться как 4-параметрическая аффинная модель движения или AF4. То есть, в соответствии с аффинной моделью движения, вектор движения каждой выборки в текущем блоке может выводиться на основе векторов движения контрольных точек. Между тем, набор векторов движения выборок в текущем блоке, выведенном в соответствии с аффинной моделью движения, может упоминаться как аффинное поле векторов движения (MVF).
[114] Между тем, как описано выше, вектор движения единицы выборки может выводиться посредством аффинной модели движения, и, таким образом, точность интер-предсказания может быть значительно улучшена. В этом случае, однако, сложность в процессе компенсации движения может быть существенно увеличена.
[115] Соответственно, это можно ограничить так, что выводится вектор движения единицы подблока текущего блока, вместо выведения вектора движения единицы выборки.
[116] Фиг. 7 иллюстрирует способ выведения вектора движения, основанного на подблоке, на основе аффинной модели движения. Фиг. 7 иллюстрирует случай, когда размер текущего блока составляет 16×16, и вектор движения выводится в единицах 4×4 подблоков. Подблок может быть установлен в различные размеры. Например, когда размер подблок установлен в n×n (n является положительным целым числом, например, n равно 4), вектор движения может быть выведен в единицах n×n подблоков в текущем блоке на основе аффинной модели движения, и могут применяться различные способы для выведения вектора движения, представляющего каждый подблок.
[117] Например, со ссылкой на фиг. 7, вектор движения каждого подблока может быть выведен с использованием позиции выборки в центре или внизу справа каждого подблока в качестве репрезентативной координаты. Здесь, позиция в центре внизу справа может указывать позицию выборки, расположенную внизу справа среди четырех выборок, расположенных в центре подблока. Например, когда n является нечетным числом, одна выборка может быть расположена в центре подблока, и в этом случае позиция центральной выборки может использоваться для выведения вектора движения подблока. Однако когда n является нечетным числом, четыре выборки могут быть расположены смежно в центре подблока, и в этом случае позиция выборки внизу справа может использоваться для выведения вектора движения. Например, со ссылкой на фиг. 7, репрезентативные координаты каждого подблока могут быть выведены как (2, 2), (6, 2), (10, 2), …, (14, 14), и устройство кодирования/устройство декодирования может выводить вектор движения каждого подблока путем подстановки каждой из репрезентативных координат подблоков в уравнение 1 или 3, описанное выше. Векторы движения подблоков в текущем блоке, выведенные посредством аффинной модели движения, могут упоминаться как аффинное MVF.
[118] Между тем, в качестве примера, размер подблока в текущем блоке может быть выведен на основе следующего уравнения.
[119] [Уравнение 5]
0x
0y
1x
1y
[120] Здесь, M обозначает ширину подблока, и N обозначает высоту подблока. Кроме того, v и v обозначают х-компонент и y-компонент CPMV0 текущего блока, v и v обозначают х-компонент и y-компонент CPMV1 текущего блока, w обозначает ширину текущего блока, h обозначает высоту текущего блока, и MvPre обозначает фракционную точность вектора движения. Например, фракционная точность вектора движения может быть установлена в 1/16.
[121] Между тем, в интер-предсказании с использованием вышеописанной аффинной модели движения, то есть, предсказании аффинного движения, может иметься аффинный режим слияния AF_MERGE и аффинный интер-режим AF_INTER. Здесь, аффинный интер-режим может упоминаться как аффинный режим MVP AF_MVP.
[122] Аффинный режим слияния подобен существующему режиму слияния в том, что MVD для вектора движения контрольных точек не передается. То есть, подобно существующему режиму пропуска/слияния, аффинный режим слияния относиться к способу кодирования/декодирования для выполнения предсказания путем выведения CPMV для каждых двух или трех контрольных точек из соседнего блока текущего блока.
[123] Например, когда режим AF_MRG применяется к текущему блоку, векторы движения CP0 и CP1 (а именно, CPMV0 и CPMV1) могут быть выведены из соседних блоков, к которым был применен аффинный режим, среди соседних блоков текущего блока. Иными словами, CPMV0 и CPMV1 соседних блоков, к которым применялся аффинный режим, могут быть выведены как кандидаты слияния или могут быть выведены как CPMV0 и CPMV1 для текущего блока на основе кандидатов слияния. Аффинная модель движения может быть выведена на основе CPMV0 и CPMV1 соседних блоков, представленных кандидатами слияния, и на основе аффинной модели движения могут быть выведены CPMV0 и CPMV1 для текущего блока.
[124] Аффинный интер-режим может представлять интер-предсказание, которое выводит предсказателей вектора движения (MVP) для векторов движения контрольных точек, векторы движения контрольных точек на основе принятых разностей векторов движения (MVD) и MVP, и аффинное MVF текущего блока на основе векторов движения контрольных точек; и выполняет предсказание на основе аффинного MVF. Здесь, вектор движения контрольной точки может обозначаться термином вектор движения контрольной точки (CPMV), MVP контрольной точки может обозначаться термином предсказатель вектора движения контрольной точки (CPMVP), MVD контрольной точки может обозначаться термином разность векторов движения контрольных точек (CPMVD). Более конкретно, например, устройство кодирования может выводить предсказатель вектора движения контрольной точки (CPMVP) и вектор движения контрольной точки (CPMV) для CP0 и CP1 (или CP0, CP1 и CP2), соответственно, и передавать или сохранять информацию о CPMVP и/или CPMVD, которая представляет разность между CPMVP и CPMV.
[125] Здесь, аффинный интер-режим применяется к текущему блоку, устройство кодирования/декодирования может формировать список кандидатов аффинного MVP на основе соседних блоков текущего блока, где кандидат аффинного MVP может упоминаться как кандидат пары CPMVP, и список кандидатов аффинного MVP может упоминаться как список кандидатов CPMVP.
[126] Также, каждый кандидат аффинного MVP может представлять комбинацию CPMVP CP0 и CP1 в четырех-параметрической аффинной модели движения и комбинацию CPMVP CP0, CP1 и CP2 в шести-параметрической аффинной модели движения.
[127] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую способ предсказания аффинного движения в соответствии с вариантом осуществления настоящего раскрытия.
[128] Со ссылкой на фиг. 8, способ предсказания аффинного движения может в основном быть описан следующим образом. После того как способ предсказания аффинного движения начат, сначала получают пару CPMV, S800. Здесь, если используется четырех-параметрическая аффинная модель, пара CPMV может включать в себя CPMV0 и CPMV1.
[129] Затем, компенсация аффинного движения может выполняться на основе пары CPMV, S810, после чего предсказание аффинного движения может быть завершено.
[130] Также, могут быть определены два аффинных режима предсказания, чтобы определять CPMV0 и CPMV1. Здесь, два аффинных режима предсказания могут включать в себя аффинный интер-режим и аффинный режим слияния. Аффинный интер-режим может сигнализировать информацию о разности векторов движения (MVD) между двумя векторами движения CPMV0 и CPMV1, чтобы явно определять CPMV0 и CPMV1. С другой стороны, аффинный режим слияния может выводить пару CPMV без сигнализации информации MVD.
[131] Иными словами, аффинный режим слияния может выводить CPMV текущего блока с использованием CPMV соседних блоков, кодированных в аффинном режиме, и если векторы движения определены единицей подблока, аффинный режим слияния может упоминаться как режим слияния подблоков.
[132] В аффинном режиме слияния, устройство кодирования может сигнализировать, на устройство декодирования, индексы соседних блоков, кодированных в аффинном режиме, для выведения CPMV текущего блока и может также сигнализировать значения разности между CPMV соседних блоков и CPMV текущего блока. Здесь, аффинный режим слияния может формировать список кандидатов аффинного слияния на основе соседних блоков, где индексы соседних блоков могут указывать соседние блоки, подлежащие использованию в списке кандидатов аффинного слияния, чтобы вывести CPMV текущего блока. Список кандидатов аффинного слияния может также упоминаться как список кандидатов слияния подблоков.
[133] Аффинный интер-режим может также упоминаться как режим аффинного MVP. В режиме аффинного MVP, CPMV текущего блока могут быть выведены на основе предсказателя вектора движения контрольных точек (CPMVP) и разности векторов движения контрольных точек (CPMVD). Иными словами, устройство кодирования может определять CPMVP для CPMV текущего блока, выводить CPMVD, которая является значением разности между CPMV и CPMVP текущего блока, и сигнализировать информацию о CPMVP и информацию о CPMVD на устройство декодирования. Здесь, режим аффинного MVP может формировать список кандидатов аффинного MVP на основе соседних блоков, и информация о CPMVP может указывать соседние блоки, подлежащие использованию для выведения CPMVP для CPMV текущего блока, из списка кандидатов аффинного MVP. Список кандидатов аффинного MVP может также упоминаться как список кандидатов предсказателя вектора движения контрольных точек.
[134] Например, когда применяется аффинный интер-режим шести-параметрической аффинной модели движения, текущий блок может кодироваться, как описано ниже.
[135] Фиг. 9 иллюстрирует способ для выведения предсказателя вектора движения в контрольной точке в соответствии с одним вариантом осуществления настоящего раскрытия.
0
1
2
3
0
1
2
[136] Со ссылкой на фиг. 9, вектор движения CP0 текущего блока может быть обозначен как ν, вектор движения CP1 как ν, вектор движения контрольной точки в позиции выборки внизу слева как ν, и вектор движения CP2 как ν. Иными словами, νможет представлять CPMVP для CP0, ν - CPMVP для CP1, и ν- CPMVP для CP2.
[137] Кандидат аффинного MVP может быть комбинацией кандидата CPMVP CP0, кандидата CPMVP CP1 и кандидата CPMVP CP2.
[138] Например, кандидат аффинного MVP может быть выведен следующим образом.
[139] Более конкретно, максимально 12 комбинаций кандидатов CPMVP может быть определено, как показано в уравнении ниже.
[140] [Уравнение 6]
А
В
С
D
Е
F
G
[141] Здесь, νпредставляет вектор движения соседнего блока A, ν- вектор движения соседнего блока B, ν - вектор движения соседнего блока C, ν- вектор движения соседнего блока D, ν - вектор движения соседнего блока E, ν- вектор движения соседнего блока F, и ν- вектор движения соседнего блока G.
[142] Дополнительно, соседний блок A может представлять соседний блок, расположенный сверху-слева от позиции верхней-левой выборки текущего блока, соседний блок B может представлять соседний блок, расположенный сверху от позиции верхней-левой выборки текущего блока, и соседний блок C может представлять соседний блок, расположенный слева от позиции верхней-левой выборки текущего блока. Дополнительно, соседний блок D может представлять соседний блок, расположенный сверху от позиции верхней-правой выборки текущего блока, и соседний блок E может представлять соседний блок, расположенный сверху-справа от позиции верхней-правой выборки текущего блока. И соседний блок F может представлять соседний блок, расположенный слева от позиции нижней-левой выборки текущего блока, и соседний блок G может представлять соседний блок, расположенный снизу-слева от позиции нижней-левой выборки текущего блока.
А
В
С
D
E
F
G
[143] Иными словами, со ссылкой на уравнение 6 выше, кандидат CPMVP CP0 может включать в себя вектор движения ν соседнего блока A, вектор движения ν соседнего блока B и/или вектор движения ν соседнего блока C; кандидат CPMVP CP1 может включать в себя вектор движения ν соседнего блока D и/или вектор движения ν соседнего блока E; кандидат CPMVP CP2 может включать в себя вектор движения ν соседнего блока F и/или вектор движения ν соседнего блока G.
0
[144] Иными словами, CPMVP ν CP0 может быть выведен на основе по меньшей мере одного вектора движения для соседних блоков A, B и C относительно позиции верхней-левой выборки. Здесь, соседний блок A может представлять блок, расположенный сверху-слева от позиции верхней-левой выборки текущего блока, соседний блок B может представлять блок, расположенный сверху от позиции верхней-левой выборки текущего блока, и соседний блок C может представлять блок, расположенный слева от позиции верхней-левой выборки текущего блока.
[145] На основе векторов движения соседних блоков, может быть выведено максимально 12 комбинаций кандидатов CPMVP, включая кандидата CPMVP CP0, кандидата CPMVP CP1 и кандидата CPMVP CP2.
[146] Затем, выведенные комбинации кандидатов CPMVP упорядочиваются в восходящем порядке DV, и две верхние комбинации кандидатов CPMVP могут быть выведены как кандидаты аффинного MVP.
[147] DV комбинации кандидатов CPMVP может быть выведен с помощью следующего уравнения.
[148] [Уравнение 7]
[149] Затем, устройство кодирования может определять CPMV для соответствующих кандидатов аффинного MVP, сравнивать стоимость по критерию скорость-искажение (RD) среди CPMV и выбирать кандидата аффинного MVP, имеющего наименьшую стоимость RD, в качестве оптимального кандидата аффинного MVP для текущего блока. Устройство кодирования может кодировать и сигнализировать индекс и CPMVD, указывающий оптимального кандидата.
[150] Также, например, если применяется аффинный режим слияния, текущий блок может кодироваться, как описано ниже.
[151] Фиг. 10 иллюстрирует способ для выведения предсказателя вектора движения в контрольной точке в соответствии с одним вариантом осуществления настоящего раскрытия.
[152] На основе соседних блоков текущего блока, показанных на фиг. 10, может формироваться список кандидатов аффинного слияния текущего блока. Соседние блоки может включать в себя соседний блок A, соседний блок B, соседний блок C, соседний блок D и соседний блок E. Соседний блок A может представлять левый соседний блок текущего блока, соседний блоку B - верхний соседний блок текущего блока, соседний блок C - верхний-правый угловой соседний блок текущего блока, соседний блок D - нижний-левый угловой соседний блок текущего блока, соседний блок E - верхний-левый угловой соседний блок текущего блока.
[153] Например, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, левый соседний блок может быть блоком, включающим в себя выборку с координатами (-1, H-1), верхний соседний блок может быть блоком, включающим в себя выборку с координатами (W-1, -1), верхний-правый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (W, -1), нижний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, H), и верхний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, -1).
[154] Более конкретно, например, устройство кодирования может сканировать соседний блок A, соседний блок B, соседний блок C, соседний блок D и соседний блок E текущего блока в конкретном порядке сканирования; и определять соседний блок, кодированный первым в аффинном режиме предсказания в соответствии с порядком сканирования в качестве блока кандидата аффинного режима слияния, а именно, кандидата аффинного слияния. Иными словами, конкретный порядок сканирования может выполняться в порядке: соседний блок A, соседний блок B, соседний блок C, соседний блок D и соседний блок E.
[155] Затем, устройство кодирования может определять аффинная модель движения текущего блока с использованием CPMV определенного блока кандидата, определять CPMV текущего блока на основе аффинной модели движения и определять аффинное MVF текущего блока на основе CPMV.
[156] В качестве одного примера, если соседний блок A определен в качестве блока кандидата текущего блока, кодирование может выполняться, как описано ниже.
[157] Фиг. 11 иллюстрирует один пример аффинного предсказания, выполняемого, когда соседний блок A выбран в качестве кандидата аффинного слияния.
2
3
0
1
0
1
[158] Со ссылкой на фиг. 11, устройство кодирования может определять соседний блок A текущего блока в качестве блока кандидата и выводить аффинная модель движения текущего блока на основе CPMV соседнего блока, ν и ν. Затем, устройство кодирования может определять CPMV текущего блока, νи ν, на основе аффинной модели движения. Устройство кодирования может определять аффинное MVF на основе CPMV текущего блока, νи ν, и выполнять процесс для кодирования текущего блока на основе аффинного MVF.
[159] Между тем, в отношении аффинного интер-предсказания, в качестве средства формирования списка кандидатов аффинного MVP, рассматриваются унаследованный аффинный кандидат и сформированный аффинный кандидат.
[160] Здесь, унаследованный аффинный кандидат может быть описан следующим образом.
[161] Например, если соседний блок текущего блока является аффинным блоком, и опорная картинка текущего блока является той же самой, что и опорная картинка соседнего блока, пара аффинных MVP текущего блока может быть определена из аффинной модели движения соседнего блока. Здесь, аффинный блок может представлять блок, к которому было применено аффинное интер-предсказание. Унаследованный аффинный кандидат может представлять CPMVP (например, пара аффинных MVP), выведенные на основе аффинная модель движения соседнего блока.
[162] Более конкретно, в качестве одного примера, унаследованный аффинный кандидат может быть выведен, как описано ниже.
[163] Фиг. 12 иллюстрирует соседние блоки для выведения унаследованного аффинного кандидата.
[164] Со ссылкой на фиг. 12, соседние блоки текущего блока могут включать в себя левый соседний блок A0 текущего блока, нижний-левый угловой соседний блок A1 текущего блока, верхний соседний блок B0 текущего блока, верхний-правый угловой соседний блок B1 текущего блока и верхний-левый угловой соседний блок B2 текущего блока.
[165] Например, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, левый соседний блок может быть блоком, включающим в себя выборку с координатами (-1, H-1), верхний соседний блок может быть блоком, включающим в себя выборку с координатами (W-1, -1), верхний-правый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (W, -1), нижний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, H), и верхний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, -1).
[166] Устройство кодирования/декодирования может проверять соседние блоки A0, A1, B0, B1 и B2 последовательно, и если соседний блок кодируется в соответствии с аффинной моделью движения, и опорная картинка текущего блока является той же самой, что и опорная картинка соседнего блока, два CPMV или три CPMV текущего блока могут быть выведены на основе аффинной модели движения соседнего блока. CPMV могут быть выведены как кандидат аффинного MVP текущего блока. Кандидат аффинного MVP может представлять унаследованный аффинный кандидат.
[167] В качестве одного примера, до двух унаследованных аффинных кандидатов может быть выведено на основе соседних блоков.
[168] Например, устройство кодирования/декодирования может выводить первого кандидата аффинного MVP текущего блока на основе первого блока среди соседних блоков. Здесь, первый блок может кодироваться в соответствии с аффинной моделью движения, и опорная картинка первого блока может быть той же самой, что и опорная картинка текущего блока. Иными словами, первый блок может быть блоком, первым подтвержденным как удовлетворяющий некоторому условию из проверки соседних блоков в соответствии с конкретным порядком. Условие может быть кодировано в соответствии с аффинной моделью движения, и опорная картинка блока может быть той же самой, что и опорная картинка текущего блока.
[169] Затем, устройство кодирования/декодирования может выводить второго кандидата аффинного MVP на основе второго блока среди соседних блоков. Здесь, второй блок может кодироваться в соответствии с аффинной моделью движения, и опорная картинка второго блока может быть той же самой, что и опорная картинка текущего блока. Иными словами, второй блок может быть блоком, вторым подтвержденным как удовлетворяющий условию из проверки соседних блоков в соответствии с конкретным порядком. Условие может быть кодировано в соответствии с аффинной моделью движения, и опорная картинка блока может быть той же самой, что и опорная картинка текущего блока.
[170] Между тем, например, когда количество доступных унаследованных аффинных кандидатов меньше, чем 2 (а именно, когда количество выведенных унаследованных аффинных кандидатов меньше, чем 2), может рассматриваться сформированный аффинный кандидат. Сформированный аффинный кандидат может быть выведен следующим образом.
[171] Фиг. 13 иллюстрирует пространственных кандидатов для сформированного аффинного кандидата.
[172] Как показано на фиг. 13, векторы движения соседних блоков текущего блока могут быть разделены на три группы. Со ссылкой на фиг. 13, соседние блоки может включать в себя соседний блок A, соседний блок B, соседний блок C, соседний блок D, соседний блок E, соседний блок F и соседний блок G.
[173] Соседний блок A может представлять соседний блок, расположенный сверху слева от верхней-левой позиции выборки текущего блока; соседний блок B - соседний блок, расположенный сверху от верхней-левой позиции выборки текущего блока; и соседний блок C - соседний блок, расположенный слева от верхней-левой позиции выборки текущего блока. Кроме того, соседний блок D может представлять соседний блок, расположенный сверху от верхней-правой позиции выборки текущего блока, и соседний блок E может представлять соседний блок, расположенный сверху-справа от верхней-правой позиции выборки текущего блока. Кроме того, соседний блок F может представлять соседний блок, расположенный слева от нижней-левой позиции выборки текущего блока; и соседний блок G может представлять соседний блок, расположенный снизу-слева от нижней-левой позиции выборки текущего блока.
0
1
2
0
1
2
[174] Например, три группы могут включать в себя S, S и S, где S, S и S могут быть выведены, как показано в таблице ниже.
[175] [Таблица 1]
A
B
C
D
E
F
G
0
1
2
[176] Здесь, mν представляет вектор движения соседнего блока A, mν - вектор движения соседнего блока B, mν - вектор движения соседнего блока C, mν - вектор движения соседнего блока D, mν - вектор движения соседнего блока E, mν - вектор движения соседнего блока F, и mν - вектор движения соседнего блока G. S может указывать первую группу, S может указывать вторую группу, и S может указывать третью группу.
0
0
1
1
2
2
0
1
2
0
1
2
[177] Устройство кодирования/декодирования может выводить mν из S, mν из S, mν из S и кандидата аффинного MVP, включающий в себя mν, mν и mν. Кандидат аффинного MVP может указывать сформированного аффинного кандидата. Также, mνможет быть кандидатом CPMVP CP0, mνможет быть кандидатом CPMVP CP1, и mνможет быть кандидатом CPMVP CP2.
0
0
0
0
[178] Здесь, опорная картинка для mν может быть той же самой, что и опорная картинка текущего блока. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий некоторому условию из проверки векторов движения в S. Условие может быть таким, что опорная картинка для вектора движения является той же самой, что и опорная картинка текущего блока. Конкретный порядок может быть таким, что векторы движения проверяются в S в порядке соседнего блока A, соседнего блока B, и соседнего блока C. Также, порядок проверки может выполняться иначе, чем описано выше, и может не ограничиваться примером, приведенным выше.
1
1
1
1
[179] Также, опорная картинка для mν может быть той же самой, что и опорная картинка текущего блока. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий условию из проверки векторов движения в S. Условие может быть таким, что опорная картинка для вектора движения является той же самой, что и опорная картинка текущего блока. Конкретный порядок может быть таким, что векторы движения проверяются в S в порядке соседнего блока D и соседнего блока E. Также, порядок проверки может выполняться иначе, чем описано выше, и может не ограничиваться примером, приведенным выше.
2
2
2
2
[180] Также, опорная картинка для mν может быть той же самой, что и опорная картинка текущего блока. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий условию из проверки векторов движения в S. Условие может быть таким, что опорная картинка для вектора движения является той же самой, что и опорная картинка текущего блока. Конкретный порядок может быть таким, что векторы движения проверяются в S в порядке соседнего блока F и соседнего блока G. Также, порядок проверки может выполняться иначе, чем описано выше, и может не ограничиваться примером, приведенным выше.
0
1
0
1
2
[181] Между тем, когда доступны только mνи mν, а именно, когда выведены только mνи mν, mνможет выводиться с помощью следующего уравнения.
[182] [Уравнение 8]
2
2
0
0
1
1
w
h
[183] Здесь,  представляет х-компонент mν,  представляет y-компонент mν,  представляет х-компонент mν,  представляет y-компонент mν,  представляет х-компонент mν, и  представляет y-компонент mν. Также,  представляет ширину текущего блока, и  представляет высоту текущего блока.
0
2
1
[184] Между тем, когда выводятся только mνи mν, mνможет выводиться с помощью следующего уравнения.
[185] [Уравнение 9]
1
1
0
0
2
2
w
h
[186] Здесь,  представляет х-компонент mν,  представляет y-компонент mν,  представляет х-компонент mν,  представляет y-компонент mν,  представляет х-компонент mν, и  представляет y-компонент mν. Также,  представляет ширину текущего блока, и  представляет высоту текущего блока.
[187] Также, когда количество унаследованных доступных аффинных кандидатов и/или количество сформированных аффинных кандидатов меньше, чем 2, процесс AMVP существующего стандарта HEVC может применяться для формирования списка аффинных MVP. Иными словами, когда количество доступных унаследованных аффинных кандидатов и/или количество сформированных аффинных кандидатов меньше, чем 2, может выполняться процесс для формирования кандидатов MVP, специфицированный в существующем стандарте HEVC.
[188] Между тем, блок-схема последовательности операций вариантов осуществления для формирования списка аффинных MVP может быть описана следующим образом.
[189] Фиг. 14 иллюстрирует один пример формирования списка аффинных MVP.
[190] Со ссылкой на фиг. 14, устройство кодирования/декодирования может добавлять унаследованного кандидата к списку аффинных MVP текущего блока, S1400. Унаследованный кандидат может представлять унаследованного аффинного кандидата, описанного выше.
[191] Более конкретно, устройство кодирования/декодирования может выводить до двух унаследованных аффинных кандидатов из соседних блоков текущего блока, S1405. Здесь, соседние блоки могут включать в себя левый соседний блок A0 текущего блока, нижний-левый угловой соседний блок A1 текущего блока, верхний соседний блок B0 текущего блока, верхний-правый угловой соседний блок B1 текущего блока и верхний-левый угловой соседний блок B2 текущего блока.
[192] Например, устройство кодирования/декодирования может выводить первого кандидата аффинного MVP текущего блока на основе первого блока среди соседних блоков. Здесь, первый блок может быть кодирован в соответствии с аффинной моделью движения, и опорная картинка первого блока может быть той же самой, что и опорная картинка текущего блока. Иными словами, первый блок может быть блоком, первым подтвержденным как удовлетворяющий некоторому условию из проверки соседних блоков в соответствии с конкретным порядком. Условие может быть кодировано в соответствии с аффинной моделью движения, и опорная картинка блока может быть той же самой, что и опорная картинка текущего блока.
[193] Затем, устройство кодирования/декодирования может выводить второго кандидата аффинного MVP на основе второго блока среди соседних блоков. Здесь, второй блок может быть кодирован в соответствии с аффинной моделью движения, и опорная картинка второго блока может быть той же самой, что и опорная картинка текущего блока. Иными словами, второй блок может быть блоком, удовлетворяющим условию, вторым подтвержденному из проверки соседних блоков в соответствии с конкретным порядком. Условие может быть кодировано в соответствии с аффинной моделью движения, и опорная картинка блока может быть той же самой, что и опорная картинка текущего блока.
[194] Между тем, конкретный порядок может быть таким, что соседние блоки проверяются в порядке: левый соседний блок A0, нижний-левый угловой соседний блок A1, верхний соседний блок B0, верхний-правый угловой соседний блок B1 и верхний-левый угловой соседний блок B2. Также, порядок проверки может выполняться иначе, чем описано выше, и может не ограничиваться приведенным выше примером.
[195] Устройство кодирования/декодирования может добавлять сформированного кандидата к списку аффинных MVP текущего блока, S1410. Сформированный кандидат может представлять сформированный аффинный кандидат, упомянутый выше. Сформированный кандидат может также определяться термином сформированный кандидат аффинного MVP. Если количество доступных унаследованных кандидатов меньше, чем 2, устройство кодирования/декодирования может добавить сформированного кандидата в список аффинных MVP текущего блока. Например, устройство кодирования/декодирования может вывести один сформированный аффинный кандидат.
[196] Между тем, способ для выведения сформированного аффинного кандидата может быть различным в зависимости от того, является ли аффинная модель движения, применяемая к текущему блоку, шести-параметрической аффинной моделью движения или четырех-параметрической аффинной моделью движения. Детальные описания того, каким образом выводится сформированный кандидат, будут предоставлены ниже.
[197] Устройство кодирования/декодирования может добавить кандидата HEVC AMVP в список аффинных MVP текущего блока, S1420. Если количество доступных унаследованных кандидатов и/или количество сформированных кандидатов меньше, чем 2, устройство кодирования/декодирования может добавить кандидата HEVC AMVP в список аффинных MVP текущего блока. Иными словами, когда количество доступных унаследованных кандидатов и/или количество сформированных кандидатов меньше, чем 2, устройство кодирования/декодирования может выполнять процесс для формирования кандидата MVP, как специфицировано в существующем стандарте HEVC.
[198] Между тем, способ для выведения сформированного кандидата может выполняться следующим образом.
[199] Например, если аффинная модель движения, применяемая к текущему блоку, является шести-параметрической аффинной моделью движения, сформированный кандидат может быть выведен, как иллюстрируется в варианте осуществления на фиг. 15.
[200] Фиг. 15 иллюстрирует один пример выведения сформированного кандидата.
0
1
2
0
1
2
0
1
2
0
1
2
[201] Со ссылкой на фиг. 15, устройство кодирования/ декодирования может проверять mν, mν и mν для текущего блока, S1500. Иными словами, устройство кодирования/декодирования может определять, являются ли mν, mν и mν доступными среди соседних блоков текущего блока. Здесь, mνможет представлять кандидата CPMVP CP0 текущего блока, mν может представлять кандидата CPMVP CP1 текущего блока, и mν может представлять кандидата CPMVP CP2 текущего блока. Также, mν, mν и mν могут представлять векторы движения-кандидаты для соответствующих CP.
0
0
0
[202] Например, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в первой группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, который первым подтвержден как удовлетворяющий конкретному условию из проверки векторов движения в первой группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в первой группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться в порядке: соседний блок A в первой группе, соседний блок B и соседний блок C. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
1
1
1
[203] Также, например, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков во второй группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки как mν. Иными словами, mν может быть вектором движения, который первым подтвержден как удовлетворяющий конкретному условию из проверки векторов движения во второй группе в соответствии с конкретным порядком. Если векторы движения соседних блоков во второй группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока D во второй группе к соседнему блоку E. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
2
2
2
[204] Также, например, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в третьей группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mνможет быть вектором движения, который первым подтвержден как удовлетворяющий конкретному условию из проверки векторов движения в третьей группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в третьей группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока F в третьей группе к соседнему блоку G. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
[205] Между тем, первая группа может включать в себя вектор движения соседнего блока A, вектор движения соседнего блока B и вектор движения соседнего блока C; вторая группа - вектор движения соседнего блока D и вектор движения соседнего блока E; и третья группа - вектор движения соседнего блока F и вектор движения соседнего блока G. Соседний блок A может представлять соседний блок, расположенный сверху слева от верхней-левой позиции выборки текущего блока; соседний блок B - соседний блок, расположенный сверху от верхней-левой позиции выборки текущего блока; соседний блок C - соседний блок, расположенный слева от верхней-левой позиции выборки текущего блока; соседний блок D - соседний блок, расположенный сверху от верхней-правой позиции выборки текущего блока; соседний блок E - соседний блок, расположенный сверху справа от верхней-правой позиции выборки текущего блока; соседний блок F - соседний блок, расположенный слева от нижней-левой позиции выборки текущего блока; и соседний блок G - соседний блок, расположенный снизу слева от нижней-левой позиции выборки текущего блока.
0
1
0
1
2
2
0
1
[206] Когда только mνи mν доступны для текущего блока, а именно, когда только mνи mν для текущего блока выведены, устройство кодирования/декодирования может выводить mνдля текущего блока на основе уравнения 8 выше, S1510. Устройство кодирования/декодирования может выводить mνпутем подстановки выведенных mνи mν в уравнение 8 выше.
0
2
0
2
1
1
0
2
[207] Когда только mν и mν доступны для текущего блока, а именно, когда только mν и mν для текущего блока выведены, устройство кодирования/декодирования может выводить mν для текущего блока на основе уравнения 9 выше, S1520. Устройство кодирования/декодирования может выводить mν путем подстановки выведенных mν и mν в уравнение 9 выше.
0
1
2
0
1
2
0
1
2
0
1
2
[208] Устройство кодирования/декодирования может предоставлять выведенные mν, mν и mν как сформированные кандидаты текущего блока, S1530. Когда mν, mν и mν доступны, а именно, когда mν, mν и mν выведены на основе соседних блоков текущего блока, устройство кодирования/декодирования может предоставлять выведенные mν, mν и mν как сформированные кандидаты текущего блока.
0
1
0
1
0
1
2
[209] Также, когда только mνи mν доступны для текущего блока, а именно, когда только mνи mν для текущего блока выведены, устройство кодирования/декодирования может предоставить выведенные mν, mν и mν, выведенный на основе уравнения 8 выше, как сформированные кандидаты текущего блока.
0
2
0
2
0
2
1
[210] Также, когда только mν и mν доступны для текущего блока, а именно, когда только mν и mν для текущего блока выведены, устройство кодирования/декодирования может предоставить выведенные mν, mν и mν, выведенный на основе уравнения 9 выше, как сформированные кандидаты текущего блока.
[211] Также, например, если аффинной моделью движения, применяемой к текущему блоку, является четырех-параметрическая аффинная модель движения, сформированный кандидат может быть выведен, как иллюстрируется в варианте осуществления на фиг. 15.
[212] Фиг. 16 иллюстрирует один пример выведения сформированного кандидата.
0
1
2
0
1
2
0
0
1
1
2
2
[213] Со ссылкой на фиг. 16, устройство кодирования/ декодирования может проверять mν, mν и mν, S1600. Иными словами, устройство кодирования/декодирования может определять, доступны ли mν, mν и mν среди соседних блоков текущего блока. Здесь, mνможет представлять кандидата CPMVP СР текущего блока, mν может представлять кандидата CPMVP СР текущего блока, и mνможет представлять кандидата CPMVP СР текущего блока.
0
0
0
[214] Например, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в первой группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mνможет быть вектором движения, который первым подтвержден как удовлетворяющий конкретному условию из проверки векторов движения в первой группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в первой группе не удовлетворяют конкретному условию, доступный mνможет не существовать. Здесь, например, конкретный порядок может выполняться в порядке: соседний блок A в первой группе, соседний блок B и соседний блок C. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
1
1
1
[215] Также, например, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков во второй группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, который первым подтвержден как удовлетворяющий конкретному условию из проверки векторов движения во второй группе в соответствии с конкретным порядком. Если векторы движения соседних блоков во второй группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока D во второй группе к соседнему блоку E. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
2
2
2
[216] Также, например, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в третьей группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, который первым подтвержден как удовлетворяющий конкретному условию из проверки векторов движения в третьей группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в третьей группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока F в третьей группе к соседнему блоку G. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
[217] Между тем, первая группа может включать в себя вектор движения соседнего блока A, вектор движения соседнего блока B и вектор движения соседнего блока C; вторая группа - вектор движения соседнего блока D и вектор движения соседнего блока E; и третья группа - вектор движения соседнего блока F и вектор движения соседнего блока G. Соседний блок A может представлять соседний блок, расположенный сверху слева от верхней-левой позиции выборки текущего блока; соседний блок B - соседний блок, расположенный сверху от верхней-левой позиции выборки текущего блока; соседний блок C - соседний блоку, расположенный слева от верхней-левой позиции выборки текущего блока; соседний блок D - соседний блок, расположенный сверху от верхней-правой позиции выборки текущего блока; соседний блок E - соседний блок, расположенный сверху справа от верхней-правой позиции выборки текущего блока; соседний блок F - соседний блок, расположенный слева от нижней-левой позиции выборки текущего блока; и соседний блок G - соседний блок, расположенный снизу слева от нижней-левой позиции выборки текущего блока.
0
1
0
1
2
0
1
0
1
2
0
1
[218] Когда только mνи mν доступны для текущего блока или когда mν, mν и mν доступны для текущего блока, а именно, когда только mνи mν выведены для текущего блока, или когда mν, mν и mν выведены для текущего блока, устройство кодирования/ декодирования может предоставить выведенные mνи mν как сформированные кандидаты текущего блока S1610.
0
2
0
2
1
1
0
2
[219] Между тем, когда только mν и mν доступны для текущего блока, а именно, когда только mν и mν выведены для текущего блока, устройство кодирования/декодирования может выводить mν для текущего блока на основе уравнения 9 выше, S1620. Устройство кодирования/декодирования может вывести mν путем подстановки выведенных mν и mν в уравнение 9 выше.
0
1
[220] Затем, устройство кодирования/декодирования может предоставить выведенные mνи mν как сформированные кандидаты текущего блока, S1610.
[221] Между тем, будет предложен другой вариант осуществления для выведения унаследованного аффинного кандидата в соответствии с настоящим раскрытием. При выведении унаследованного аффинного кандидата, предложенный вариант осуществления может снизить вычислительную сложность, повышая при этом эффективность кодирования.
[222] Фиг. 17 иллюстрирует позиции соседних блоков, сканируемых для выведения унаследованных аффинных кандидатов.
[223] Устройство кодирования/декодирования может выводить до двух унаследованных аффинных кандидатов из соседних блоков текущего блока. Фиг. 17 иллюстрирует соседние блоки для унаследованных аффинных кандидатов. Например, соседние блоки могут включать в себя соседний блок A и соседний блок B, показанные на фиг. 17. Соседний блок A может представлять левый соседний блок A0, и соседний блок B может представлять верхний соседний блок B0.
[224] Например, устройство кодирования/декодирования может проверять доступность соседних блоков в конкретном порядке и может выводить унаследованный аффинный кандидат текущего блока на основе соседнего блока, первым подтвержденного как доступный. Иными словами, устройство кодирования/декодирования может проверять соседние блоки в конкретном порядке, чтобы убедиться, удовлетворяют ли соседние блоки конкретному условию, и выводить унаследованный аффинный кандидат текущего блока на основе соседнего блока, первым подтвержденного как доступный. Также, Устройство кодирования/декодирования может выводить унаследованный аффинный кандидат текущего блока на основе соседнего блока, вторым подтвержденного как удовлетворяющий конкретному условию. Иными словами, устройство кодирования/декодирования может выводить унаследованный аффинный кандидат текущего блока на основе соседнего блока, вторым подтвержденного как удовлетворяющий конкретному условию. Здесь, доступность может означать, что блок кодирован на основе аффинной модели движения, и опорная картинка блока является той же самой, что и опорная картинка текущего блока. Иными словами, конкретное условие могут указывать, что блок кодирован на основе аффинной модели движения, и опорная картинка блока является той же самой, что и опорная картинка текущего блока. Также, например, конкретный порядок может выполняться от соседнего блока A к соседнему блоку B. Между тем, процесс проверки с обрезкой может не выполняться между двумя унаследованными аффинными кандидатами (а именно, выведенными унаследованными аффинными кандидатами). Процесс проверки с обрезкой может представлять процесс, который проверяет, являются ли кандидаты идентичными друг другу, и удаляет кандидата, выведенного позже, если найдено, что они идентичны.
[225] Вышеупомянутый вариант осуществления предлагает способ для проверки только двух соседних блоков (а именно, соседнего блока A и соседнего блока B) и выведения унаследованного аффинного кандидата вместо проверки всех существующих соседних блоков (а именно, соседнего блока A, соседнего блока B, соседнего блока C, соседнего блока D и соседнего блока E) и выведения унаследованного аффинного кандидата. Здесь, соседний блок C может представлять верхний-правый угловой соседний блок B1, соседний блок D - нижний-левый угловой соседний блок A1, и соседний блок E - верхний-левый угловой соседний блок B2.
[226] Когда аффинное предсказание применяется к каждому соседнему блоку, чтобы анализировать пространственную корреляцию среди соседних блоков и текущего блока, может использоваться вероятность, что аффинное предсказание применяется к текущему блоку. Когда аффинное предсказание применяется к каждому соседнему блоку, вероятность, что аффинное предсказание применяется к текущему блоку, может выводиться, как показано в таблице ниже.
[227] [Таблица 2]
Опорный блок
A
B
C
D
E
Вероятность
65%
41%
5%
3%
1%
[228] Со ссылкой на таблицу 2, можно найти, что пространственная корреляция с текущим блоком является высокой для соседнего блока A и соседнего блока B среди соседних блоков. Поэтому, с помощью варианта осуществления, который выводит унаследованный аффинный кандидат с использованием только соседнего блока A и соседнего блока B, которые проявляют высокую пространственную корреляцию, время обработки может быть сокращено, и может быть достигнута высокая эффективность декодирования.
[229] Между тем, процесс проверки с обрезкой может выполняться, чтобы предотвращать существование того же самого кандидата в списке кандидатов. Поскольку процесс проверки с обрезкой может устранять избыточность, может быть получен полезный результат в аспекте эффективности кодирования, но в то же время вычислительная сложность может быть увеличена вследствие процесса проверки с обрезкой. В частности, поскольку процесс проверки с обрезкой для аффинных кандидатов должен выполняться с учетом аффинного типа (например, является ли аффинная модель движения четырех-параметрической аффинной моделью движения или шести-параметрической аффинной моделью движения), опорной картинки (или индекса опорной картинки) и MV для CP0, CP1 и CP2, вычислительная сложность довольно высока. Поэтому настоящий вариант осуществления предлагает способ, который не выполняет процесс проверки с обрезкой между унаследованным аффинным кандидатом, выведенным на основе соседнего блока A (например, унаследованный_A), и унаследованным аффинным кандидатом, выведенным на основе соседнего блока B (например, унаследованный_B). В случае соседних блоков A и B, они удалены друг от друга и, таким образом, проявляют низкую пространственную корреляцию; поэтому вероятность того, что унаследованный_A и унаследованный_B являются одинаковыми, низка. Поэтому может быть желательным, чтобы процесс проверки с обрезкой не выполнялся между унаследованными аффинными кандидатами.
[230] Также, на основе вышеуказанных причин, может быть предложен способ для выполнения процесса проверки с обрезкой в наименьшей возможной степени. Например, устройство кодирования/ декодирования может выполнять процесс проверки с обрезкой таким образом, что только MV CP0 унаследованных аффинных кандидатов сравниваются друг с другом.
[231] Также, настоящее раскрытие предлагает способ для выведения сформированного кандидата иначе, чем получаемый вышеописанным вариантом осуществления. По сравнению с вышеописанным вариантом осуществления для выведения сформированного кандидата, предложенный вариант осуществления может повысить эффективность кодирования путем снижения сложности. Предложенный вариант осуществления может быть описан следующим образом. Также, когда количество унаследованных аффинных кандидатов меньше, чем 2 (а именно, когда количество выведенных унаследованных аффинных кандидатов меньше, чем 2), могут учитываться сформированные аффинные кандидаты.
0
1
2
0
1
2
0
1
2
[232] Например, устройство кодирования/декодирования может проверять mν, mν и mν для текущего блока. Иными словами, устройство кодирования/декодирования может определять, доступны ли mν, mν и mν среди соседних блоков текущего блока. Здесь, mν может представлять кандидата CPMVP CP0 текущего блока, mν может представлять кандидата CPMVP CP1 текущего блока, и mν может представлять кандидата CPMVP CP2 текущего блока.
[233] Конкретно, соседние блоки текущего блока могут быть разделены на три группы, и соседние блоки может включать в себя соседний блок A, соседний блок B, соседний блок C, соседний блок D, соседний блок E, соседний блок F и соседний блок G. Первая группа может включать в себя вектор движения соседнего блока A, вектор движения соседнего блока B и вектор движения соседнего блока C; вторая группа - вектор движения соседнего блока D и вектор движения соседнего блока E; и третья группа - вектор движения соседнего блока F и вектор движения соседнего блока G. Соседний блок A может представлять соседний блок, расположенный сверху слева от верхней-левой позиции выборки текущего блока; соседний блок B - соседний блок, расположенный сверху от верхней-левой позиции выборки текущего блока; соседний блок C - соседний блок, расположенный слева от верхней-левой позиции выборки текущего блока; соседний блок D - соседний блок, расположенный сверху от верхней-правой позиции выборки текущего блока; соседний блок E - соседний блок, расположенный сверху справа от верхней-правой позиции выборки текущего блока; соседний блок F - соседний блок, расположенный слева от нижней-левой позиции выборки текущего блока; и соседний блок G - соседний блок, расположенный снизу слева от нижней-левой позиции выборки текущего блока.
0
1
2
[234] Устройство кодирования/декодирования может определять доступность mν в первой группе, определять доступность mν во второй группе и доступность mν в третьей группе.
0
0
0
[235] Более конкретно, например, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в первой группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения в первой группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в первой группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться в порядке: соседний блок A в первой группе, соседний блок B и соседний блок C. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
1
1
1
[236] Также, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков во второй группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mνможет быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения во второй группе в соответствии с конкретным порядком. Если векторы движения соседних блоков во второй группе не удовлетворяют конкретному условию, доступный mνможет не существовать. Здесь, например, конкретный порядок может выполняться, следуя от соседнего блока D во второй группе к соседнему блоку E. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
2
2
2
[237] Также, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в третьей группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения в третьей группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в третьей группе не удовлетворяют конкретному условию, доступный mνможет не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока F в третьей группе к соседнему блоку G. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
0
1
0
1
0
1
0
1
[238] Затем, если аффинная модель движения, применяемая к текущему блоку, является 4-параметрической аффинной моделью движения, и mνи mν для текущего блока доступны, устройство кодирования/декодирования может предоставить выведенные mνи mν как сформированные кандидаты текущего блока. Между тем, если mν и/или mνдля текущего блока недоступен, а именно, если по меньшей мере один из mνи mνне выведен из соседних блоков текущего блока, устройство кодирования/декодирования не может добавить сформированного кандидата к списку аффинных MVP текущего блока.
0
1
2
0
1
2
0
1
2
0
1
2
[239] Также, если аффинная модель движения, применяемая к текущему блоку, является 6-параметрической аффинной моделью движения, и mν, mν и mν для текущего блока доступны, устройство кодирования/декодирования может предоставить выведенные mν, mν и mν как сформированные кандидаты текущего блока. Между тем, если mν, mν и/или mν для текущего блока недоступны, а именно, если по меньшей мере один из mν, mν и mν не выведен из соседних блоков текущего блока, устройство кодирования/декодирования не может добавить сформированный кандидат в список аффинных MVP текущего блока.
0
1
0
1
2
[240] Предложенный вариант осуществления описывает способ, который учитывает векторы движения CP для генерации аффинной модели движения текущего блока в качестве сформированных кандидатов, только когда все векторы движения доступны. Здесь, доступность может означать, что опорная картинка соседнего блока является той же самой, что и опорная картинка текущего блока. Иными словами, сформированный кандидат может быть выведен, только когда существует вектор движения, который удовлетворяет условию среди векторов движения соседних блоков для соответствующих CP текущего блока. Поэтому, если аффинная модель движения, применяемая к текущему блоку, является 4-параметрической аффинной моделью движения, сформированный кандидат может учитываться, только когда векторы движения CP0 и CP1 текущего блока (а именно, mν и mν) доступны. Также, если аффинная модель движения, применяемая к текущему блоку, является 6-параметрической аффинной моделью движения, сформированный кандидат может учитываться, только когда векторы движения CP0, CP1 и CP2 текущего блока (а именно, mν, mν и mν) доступны. Поэтому, в соответствии с предложенным вариантом осуществления, дополнительное формирование для выведения вектора движения для CP на основе уравнения 8 или 9 может не требоваться. Посредством предложенного варианта осуществления, вычислительная сложность для выведения сформированного кандидата может быть снижена. Также, поскольку сформированный кандидат определяется, только когда кандидат CPMVP, имеющий ту же самую опорную картинку, доступен, эффективность кодирования в целом может быть повышена.
[241] Между тем, процесс проверки с обрезкой может не выполняться между унаследованным аффинным кандидатом и сформированным аффинным кандидатом. Процесс проверки с обрезкой может представлять процесс, который проверяет, являются ли кандидаты идентичными друг другу, и удаляет кандидата, выведенного позже, если обнаружено, что они идентичны.
[242] Вариант осуществления, описанный выше, может быть проиллюстрирован, как показано на фиг. 18 и 19.
[243] Фиг. 18 иллюстрирует один пример выведения сформированного кандидата, когда четырех-параметрическая аффинная модель движения применяется к текущему блоку.
0
1
0
1
0
1
[244] Со ссылкой на фиг. 18, устройство кодирования/декодирования может определять, доступны ли mν и mν для текущего блока, S1800. Иными словами, устройство кодирования/декодирования может определять, существуют ли доступные mν и mν в соседних блоках текущего блока. Здесь, mνможет быть кандидатом CPMVP CP0 текущего блока, и mν может быть кандидатом CPMVP CP1.
0
1
[245] Устройство кодирования/декодирования может определять, доступен ли mν в первой группе, и доступен ли mν во второй группе.
[246] Конкретно, соседние блоки текущего блока могут быть разделены на три группы, и соседние блоки могут включать в себя соседний блок A, соседний блок B, соседний блок C, соседний блок D, соседний блок E, соседний блок F и соседний блок G. Первая группа может включать в себя вектор движения соседнего блока A, вектор движения соседнего блока B и вектор движения соседнего блока C; вторая группа - вектор движения соседнего блока D и вектор движения соседнего блока E; и третья группа - вектор движения соседнего блока F и вектор движения соседнего блока G. Соседний блок A может представлять соседний блок, расположенный сверху слева от верхней-левой позиции выборки текущего блока; соседний блок B - соседний блок, расположенный сверху от верхней-левой позиции выборки текущего блока; соседний блок C - соседний блок, расположенный слева от верхней-левой позиции выборки текущего блока; соседний блок D - соседний блок, расположенный сверху от верхней-правой позиции выборки текущего блока; соседний блок E - соседний блок, расположенный сверху справа от верхней-правой позиции выборки текущего блока; соседний блок F - соседний блок, расположенный слева от нижней-левой позиции выборки текущего блока; и соседний блок G - соседний блок, расположенный снизу слева от нижней-левой позиции выборки текущего блока.
0
0
0
[247] Устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в первой группе конкретному условию, в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения в первой группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в первой группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться в порядке: соседний блок A в первой группе, соседний блок B и соседний блок C. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
1
1
1
[248] Также, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков во второй группе конкретному условию, в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения во второй группе в соответствии с конкретным порядком. Если векторы движения соседних блоков во второй группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока D во второй группе к соседнему блоку E. Также, например, конкретное условие может быть таким, что опорная картинка вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
0
1
0
1
0
1
0
1
0
1
[249] Если mν и mν для текущего блока доступны, а именно, если mν и mν для текущего блока выведены, устройство кодирования/декодирования может предоставить выведенные mν и mν как сформированные кандидаты текущего блока, S1810. Между тем, если mν и/или mν для текущего блока недоступен, а именно, если по меньшей мере один из mν и mν не выведен из соседних блоков текущего блока, устройство кодирования/декодирования не может добавить сформированный кандидат в список аффинных MVP текущего блока.
[250] Между тем, процесс проверки с обрезкой не может выполняться между выведенным унаследованным аффинным кандидатом и сформированным аффинным кандидатом. Процесс проверки с обрезкой может представлять процесс, который проверяет, являются ли кандидаты идентичными друг другу, и удаляет кандидата, выведенного позже, если обнаружено, что они идентичны.
[251] Фиг. 19 иллюстрирует один пример выведения сформированного кандидата, когда шести-параметрическая аффинная модель движения применяется к текущему блоку.
0
1
2
0
1
2
0
1
2
[252] Со ссылкой на фиг. 19, устройство кодирования/ декодирования может определять, доступны ли mν, mν и mν для текущего блока, S1900. Иными словами, устройство кодирования/декодирования может определять, существуют ли доступные mν, mν и mν в соседних блоках текущего блока. Здесь, mν может быть кандидатом CPMVP CP0 текущего блока, mν - кандидатом CPMVP CP1, и mν - кандидатом CPMVP CP2.
0
1
2
[253] Устройство кодирования/декодирования может определять, доступен ли mν в первой группе, mνво второй группе, и mν в третьей группе.
[254] Конкретно, соседние блоки текущего блока могут быть разделены на три группы, и соседние блоки могут включать в себя соседний блок A, соседний блок B, соседний блок C, соседний блок D, соседний блок E, соседний блок F и соседний блок G. Первая группа может включать в себя вектор движения соседнего блока A, вектор движения соседнего блока B и вектор движения соседнего блока C; вторая группа - вектор движения соседнего блока D и вектор движения соседнего блока E; и третья группа - вектор движения соседнего блока F и вектор движения соседнего блока G. Соседний блок A может представлять соседний блок, расположенный сверху слева от верхней-левой позиции выборки текущего блока; соседний блок B - соседний блок, расположенный сверху от верхней-левой позиции выборки текущего блока; соседний блок C - соседний блок, расположенный слева от верхней-левой позиции выборки текущего блока; соседний блок D - соседний блок, расположенный сверху от верхней-правой позиции выборки текущего блока; соседний блок E - соседний блок, расположенный сверху справа от верхней-правой позиции выборки текущего блока; соседний блок F - соседний блок, расположенный слева от нижней-левой позиции выборки текущего блока; и соседний блок G - соседний блок, расположенный снизу слева от нижней-левой позиции выборки текущего блока.
0
0
0
[255] Устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в первой группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения в первой группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в первой группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться в порядке: соседний блок A в первой группе, соседний блок B и соседний блок C. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
1
1
1
[256] Также, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков во второй группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения во второй группе в соответствии с конкретным порядком. Если векторы движения соседних блоков во второй группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока D во второй группе к соседнему блоку E. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
2
2
2
[257] Также, устройство кодирования/декодирования может проверять, удовлетворяют ли векторы движения соседних блоков в третьей группе конкретному условию в соответствии с конкретным порядком. Устройство кодирования/декодирования может выводить вектор движения соседнего блока, первым подтвержденный как удовлетворяющий условию во время процесса проверки, как mν. Иными словами, mν может быть вектором движения, первым подтвержденным как удовлетворяющий конкретному условию из проверки векторов движения в третьей группе в соответствии с конкретным порядком. Если векторы движения соседних блоков в третьей группе не удовлетворяют конкретному условию, доступный mν может не существовать. Здесь, например, конкретный порядок может выполняться от соседнего блока F в третьей группе к соседнему блоку G. Также, например, конкретное условие может быть таким, что опорная картинка для вектора движения соседнего блока является той же самой, что и опорная картинка текущего блока.
0
1
2
0
1
2
0
1
2
0
1
2
0
1
2
[258] Если mν, mν и mν для текущего блока доступны, а именно, если mν, mν и mν для текущего блока выведены, устройство кодирования/декодирования может предоставить выведенные mν, mν и mν как сформированные кандидаты текущего блока, S1910. Между тем, если mν, mν и/или mν для текущего блока недоступен, а именно, если по меньшей мере один из mν, mν и mν не выведен из соседних блоков текущего блока, устройство кодирования/декодирования не может добавить сформированного кандидата в список аффинных MVP текущего блока.
[259] Между тем, процесс проверки с обрезкой не может выполняться между выведенным унаследованным аффинным кандидатом и сформированным аффинным кандидатом.
[260] Между тем, когда количество выведенных аффинных кандидатов меньше, чем 2 (а именно, когда количество унаследованных аффинных кандидатов и/или количество сформированных аффинных кандидатов меньше, чем 2), кандидат HEVC AMVP может быть добавлен в список аффинных MVP текущего блока.
[261] Например, кандидат HEVC AMVP может быть выведен в следующем порядке.
[262] Более конкретно, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV0 сформированного аффинного кандидата доступен, CPMV0 может использоваться в качестве кандидата аффинного MVP. Иными словами, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV0 сформированного аффинного кандидата доступен (а именно, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV0 сформированного аффинного кандидата выведен), PMV0 сформированного аффинного кандидата может быть выведен как первый кандидат аффинного MVP, включающий в себя CPMV0, CPMV1 и CPMV2.
[263] Также, затем, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV1 сформированного аффинного кандидата доступен, CPMV1 может использоваться как кандидат аффинного MVP. Иными словами, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV1 сформированного аффинного кандидата доступен (а именно, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV1 сформированного аффинного кандидата выведен), CPMV1 сформированного аффинного кандидата может быть выведен как второй кандидат аффинного MVP, включающий в себя CPMV0, CPMV1 и CPMV2.
[264] Также, затем, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV2 сформированного аффинного кандидата доступен, CPMV2 может использоваться как кандидат аффинного MVP. Иными словами, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV2 сформированного аффинного кандидата доступен (а именно, когда количество выведенных аффинных кандидатов меньше, чем 2, и CPMV2 сформированного аффинного кандидата выведен), CPMV2 сформированного аффинного кандидата может быть выведен как третий кандидат аффинного MVP, включающий в себя CPMV0, CPMV1 и CPMV2.
[265] Также, затем, когда количество выведенных аффинных кандидатов меньше, чем 2, HEVC временной предсказатель вектора движения (TMVP) может использоваться как кандидат аффинного MVP. HEVC TMVP может быть выведен на основе информации движения временного соседнего блока текущего блока. Иными словами, когда количество выведенных аффинных кандидатов меньше, чем 2, вектор движения временного соседнего блока текущего блока может быть выведен как третий кандидат аффинного MVP, включающий в себя CPMV0, CPMV1 и CPMV2. Временной соседний блок может указывать совмещенный блок в совмещенной картинке, соответствующей текущему блоку.
[266] Также, затем, когда количество выведенных аффинных кандидатов меньше, чем 2, нулевой вектор движения (MV) может использоваться как кандидат аффинного MVP. Иными словами, когда количество выведенных аффинных кандидатов меньше, чем 2, нулевой вектор движения может быть выведен как третий кандидат аффинного MVP, включающий в себя CPMV0, CPMV1 и CPMV2. Нулевой вектор движения может представлять вектор движения, все элементы которого равны нулям.
[267] Этапы обработки с использованием CPMV сформированных аффинных кандидатов повторно используют MV, которые уже были учтены для генерации сформированных аффинных кандидатов, тем самым снижая сложность обработки по сравнению с существующим способом для выведения кандидатов HEVC AMVP.
[268] Между тем, настоящее раскрытие предлагает другой вариант осуществления для выведения унаследованного аффинного кандидата.
[269] Для выведения унаследованного аффинного кандидата, необходима информация аффинного предсказания соседних блоков, и более конкретно, необходима следующая информация аффинного предсказания:
[270] 1) Аффинный флаг (affine_flag), указывающий, было ли кодирование на основе аффинного предсказания применено к соседним блокам, и
[271] 2) Информация движения соседних блоков.
[272] Если четырех-параметрическая аффинная модель движения применяется к соседним блокам, информация движения соседних блоков может включать в себя информацию движения L0 и информацию движения L1 для CP0, и информацию движения L0 и информацию движения L1 для CP1. Также, если шести-параметрическая аффинная модель движения применяется к соседним блокам, информация движения соседних блоков может включать в себя информацию движения L0 и информацию движения L1 для CP0, и информацию движения L0 и информацию движения L1 для CP2. Здесь, информация движения L0 может представлять информацию движения для списка 0 (L0), и информация движения L1 может представлять информацию движения для списка 1 (L1). Информация движения L0 может включать в себя индекс опорной картинки L0 и вектор движения L0, и информация движения L1 может включать в себя индекс опорной картинки L1 и вектор движения L1.
[273] Как описано выше, в случае аффинного предсказания, большое количество информации должно быть сохранено, что может быть основной причиной повышения затрат на аппаратные средства в реальной реализации устройства кодирования/декодирования. В частности, если соседний блок расположен над текущим блоком и принадлежит границе CTU, необходимо использовать линейный буфер для сохранения информации, относящейся к аффинному предсказанию соседнего блока, что может дополнительно увеличить затраты на реализацию. Далее, эта проблема может упоминаться как проблема линейного буфера. В этом отношении, настоящее раскрытие предлагает вариант осуществления для выведения унаследованного аффинного кандидата, который минимизирует затраты на аппаратные средства за счет не сохранения или уменьшения информации, связанной с аффинным предсказанием, в линейном буфере. Предложенный вариант осуществления может повысить эффективность кодирования за счет снижения вычислительной сложности при выведении унаследованного аффинного кандидата. Между тем, следует отметить, что линейный буфер уже хранит информацию движения о блоке размером 4×4, и если информация, связанная с аффинным предсказанием, дополнительно сохраняется, количество сохраненной информации может увеличиваться в три раза относительно существующего объема хранения.
[274] В настоящем варианте осуществления, никакая дополнительная информация об аффинном предсказании может не сохраняться в линейном буфере, и когда информация в линейном буфере должна быть использована для генерации унаследованного аффинного кандидата, генерация унаследованного аффинного кандидата может быть ограничена.
[275] Фиг. 20a-20b иллюстрируют вариант осуществления для выведения унаследованного аффинного кандидата.
[276] Со ссылкой на фиг. 20a, когда соседний блок B текущего блока (а именно, соседний блок выше текущего блока) не принадлежит к той же самой CTU, что и текущий блок, соседний блок B не может использоваться для генерации унаследованного аффинного кандидата. Между тем, хотя соседний блок A также не принадлежит той же самой CTU, что и текущий блок, информация о соседнем блоке A не сохранена в линейном буфере, и, следовательно, соседний блок A может использоваться для генерации унаследованного аффинного кандидата. Поэтому, в соответствии с настоящим вариантом осуществления, только когда соседний блок выше текущего блока принадлежит той же самой CTU, что и текущий блок, соседний блок может использоваться для выведения унаследованного аффинного кандидата. Также, когда соседний блок выше текущего блока не принадлежит той же самой CTU, что и текущий блок, верхний соседний блок может не использоваться для выведения унаследованного аффинного кандидата.
[277] Со ссылкой на фиг. 20b, соседний блок B текущего блока (а именно, соседний блок выше текущего блока) может принадлежать той же самой CTU, что и текущий блок. В этом случае, устройство кодирования/декодирования может генерировать унаследованный аффинный кандидат путем обращения к соседнему блоку B.
[278] Фиг. 21 иллюстрирует способ кодирования видео, выполняемый устройством кодирования в соответствии с настоящим раскрытием. Способ, раскрытый на фиг. 21, может выполняться устройством кодирования, раскрытым на фиг. 2. Более конкретно, например, этапы S2100 - S2120 могут выполняться предсказателем устройства кодирования, этап S2130 - вычитателем устройства кодирования, и этап S2140 - энтропийным кодером устройства кодирования. Также, хотя не показано на чертеже, процесс выведения выборок предсказания для текущего блока на основе CPMV может выполняться предсказателем устройства кодирования, процесс для выведения остаточных выборок для текущего блока на основе исходных выборок и выборок предсказания для текущего блока может выполняться вычитателем устройства кодирования, процесс для генерации информации об остатках для текущего блока на основе остаточных выборок может выполняться преобразователем устройства кодирования, и процесс для кодирования информации об остатках может выполняться кодером устройства кодирования.
[279] Устройство кодирования формирует список кандидатов аффинного предсказателя вектора движения (MVP) для текущего блока, S2100. Устройство кодирования может формировать список кандидатов аффинного MVP, включающий в себя кандидатов аффинного MVP для текущего блока. Максимальное количество кандидатов аффинного MVP списка кандидатов аффинного MVP может быть равно 2.
[280] Также, в качестве одного примера, список кандидатов аффинного MVP может включать в себя унаследованных кандидатов аффинного MVP. Устройство кодирования может проверять, доступны ли унаследованные кандидаты аффинного MVP текущего блока, и если унаследованные кандидаты аффинного MVP доступны, унаследованный кандидат аффинного MVP может быть выведен. Например, унаследованные кандидаты аффинного MVP могут быть выведены на основе соседних блоков текущего блока, и максимальное количество унаследованных кандидатов аффинного MVP может быть равно 2. Доступность соседних блоков может проверяться в конкретном порядке, и унаследованные кандидаты аффинного MVP могут быть выведены на основе проверенных доступных соседних блоков. Иными словами, доступность соседних блоков может быть проверена в конкретном порядке, первый унаследованный кандидат аффинного MVP может быть выведен на основе доступного соседнего блока, проверенного первым, и второй унаследованный кандидат аффинного MVP может быть выведен на основе доступного соседнего блока, проверенного вторым. Доступность может означать, что соседний блок кодирован на основе аффинной модели движения, и опорная картинка соседнего блока является той же самой, что и опорная картинка текущего блока. Иными словами, доступный соседний блок моет относиться к соседнему блоку, кодированному в соответствии с аффинной моделью движения (а именно, соседний блок, к которому применяется аффинное предсказание), и опорная картинка которого является той же самой, что и опорная картинка текущего блока. Более конкретно, устройство кодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения доступного соседнего блока, проверенного первым, и выводить унаследованного кандидата аффинного MVP, включающего в себя векторы движения как кандидаты CPMVP. Также, устройство кодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения доступного соседнего блока, проверенного вторым, и выводить второй унаследованный кандидат аффинного MVP, включающий в себя векторы движения, как кандидаты CPMVP. Аффинная модель движения может быть выведена с помощью уравнения 1 или уравнения 3 выше.
[281] Также, иными словами, соседние блоки могут быть проверены в конкретном порядке, чтобы убедиться, удовлетворяют ли соседние блоки конкретному условию, и унаследованные кандидаты аффинного MVP могут быть выведены на основе соседних блоков, удовлетворяющих проверенному конкретному условию. Иными словами, соседние блоки могут быть проверены в конкретном порядке, чтобы убедиться, удовлетворяют ли соседние блоки конкретному условию, первый унаследованный кандидат аффинного MVP может быть выведен на основе соседнего блока, первым проверенного как удовлетворяющий конкретному условию, и второй унаследованный кандидат аффинного MVP может быть выведен на основе соседнего блока, вторым проверенного как удовлетворяющий конкретному условию. Более конкретно, устройство кодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения соседних блоков, первыми проверенных как удовлетворяющие конкретному условию, и выводить первого унаследованного кандидата аффинного MVP, включающего в себя векторы движения как кандидаты CPMVP. Также, устройство кодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения соседних блоков, вторыми проверенных как удовлетворяющие конкретному условию, и выводить второго унаследованного кандидата аффинного MVP, включающего в себя векторы движения как кандидаты CPMVP. Аффинная модель движения может быть выведена с помощью уравнения 1 или уравнения 3 выше. Между тем, конкретное условие может указывать, что соседний блок кодирован в соответствии с аффинной моделью движения, и опорная картинка соседнего блока является той же самой, что и опорная картинка текущего блока. Иными словами, соседний блок, удовлетворяющий конкретному условию, может быть кодирован в соответствии с аффинной моделью движения (а именно, аффинное предсказание применяется к соседнему блоку), и опорная картинка является той же самой, что и опорная картинка текущего блока.
[282] Здесь, например, соседние блоки могут включать в себя левый соседний блок, верхний соседний блок, верхний-правый угловой соседний блок, нижний-левый угловой соседний блок и верхний-левый угловой соседний блок текущего блока. В этом случае, конкретным порядком может быть порядок от левого соседнего блока к нижнему-левому угловому соседнему блоку, к верхнему соседнему блоку, к верхнему-правому угловому соседнему блоку, к верхнему-левому угловому соседнему блоку.
[283] Или, например, соседние блоки могут включать в себя только левый соседний блок и верхний соседний блок. В этом случае, конкретным порядком может быть порядок от левого соседнего блока к верхнему соседнему блоку.
[284] Или, например, соседние блоки могут включать в себя левый соседний блок, и если верхний соседний блок принадлежит текущей CTU, которая включает в себя текущий блок, соседние блоки могут дополнительно включать в себя верхний соседний блок. В этом случае, конкретным порядком может быть порядок от левого соседнего блока к верхнему соседнему блоку. Также, если верхний соседний блок не принадлежит текущей CTU, соседние блоки могут не включать в себя верхний соседний блок. В этом случае, только левый соседний блок может быть проверен.
[285] Между тем, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, нижний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, H), левый соседний блок может быть блоком, включающим в себя выборку с координатами (01, H-1), верхний-правый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (W, -1), верхний соседний блок может быть блоком, включающим в себя выборку с координатами (W-1, -1), верхний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, -1). Иными словами, левый соседний блок может быть левым соседним блоком в самой нижней позиции среди левых соседних блоков текущего блока, и верхний соседний блок может быть верхним соседним блоком в самой левой позиции среди верхних соседних блоков текущего блока.
[286] Также, в качестве одного примера, если сформированный кандидат аффинного MVP доступен, список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Устройство кодирования может проверять, доступен ли сформированный кандидат аффинного MVP текущего блока, и если сформированный кандидат аффинного MVP доступен, сформированный кандидат аффинного MVP может быть выведен. Также, например, после вывода унаследованного кандидата аффинного MVP, может быть выведен сформированный кандидат аффинного MVP. Если количество выведенных кандидатов аффинного MVP (а именно, количество унаследованных аффинных MVP) меньше, чем 2, и сформированный кандидат аффинного MVP доступен, список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Здесь, сформированный кандидат аффинного MVP может включать в себя векторы движения-кандидаты для CP. Сформированный кандидат аффинного MVP может быть доступен, когда все векторы движения-кандидаты доступны.
[287] Например, если четырех-параметрическая аффинная модель движения применяется к текущему блоку, CP текущего блока может включать в себя CP0 и CP1. Если вектор движения-кандидат для CP0 доступен, и вектор движения-кандидат для CP1 доступен, сформированный кандидат аффинного MVP может быть доступен, и список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Здесь, CP0 может представлять верхнюю-левую позицию текущего блока, и CP1 может представлять верхнюю-правую позицию текущего блока.
[288] Сформированный кандидат аффинного MVP может включать в себя вектор движения-кандидат CP0 и вектор движения-кандидат для CP1. Вектор движения-кандидат для CP0 может быть вектором движения первого блока, и вектор движения-кандидат для CP1 может быть вектором движения второго блока.
[289] Также, первый блок может быть блоком, который был первым подтвержден, при проверке соседних блоков в первой группе в первом конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Иными словами, вектор движения-кандидат для CP1 может быть вектором движения блока, опорная картинка которого первой подтверждена, путем проверки соседних блоков в первой группе в соответствии с первым порядком, что является той же самой, что и опорная картинка текущего блока. Доступность может указывать, что существует соседний блок, и соседний блок кодирован посредством интер-предсказания. Здесь, если опорная картинка первого блока в первой группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP0 может быть доступен. Также, например, первая группа может включать в себя соседний блок A, соседний блок B и соседний блок C, и первым конкретным порядком может быть порядок от соседнего блока A к соседнему блоку B и затем к соседнему блоку C.
[290] Также, второй блок может быть блоком, который был первым подтвержден, при проверке соседних блоков во второй группе во втором конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка второго блока во второй группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP1 может быть доступен. Также, например, вторая группа может включать в себя соседний блок D и соседний блок E, и вторым конкретным порядком может быть порядок от соседнего блока D к соседнему блоку E.
[291] Между тем, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, соседний блок A может быть блоком, включающим в себя выборку с координатами (-1, -1), соседний блок B может быть блоком, включающим в себя выборку с координатами (0, -1), соседний блок C может быть блоком, включающим в себя выборку с координатами (-1, 0), соседний блок D может быть блоком, включающим в себя выборку с координатами (W-1, -1), и соседний блок E может быть блоком, включающим в себя выборку с координатами (W, -1). Иными словами, соседний блок A может быть верхним-левым угловым соседним блоком текущего блока, соседний блок B - верхним соседним блоком в самой левой позиции среди верхних соседних блоков текущего блока, соседний блок C - левым соседним блоком в самой верхней позиции среди левых соседних блоков текущего блока, соседний блок D - верхним соседним блоком в самой правой позиции среди верхних соседних блоков текущего блока, и соседний блок E - верхним-правым угловым соседним блоком текущего блока.
[292] Между тем, если по меньшей мере один из вектора движения-кандидата CP0 и вектора движения-кандидата CP1 недоступен, сформированный кандидат аффинного MVP может быть недоступным.
[293] Или, например, если шести-параметрическая аффинная модель движения применяется к текущему блоку, CP текущего блока может включать в себя CP0, CP1 и CP2. Если вектор движения-кандидат для CP0 доступен, вектор движения-кандидат для CP1 доступен, и вектор движения-кандидат для CP2 доступен, сформированный кандидат аффинного MVP может быть доступен, и список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Здесь, CP0 может представлять верхнюю-левую позицию текущего блока, CP1 может представлять верхнюю-правую позицию текущего блока, и CP2 может представлять нижнюю-левую позицию текущего блока.
[294] Сформированный кандидат аффинного MVP может включать в себя вектор движения-кандидат для CP0, вектор движения-кандидат для CP1 и вектор движения-кандидат для CP2. Вектор движения-кандидат для CP0 может быть вектором движения первого блока, вектор движения-кандидат для CP1 может быть вектором движения второго блока, и вектор движения-кандидат для CP2 может быть вектором движения третьего блока.
[295] Также, первый блок может быть блоком, который был первым подтвержден, при проверке соседних блоков в первой группе в первом конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка первого блока в первой группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP0 может быть доступен. Также, например, первая группа может включать в себя соседний блок A, соседний блок B и соседний блок C, и первым конкретным порядком может быть порядок от соседнего блока A к соседнему блоку B и затем к соседнему блоку C.
[296] Также, второй блок может быть блоком, который был первым подтвержден, при проверке соседних блоков во второй группе во втором конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка второго блока во второй группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP1 может быть доступен. Также, например, вторая группа может включать в себя соседний блок D и соседний блок E, и вторым конкретным порядком может быть порядок от соседнего блока D к соседнему блоку E.
[297] Также, третий блок может быть блоком, который был первым подтвержден, при проверке соседних блоков в третьей группе в третьем конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка третьего блока в третьей группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP2 может быть доступен. Также, например, третья группа может включать в себя соседний блок F и соседний блок G, и третьим конкретным порядком может быть порядок от соседнего блока F к соседнему блоку G.
[298] Между тем, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, соседний блок A может быть блоком, включающим в себя выборку с координатами (-1, -1), соседний блок B может быть блоком, включающим в себя выборку с координатами (0, -1), соседний блок C может быть блоком, включающим в себя выборку с координатами (-1, 0), соседний блок D может быть блоком, включающим в себя выборку с координатами (W-1, -1), соседний блок E может быть блоком, включающим в себя выборку с координатами (W, -1) соседний блок F может быть блоком, включающим в себя выборку с координатами (-1, H-1), и соседний блок G может быть блоком, включающим в себя выборку с координатами (-1, H). Иными словами, соседний блок A может быть верхним-левым угловым соседним блоком текущего блока, соседний блок B - верхним соседним блоком в самой левой позиции среди верхних соседних блоков текущего блока, соседний блок C - левым соседним блоком в самой верхней позиции среди левых соседних блоков текущего блока, соседний блок D - верхним соседним блоком в самой правой позиции среди верхних соседних блоков текущего блока, соседний блок E - верхним-правым угловым соседним блоком текущего блока, соседний блок F - левым соседним блоком в самой нижней позиции среди левых соседних блоков текущего блока, и соседний блок G - нижним-левым угловым соседним блоком текущего блока.
[299] Между тем, если по меньшей мере один из вектора движения-кандидата CP0, вектора движения-кандидата CP1 и вектора движения-кандидата CP2 недоступен, сформированный кандидат аффинного MVP может быть недоступным.
[300] Затем, список кандидатов аффинного MVP может быть выведен на основе этапов, описанных ниже.
[301] Например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP0 доступен, устройство кодирования может выводить первого кандидата аффинного MVP. Здесь, первый кандидат аффинного MVP может быть кандидатом аффинного MVP, включающим в себя вектор движения для CP0 в качестве векторов движения-кандидатов для CP.
[302] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP1 доступен, устройство кодирования может выводить второго кандидата аффинного MVP. Здесь, второй кандидат аффинного MVP может быть кандидатом аффинного MVP, включающим в себя вектор движения для CP1 в качестве векторов движения-кандидатов для CP.
[303] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP2 доступен, устройство кодирования может выводить третьего кандидата аффинного MVP. Здесь, третий кандидат аффинного MVP может быть кандидатом аффинного MVP, включающим в себя вектор движения для CP2 в качестве векторов движения-кандидатов для CP.
[304] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, устройство кодирования может выводить четвертого кандидата аффинного MVP, включающего в себя временной MVP, выведенный на основе временного соседнего блока текущего блока, в качестве векторов движения-кандидатов для CP. Временной соседний блок может относиться к тому же самому совмещенному блоку в той же самой совмещенной картинке, соответствующей текущему блоку. Временной MVP может быть выведен на основе вектора движения временного соседнего блока.
[305] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, устройство кодирования может выводить пятого кандидата аффинного MVP, включающего в себя нулевой вектор движения, в качестве векторов движения-кандидатов для CP. Нулевой вектор движения может представлять вектор движения, все элементы которого равны нулям.
[306] Устройство кодирования выводит предсказателей вектора движения контрольных точек (CPMVP) для контрольных точек (CP) текущего блока на основе списка кандидатов аффинного MVP, S2110. Устройство кодирования может выводить CPMV для CP текущего блока, проявляющего оптимальную стоимость RD, и может выбирать, среди кандидатов аффинного MVP, кандидата аффинного MVP, наиболее сходного с CPMV, в качестве кандидата аффинного MVP для текущего блока. Устройство кодирования может выводить CPMVP для CP текущего блока на основе кандидата аффинного MVP, выбранного среди кандидатов аффинного MVP. Более конкретно, если кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 и вектор движения-кандидат для CP1, вектор движения-кандидат для CP0 кандидата аффинного MVP может быть выведен как CPMVP CP0, и вектор движения-кандидат CP1 кандидата аффинного MVP может быть выведен как CPMVP CP1. Также, если кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0, вектор движения-кандидат для CP1 и вектор движения-кандидат для CP2, вектор движения-кандидат для CP0 кандидата аффинного MVP может быть выведен как CPMVP CP0, вектор движения-кандидат для CP1 кандидата аффинного MVP может быть выведен как CPMVP CP1, и вектор движения-кандидат для CP2 кандидата аффинного MVP может быть выведен как CPMVP CP2. Также, если кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 и вектор движения-кандидат для CP2, вектор движения-кандидат для CP0 кандидата аффинного MVP может быть выведен как CPMVP CP0, и вектор движения-кандидат для CP2 кандидата аффинного MVP может быть выведен как CPMVP CP2.
[307] Устройство кодирования может кодировать индекс кандидата аффинного MVP, указывающий выбранного кандидата аффинного MVP среди кандидатов аффинного MVP. Индекс кандидата аффинного MVP может указывать одного кандидата аффинного MVP среди кандидатов аффинного MVP, включенных в список кандидатов аффинного предсказателя вектора движения (MVP) для текущего блока.
[308] Устройство кодирования выводит CPMV для CP текущего блока, S2120. Устройство кодирования может выводить CPMV для соответствующих CP текущего блока.
[309] Устройство кодирования выводит разности векторов движения контрольных точек (CPMVD) для CP текущего блока на основе CPMVP и CPMV, S2130. Устройство кодирования может выводить CPMVD для CP текущего блока на основе CPMVP и CPMV для соответствующих CP.
[310] Устройство кодирования кодирует информацию предсказания движения, включающую в себя информацию о CPMVD, S2140. Устройство кодирования может вывести информацию предсказания движения, включающую в себя информацию о CPMVD, в форме битового потока. Иными словами, устройство кодирования может вывести информацию изображения, включающую в себя информацию предсказания движения, в форме битового потока. Устройство кодирования может кодировать информацию о CPMVD для соответственных CP, где информация предсказания движения может включать в себя информацию о CPMVD.
[311] Также, предсказание движения может включать в себя индекс кандидата аффинного MVP. Индекс кандидата аффинного MVP может указывать выбранного кандидата аффинного MVP среди кандидатов аффинного MVP, включенных в список кандидатов аффинного предсказателя вектора движения (MVP) для текущего блока.
[312] Между тем, в качестве одного примера, устройство кодирования может выводить выборки предсказания для текущего блока на основе CPMV, выводить остаточные выборки для текущего блока на основе исходных выборок и выборок предсказания для текущего блока, генерировать информацию об остатках для текущего блока на основе остаточных выборок и кодировать информацию об остатках. Информация изображения может включать в себя информацию об остатках.
[313] Между тем, битовый поток может быть передан на устройство декодирования посредством сети или (цифрового) носителя данных. Здесь, сеть может включать в себя широковещательную сеть и/или сеть связи, и цифровой носитель данных может включать в себя различные типы носителей данных, включая USB, SD, CD, DVD, Bluray, HDD и SSD.
[314] Фиг. 22 иллюстрирует устройство кодирования, выполняющее способ кодирования видео в соответствии с настоящим раскрытием. Способ, раскрытый на фиг. 21, может выполняться устройством кодирования, раскрытым на фиг. 22. Более конкретно, например, предсказатель устройства кодирования может выполнять этапы S2100 - S2130 на фиг. 21, и энтропийный кодер устройства кодирования на фиг. 22 может выполнять этап S2140 на фиг. 21. Также, хотя не показано на чертеже, процесс для выведения выборок предсказания для текущего блока на основе CPMV может выполняться предсказателем устройства кодирования на фиг. 22, процесс для выведения остаточных выборок для текущего блока на основе исходных выборок и выборок предсказания для текущего блока может выполняться вычитателем устройства кодирования на фиг. 22, процесс для генерации информации об остатках для текущего блока на основе остаточных выборок может выполняться преобразователем устройства кодирования, и процесс для кодирования информации об остатках может выполняться энтропийным кодером устройства кодирования на фиг. 22.
[315] Фиг. 23 иллюстрирует способ декодирования видео, выполняемый устройством декодирования в соответствии с настоящим раскрытием. Способ, раскрытый на фиг. 23, может выполняться устройством декодирования, раскрытым на фиг. 3. Более конкретно, например, этап S2300 на фиг. 23 может выполняться энтропийным декодером устройства декодирования, этапы S2310 - S2350 могут выполняться предсказателем устройства декодирования, и этап S2360 может выполняться сумматором устройства декодирования. Также, хотя не показано на чертеже, процесс для получения информации об остатках текущего блока посредством битового потока может выполняться энтропийным декодером устройства декодирования, и процесс для выведения остаточных выборок для текущего блока на основе информации об остатках может выполняться обратным преобразователем устройства декодирования.
[316] Устройство декодирования получает информацию предсказания движения для текущего блока из битового потока, S2300. Устройство декодирования может получать информацию изображения, включающую в себя информацию предсказания движения, из битового потока.
[317] Также, например, информация предсказания движения может включать в себя информацию о разностях векторов движения контрольных точек (CPMVD) для контрольных точек (CP) текущего блока. Иными словами, информация предсказания движения может включать в себя информацию о CPMVD для соответственных CP текущего блока.
[318] Также, например, информация предсказания движения может включать в себя индекс кандидата аффинного предсказателя вектора движения (MVP) для текущего блока. Индекс кандидата аффинного MVP может указывать одного из кандидатов аффинного MVP, включенных в список кандидатов аффинного MVP для текущего блока.
[319] Устройство декодирования формирует список кандидатов аффинного MVP для текущего блока, S2310. Устройство декодирования может формировать список кандидатов аффинного MVP, включающий в себя кандидатов аффинного MVP для текущего блока. Максимальное количество кандидатов аффинного MVP списка кандидатов аффинного MVP может быть равно 2.
[320] Также, в качестве одного примера, список кандидатов аффинного MVP может включать в себя унаследованных кандидатов аффинного MVP. Устройство декодирования может проверять, доступны ли унаследованные кандидатов аффинного MVP текущего блока, и если унаследованные кандидаты аффинного MVP доступны, унаследованный кандидат аффинного MVP может быть выведен. Например, унаследованные кандидаты аффинного MVP могут быть выведены на основе соседних блоков текущего блока, и максимальное количество унаследованных кандидатов аффинного MVP может быть равно 2. Доступность соседних блоков может быть проверена в конкретном порядке, и унаследованные кандидаты аффинного MVP могут быть выведены на основе проверенных доступных соседних блоков. Иными словами, доступность соседних блоков может быть проверена в конкретном порядке, первый унаследованный кандидат аффинного MVP может быть выведен на основе доступного соседнего блока, проверенного первым, и второй унаследованный кандидат аффинного MVP может быть выведен на основе доступного соседнего блока, проверенного вторым. Доступность может означать, что соседний блок кодирован на основе аффинная модель движения, и опорная картинка соседнего блока является той же самой, что и опорная картинка текущего блока. Иными словами, доступный соседний блок может относиться к соседнему блоку, кодированному в соответствии с аффинной моделью движения (а именно, соседнему блоку, к которому применяется аффинное предсказание), и опорная картинка которого является той же самой, что и опорная картинка текущего блока. Более конкретно, устройство декодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения доступного соседнего блока, проверенного первым, и выводить первого унаследованного кандидата аффинного MVP, включающего в себя векторы движения как кандидаты CPMVP. Также, устройство декодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения доступного соседнего блока, проверенного вторым, и выводить второго унаследованного кандидата аффинного MVP, включающего в себя векторы движения как кандидаты CPMVP. Аффинная модель движения может быть выведена с помощью уравнения 1 или уравнения 3 выше.
[321] Также, иными словами, соседние блоки могут быть проверены в конкретном порядке, чтобы убедиться, удовлетворяют ли соседние блоки конкретному условию, и унаследованные кандидаты аффинного MVP могут быть выведены на основе соседних блоков, удовлетворяющих проверенному конкретному условию. Иными словами, соседние блоки могут быть проверены в конкретном порядке, чтобы убедиться, удовлетворяют ли соседние блоки конкретному условию, первый унаследованный кандидат аффинного MVP может быть выведен на основе соседнего блока, первым проверенного как удовлетворяющий конкретному условию, и второй унаследованный кандидат аффинного MVP может быть выведен на основе соседнего блока, вторым проверенного как удовлетворяющий конкретному условию. Более конкретно, устройство декодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения соседних блоков, первыми проверенных как удовлетворяющие конкретному условию, и выводить первого унаследованного кандидата аффинного MVP, включающего в себя векторы движения в качестве кандидатов CPMVP. Также, устройство декодирования может выводить векторы движения для CP текущего блока на основе аффинной модели движения соседних блоков, вторыми проверенных как удовлетворяющие конкретному условию, и выводить второго унаследованного кандидата аффинного MVP, включающего в себя векторы движения в качестве кандидатов CPMVP. Аффинная модель движения может быть выведена с помощью уравнения 1 или уравнения 3 выше. Между тем, конкретное условие может указывать, что соседний блок кодирован в соответствии с аффинной моделью движения, и опорная картинка соседнего блока является той же самой, что и опорная картинка текущего блока. Иными словами, соседний блок, удовлетворяющий конкретному условию, может быть кодирован в соответствии с аффинной моделью движения (а именно, аффинное предсказание применяется к соседнему блоку), и опорная картинка является той же самой, что и опорная картинка текущего блока.
[322] Здесь, например, соседние блоки могут включать в себя левый соседний блок, верхний соседний блок, верхний-правый угловой соседний блок, нижний-левый угловой соседний блок и верхний-левый угловой соседний блок текущего блока. В этом случае, конкретным порядком может быть порядок от левого соседнего блока к нижнему-левому угловому соседнему блоку, к верхнему соседнему блоку, к верхнему-правому угловому соседнему блоку, к верхнему-левому угловому соседнему блоку.
[323] Или, например, соседние блоки могут включать в себя только левый соседний блок и верхний соседний блок. В этом случае, конкретным порядком может быть порядок от левого соседнего блока к верхнему соседнему блоку.
[324] Или, например, соседние блоки могут включать в себя левый соседний блок, и если верхний соседний блок принадлежит к текущей CTU, которая включает в себя текущий блок, соседние блоки могут дополнительно включать в себя верхний соседний блок. В этом случае, конкретным порядком может быть порядок от левого соседнего блока к верхнему соседнему блоку. Также, если верхний соседний блок не принадлежит текущей CTU, соседние блоки могут не включать в себя верхний соседний блок. В этом случае, только левый соседний блок может быть проверен. Иными словами, если верхний соседний блок текущего блока принадлежит текущей единице дерева кодирования (CTU), включающей в себя текущий блок, верхний соседний блок может использоваться для выведения унаследованного кандидата аффинного MVP, и если верхний соседний блок текущего блока не принадлежит к текущей CTU, верхний соседний блок может не использоваться для выведения унаследованного кандидата аффинного MVP.
[325] Между тем, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, нижний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, H), левый соседний блок может быть блоком, включающим в себя выборку с координатами (01, H-1), верхний-правый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (W, -1), верхний соседний блок может быть блоком, включающим в себя выборку с координатами (W-1, -1), верхний-левый угловой соседний блок может быть блоком, включающим в себя выборку с координатами (-1, -1). Иными словами, левый соседний блок может быть левым соседним блоком в самой нижней позиции среди левых соседних блоков текущего блока, и верхний соседний блок может быть верхним соседним блоком в самой левой позиции среди верхних соседних блоков текущего блока.
[326] Также, в качестве одного примера, если сформированный кандидат аффинного MVP доступен, список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Устройство декодирования может проверять, доступен ли сформированный кандидат аффинного MVP текущего блока, и если сформированный кандидат аффинного MVP доступен, сформированный кандидат аффинного MVP может быть выведен. Также, например, после выведения унаследованного кандидата аффинного MVP, может быть выведен сформированный кандидат аффинного MVP. Если количество выведенных кандидатов аффинного MVP (а именно, количество унаследованных аффинных MVP) меньше, чем 2, и сформированный кандидат аффинного MVP доступен, список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Здесь, сформированный кандидат аффинного MVP может включать в себя векторы движения-кандидаты для CP. Сформированный кандидат аффинного MVP может быть доступен, когда все векторы движения-кандидаты доступны.
[327] Например, если четырех-параметрическая аффинная модель движения применяется к текущему блоку, CP текущего блока могут включать в себя CP0 и CP1. Если вектор движения-кандидат для CP0 доступен и вектор движения-кандидат для CP1 доступен, сформированный кандидат аффинного MVP может быть доступен, и список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Здесь, CP0 может представлять верхнюю-левую позицию текущего блока, и CP1 может представлять верхнюю-правую позицию текущего блока.
[328] Сформированный кандидат аффинного MVP может включать в себя вектор движения-кандидат для CP0 и вектор движения-кандидат для CP1. Вектор движения-кандидат для CP0 может быть вектором движения первого блока, и вектор движения-кандидат для CP1 может быть вектором движения второго блока.
[329] Также, первый блок может быть блоком, который был первым подтвержден, при проверке соседних блоков в первой группе в первом конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Иными словами, вектор движения-кандидат для CP1 может быть вектором движения блока, опорная картинка которого первой подтверждена, посредством проверки соседних блоков в первой группе в соответствии с первым порядком, что является той же самой, что и опорная картинка текущего блока. Доступность может указывать, что соседний блок существует, и соседний блок кодирован интер-предсказанием. Здесь, если опорная картинка первого блока в первой группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP0 может быть доступен. Также, например, первая группа может включать в себя соседний блок A, соседний блок B и соседний блок C; первым конкретным порядком может быть порядок от соседнего блока A к соседнему блоку B и затем к соседнему блоку C.
[330] Также, второй блок может быть блоком, который был первым подтвержден, при проверке соседних блоков во второй группе во втором конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка второго блока во второй группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP1 может быть доступен. Также, например, вторая группа может включать в себя соседний блок D и соседний блок E, и вторым конкретным порядком может быть порядок от соседнего блока D к соседнему блоку E.
[331] Между тем, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, соседний блок A может быть блоком, включающим в себя выборку с координатами (-1, -1), соседний блок B может быть блоком, включающим в себя выборку с координатами (0, -1), соседний блок C может быть блоком, включающим в себя выборку с координатами (-1, 0), соседний блок D может быть блоком, включающим в себя выборку с координатами (W-1, -1), и соседний блок E может быть блоком, включающим в себя выборку с координатами (W, -1). Иными словами, соседний блок A может быть верхним-левым угловым соседним блоком текущего блока, соседний блок B - верхним соседним блоком в самой левой позиции среди верхних соседних блоков текущего блока, соседний блок C - левым соседним блоком в самой верхней позиции среди левых соседних блоков текущего блока, соседний блок D - верхним соседним блоком в самой правой позиции среди верхних соседних блоков текущего блока, и соседний блок E - верхним-правым угловым соседним блоком текущего блока.
[332] Между тем, если по меньшей мере один из вектора движения-кандидата CP0 и вектора движения-кандидата CP1 недоступен, сформированный кандидат аффинного MVP может быть недоступным.
[333] Или, например, если шести-параметрическая аффинная модель движения применяется к текущему блоку, CP текущего блока могут включать в себя CP0, CP1 и CP2. Если вектор движения-кандидат для CP0 доступен, вектор движения-кандидат для CP1 доступен и вектор движения-кандидат для CP2 доступен, сформированный кандидат аффинного MVP может быть доступен, и список кандидатов аффинного MVP может включать в себя сформированного кандидата аффинного MVP. Здесь, CP0 может представлять верхнюю-левую позицию текущего блока, CP1 может представлять верхнюю-правую позицию текущего блока, и CP2 может представлять нижнюю-левую позицию текущего блока.
[334] Сформированный кандидат аффинного MVP может включать в себя вектор движения-кандидат CP0, вектор движения-кандидат для CP1 и вектор движения-кандидат для CP2. Вектор движения-кандидат для CP0 может быть вектором движения первого блока, вектор движения-кандидат для CP1 может быть вектором движения второго блока, и вектор движения-кандидат для CP2 может быть вектором движения третьего блока.
[335] Также, первый блок может быть блоком, который был первым подтвержден, при проверке соседних блоков в первой группе в первом конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка первого блока в первой группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP0 может быть доступным. Также, например, первая группа может включать в себя соседний блок A, соседний блок B и соседний блок C, и первым конкретным порядком может быть порядок от соседнего блока A к соседнему блоку B и затем к соседнему блоку C.
[336] Также, второй блок может быть блоком, который был первым подтвержден, при проверке соседних блоков во второй группе во втором конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка второго блока во второй группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP1 может быть доступен. Также, например, вторая группа может включать в себя соседний блок D и соседний блок E, и вторым конкретным порядком может быть порядок от соседнего блока D к соседнему блоку E.
[337] Также, третий блок может быть блоком, который был первым подтвержден, при проверке соседних блоков в третьей группе в третьем конкретном порядке, что его опорная картинка является той же самой, что и опорная картинка текущего блока. Здесь, если опорная картинка третьего блока в третьей группе является той же самой, что и опорная картинка текущего блока, вектор движения-кандидат для CP2 может быть доступен. Также, например, третья группа может включать в себя соседний блок F и соседний блок G, и третьим конкретным порядком может быть порядок от соседнего блока F к соседнему блоку G.
[338] Между тем, когда размер текущего блока составляет W×H, х-компонент верхней-левой позиции выборки текущего блока равен 0, и ее y-компонент равен 0, соседний блок A может быть блоком, включающим в себя выборку с координатами (-1, -1), соседний блок B может быть блоком, включающим в себя выборку с координатами (0, -1), соседний блок C может быть блоком, включающим в себя выборку с координатами (-1, 0), соседний блок D может быть блоком, включающим в себя выборку с координатами (W-1, -1), соседний блок E может быть блоком, включающим в себя выборку с координатами (W, -1), соседний блок F может быть блоком, включающим в себя выборку с координатами (-1, H-1), и соседний блок G может быть блоком, включающим в себя выборку с координатами (-1, H). Иными словами, соседний блок A может быть верхним-левым угловым соседним блоком текущего блока, соседний блок B - верхним соседним блоком в самой левой позиции среди верхних соседних блоков текущего блока, соседний блок C - левым соседним блоком в самой верхней позиции среди левых соседних блоков текущего блока, соседний блок D - верхним соседним блоком в самой правой позиции среди верхних соседних блоков текущего блока, соседний блок E - верхним-правым угловым соседним блоком текущего блока, соседний блок F - левым соседним блоком в самой нижней позиции среди левых соседних блоков текущего блока, и соседний блок G - нижним-левым угловым соседним блоком текущего блока.
[339] Между тем, если по меньшей мере один из вектора движения-кандидата CP0, вектора движения-кандидата CP1 и вектора движения-кандидата CP2 недоступен, сформированный кандидат аффинного MVP может быть недоступным.
[340] Между тем, процесс проверки с обрезкой не может выполняться между унаследованным кандидатом аффинного MVP и сформированным кандидатом аффинного MVP. Процесс проверки с обрезкой может представлять процесс, который проверяет, является ли сформированный кандидат аффинного MVP тем же самым, что и унаследованный кандидат аффинного MVP, но не выводит сформированного кандидата аффинного MVP, если обнаружено, что они идентичны.
[341] Затем, список кандидатов аффинного MVP может быть выведен на основе этапов, описанных ниже.
[342] Например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP0 доступен, устройство декодирования может выводить первого кандидата аффинного MVP. Здесь, первый кандидат аффинного MVP может быть кандидатом аффинного MVP, включающим в себя вектор движения для CP0 в качестве векторов движения-кандидатов для CP.
[343] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP1 доступен, устройство декодирования может выводить второго кандидата аффинного MVP. Здесь, второй кандидат аффинного MVP может быть кандидатом аффинного MVP, включающим в себя вектор движения для CP1 в качестве векторов движения-кандидатов для CP.
[344] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, и вектор движения для CP2 доступен, устройство декодирования может выводить третьего кандидата аффинного MVP. Здесь, третий кандидат аффинного MVP может быть кандидатом аффинного MVP, включающим в себя вектор движения для CP2 в качестве векторов движения-кандидатов для CP.
[345] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, устройство декодирования может выводить четвертого кандидата аффинного MVP, включающего в себя временной MVP, выведенный на основе временного соседнего блока текущего блока, в качестве векторов движения-кандидатов для CP. Временной соседний блок может относиться к тому же самому совмещенному блоку в той же самой совмещенной картинке, соответствующей текущему блоку. Временной MVP может быть выведен на основе вектора движения временного соседнего блока.
[346] Также, например, когда количество выведенных кандидатов аффинного MVP меньше, чем 2, устройство декодирования может выводить пятого кандидата аффинного MVP, включающего в себя нулевой вектор движения в качестве векторов движения-кандидатов для CP. Нулевой вектор движения может представлять вектор движения, все элементы которого равны нулям.
[347] Устройство декодирования выводит предсказателей вектора движения контрольных точек (CPMVP) для контрольных точек (CP) текущего блока на основе списка кандидатов аффинного MVP, S2320.
[348] Устройство декодирования может выбрать конкретного кандидата аффинного MVP среди кандидатов аффинного MVP, включенных в список кандидатов аффинного MVP, и вывести выбранного кандидата аффинного MVP в качестве CPMVP для CP текущего блока. Например, устройство декодирования может получать индекс кандидата аффинного MVP для текущего блока из битового потока и среди кандидатов аффинного MVP, включенных в список кандидатов аффинного MVP, выводить кандидата аффинного MVP, указанного индексом кандидата аффинного MVP, в качестве CPMVP для CP текущего блока. Более конкретно, если кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 и вектор движения-кандидат для CP1, вектор движения-кандидат для CP0 кандидата аффинного MVP может быть выведен в качестве CPMVP CP0, и вектор движения-кандидат для CP1 кандидата аффинного MVP может быть выведен в качестве CPMVP CP1. Также, если кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0, вектор движения-кандидат для CP1 и вектор движения-кандидат для CP2, вектор движения-кандидат для CP0 кандидата аффинного MVP может быть выведен в качестве CPMVP CP0, вектор движения-кандидат для CP1 кандидата аффинного MVP может быть выведен в качестве CPMVP CP1, и вектор движения-кандидат для CP2 кандидата аффинного MVP может быть выведен в качестве CPMVP CP2. Также, если кандидат аффинного MVP включает в себя вектор движения-кандидат для CP0 и вектор движения-кандидат для CP2, вектор движения-кандидат для CP0 кандидата аффинного MVP может быть выведен в качестве CPMVP CP0, и вектор движения-кандидат для CP2 кандидата аффинного MVP может быть выведен в качестве CPMVP CP2.
[349] Устройство декодирования выводит разности векторов движения контрольных точек (CPMVD) для CP текущего блока на основе информации предсказания движения, S2330. Информация предсказания движения может включать в себя информацию о CPMVD для каждой CP, и устройство декодирования может выводить CPMVD для каждой из CP текущего блока на основе информации о CPMVD для каждой из CP.
[350] Устройство декодирования выводит векторы движения контрольных точек (CPMV) для CP текущего блока на основе CPMVP и CPMVD, S2340. Устройство декодирования может выводить CPMV для каждой из CP на основе CPMVP и CPMVD для каждой из CP. Например, устройство декодирования может выводить CPMV для каждой CP путем суммирования CPMVP и CPMVD для CP.
[351] Устройство декодирования выводит выборки предсказания для текущего блока на основе CPMV, S2350. Устройство декодирования может выводить векторы движения текущего блока в единицах подблоков или выборок на основе CPMV. Иными словами, устройство декодирования может выводить вектор движения каждого подблока или каждой выборки текущего блока на основе CPMV. Векторы движения в единицах подблоков или выборок могут быть выведены с помощью уравнения 1 или уравнения 3 выше. Векторы движения могут упоминаться как аффинное поле векторов движения (MVF) или массив векторов движения.
[352] Устройство декодирования может выводить выборки предсказания для текущего блока на основе векторов движения в единицах подблоков или выборок. Устройство декодирования может выводить опорную область в опорной картинке на основе вектора движения в единицах подблоков или выборок и генерировать выборки предсказания текущего блока на основе восстановленных выборок в опорной области.
[353] Устройство декодирования генерирует восстановленную картинку для текущего блока на основе выведенных выборок предсказания, S2360. Устройство декодирования может генерировать восстановленную картинку для текущего блока на основе выведенных выборок предсказания. В соответствии с режимом предсказания, устройство декодирования может непосредственно использовать выборки предсказания как восстановленные выборки или генерировать восстановленные выборки путем суммирования остаточных выборок с выборками предсказания. При наличии остаточных выборок для текущего блока, устройство декодирования может получать информацию об остатках для текущего блока из битового потока. Информация об остатках может включать в себя коэффициенты преобразования для остаточных выборок. Устройство декодирования может выводить остаточные выборки (или массив остаточных выборок) для текущего блока на основе остаточной информации. Устройство декодирования может генерировать восстановленные выборки на основе выборок предсказания и остаточных выборок и выводить восстановленный блок или восстановленную картинку на основе восстановленных выборок. Затем, устройство декодирования может применять процесс внутриконтурной фильтрации, такой как процесс фильтрации устранения блочности и/или SAO к восстановленной картинке, чтобы улучшить субъективное/объективное качество изображения, в зависимости от потребностей, как описано выше.
[354] Фиг. 24 иллюстрирует устройство декодирования, выполняющее способ декодирования видео в соответствии с настоящим раскрытием. Способ, раскрытый на фиг. 23, может выполняться устройством декодирования, раскрытым на фиг. 24. Более конкретно, например, энтропийный декодер устройства декодирования на фиг. 24 может выполнять этап S2300 на фиг. 23, предсказатель устройства декодирования на фиг. 24 может выполнять этапы S2310 - S2350, и сумматор устройства декодирования на фиг. 24 может выполнять этап S2360 на фиг. 23. Также, хотя не показано на чертеже, процесс для получения информации изображения, включающей информацию об остатках текущего блока, посредством битового потока может выполняться энтропийным декодером устройства декодирования на фиг. 24, и процесс для выведения остаточных выборок для текущего блока на основе остаточной информации может выполняться обратным преобразователем устройства декодирования на фиг. 24.
[355] В соответствии настоящим раскрытием, эффективность кодирования видео на основе предсказания аффинного движения может быть повышена.
[356] Также, в соответствии с настоящим раскрытием, при выведении списка кандидатов аффинного MVP, только когда все вектора движения-кандидаты для CP сформированных кандидатов аффинного MVP доступны, сформированные кандидаты аффинного MVP могут добавляться, за счет чего сложность процесса для выведения сформированных кандидатов аффинного MVP и процесса для формирования списка кандидатов аффинного MVP может быть снижена, и эффективность кодирования может быть повышена.
[357] Также, в соответствии с настоящим раскрытием, при выведении списка кандидатов аффинного MVP, дополнительные кандидаты аффинного MVP могут быть выведены на основе векторов движения-кандидатов для CP, выведенных с помощью процесса для выведения сформированных кандидатов аффинного MVP, за счет чего сложность процесса для формирования списка кандидатов аффинного MVP может быть снижена, и эффективность кодирования может быть повышена.
[358] Также, в соответствии с настоящим раскрытием, при выведении унаследованных кандидатов аффинного MVP, только когда верхний соседний блок включен в текущую CTU, унаследованный кандидат аффинного MVP может быть выведен с использованием верхнего соседнего блока, за счет чего объем памяти линейного буфера для аффинного предсказания может быть уменьшен, и затраты на аппаратные средства могут быть минимизированы.
[359] В варианте осуществления выше, хотя способы были описаны на основе блок-схем последовательностей операций с использованием последовательностей этапов или блоков, настоящее раскрытие не ограничено конкретной последовательностью этапов, и некоторые этапы могут выполняться в других последовательностях относительно остальных этапов или могут выполняться одновременно с остальными этапами. Кроме того, специалистам в данной области техники должно быть понятно, что этапы, показанные в блок-схемах последовательностей операций, не являются исключительными, могут быть включены дополнительные этапы, или один или более этапов могут быть исключены из блок-схем последовательностей операций, не влияя на технический объем настоящего раскрытия.
[360] Варианты осуществления в соответствии с настоящим раскрытием могут быть реализованы и выполнены на процессоре, микропроцессоре или контролере или микросхеме. Например, функциональные блоки, проиллюстрированные на каждом чертеже, могут быть реализованы и выполнены на компьютере, процессоре, микропроцессоре или контролере или микросхеме. В этом случае, информация (например, информация об инструкциях) или алгоритм для реализации могут быть сохранены в цифровом носителе данных.
[361] Также, устройство декодирования и устройство кодирования, в которых применяются варианты осуществления настоящего раскрытия, могут включать в себя устройство мультимедийной широковещательной передачи и приема, мобильный терминал связи, устройство домашнего кинотеатра, устройство цифрового видео, камеру наблюдения, устройство передачи видео, устройство связи реального времени для передачи видео, мобильное устройство потоковой передачи (стриминга), носитель данных, записывающую видеокамеру, устройство поставщика услуг предоставления видео по требованию (VoD), устройство прямой доставки видео от провайдера контента пользователю (OTT), устройство предоставления услуг потоковой передачи через Интернет, устройство 3D видео, устройство видеотелефона, терминал транспортного средства (например, терминал, устанавливаемый в транспортном средстве, терминал, устанавливаемый в самолете, и терминал, устанавливаемый на судне) и видеоустройство медицинского назначения; и может использоваться для обработки сигнала видео или сигнала данных. Например, OTT-устройства видео могут включать в себя игровую консоль, Bluray-плеер, TV с Интернет-соединением, систему домашнего театра, смартфон, планшетный PC и цифровой видеомагнитофон (DVR).
[362] Также, способ обработки, в котором могут применяться варианты осуществления настоящего раскрытия, может производиться в форме программы, исполняемой компьютером, и может быть сохранен на считываемом компьютером носителе данных. Мультимедийные данные, имеющие структуру в соответствии с настоящим раскрытием, могут также сохраняться на считываемом компьютером носителе данных. Считываемый компьютером носитель данных включает в себя все типы устройств хранения и распределенных устройств хранения, в которых хранятся считываемые компьютером данные. Считываемый компьютером носитель данных может включать в себя, например, Bluray-диск (BD), универсальную последовательную шину (USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, магнитную ленту, гибкий диск и оптическое устройство хранения данных. Также, считываемый компьютером носитель данных включает в себя носители, реализованные в форме несущей (например, передача через Интернет). Также, битовый поток, генерируемый в соответствии со способом кодирования, может быть сохранен в считываемом компьютером носителе данных или передан через проводную или беспроводную сеть связи.
[363] Также, вариант осуществления настоящего раскрытия может быть реализован как компьютерный программный продукт в форме программного кода, и программный код может исполняться компьютером в соответствии с вариантом осуществления настоящего раскрытия. Программный код может быть сохранен на считываемом компьютером носителе.
[364] Фиг. 25 иллюстрирует структуру системы потоковой передачи (стриминга) контента, в которой применяются варианты осуществления настоящего раскрытия.
[365] Система потоковой передачи контента, в которой применяются варианты осуществления настоящего раскрытия, могут, в основном, включать в себя сервер кодирования, сервер потоковой передачи, веб-сервер, мультимедийное хранилище, пользовательское устройство и мультимедийное устройство ввода.
[366] Сервер кодирования выполняет сжатие контента, введенного из мультимедийных устройств ввода, таких как смартфон, камера или цифровая записывающая видеокамера (камкордер), в цифровые данные для генерации битового потока и передает битовый поток на сервер потоковой передачи. В качестве другого примера, если мультимедийные устройства ввода, такие как смартфон, камера или цифровая записывающая видеокамера, непосредственно генерируют битовый поток, сервер кодирования может быть опущен.
[367] Битовый поток может генерироваться способом кодирования или способом для генерации битового потока, в котором применяются варианты осуществления настоящего раскрытия, и сервер потоковой передачи может временно хранить битовый поток, когда битовый поток передается или принимается.
[368] Сервер потоковой передачи передает мультимедийные данные на пользовательское устройство на основе пользовательского запроса через веб-сервер, и веб-сервер выполняет функцию информирования пользователя о том, какие услуги доступны. Если пользователь запрашивает желательную услугу с веб-сервера, веб-сервер передает запрос на сервер потоковой передачи, и сервер потоковой передачи передает мультимедийные данные пользователю. В этом случае, система потоковой передачи контента может включать в себя отдельный сервер управления. В этом случае, сервер управления служит для того, чтобы управлять командами/откликами между устройствами в системе потоковой передачи контента.
[369] Сервер потоковой передачи может принимать контент из мультимедийного хранилища и/или сервера кодирования. Например, когда контент принимается от сервера кодирования, контент может приниматься в реальном времени. В этом случае, для обеспечения плавной услуги потоковой передачи, сервер потоковой передачи может хранить битовый поток в течение предопределенного периода времени.
[370] Примеры пользовательского устройства могут включать в себя мобильный телефон, смартфон, портативный компьютер, цифровой вещательный терминал, персональный цифровой ассистент (PDA), портативный мультимедийный плеер (PMP), навигационный терминал, компактный планшетный PC, планшетный PC, ультрабук, носимое устройство (например, смарт-часы, смарт-очки и наголовный дисплей (HMD)), цифровое TV, настольный компьютер и цифровые вывески. Каждый индивидуальный сервер в системе потоковой передачи контента может приводиться в действие как распределенный сервер, в этом случае данные, принимаемые от каждого сервера, могут обрабатываться распределенным способом.