СПОСОБ ДЕКОДИРОВАНИЯ ВИДЕО И ВИДЕОДЕКОДЕР
METHOD FOR VIDEO DECODING AND VIDEO DECODER

[0001] По настоящей заявке испрашивает приоритет на основе китайской патентной заявки № 201811053068.0, поданной в Национальное управление интеллектуальной собственности Китая 10 сентября 2018 г. и озаглавленной "VIDEO DECODING METHOD AND VIDEO DECODER" ("СПОСОБ ДЕКОДИРОВАНИЯ ВИДЕО И ВИДЕОДЕКОДЕР"), которая полностью включена в настоящий документ посредством ссылки.
Область техники
[0002] Варианты осуществления настоящей заявки, в целом, относятся к области кодирования видео и, более конкретно, к способу декодирования видео и видеодекодеру.
Уровень техники
[0003] Кодирование видео (закодирование и декодирование видео) используется в широком спектре приложений цифрового видео, например, для цифрового телевещания, передачи видео через Интернет и мобильные сети, диалоговых приложений в реальном времени, таких как видеочат и видеоконференцсвязь, DVD и Blu-ray диски, а также приложения для обеспечения безопасности систем сбора и редактирования видеоконтента и видеокамер.
[0004] С развитием блочного гибридного режима кодирования видео в стандарте H.261 в 1990 году были разработаны новые технологии и инструменты кодирования видео, которые заложили основу для новых стандартов кодирования видео. Другие стандарты кодирования видео включают в себя видео MPEG-1, MPEG-2 видео, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10: усовершенствованное кодирование видео (Advanced Video Coding, AVC) и ITU-T H.265/высокоэффективное кодирование видео (High Efficiency Video Coding, HEVC), а также расширения таких стандартов, например, расширения в плане масштабируемости и/или 3D (трехмерные) расширения таких стандартов. Поскольку создание и использование видео становится все более распространенным, трафик видео стал самой большой нагрузкой для сетей связи и хранения данных. Следовательно, одной из целей большинства стандартов кодирования видео является снижение битрейта (расхода (скорости) битов) без ущерба для качества изображения по сравнению с предыдущими стандартами. Хотя новейшее высокоэффективное кодирование видео (high efficiency video coding, HEVC) может сжимать видео примерно в два раза больше, чем AVC, без ущерба для качества изображения, по-прежнему существует острая необходимость в новой технологии для дальнейшего сжатия видео по сравнению с HEVC.
Сущность изобретения
[0005] Вариантами осуществления настоящей заявки предоставляется способ декодирования видео и видеодекодер, чтобы уменьшить пространство, необходимое кодеру или декодеру для хранения контекста.
[0006] Вышеупомянутые и другие цели достигаются посредством изобретений согласно независимым пунктам формулы изобретения. Другие реализации очевидны из зависимых пунктов формулы изобретения, описания изобретения и прилагаемых чертежей.
[0007] Согласно первому аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ (парсинг) принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где энтропийное декодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное декодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием этой модели контекста; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0008] Поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, декодеру не нужно подтверждать модель контекста при выполнении энтропийного декодирования, чем повышается эффективность декодирования при выполнении декодирования видео декодером. Кроме того, поскольку видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, может заниматься меньше пространства хранения в видеодекодере.
[0009] Согласно второму аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0010] Поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодер должен хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, чем занимается меньше пространства хранения в видеодекодере.
[0011] Со ссылкой на второй аспект, в возможной реализации количество моделей контекста в заранее заданном наборе моделей контекста равно 2 или 3.
[0012] Со ссылкой на второй аспект, в возможной реализации, то, что модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке; или
то, что модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.
[0013] Со ссылкой на второй аспект, в возможной реализации, если количество моделей контекста в заранее заданном наборе моделей контекста равно 3, значение индекса контекста элемента 1 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ (OR) в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или
значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0014] Со ссылкой на второй аспект, в возможной реализации, если количество моделей контекста в заданном наборе моделей контекста равно 2, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или
значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0015] Со ссылкой на первый или второй аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез (слайс), в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или
элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.
[0016] Согласно третьему аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0017] Поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодер должен хранить только одну модель контекста для элемента синтаксиса 3 и элемента синтаксиса 4, чем занимается меньше пространства хранения в видеодекодере.
[0018] Со ссылкой на третий аспект, в возможной реализации набор заранее заданных моделей контекста включает в себя пять моделей контекста.
[0019] Со ссылкой на третий аспект, в возможной реализации, элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx и используется для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; или
элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это subblock_merge_idx и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.
[0020] Согласно четвертому аспекту предоставляется способ декодирования видео, включающий в себя этапы, на которых: выполняют синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; определяют значения индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке на основе значений элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и значений элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока; выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе значения индекса контекста подлежащего энтропийному декодированию элемента синтаксиса в текущем блоке; выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0021] Со ссылкой на четвертый аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или
элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.
[0022] Со ссылкой на четвертый аспект, в возможной реализации, определение значения индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке на основе значений элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и значений элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока включает в себя:
определение значения индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:
Индекс контекста = (condL && availableL) + (condA && availableA), где
condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение элемента 1 синтаксиса в левом соседнем блоке, а элемент 2 синтаксиса [x0-1][y0] указывает значение элемента 2 синтаксиса в левом соседнем блоке;
condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение элемента 1 синтаксиса в верхнем соседнем блоке, а элемент 2 синтаксиса [x0][y0-1] указывает значение элемента 2 синтаксиса в верхнем соседнем блоке; и
availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок.
[0023] Согласно пятому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; определять значение индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке на основе значений элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и значений элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе значения индекса контекста подлежащего энтропийному декодированию элемента синтаксиса в текущем блоке; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.
[0024] Со ссылкой на пятый аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или
элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.
[0025] Со ссылкой на пятый аспект, в возможной реализации, блок энтропийного декодирования конкретно выполнен с возможностью:
определять значение индекса контекста элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке в соответствии со следующим логическим выражением:
Индекс контекста = (condL && availableL) + (condA && availableA), где
condL = элемент 1 синтаксиса [x0-1][y0] | элемент 2 синтаксиса [x0-1][y0], где элемент 1 синтаксиса [x0-1][y0] указывает значение элемента 1 синтаксиса в левом соседнем блоке, а элемент 2 синтаксиса [x0-1][y0] указывает значение элемента 2 синтаксиса в левом соседнем блоке;
condA = элемент 1 синтаксиса [x0][y0-1] | элемент 2 синтаксиса [x0][y0-1], где элемент 1 синтаксиса [x0][y0-1] указывает значение элемента 1 синтаксиса в верхнем соседнем блоке, а элемент 2 синтаксиса [x0][y0-1] указывает значение элемента 2 синтаксиса в верхнем соседнем блоке; и
availableL указывает, доступен ли левый соседний блок, и availableA указывает, доступен ли верхний соседний блок.
[0026] Согласно шестому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное декодирование в отношении подлежащего энтропийному декодированию элемента синтаксиса в текущем блоке, где энтропийное декодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное декодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.
[0027] Согласно седьмому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.
[0028] Со ссылкой на седьмой аспект, в возможной реализации, количество моделей контекста в заранее заданном наборе моделей контекста равно 2 или 3.
[0029] Со ссылкой на седьмой аспект, в возможной реализации, модуль энтропийного декодирования конкретно выполнен с возможностью: определять индекс контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке; или
определять индекс контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока, а также элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.
[0030] Со ссылкой на седьмой аспект, в возможной реализации, если количество моделей контекста в заданном наборе моделей контекста равно 3, значение индекса контекста элемента 1 синтаксиса в текущем блоке представляет собой сумму значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или
значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0031] Со ссылкой на седьмой аспект, в возможной реализации, если количество моделей контекста в заранее заданном наборе моделей контекста равно 2, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или
значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0032] Со ссылкой на шестой или седьмой аспект, в возможной реализации, элемент 1 синтаксиса в текущем блоке - это affine_merge_flag и используется для указания того, используется ли режим слияния на основе аффинной модели движения для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа; или
элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag и используется для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа.
[0033] Согласно восьмому аспекту предоставляется видеодекодер, включающий в себя: модуль энтропийного декодирования, выполненный с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащего энтропийному декодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке; модуль обработки предсказания, выполненный с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока; и модуль восстановления, выполненный с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.
[0034] Со ссылкой на восьмой аспект, в возможной реализации, заранее заданный набор моделей контекста включает в себя пять моделей контекста.
[0035] Со ссылкой на восьмой аспект, в возможной реализации, элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx и используется для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; или
элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это subblock_merge_idx и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.
[0036] Согласно девятому аспекту предоставляется способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; выполняют энтропийное кодирование в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке, где при выполнении энтропийного кодирования в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке, энтропийное кодирование в отношении элемента 1 синтаксис в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием этой модели контекста; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.
[0037] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к первому аспекту.
[0038] В соответствии с десятым аспектом предоставляется способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.
[0039] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться ко второму аспекту.
[0040] Согласно одиннадцатому аспекту предоставляется способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.
[0041] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к третьему аспекту.
[0042] Согласно двенадцатому аспекту предоставляется видеокодер, включающий в себя: модуль энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, где при выполнении энтропийного кодирования в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке энтропийное кодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста, или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста; и выход, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.
[0043] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к четвертому аспекту.
[0044] В соответствии с тринадцатым аспектом предоставляется видеокодер, включающий в себя: модуль энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.
[0045] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к пятому аспекту.
[0046] Согласно четырнадцатому аспекту предоставляется видеокодер, включающий в себя: модуль энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования.
[0047] На предмет конкретного элемента синтаксиса и конкретной модели контекста следует обратиться к шестому аспекту.
[0048] Согласно пятнадцатому аспекту настоящее изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранится инструкция, и инструкция обеспечивает выполнение процессором способа согласно первому аспекту, второму аспекту, третьему аспекту или четвертому аспекту или любой их возможной реализации.
[0049] Согласно шестнадцатому аспекту настоящее изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранится инструкция, и эта инструкция обеспечивает выполнение процессором способа согласно седьмому аспекту, восьмому аспекту или девятому аспекту или любой их возможной реализации.
[0050] Согласно семнадцатому аспекту предложен машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкцию, и когда инструкция исполняется, обеспечивается кодирование видеоданных одним или более процессорами. Инструкция обеспечивает выполнение одним или более процессорами способа согласно первому аспекту, второму аспекту, третьему аспекту, четвертому аспекту, седьмому аспекту, восьмому аспекту или девятому аспекту или любой их возможной реализации.
[0051] Согласно восемнадцатому аспекту настоящее изобретение относится к компьютерной программе, включающей в себя программный код. Когда программный код запускается на компьютере, выполняется способ согласно первому аспекту, второму аспекту, третьему аспекту, четвертому аспекту, седьмому аспекту, восьмому аспекту или девятому аспекту или любой их возможной реализации.
[0052] Подробности одного или более вариантов осуществления описаны на прилагаемых чертежах и в нижеследующих описаниях. Другие особенности, объекты и преимущества будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0053] Чтобы более четко описать технические решения согласно вариантам осуществления настоящей заявки или согласно предшествующему уровню техники, ниже кратко описываются прилагаемые чертежи, необходимые для описания вариантов осуществления настоящей заявки или предшествующего уровня техники.
[0054] Фиг.1 - блок-схема примера системы кодирования видео для реализации варианта осуществления настоящего изобретения;
[0055] Фиг.2 - блок-схема, иллюстрирующая примерную структуру видеокодера для реализации варианта осуществления настоящего изобретения;
[0056] Фиг.3 - блок-схема, иллюстрирующая примерную структуру видеодекодера для реализации варианта осуществления настоящего изобретения;
[0057] Фиг.4 - схема, иллюстрирующая систему кодирования видео, включающую в себя кодер 20 по Фиг.2 и декодер 30 по Фиг.3;
[0058] Фиг.5 - блок-схема, иллюстрирующая пример другого устройства кодирования или устройства декодирования;
[0059] Фиг.6 - схематическая диаграмма, иллюстрирующая позиции потенциально подходящей информации движения в пространственной области и во временной области для текущего блока согласно варианту осуществления;
[0060] Фиг.7 - схематическая диаграмма, иллюстрирующая позиции текущего блока и позиции множества соседних блоков согласно варианту осуществления;
[0061] Фиг.8A - блок-схема, иллюстрирующая способ предсказания вектора движения построенной контрольной точки согласно варианту осуществления;
[0062] Фиг.8B - блок-схема последовательности операций, иллюстрирующая способ предсказания вектора движения построенной контрольной точки согласно варианту осуществления;
[0063] Фиг.9A - блок-схема, иллюстрирующая способ внешнего (интер-) предсказания согласно варианту осуществления.
[0064] Фиг.9B - блок-схема, иллюстрирующая способ предсказания вектора движения построенной контрольной точки согласно варианту осуществления;
[0065] Фиг.9C - схематическая диаграмма, иллюстрирующая позицию единицы компенсации движения на основе центральной точки единицы компенсации движения согласно варианту осуществления;
[0066] Фиг.10 - блок-схема, иллюстрирующая способ декодирования видео согласно варианту осуществления;
[0067] Фиг.11 - блок-схема, иллюстрирующая способ декодирования видео согласно варианту осуществления; и
[0068] Фиг.12 - блок-схема, иллюстрирующая способ декодирования видео согласно варианту осуществления.
[0069] В дальнейшем идентичные ссылочные позиции обозначают идентичные или, по меньшей мере, функционально эквивалентные признаки, если не указано иное.
Описание вариантов осуществления
[0070] В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть этого раскрытия и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления настоящего изобретения или конкретные аспекты, в которых могут использоваться варианты осуществления настоящего изобретения. Следует понимать, что варианты осуществления настоящего изобретения могут использоваться в других аспектах и могут включать в себя структурные или логические изменения, не изображенные на сопроводительных чертежах. Следовательно, нижеследующее подробное описание не следует рассматривать как ограничение, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
[0071] Например, следует понимать, что раскрываемое содержание со ссылкой на описываемый способ также может применяться к соответствующему устройству или системе, сконфигурированной для выполнения этого способа, и наоборот. Например, если описаны один или более конкретных этапов способа, соответствующее устройство может включать в себя один или более модулей, таких как функциональные модули, для выполнения описанных одного или нескольких этапов способа (например, один модуль, выполняющий один или более этапов, либо множество модулей, каждый из которых выполняет один или более из множества этапов), даже если такие один или более модулей явно не описаны или не проиллюстрированы на прилагаемых чертежах. Кроме того, например, если конкретное устройство описывается на основе одного или более модулей, таких как функциональные модули, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или более модулей (например, один этап для выполнения функциональных возможностей одного или более модулей, либо множество этапов, каждый из которых используется для выполнения функций одного или более из множества модулей), даже если такие один или более этапов явно не описаны или не проиллюстрированы на сопроводительных чертежах. Кроме того, следует понимать, что особенности различных примерных вариантов осуществления и/или аспектов, описанных в этом описании, могут быть объединены друг с другом, если специально не указано иное.
[0072] Кодирование видео обычно представляет собой обработку последовательности изображений, которые образуют видео или видеопоследовательность. В области видеокодирования термины "картинка (picture)", "кадр (frame)" и "изображение (image)" могут использоваться как синонимы. Кодирование видео, используемое в настоящей заявке (или в этом раскрытии), соответствует закодированию видео или декодированию видео. Закодирование видео выполняется на стороне источника и обычно включает в себя обработку (например, посредством сжатия) исходного видеоизображения для уменьшения объема данных, требующихся для представления видеоизображения (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне пункта назначения и обычно включает в себя обратную обработку относительно кодера, чтобы восстановить видеоизображение. «Кодирование» видеоизображения (или обычно называемого изображением, что поясняется ниже) в вариантах осуществления следует понимать как «закодирование» или «декодирование», относящееся к видеопоследовательности. Комбинация закодирования и декодирования также называется кодированием (закодированием и декодированием).
[0073] В случае кодирования видео без потерь исходное видеоизображение может быть восстановлено, то есть восстановленное видеоизображение имеет то же качество, что и исходное видеоизображение (при условии, что во время хранения или передачи не происходит потери при передаче или другие потери данных). В случае кодирования видео с потерями, дополнительное сжатие выполняется посредством квантования и т.п., чтобы уменьшить объем данных, требуемых для представления видеоизображения, и видеоизображение не может быть полностью восстановлено на стороне декодера, то есть качество изображения восстановленного видеоизображения хуже, чем у исходного видеоизображения.
[0074] Некоторые стандарты кодирования видео H.261 относятся к «гибридному кодированию видео с потерями» (то есть пространственное и временное предсказание в области выборки (дискретного отсчета) комбинируется с кодированием с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение в видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. В частности, на стороне кодера видео обычно обрабатывается, то есть кодируется на уровне блока (блока видео). Например, блок предсказания генерируется посредством пространственного (внутрикадрового) предсказания и временного (межкадрового) предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается или должен быть обработан), чтобы получить остаточный блок, и остаточный блок преобразуется в области преобразования и квантуется для уменьшения количества данных, которые должны быть переданы (сжаты). На стороне декодера обработка, обратная относительно кодера, применяется к кодированному или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что кодер и декодер генерируют одинаковое предсказание (например, внутреннее предсказание и внешнее предсказание) и/или восстановление для обработки, то есть закодирования последующего блока.
[0075] В данном описании термин «блок» может быть частью изображения или кадра. Для простоты описания следует обратиться к стандартам Универсального кодированию видео (VVC: Versatile Video Coding) или Высокоэффективного кодирования видео (High-Efficiency Video Coding, HEVC), разработанным Группой совместной работы по кодированию видео (Joint Collaboration Team on Video Coding, JCT-VC) Группы экспертов по кодированию видео ITU-T (Video Coding Experts Group, VCEG) и Группы экспертов ISO/IEC по движущимся изображениям (Motion Picture Experts Group, MPEG), для описания вариантов осуществления настоящего изобретения. Специалист в данной области техники понимает, что варианты осуществления настоящего изобретения не ограничиваются HEVC или VVC, и блок может быть CU, PU или TU. В HEVC, CTU разбивается на множество CU с использованием структуры квадродерева, обозначенной как дерево кодирования. Определяется, кодируется ли область изображения посредством межкадрового (временного) или внутрикадрового (пространственного) предсказания на уровне CU. Каждый CU может быть дополнительно разбит на один, два или четыре PU на основе типа разбиения PU. Один и тот же процесс предсказания применяется в пределах одного PU, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения PU, CU может быть разбит на блок преобразования (transform unit, TU) на основе другой структуры квадродерева, аналогичной дереву кодирования, используемому для CU. В последних разработках технологий сжатия видео кадр разбивается посредством квадродерева плюс двоичное дерево (Quad-tree plus binary tree, QTBT) для разбиения блока кодирования. В блочной структуре QTBT, CU может быть квадратным или прямоугольным. В VVC единица дерева кодирования (coding tree unit, CTU) сначала разбивается с использованием структуры квадродерева, и листовой узел квадродерева дополнительно разбивается с использованием структуры двоичного дерева. Листовой узел двоичного дерева называется единицей кодирования (CU), и упомянутое разбиение используется для обработки предсказания и преобразования без какого-либо другого разбиения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Кроме того, множественное разбиение используется вместе с блочной структурой QTBT, например, разбиение на основе тройного дерева.
[0076] Ниже описаны варианты осуществления кодера 20, декодера 30, системы 10 кодирования и системы 40 декодирования на основе Фиг.1 - Фиг.4 (перед более подробным описанием вариантов осуществления настоящего изобретения на основе Фиг.10).
[0077] Фиг.1 является концептуальной или схематической блок-схемой, иллюстрирующей пример системы 10 кодирования, например, системы 10 кодирования видео, которая может использовать технологию настоящей заявки (этого раскрытия). Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30) в системе 10 видеокодирования представляют примеры устройств, которые могут быть сконфигурированы для реализации технологий для … (разбиения/внутреннего предсказания/…) согласно различным примерам, описанным в этой заявке. Как показано на Фиг.1, система 10 кодирования включает в себя исходное устройство 12, выполненное с возможностью предоставления закодированных данных 13, таких как закодированное изображение 13, на целевое устройство 14 для декодирования закодированных данных 13 или т.п.
[0078] Исходное устройство 12 включает в себя кодер 20 и, дополнительно или необязательно, может включать в себя источник 16 изображения, например, модуль 18 предварительной обработки, такой как модуль 18 предварительной обработки изображений, и интерфейс связи или модуль 22 связи.
[0079] Источник 16 изображения может включать в себя или может быть устройством захвата изображения любого типа, выполненным с возможностью захвата реального изображения и т.п., и/или устройством любого типа для генерирования изображения или комментария (для кодирования содержимого экрана, некоторый текст на экране также рассматривается как часть картинки или изображения, которое должно быть закодировано), например, модуль обработки компьютерной графики, выполненный с возможностью генерирования изображения компьютерной анимации, или устройство любого типа, выполненное с возможностью получения и/или предоставления изображения реального мира или изображения компьютерной анимации (например, содержимого экрана или изображения виртуальной реальности (virtual reality, VR)) и/или любой их комбинации (например, изображения дополненной реальности (augmented reality, AR)).
[0080] (Цифровое) изображение является или может рассматриваться как двумерный массив или матрица выборок со значениями яркости. Выборка в массиве также может упоминаться как пиксель (pixel) (сокращенная форма элемента изображения (picture element)) или pel. Количество выборок в горизонтальном и вертикальном направлениях (или осям) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть изображение может быть представлено как или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение включает в себя соответствующие массивы выборок красного, зеленого и синего цветов. Однако при кодировании видео каждая выборка обычно представлена в формате яркости/цветности или цветовом пространстве, например, изображение в формате YCbCr включает в себя компонент яркости, обозначенный Y (иногда обозначаемый L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (кратко, яркость) указывает яркость или интенсивность уровня серого (например, они одинаковы на изображении в градациях серого), а два компонента цветности (для краткости цветности) Cb и Cr представляют компоненты информации о цветности или цвете. Соответственно, изображение в формате YCbCr включает в себя массив выборок яркости из значений выборок яркости (Y) и два массива выборок цветности из значений цветности (Cb и Cr). Изображение в формате RGB может быть преобразовано или преобразовано в изображение в формате YCbCr, и наоборот. Этот процесс также называется преобразованием цвета или преобразованием. Если изображение является монохромным, оно может включать в себя только массив выборок яркости.
[0081] Источник 16 изображения (например, источник 16 видео) может быть, например, камерой, сконфигурированной для захвата изображения, например, памятью, такой как память изображений, которая включает в себя или хранит ранее захваченное или сгенерированное изображение, и/или любым типом интерфейса (внутренним или внешним) для получения или приема изображения. Камера может быть, например, локальной камерой или интегральной камерой, интегрированной в исходное устройство, а память может быть локальной памятью или интегральной памятью, интегрированной в исходное устройство. Интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео. Внешний источник видео представляет собой, например, внешнее устройство захвата изображения, такое как камера, внешняя память или внешнее устройство формирования изображения. Внешнее устройство формирования изображения представляет собой, например, внешний компьютерный графический процессор, компьютер или сервер. Интерфейс может быть интерфейсом любого типа в соответствии с любым частным или стандартизованным протоколом интерфейса, например, проводным или беспроводным интерфейсом или оптическим интерфейсом. Интерфейс для получения данных 17 изображения может быть таким же интерфейсом, как интерфейс 22 связи, или может быть частью интерфейса 22 связи.
[0082] В отличие от модуля 18 предварительной обработки и обработки, выполняемой модулем 18 предварительной обработки, изображение 17 или данные 17 изображения (например, видеоданные 16) также могут упоминаться как исходное изображение 17 или данные 17 исходного изображения.
[0083] Модуль 18 предварительной обработки сконфигурирован для приема (исходных) данных 17 изображения и выполнения предварительной обработки данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Например, предварительная обработка, выполняемая модулем 18 предварительной обработки, может включать в себя обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или уменьшение шума. Можно понять, что модуль 18 предварительной обработки может быть необязательным компонентом.
[0084] Кодер 20 (например, видеокодер 20) выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления данных 21 закодированного изображения (подробности дополнительно описаны ниже, например, на основе Фиг.2 или Фиг.4). В одном примере кодер 20 может быть выполнен с возможностью кодирования изображения.
[0085] Интерфейс связи 22 исходного устройства 12 может быть выполнен с возможностью приема данных 21 закодированного изображения и передачи данных 21 закодированного изображения на другое устройство, например, на целевое устройство 14 или любое другое устройство, для сохранения или прямого восстановления, либо может быть выполнено с возможностью обработки закодированных данных 21 изображения перед соответствующим сохранением закодированных данных 13 и/или передачей закодированных данных 13 на другое устройство. Другое устройство - это, например, целевое устройство 14 или любое другое устройство, используемое для декодирования или хранения.
[0086] Целевое устройство 14 включает в себя декодер 30 (например, видеодекодер 30) и, дополнительно или необязательно, может включать в себя интерфейс связи или модуль 28 связи, модуль 32 постобработки и устройство 34 отображения.
[0087] Например, интерфейс 28 связи целевого устройства 14 сконфигурирован для непосредственного приема закодированных данных 21 изображения или закодированных данных 13 от исходного устройства 12 или любого другого источника. Любой другой источник представляет собой, например, запоминающее устройство, а запоминающее устройство - это, например, устройство хранения данных закодированных изображений.
[0088] Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема закодированных данных 21 изображения или закодированных данных 13 по прямой линии связи между исходным устройством 12 и целевым устройством 14 или по сети любого типа. Прямая линия связи представляет собой, например, прямое проводное или беспроводное соединение, и любой тип сети представляет собой, например, проводную или беспроводную сеть или любую их комбинацию, либо любой тип частной сети или публичной сети или любую их комбинацию.
[0089] Интерфейс 22 связи может быть, например, выполнен с возможностью инкапсуляции данных 21 закодированного изображения в надлежащий формат, такой как пакет для передачи по линии связи или сети связи.
[0090] Интерфейс 28 связи как соответствующая часть интерфейса 22 связи может быть выполнен с возможностью декапсуляции закодированных данных 13 для получения данных 21 закодированного изображения и т.п.
[0091] Как интерфейс 22 связи, так и интерфейс 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, например, стрелка, указывающая от исходного устройства 12 к целевому устройству 14, которые используются для данных 13 закодированных изображений на Фиг.1, или могут быть сконфигурированы как двунаправленные интерфейсы связи и могут быть, например, сконфигурированы для отправки и приема сообщения для установления соединения, а также для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, такой как передача закодированных данных изображения.
[0092] Декодер 30 выполнен с возможностью приема данных 21 закодированного изображения и предоставления данных 31 декодированного изображения или декодированного изображения 31 (подробности дополнительно описаны ниже, например, на основе Фиг.3 или Фиг.5).
[0093] Постпроцессор 32 целевого устройства 14 выполнен с возможностью постобработки декодированных данных 31 изображения (также называемых данными восстановленного изображения), таких как декодированное изображение 31, чтобы получить пост-обработанные данные 33 изображения, такие как пост-обработанное изображение 33. Постобработка, выполняемая модулем 32 постобработки, может включать в себя, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку, передискретизацию или любую другую обработку для подготовки декодированных данных 31 изображения для отображения посредством устройства 34 отображения.
[0094] Устройство 34 отображения из состава целевого устройства 14 выполнено с возможностью приема постобработанных данных 33 изображения для отображения изображения пользователю, зрителю или т.п. Устройство 34 отображения может быть или может включать в себя любой тип дисплея, выполненный с возможностью представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Например, дисплей может включать в себя жидкокристаллический дисплей (liquid crystal display, LCD), дисплей на основе органических светоизлучающих диодов (organic light emitting diode, OLED), плазменный дисплей, проектор, дисплей на основе микро-светодиодов, дисплей на основе жидких кристаллов на кремнии (liquid crystal on silicon, LCoS), устройство цифровой обработки света (digital light processor, DLP) или любой другой тип дисплея.
[0095] Хотя Фиг.1 изображает исходное устройство 12 и целевое устройство 14 как отдельные устройства, варианты осуществления устройства могут также включать в себя как исходное устройство 12, так и целевое устройство 14, или как функцию исходного устройства 12, так и функцию целевого устройства 14, то есть, исходное устройство 12 или соответствующая функция и целевое устройство 14 или соответствующая функция. В таких вариантах осуществления исходное устройство 12 или соответствующая функция и целевое устройство 14 или соответствующая функция могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, отдельного аппаратного и/или программного обеспечения или любой их комбинации.
[0096] Основываясь на описаниях, специалист в данной области техники легко понимает, что существование и (точное) разделение функций различных модулей или функций/функций исходного устройства 12 и/или целевого устройства 14, показанных на Фиг.1, может отличаться в зависимости от конкретного устройства и приложения.
[0097] Каждый из кодера 20 (например, видеокодера 20) и декодера 30 (например, видеодекодера 30) может быть реализован как любая из различных надлежащих схем, например, один или несколько микропроцессоров, устройство цифровой обработки сигналов (digital signal processor, DSP), специализированная интегральная схема (application-specific integrated circuit, ASIC), программируемая пользователем вентильная матрица (field-programmable gate array, FPGA), дискретная логика, аппаратные средства или любая их комбинация. Если технология частично реализована в программном обеспечении, устройство может хранить программную инструкцию на подходящем долговременном машиночитаемом носителе данных и может исполнять инструкцию в аппаратных средствах, используя один или несколько процессоров для выполнения технологий, описанных в этом раскрытии. Любое из вышеупомянутого содержимого (включая аппаратные средства, программное обеспечение, комбинацию аппаратных средств и программного обеспечения и т.п.) может рассматриваться как один или несколько процессоров. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или несколько кодеров или декодеров, и любой из кодеров или декодеров может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве.
[0098] Исходное устройство 12 может называться устройством кодирования видео или оборудованием кодирования видео. Целевое устройство 14 может называться устройством декодирования видео или оборудованием декодирования видео. Каждое из исходного устройства 12 и целевого устройства 14 может быть примером устройства кодирования видео или оборудования декодирования видео.
[0099] Каждое из исходного устройства 12 и целевого устройства 14 может включать в себя любое из различных устройств, включая любой тип портативного или стационарного устройства, такого как, например, ноутбук или портативный компьютер, мобильный телефон, смартфон, планшет или планшетный компьютер, видеокамера, настольный компьютер, телевизионная приставка, телевизор, устройство отображения, цифровой медиаплеер, игровая консоль, устройство для передачи потокового видео (например, сервер службы контента или сервер распространения контента), устройство приемника вещания или устройство передатчика вещания, и может использовать или не использовать операционную систему любого типа.
[0100] В некоторых случаях исходное устройство 12 и целевое устройство 14 могут быть оборудованы для беспроводной связи. Следовательно, исходное устройство 12 и целевое устройство 14 могут быть устройствами беспроводной связи.
[0101] В некоторых случаях система 10 кодирования видео, показанная на Фиг.1, является просто примером, и технологии согласно настоящей заявке могут применяться к настройке кодирования видео (например, закодированию видео или декодированию видео), которые не должны включать в себя какой-либо обмен данными между устройством кодирования и устройством декодирования. В других примерах данные могут быть извлечены из локальной памяти, переданы в потоковом режиме по сети и т.п. Устройство кодирования видео может закодировать данные и сохранять данные в памяти, и/или устройство декодирования видео может извлекать данные из памяти и декодировать данные. В некоторых примерах закодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а только кодируют данные в память и/или извлекают данные из памяти и декодируют данные.
[0102] Следует понимать, что для каждого из вышеупомянутых примеров, описанных со ссылкой на видеокодер 20, видеодекодер 30 может быть сконфигурирован для выполнения обратного процесса. Для элемента синтаксиса сигнализации видеодекодер 30 может быть выполнен с возможностью принимать и получать этот элемент синтаксиса посредством синтаксического анализа и соответственно декодировать связанные с ним видеоданные. В некоторых примерах видеокодер 20 может энтропийно кодировать один или более элементов синтаксиса в закодированный битовый поток видео. В подобных примерах видеодекодер 30 может выполнять синтаксический анализ таких элементов синтаксиса и соответственно декодировать связанные с ним видеоданные.
[0103] Кодер и способ кодирования
[0104] Фиг.2 является схематической/концептуальной блок-схемой примера видеокодера 20, сконфигурированного для реализации технологий согласно настоящей заявке (раскрытию). В примере по Фиг.2, видеокодер 20 включает в себя модуль 204 вычисления остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, буфер 216, модуль 220 контурного фильтра, буфер 230 декодированных изображений (decoded picture buffer, DPB), модуль 260 обработки предсказания и модуль 270 энтропийного кодирования. Модуль 260 обработки предсказания может включать в себя модуль 244 внешнего предсказания, модуль 254 внутреннего (интра-) предсказания и модуль 262 выбора режима. Модуль 244 внешнего предсказания может включать в себя модуль оценки движения и модуль компенсации движения (не показаны на фигуре). Видеокодер 20, показанный на Фиг.2, также может называться гибридным видеокодером или видеокодером на основе гибридного видеокодека.
[0105] Например, модуль 204 вычисления остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 260 обработки предсказания и модуль 270 энтропийного кодирования образуют прямой тракт сигнала кодера 20, а модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (decoded picture buffer, DPB), модуль 260 обработки предсказания и т.п. образуют обратный тракт сигнала кодера. Обратный тракт сигнала кодера соответствует тракту сигнала декодера (ссылаясь на декодер 30 по Фиг.3).
[0106] Кодер 20 принимает изображение 201 или блок 203 изображения 201, используя вход 202 или т.п., например, изображение в последовательности изображений, которые образуют видео или видеопоследовательность. Блок 203 изображения также может называться блоком текущего изображения или блоком изображения, подлежащим кодированию, а изображение 201 может упоминаться как текущее изображение или изображение, подлежащее кодированию (особенно тогда, когда проводится различие между текущим изображением и другим изображением при кодировании видео, другими изображениями, например, в той же видеопоследовательности, также включая ранее закодированные и/или декодированные изображения в видеопоследовательности текущего изображения).
[0107] Разбиение
[0108] Вариант осуществления кодера 20 может включать в себя модуль разбиения (не показан на Фиг.2), выполненный с возможностью разбиения изображения 201 на множество неперекрывающихся блоков, таких как блоки 203. Блок разбиения может быть сконфигурирован для использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующего растра, определяющего размер блока, или может быть сконфигурирован для: изменения размера блока между изображениями, подмножествами или группами изображений и разбиения каждого изображения на соответствующие блоки.
[0109] В одном примере модуль 260 обработки предсказания из состава видеокодера 20 может быть выполнен с возможностью осуществления любой комбинации вышеупомянутых технологий разбиения.
[0110] Например, в изображении 201 блок 203 также рассматривается или также может рассматриваться как двумерный массив или матрица выборок со значениями яркости (значения выборок), хотя размер блока 203 меньше, чем размер изображения 201. Другими словами, блок 203 может включать в себя, например, один массив выборок (например, массив яркости в случае монохромного изображения 201), три массива выборок (например, один массив яркости и два массива цветности в случае цветного изображения) или любое другое количество и/или тип массивов на основе используемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или осям) блока 203 определяет размер блока 203.
[0111] Кодер 20, показанный на Фиг.2, сконфигурирован для кодирования изображения 201 блок за блоком, например, для выполнения кодирования и предсказания в отношении каждого блока 203.
[0112] Вычисление остатка
[0113] Модуль 204 вычисления остатка сконфигурирован для вычисления остаточного блока 205 на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания представлены ниже), например, для получения остаточного блока 205 в области выборки посредством вычитания значения выборки блока 265 предсказания из значения выборки блока 203 изображения, выборка за выборкой (пиксель за пикселем).
[0114] Преобразование
[0115] Модуль 206 обработки преобразования сконфигурирован для применения преобразования, такого как дискретное косинусное преобразование (discrete cosine transform, DCT) или дискретное синусное преобразование (discrete sine transform, DST), к значению выборки остаточного блока 205, чтобы получить коэффициент преобразования 207 в области преобразования. Коэффициент 207 преобразования может также называться остаточным коэффициентом преобразования и указывает остаточный блок 205 в области преобразования.
[0116] Модуль 206 обработки преобразования может быть выполнен с возможностью применения целочисленного приближения DCT/DST, например, преобразования, указанного в HEVC/H.265. Это целочисленное приближение обычно масштабируется пропорционально коэффициентом, по сравнению с ортогональным преобразованием DCT. Для поддержания нормы остаточного блока, полученного посредством прямого преобразования и обратного преобразования, дополнительный масштабный коэффициент применяется как часть процесса преобразования. Масштабный коэффициент обычно выбирается на основе некоторых условий ограничения, например, является степенью 2, битовой глубины коэффициента преобразования или компромисса между точностью и затратами на реализацию, которые используются для операции сдвига. Например, конкретный масштабный коэффициент задается для обратного преобразования на стороне декодера 30 с использованием модуля 212 обработки обратного преобразования (и, соответственно, для обратного преобразования на стороне кодера 20 с использованием модуля 212 обработки обратного преобразования или ему подобного), и, соответственно, соответствующий масштабный коэффициент может быть задан для прямого преобразования на стороне кодера 20 с использованием модуля 206 обработки преобразования.
[0117] Квантование
[0118] Модуль 208 квантования сконфигурирован для квантования коэффициента 207 преобразования путем применения масштабного квантования, векторного квантования или т.п., чтобы получить квантованный коэффициент 209 преобразования. Квантованный коэффициент 209 преобразования также может упоминаться как квантованный остаточный коэффициент 209. Процесс квантования может уменьшить битовую глубину, относящуюся к некоторым или всем коэффициентам 207 преобразования. Например, n-битный коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулирования параметра квантования (quantization parameter, QP). Например, для масштабного квантования могут применяться разные масштабы для достижения более тонкого или более грубого квантования. Меньший шаг квантования соответствует более тонкому квантованию, а больший шаг квантования соответствует более грубому квантованию. Надлежащий шаг квантования может быть указан с помощью параметра квантования (quantization parameter, QP). Например, параметр квантования может быть индексом заранее определенного набора надлежащих шагов квантования. Например, меньший параметр квантования может соответствовать более тонкому квантованию (меньшему шагу квантования), а больший параметр квантования может соответствовать более грубому квантованию (большему шагу квантования), и наоборот. Квантование может включать в себя деление на этап квантования и соответствующее квантование или обратное квантование, выполняемое модулем 210 обратного квантования или т.п., либо может включать в себя умножение на шаг квантования. В вариантах осуществления согласно некоторым стандартам, таким как HEVC, параметр квантования может использоваться для определения шага квантования. Как правило, шаг квантования может быть вычислен на основе параметра квантования посредством аппроксимации с фиксированной точкой в отношении уравнения, включающего деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и обратного квантования, чтобы восстановить норму, которая соответствует остаточному блоку и которая может быть изменена из-за масштаба, используемого в приближении с фиксированной точкой в отношении уравнения, используемого для шага квантования и параметра квантования. В примерной реализации масштаб обратного преобразования может быть объединен с масштабом обратного квантования. В качестве альтернативы настроенная таблица квантования может использоваться и сигнализироваться от кодера декодеру, например, в потоке битов. Квантование - это операция с потерями, и больший шаг квантования указывает на большие потери.
[0119] Модуль 210 обратного квантования сконфигурирован для применения обратного квантования модуля 208 квантования к квантованному коэффициенту, чтобы получить обратно-квантованный коэффициент 211, например, применять, на основе или с использованием того же шага квантования, что и модуль 208 квантования, схему обратного квантования схемы квантования, применяемой модулем 208 квантования. Обратно-квантованный коэффициент 211 также может называться обратно-квантованным остаточным коэффициентом 211 и соответствовать коэффициенту 207 преобразования, хотя потери, вызванные квантованием, обычно отличаются от коэффициента преобразования.
[0120] Модуль 212 обработки обратного преобразования сконфигурирован для применения обратного преобразования преобразования, применяемого модулем 206 обработки преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусного преобразования (discrete sine transform, DST), чтобы получить блок 213 обратного преобразования в области выборки. Блок 213 обратного преобразования может также называться обратно-квантованным блоком 213 обратного преобразования или остаточным блоком 213 обратного преобразования.
[0121] Модуль 214 восстановления (например, сумматор 214) сконфигурирован для добавления блока 213 обратного преобразования (то есть восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем добавления значения выборки восстановленного остаточного блока 213 и значения выборки блока 265 предсказания.
[0122] В необязательном порядке, модуль 216 буфера (или “буфер” 216 для краткости), такой как строковый буфер 216, приспособлен для буферизации или хранения восстановленного блока 215 и соответствующего значения выборки для внутреннего предсказания и т.п. В других вариантах осуществления кодер может быть сконфигурирован для использования нефильтрованного восстановленного блока и/или соответствующего значения выборки, которые хранятся в модуле 216 буфера, для любого типа оценки и/или предсказания, такого как внутреннее предсказание.
[0123] Например, вариант осуществления кодера 20 может быть сконфигурирован так, что модуль 216 буфера не только приспособлен для хранения восстановленного блока 215 для внутреннего предсказания, но также приспособлен для хранения отфильтрованного блока 221 модуля 220 контурной фильтрации (не показано на Фиг.2), и/или модуль 216 буфера и модуль 230 буфера декодированных изображений образуют один буфер. Другие варианты осуществления могут использоваться для использования отфильтрованного блока 221 и/или блока или выборки из буфера 230 декодированных изображений (не показано на Фиг.2) в качестве входных данных или основы для внутреннего предсказания 254.
[0124] Модуль 220 контурного фильтра (или, для краткости, «контурный фильтр» 220) сконфигурирован для выполнения фильтрации в отношении восстановленного блока 215 для получения отфильтрованного блока 221, чтобы плавно выполнять преобразование выборок или повышать качество видео. Модуль 220 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, например, фильтра устранения блочности, фильтра с адаптивным к выборке смещением (sample-adaptive offset, SAO) или другого фильтра, такого как двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживающий фильтр, либо совместный фильтр. Хотя модуль 220 контурного фильтра показан на Фиг.2 в качестве внутриконтурного фильтра, модуль 220 контурного фильтра может быть реализован как пост-контурный фильтр в других конфигурациях. Отфильтрованный блок 221 также может называться фильтрованным восстановленным блоком 221. Буфер 230 декодированных изображений может хранить восстановленный блок кодирования после того, как модуль 220 контурного фильтра выполнит операцию фильтрации в отношении восстановленного блока кодирования.
[0125] Вариант осуществления кодера 20 (соответственно, модуля 220 контурного фильтра) может использоваться для вывода параметра контурного фильтра (например, информации адаптивного к выборке смещения), например, для прямого вывода параметра контурного фильтра или вывода параметра контурного фильтра после того, как модуль 270 энтропийного кодирования или любой другой модуль энтропийного кодирования выполнит энтропийное кодирование, так что декодер 30 может принимать и применять один и тот же параметр контурного фильтра для декодирования и т.п.
[0126] Буфер 230 декодированных изображений (decoded picture buffer, DPB) может быть памятью опорных изображений, которая хранит данные опорных изображений для видеокодера 20 для кодирования видеоданных. DPB 230 может быть любым из множества запоминающих устройств, например, динамическим оперативным запоминающим устройством (dynamic random access memory, DRAM) (включая синхронное DRAM (synchronous DRAM, SDRAM), магниторезистивное ОЗУ (magnetoresistive RAM, MRAM) или резистивное ОЗУ (resistive RAM, RRAM)), либо другой тип памяти. DPB 230 и буфер 216 могут быть реализованы в виде одного и того же запоминающего устройства или отдельных запоминающих устройств. В одном примере буфер декодированного изображения (decoded picture buffer, DPB) 230 приспособлен для хранения отфильтрованного блока 221. Буфер 230 декодированных изображений может быть дополнительно приспособлен для хранения других предыдущих отфильтрованных блоков, таких как предыдущие восстановленные и отфильтрованные блоки 221 одного и того же текущего изображения или разных изображений, таких как предыдущие восстановленные изображения, и может предоставлять полное предыдущее восстановленное, то есть декодированное изображение (и соответствующий опорный блок и соответствующую выборку) и/или частично восстановленное текущее изображение (и соответствующий опорный блок и соответствующую выборку) для внешнего предсказания и т.п. В одном примере, если восстановленный блок 215 восстанавливается без внутриконтурной фильтрации, буфер 230 декодированных изображений (decoded picture buffer, DPB) конфигурируется для хранения восстановленного блока 215.
[0127] Модуль 260 обработки предсказания также называется модулем 260 обработки предсказания блока и выполнен с возможностью: принимать или получать блок 203 (текущий блок 203 текущего изображения 201) и данные восстановленного изображения, например, опорную выборку из того же самого (текущего) изображения в буфере 216 и/или данные опорного изображения 231 из одного или нескольких предыдущих декодированных изображений в буфере 230 декодированных изображений, и обрабатывать такие данные для предсказания, то есть, выдавать блок 265 предсказания, который может представлять собой блок 245 внешнего предсказания или блок 255 внутреннего предсказания.
[0128] Модуль 262 выбора режима может быть сконфигурирован для выбора режима предсказания (например, режима внутреннего или внешнего предсказания) и/или соответствующего блока 245 или 255 предсказания в качестве блока 265 предсказания, чтобы вычислить остаточный блок 205 и восстановить восстановленный блок 215.
[0129] Вариант осуществления модуля 262 выбора режима может использоваться для выбора режима предсказания (например, из режимов предсказания, поддерживаемых модулем 260 обработки предсказания). Режим предсказания обеспечивает наилучшее совпадение или минимальный остаток (минимальный остаток означает лучшее сжатие при передаче или хранении) или обеспечивает минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие при передаче или хранении), либо учитывает или уравновешивает их. Модуль 262 выбора режима может быть выполнен с возможностью определения режима предсказания на основе оптимизации по искажению-скорости (rate distortion optimization, RDO), то есть выбора режима предсказания, который обеспечивает оптимизацию в плане минимизации соотношения искажения-скорости, или выбора режима предсказания, в котором соответствующие соотношение искажения-скорости, по меньшей мере, соответствует критерию выбора режима предсказания.
[0130] Обработка предсказания (например, с использованием модуля 260 обработки предсказания) и выбор режима (например, с использованием модуля 262 выбора режима), выполняемые примером кодера 20, подробно описаны ниже.
[0131] Как описано выше, кодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из (заранее определенного) набора режимов предсказания. Набор режимов предсказания может включать в себя, например, режим внутреннего предсказания и/или режим внешнего предсказания.
[0132] Набор режимов внутреннего предсказания может включать в себя 35 разных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, определенные в H.265, либо может включать в себя 67 разных режимов внутреннего предсказания, например, ненаправленный режим, такой как режим DC (или среднего) и планарный режим, или развивающиеся направленные режимы, определенные в H.266.
[0133] (Возможный) набор режимов внешнего предсказания зависит от доступного опорного изображения (например, по меньшей мере, части декодированного изображения, сохраненного в DBP 230) и других параметров внешнего предсказания, например, зависит от того, используется ли все опорного изображение или только часть опорного изображения, например, поиск в окне области поиска, окружающей область текущего блока, выполняется на предмет наилучшим образом согласующегося опорного блока, и/или зависит от того, применяется ли интерполяция выборки, такая как интерполяция на основе половины выборки и/или четверти выборки.
[0134] В дополнение к вышеупомянутым режимам предсказания также могут применяться режим пропуска и/или прямой режим.
[0135] Модуль 260 обработки предсказания может быть дополнительно выполнен с возможностью: разбивать блок 203 на более мелкие разделы или подблоки, например, путем итеративного использования разбиения на основе квадродерева (quad-tree, QT), разбиения на основе двоичного дерева (binary-tree, BT), разбиения на основе тройного дерева или тернарного дерева (triple-tree or ternary-tree, TT), либо любой их комбинации, и выполнять предсказание и т.п. в отношении каждого из разделов блоков или подблоков. Выбор режима включает в себя выбор древовидной структуры разделенного блока 203 и выбор режима предсказания, применяемого к каждому из разделов блока или подблоков.
[0136] Модуль 244 внешнего предсказания может включать в себя модуль оценки движения (motion estimation, ME) (не показан на Фиг.2) и модуль компенсации движения (motion compensation, MC) (не показан на Фиг.2). Модуль оценки движения выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 201) и декодированного изображения 31 или, по меньшей мере, одного или нескольких предыдущих восстановленных блоков, например, одного или нескольких других восстановленных блоки, отличных от предыдущего декодированного изображения 31, чтобы выполнить оценку движения. Например, видеопоследовательность может включать в себя текущее изображение и предыдущее декодированное изображение 31. Другими словами, текущее изображение и предыдущее декодированное изображение 31 могут быть частью последовательности изображений, которые образуют видеопоследовательность или образуют последовательность изображений.
[0137] Например, кодер 20 может быть выполнен с возможностью: выбирать опорный блок из множества опорных блоков одного и того же изображения или разных изображений во множестве других изображений и подавать опорное изображение (или индекс опорного изображения) и/или смещение (пространственное смещение) между положением (координатами XY) опорного блока и положением текущего блока в качестве параметра внешнего предсказания в модуль оценки движения (не показан на Фиг.2). Это смещение также называется вектором движения (motion vector, MV).
[0138] Модуль компенсации движения выполнен с возможностью: получать, например, принимать параметр внешнего предсказания и выполнять внешнее предсказание на основе или с использованием параметра внешнего предсказания для получения блока 245 внешнего предсказания. Компенсация движения, выполняемая модулем компенсации движения (не показано на Фиг.2), может включать в себя извлечение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения (возможно, выполнение интерполяции с точностью до подвыборки). Во время фильтрации с интерполяцией может быть сгенерирована дополнительная выборка из известных выборок, тем самым потенциально увеличивая количество потенциально подходящих блоков предсказания (блоков предсказания - кандидатов), которые могут использоваться для кодирования блока изображения. Как только вектор движения, используемый для PU текущего блока изображения, принят, модуль 246 компенсации движения может найти блок предсказания, на который указывает вектор движения в списке опорных изображений. Модуль 246 компенсации движения может дополнительно генерировать элемент синтаксиса, связанный с блоком и срезом видео, с тем чтобы видеодекодер 30 использовал элемент синтаксиса при декодировании блока изображения среза видео.
[0139] Модуль 254 внутреннего предсказания выполнен с возможностью получения, например, приема блока 203 изображения (текущего блока изображения) одного и того же изображения и одного или нескольких предыдущих восстановленных блоков, таких как восстановленные соседние блоки, для выполнения внутренней оценки. Например, кодер 20 может быть выполнен с возможностью выбора режима внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.
[0140] Вариант осуществления кодера 20 может быть выполнен с возможностью выбора режима внутреннего предсказания на основе критерия оптимизации, например, на основе минимального остатка (например, режима внутреннего предсказания, обеспечивающего блок 255 предсказания, который наиболее похож на текущее изображение блок 203) или минимального соотношения искажения-скорости.
[0141] Модуль 254 внутреннего предсказания дополнительно выполнен с возможностью определения блока 255 внутреннего предсказания на основе параметра внутреннего предсказания выбранного режима внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания, используемого для блока, модуль 254 внутреннего предсказания дополнительно конфигурируется для подачи параметра внутреннего предсказания в модуль 270 энтропийного кодирования, то есть предоставления информации для указания выбранного режима внутреннего предсказания, используемого для блока. В примере модуль 254 внутреннего предсказания может быть выполнен с возможностью выполнения любой комбинации следующих технологий внутреннего предсказания.
[0142] Модуль 270 энтропийного кодирования сконфигурирован для применения алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (variable length coding, VLC), схемы контекстно-адаптивного VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, схемы контекстно-зависимого адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), схемы контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (syntax-based context-adaptive binary arithmetic coding, SBAC), схемы кодирования на основе энтропии разбиения вероятностного интервала (probability interval partitioning entropy, PIPE) или другого метода или технологии энтропийного кодирования) к одному или нескольким (или ни одному) из квантованного остаточного коэффициента 209, параметра внешнего предсказания, параметра внутреннего предсказания и/или параметра контурного фильтра, чтобы получить данные 21 закодированного изображения, которые могут быть выведены с использованием выхода 272, например, в форме закодированного потока битов. Закодированный поток битов может быть передан в видеодекодер 30 или может быть заархивирован для последующей передачи или извлечения видеодекодером 30. Модуль 270 энтропийного кодирования может быть дополнительно сконфигурирован для выполнения энтропийного кодирования другого элемента синтаксиса текущего среза видео, который кодируется.
[0143] Другой структурный вариант видеокодера 20 может быть сконфигурирован для кодирования видеопотока. Например, кодер 20, не основывающийся на преобразовании, может напрямую квантовать остаточный сигнал без модуля 206 обработки преобразования для некоторых блоков или кадров. В еще одной реализации кодер 20 может иметь модуль 208 квантования и модуль 210 обратного квантования, которые объединены в один модуль.
[0144] Фиг.3 показывает пример видеодекодера 30, сконфигурированного для реализации технологий согласно настоящей заявке. Видеодекодер 30 выполнен с возможностью приема закодированных данных 21 изображения (например, закодированного потока битов), закодированных кодером 20 или т.п., чтобы получить декодированное изображение 31. В процессе декодирования видеодекодер 30 принимает видеоданные от видеокодера 20, например, закодированный поток битов видеоданных, который указывает блок изображения закодированного среза видео и связанный с ним элемент синтаксиса.
[0145] В примере по Фиг.3, декодер 30 включает в себя модуль 304 энтропийного декодирования, модуль 310 обратного квантования, модуль 312 обработки обратного преобразования, модуль 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированных изображений и модуль 360 обработки предсказания. Модуль 360 обработки предсказания может включать в себя модуль 344 внешнего предсказания, модуль 354 внутреннего предсказания и модуль 362 выбора режима. В некоторых примерах видеодекодер 30 может выполнять обход декодирования, в основном обратный обходу кодирования, описанному со ссылкой на видеокодер 20 по Фиг.2.
[0146] Модуль 304 энтропийного декодирования сконфигурирован для выполнения энтропийного декодирования закодированных данных 21 изображения, чтобы получить квантованный коэффициент 309, декодированный параметр кодирования (не показан на Фиг.3) и/или т.п., например, любой один или все из параметра внешнего предсказания, параметра внутреннего предсказания, параметра контурного фильтра и/или другого элемента синтаксиса (декодированных). Модуль 304 энтропийного декодирования дополнительно выполнен с возможностью пересылки параметра внешнего предсказания, параметра внутреннего предсказания и/или другого элемента синтаксиса в модуль 360 обработки предсказания. Видеодекодер 30 может принимать элемент синтаксиса на уровне среза видео и/или элемент синтаксиса на уровне блока видео.
[0147] Модуль 310 обратного квантования может иметь ту же функцию, что и модуль 110 обратного квантования, модуль 312 обработки обратного преобразования может иметь ту же функцию, что и модуль 212 обработки обратного преобразования, модуль 314 восстановления может иметь ту же функцию, что и модуль 214 восстановления, буфер 316 может иметь ту же функцию, что и буфер 216, контурный фильтр 320 может иметь ту же функцию, что и контурный фильтр 220, и буфер 330 декодированных изображений может иметь ту же функцию, что и буфер 230 декодированных изображений.
[0148] Модуль 360 обработки предсказания может включать в себя модуль 344 внешнего предсказания и модуль 354 внутреннего предсказания. Модуль 344 внешнего предсказания может иметь функцию, аналогичную функции модуля 244 внешнего предсказания, и модуль 354 внутреннего предсказания может иметь функцию, аналогичную функции модуля 254 внутреннего предсказания. Модуль 360 обработки предсказания обычно сконфигурирован для выполнения предсказания блока и/или получения блока 365 предсказания из закодированных данных 21, а также приема или получения (явно или неявно) параметра, относящегося к предсказанию, и/или информации о выбранном режиме предсказания, например, от модуля 304 энтропийного декодирования.
[0149] Когда срез видео кодируется как интра-кодированный (I) срез, модуль 354 внутреннего предсказания модуля 360 обработки предсказания конфигурируется генерировать блок 365 предсказания, используемый для блока изображения текущего среза видео, на основе сообщенного внутреннего (интра) режима предсказания и данных из предыдущего декодированного блока текущего кадра или изображения. Когда видеокадр кодируется как интер-кодированный (то есть B или P) срез, модуль 344 внешнего (интер) предсказания (например, модуль компенсации движения) модуля 360 обработки предсказания конфигурируется генерировать используемый блок 365 предсказания для блока видео текущего среза видео на основе вектора движения и другого элемента синтаксиса, принятого от модуля 304 энтропийного декодирования. Для внешнего предсказания блок предсказания может быть сгенерирован из одного из опорных изображений в одном списке опорных изображений. Видеодекодер 30 может создавать списки опорных кадров: список 0 и список 1 с использованием технологии построения по умолчанию на основе опорного изображения, хранящегося в DPB 330.
[0150] Модуль 360 обработки предсказания выполнен с возможностью: определять информацию предсказания, используемую для блока видео текущего среза видео, путем анализа вектора движения и другого элемента синтаксиса и использовать информацию предсказания для генерирования блока предсказания, используемого для текущего блока видео, который декодируется. Например, модуль 360 обработки предсказания определяет, используя некоторые принятые элементы синтаксиса, режим предсказания (например, внутреннее или внешнее предсказание), используемый для кодирования блока видео среза видео, тип среза внешнего предсказания (например, B-срез, P-срез или GPB-срез), информацию структуры одного или нескольких изображений в списке опорных изображений, используемых для среза, вектор движения каждого интер-кодированного блока видео, используемого для среза, состояние внешнего предсказания каждого интер-кодированного блока видео, используемого для среза, и другую информацию для декодирования блока видео текущего среза видео.
[0151] Модуль 310 обратного квантования может быть сконфигурирован для выполнения обратного квантования (то есть деквантования) в отношении квантованного коэффициента преобразования, предоставленного в потоке битов и декодированного модулем 304 энтропийного декодирования. Процесс обратного квантования может включать в себя: использование параметра квантования, вычисленного видеокодером 20 для каждого блока видео в срезе видео, чтобы определить степень квантования, которая должна применяться, и определить степень обратного квантования, которая должна применяться.
[0152] Модуль 312 обработки обратного преобразования сконфигурирован для применения обратного преобразования (например, обратного DCT, обратного целочисленного преобразования или концептуально аналогичного процесса обратного преобразования) к коэффициенту преобразования, чтобы сгенерировать остаточный блок в области выборки.
[0153] Модуль 314 восстановления (например, сумматор 314) выполнен с возможностью добавлять блок 313 обратного преобразования (то есть восстановленный остаточный блок 313) к блоку 365 предсказания, чтобы получить восстановленный блок 315 в области выборки, например, путем добавления значения выборки восстановленного остаточного блока 313 к значению выборки блока 365 предсказания.
[0154] Модуль 320 контурной фильтрации (в цикле кодирования или после цикла кодирования) сконфигурирован для фильтрации восстановленного блока 315 для получения фильтрованного блока 321, чтобы плавно выполнять преобразование выборок или повышать качество видео. В одном примере модуль 320 контурного фильтра может быть сконфигурирован для выполнения любой комбинации следующих технологий фильтрации. Модуль 320 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, например, фильтра устранения блочности, фильтра с адаптивным к выборке смещением (sample-adaptive offset, SAO) или другого фильтра, такого как двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживающий фильтр, либо совместный фильтр. Хотя модуль 320 контурного фильтра показан на Фиг.3 в качестве внутриконтурного фильтра, модуль 320 контурного фильтра может быть реализован как пост-контурный фильтр в других конфигурациях.
[0155] Фильтрованный блок 321 в заданном кадре или изображениях затем сохраняется в буфере 330 декодированных изображений, который хранит опорное изображение, используемое для последующей компенсации движения.
[0156] Декодер 30 выполнен с возможностью выводить декодированное изображение 31 с использованием выхода 332 и т.п., чтобы представить декодированное изображение 31 пользователю или предоставить декодированное изображение 31 для просмотра пользователем.
[0157] Другой вариант видеодекодера 30 может быть выполнен с возможностью декодировать сжатый поток битов. Например, декодер 30 может генерировать выходной видеопоток без модуля 320 контурного фильтра. Например, декодер 30, не основывающийся на преобразовании, может напрямую деквантовать остаточный сигнал без модуля 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь модуль 310 обратного квантования и модуль 312 обработки обратного преобразования, которые объединены в один модуль.
[0158] На Фиг.4 приведена схема, иллюстрирующая пример системы 40 видеокодирования, включающей в себя кодер 20 по Фиг.2 и/или декодер 30 по Фиг.3 согласно примерному варианту осуществления. Система 40 может реализовывать сочетание различных технологий настоящей заявки. В проиллюстрированной реализации система 40 видеокодирования может включать в себя устройство 41 формирования изображения, видеокодер 20, видеодекодер 30 (и/или видеодекодер, реализованный логической схемой 47 модуля 46 обработки), антенну 42, один или несколько процессоров 43, одно или несколько запоминающих устройств 44 и/или устройство 45 отображения.
[0159] Как показано на фигуре, устройство 41 формирования изображения, антенна 42, блок 46 обработки, логическая схема 47, видеокодер 20, видеодекодер 30, процессор 43, память 44 и/или устройство 45 отображения могут сообщаться друг с другом. Как описано, хотя система 40 видеокодирования проиллюстрирована как с видеокодером 20, так и с видеодекодером 30, в различных примерах система 40 видеокодирования может включать в себя только видеокодер 20 или только видеодекодер 30.
[0160] В некоторых примерах, как показано на фигуре, система 40 видеокодирования может включать в себя антенну 42. Например, антенна 42 может быть приспособлена для передачи или приема закодированного потока битов видеоданных. Кроме того, в некоторых примерах система 40 видеокодирования может включать в себя устройство 45 отображения. Устройство 45 отображения может быть приспособлено для представления видеоданных. В некоторых примерах, как показано на фигуре, логическая схема 47 может быть реализована модулем 46 обработки. Модуль 46 обработки может включать в себя логику специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. Система 40 видеокодирования также может включать в себя дополнительный процессор 43. Дополнительный процессор 43 может аналогичным образом включать в себя логику специализированной интегральной схемы (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. В некоторых примерах логическая схема 47 может быть реализована с помощью аппаратных средств, таких как специализированное оборудование для кодирования видео, а процессор 43 может быть реализован с помощью универсального программного обеспечения, операционной системы и т.п. Кроме того, память 44 может быть любым типом памяти, например энергозависимой памятью (например, статическим ОЗУ (Static Random Access Memory, SRAM) или динамическим ОЗУ (Dynamic Random Access Memory, DRAM)) или энергонезависимой памятью (например, флэш-памятью). В неограничивающем примере, память 44 может быть реализована с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к памяти 44 (например, для реализации буфера изображений). В других примерах, логическая схема 47 и/или модуль 46 обработки могут включать в себя память (например, кэш) для реализации буфера изображений и т.п.
[0161] В некоторых примерах видеокодер 20, реализованный посредством логической схемы, может включать в себя буфер изображений (например, реализованный модулем 46 обработки или памятью 44) и модуль обработки графики (например, реализованный модулем 46 обработки). Графический процессор может быть коммуникационно связан с буфером изображений. Модуль обработки графики может включать в себя видеокодер 20, реализованный посредством логической схемы 47, для реализации различных модулей, которые описаны со ссылкой на Фиг.2 и/или любую другую систему или подсистему кодера, описанные в данном описании. Логическая схема может быть сконфигурирована для выполнения различных операций, описанных в данном описании.
[0162] Видеодекодер 30 может быть аналогичным образом реализован логической схемой 47 для реализации различных модулей, которые описаны со ссылкой на декодер 30 по Фиг.3 и/или любую другую систему или подсистему декодера, описанную в этом описании. В некоторых примерах видеодекодер 30, реализованный посредством логической схемы, может включать в себя буфер изображений (реализованный модулем 46 обработки или памятью 44) и модуль обработки графики (например, реализованный модулем 46 обработки). Графический процессор может быть коммуникационно связан с буфером изображений. Модуль обработки графики может включать в себя видеодекодер 30, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на Фиг.3 и/или любую другую систему или подсистему декодера, описанную в настоящем описании.
[0163] В некоторых примерах антенна 42 системы 40 видеокодирования может быть приспособлена для приема закодированного потока битов видеоданных. Как описано, закодированный поток битов может включать в себя данные, индикатор, значение индекса, данные выбора режима и т.п., которые относятся к кодированию видеокадров, описанному в настоящем описании, например, данные, относящиеся к разбиению при кодировании (например, коэффициент преобразования или квантованный коэффициент преобразования, необязательный индикатор (как описано) и/или данные, определяющие разбиение при кодировании). Система 40 видеокодирования может дополнительно включать в себя видеодекодер 30, который подключен к антенне 42 и сконфигурирован для декодирования закодированного потока битов. Устройство 45 отображения приспособлено для представления видеокадра.
[0164] Фиг.5 представляет собой упрощенную блок-схему устройства 500, которое может использоваться как одно или два из исходного устройства 12 и целевого устройства 14 по Фиг.1 согласно примерному варианту осуществления. Устройство 500 может реализовывать технологии согласно настоящей заявке. Устройство 500 может использовать форму вычислительной системы, включающей в себя множество вычислительных устройств, или может использовать форму одного вычислительного устройства, такого как мобильный телефон, планшетный компьютер, портативный компьютер, портативный компьютер или настольный компьютер.
[0165] Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть любым другим типом существующего или будущего устройства или устройств, которые могут управлять или обрабатывать информацию. Как показано на чертеже, хотя раскрытые реализации могут быть реализованы на практике с использованием одного процессора, такого как процессор 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.
[0166] В реализации, память 504 в устройстве 500 может быть постоянным запоминающим устройством (Read Only Memory, ROM) или оперативным запоминающим устройством (random access memory, RAM). В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым имеет доступ процессор 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладную программу 510. Прикладная программа 510 включает в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять способ, описанный в настоящем описании. Например, прикладная программа 510 может включать в себя приложения с 1 по N, и приложения с 1 по N дополнительно включают в себя приложение кодирования видео для выполнения способа, описанного в настоящем описании. Устройство 500 может дополнительно включать в себя дополнительную память в форме вторичной памяти 514. Вторичная память 514 может быть, например, картой памяти, используемой вместе с мобильным вычислительным устройством. Поскольку сеанс видеосвязи может содержать большой объем информации, информация может быть полностью или частично сохранена во вторичной памяти 514 и загружена в память 504 для обработки по мере необходимости.
[0167] Устройство 500 может дополнительно включать в себя одно или несколько устройств вывода, например дисплей 518. В одном примере дисплей 518 может быть сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, которым можно управлять для распознавания сенсорного ввода. Дисплей 518 может быть связан с процессором 502 с помощью шины 512. В дополнение к дисплею 518 может быть дополнительно предусмотрено другое устройство вывода, которое позволяет пользователю программировать устройство 500 или использовать устройство 500 другим способом, либо другое устройство вывода может быть предоставлено в качестве альтернативы дисплею 518. Когда устройство вывода является дисплеем или включает в себя дисплей, дисплей может быть реализован по-другому, например, с использованием жидкокристаллического дисплея (liquid crystal display, LCD), дисплея с электронно-лучевой трубкой (cathode-ray tube, CRT), плазменного дисплея или светодиодного дисплея, такого как дисплей на основе органических светодиодов (organic LED, OLED).
[0168] Устройство 500 может дополнительно включать в себя устройство 520 считывания изображения или может быть подключено к устройству 520 считывания изображения. Устройство 520 считывания изображения представляет собой, например, камеру или любое другое существующее или будущее устройство 520 считывания изображения, которое может фиксировать изображение. Изображение представляет собой, например, изображение пользователя, который эксплуатирует устройство 500. Устройство 520 считывания изображения может быть размещено прямо перед пользователем, который эксплуатирует устройство 500. В примере положение и оптическая ось устройства 520 считывания изображения могут быть сконфигурированы так, чтобы поле зрения устройства 520 считывания изображения включало в себя область, смежную с дисплеем 518, и дисплей 518 можно было бы видеть из этой области.
[0169] Устройство 500 может дополнительно включать в себя устройство 522 считывания звука или может быть подключено к устройству 522 считывания звука. Устройство 522 считывания звука представляет собой, например, микрофон или любое другое существующее или будущее устройство считывания звука, которое может фиксировать звук вблизи устройства 500. Устройство 522 считывания звука может быть размещено непосредственно перед пользователем, который эксплуатирует устройство 500, и может быть сконфигурировано для приема звука, такого как голос или другой звук, который издается пользователем, когда пользователь эксплуатирует устройство 500.
[0170] Хотя процессор 502 и память 504 устройства 500 объединены в один блок, как показано на Фиг.5, можно использовать другие конфигурации. Работа процессора 502 может быть распределена между множеством машин, которые могут быть напрямую связаны (каждая машина имеет один или несколько процессоров) или могут быть распределены в локальном регионе или в другой сети. Память 504 может быть распределена на множестве машин, таких как сетевая память и память на множестве машин, на которых работает устройство 500. Хотя здесь изображена одна шина, может быть множество шин 512 устройства 500. Кроме того, вторичная память 514 может быть напрямую связана с другими компонентами устройства 500 или может быть доступна через сеть и может включать в себя один интегрированный блок, такой как карта памяти, или множество блоков, таких как множество памяти. открытки. Следовательно, устройство 500 может быть реализовано во множестве конфигураций.
[0171] Ниже описаны концепции настоящей заявки.
[0172] 1. Режим внешнего предсказания
[0173] В HEVC используются два режима внешнего предсказания: усовершенствованный режим предсказания векторов движения (advanced motion vector prediction, AMVP) и режим слияния (merge).
[0174] В режиме AMVP сначала проходятся соседние в пространственном или временном плане закодированные блоки (обозначаемые как соседние блоки) текущего блока, и список потенциально подходящих векторов движения (который также может называться списком потенциально подходящей информации о движении) строится на основе информации о движении соседних блоков. Затем оптимальный вектор движения определяется из списка потенциально подходящих векторов движения на основе стоимости в плане соотношения искажения-скорости, и потенциально подходящая информация о движении с минимальной стоимостью в плане соотношения искажения-скорости используется в качестве предиктора вектора движения (motion vector predictor, MVP) текущего блока. Обе позиции соседних блоков и порядок их обхода заранее определены. Стоимость в плане соотношения искажения-скорости вычисляется по формуле (1), где J указывает стоимость в плане соотношения искажения-скорости (RD-стоимость), SAD - сумма абсолютных разностей (sum of absolute differences, SAD) между исходным значением выборки и предсказанным значением выборки, полученным посредством оценки движения с использованием потенциально подходящего предиктора вектора движения, R указывает битрейт, а  указывает множитель Лагранжа. Сторона кодера передает на сторону декодера индекс выбранного предиктора вектора движения в списке потенциально подходящих векторов движения и значения индекса опорного кадра. Кроме того, поиск движения выполняется в окрестности с центром в MVP, чтобы получить фактический вектор движения текущего блока. Сторона кодера передает на сторону декодера разность (разность векторов движения) между MVP и фактическим вектором движения.
(1)
[0175] В режиме слияния список потенциально подходящих векторов движения сначала строится на основе информации о движении соседних в пространственном или временном плане закодированных блоков текущего блока. Затем оптимальная информация о движении определяется из списка потенциально подходящих векторов движения на основе стоимости в плане соотношения искажения-скорости, чтобы служить в качестве информации о движении для текущего блока. Затем значение индекса (обозначенное в дальнейшем как индекс слияния) позиции оптимальной информации о движении в списке потенциально подходящих векторов движения передается на сторону декодера. Пространственная потенциально подходящая информация о движении и временная потенциально подходящая информация о движении текущего блока показаны на Фиг.6. Пространственная потенциально подходящая информация о движении поступает из пяти пространственно соседних блоков (A0, A1, B0, B1 и B2). Если соседний блок недоступен (соседний блок не существует, или соседний блок не закодирован, или режим предсказания, используемый для соседнего блока, не является режимом внешнего предсказания), информация о движении соседнего блока не добавляется в список потенциально подходящих векторов движения. Временная потенциально подходящая информация о движении текущего блока получается путем масштабирования вектора движения (MV) блока в соответствующей позиции в опорном кадре на основе порядковых номеров изображения (picture order count, POC) опорного кадра и текущего кадра. Сначала определяется то, является ли блок в позиции T в опорном кадре доступным. Если блок недоступен, выбирается блок в позиции C.
[0176] Как и в режиме AMVP, в режиме слияния обе позиции соседних блоков и порядок их обхода также являются заранее определенными. Кроме того, позиции соседних блоков и их порядок обхода могут изменяться в зависимости от режима.
[0177] Можно узнать, что список потенциально подходящих векторов движения необходимо поддерживать как в режиме AMVP, так и в режиме слияния. Каждый раз перед добавлением новой информации о движении в список кандидатов сначала проверяется, существует ли такая же информация о движении в данном списке. Если такая же информация о движении существует, информация о движении не добавляется в список. Этот процесс проверки называется обрезкой списка потенциально подходящих векторов движения. Обрезка списка предназначена для того, чтобы избежать одинаковой информации о движении в списке, тем самым избегая избыточного вычисления стоимости в плане соотношения искажения-скорости.
[0178] При внутреннем предсказании HEVC все выборки в блоке кодирования используют одну и ту же информацию о движении, а затем на основе информации о движении выполняется компенсация движения, чтобы получить предикторы выборок из блока кодирования. Однако в блоке кодирования не все выборки имеют одинаковую характеристику движения. Использование одной и той же информации о движении может привести к неточному предсказанию компенсации движения и большей остаточной информации.
[0179] В существующих стандартах кодирования видео используется оценка движения с сопоставлением блоков на основе модели поступательного движения, и предполагается, что движение всех выборок в блоке согласованно. Однако в реальном мире существует множество движений. Многие объекты находятся в непоступательном движении, например, вращающийся объект, американские горки, вращающиеся в разных направлениях, фейерверк и некоторые трюки в фильмах, особенно движущийся объект в сценарии UGC. Для этих движущихся объектов, если для кодирования используется технология компенсации движения блока, основывающаяся на модели поступательного движения в существующих стандартах кодирования, эффективность кодирования может сильно пострадать. Поэтому для дальнейшего повышения эффективности кодирования вводится модель непоступательного движения, такая как аффинная модель движения.
[0180] Следовательно, с точки зрения различных моделей движения, режим AMVP можно классифицировать на режим AMVP на основе поступательной модели и режим AMVP на основе непоступательной модели, а режим слияния можно классифицировать на режим слияния на основе поступательной модели и режим слияния на основе непоступательной модели.
[0181] 2. Модель непоступательного движения
[0182] При предсказании на основе модели непоступательного движения сторона кодека использует одну модель движения для получения информации о движении каждой дочерней единицы компенсации движения в текущем блоке и выполняет компенсацию движения на основе информации о движении дочерней единицы компенсации движения, чтобы получить блок предсказания, с тем чтобы повысить эффективность предсказания. Общепринятой моделью непоступательного движения является 4-параметрическая аффинная модель движения или 6-параметрическая аффинная модель движения.
1
2
1
2
1
2
2
[0183] Дочерняя единица компенсации движения в вариантах осуществления настоящей заявки может быть выборкой или блоком выборок N × N, полученным посредством разбиения в соответствии с конкретным методом, где как N, так и N являются положительными целыми числами, а N может быть равно N или может не быть равно N.
[0184] 4-параметрическая аффинная модель движения выражается формулой (2):
(2)
[0185] 4-параметрическая аффинная модель движения может быть представлена векторами движения двух выборок и координатами этих двух выборок относительно верхней левой выборки текущего блока. Выборка, используемая для представления параметра модели движения, называется контрольной точкой. Если верхняя левая выборка (0, 0) и верхняя правая выборка (W, 0) используются в качестве контрольных точек, сначала определяются векторы движения  и  верхней левой контрольной точки и верхней правой контрольной точки текущего блока. Затем информация о движении каждой дочерней единицы компенсации движения в текущем блоке получается в соответствии с формулой (3), где (x, y) - координаты дочерней единицы компенсации движения относительно верхней левой выборки текущего блока, и W указывает ширину текущего блока.
(3)
[0186] 6-параметрическая аффинная модель движения выражается формулой (4):
(4)
[0187] 6-параметрическая аффинная модель движения может быть представлена векторами движения трех выборок и координатами этих трех выборок относительно верхней левой выборки текущего блока. Если верхняя левая выборка (0, 0), верхняя правая выборка (W, 0) и нижняя левая выборка (0, H) используются в качестве контрольных точек, сначала определяются векторы движения ,  и  верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока. Затем информация дочерней единицы компенсации движения в текущем блоке получается в соответствии с формулой (5), где (x, y) - координаты дочерней единицы компенсации движения относительно верхней левой выборки текущего блока, а W и H указывают ширину и высоту текущего блока, соответственно.
(5)
[0188] Блок кодирования, который предсказывается с использованием аффинной модели движения, называется блоком аффинного кодирования.
[0189] Как правило, информация о движении контрольной точки блока аффинного кодирования может быть получена с использованием усовершенствованного режима предсказания вектора движения на основе аффинной модели движения (Advanced Motion Vector Prediction, AMVP) или режима слияния (Merge) на основе аффинной модели движения.
[0190] Информация о движении контрольной точки текущего блока кодирования может быть получена с использованием перенятого метода предсказания вектора движения контрольной точки или построенного метода предсказания вектора движения контрольной точки.
[0191] 3. Перенятый метод предсказания вектора движения контрольной точки
[0192] Перенятый метод предсказания вектора движения контрольной точки использует модель движения соседнего закодированного блока аффинного кодирования для определения потенциально подходящего вектора движения контрольной точки текущего блока.
[0193] Текущий блок, показанный на Фиг.7, используется в качестве примера. Соседние блоки вокруг текущего блока проходятся в указанном порядке, например, A1->B1->B0->A0->B2, чтобы найти блок аффинного кодирования, в котором расположен соседний блок текущего блока, и получить информацию о движении контрольной точки блока аффинного кодирования. Кроме того, вектор движения контрольной точки (для режима слияния) или предиктор вектора движения контрольной точки (для режима AMVP) текущего блока выводится с использованием модели движения, построенной с использованием информации о движении контрольной точки блока аффинного кодирования. Порядок A1->B1->B0->A0->B2 используется просто в качестве примера. Порядок с другим сочетанием также применим к настоящей заявке. Кроме того, соседние блоки не ограничиваются A1, B1, B0, A0 и B2.
[0194] Соседний блок может быть выборкой или блоком выборок заранее заданного размера, полученным на основе конкретного метода разбиения, например, может быть блоком выборок 4×4, блоком выборок 4×2 или блоком выборок другого размера. Это не ограничено.
[0195] Далее описывается процесс определения с использованием A1 в качестве примера, и другой случай аналогичен этому.
[0196] Как показано на Фиг.7, если блок кодирования, в котором находится A1, является блоком 4-параметрического аффинного кодирования, получаются вектор движения (vx4, vy4) верхней левой выборки (x4, y4) и вектор движения (vx5, vy5) верхней правой выборки (x5, y5) блока аффинного кодирования. Вектор движения (vx0, vy0) верхней левой выборки (x0, y0) текущего блока аффинного кодирования вычисляется в соответствии с формулой (6), а вектор движения (vx1, vy1) верхней правой выборки (x1, y1) текущего блока аффинного кодирования вычисляется согласно формуле (7).
(6)
(7)
[0197] Комбинация вектора движения (vx0, vy0) верхней левой выборки (x0, y0) и вектора движения (vx1, vy1) верхней правой выборки (x1, y1) текущего блока, которые получены на основе блока аффинного кодирования, в котором находится A1, представляет собой потенциально подходящий вектор движения контрольной точки текущего блока.
[0198] Если блок кодирования, в котором находится A1, является блоком 6-параметрического аффинного кодирования, получают вектор движения (vx4, vy4) верхней левой выборки (x4, y4), вектор движения (vx5, vy5) верхней правой выборки (x5, y5) и вектор движения (vx6, vy6) нижней левой выборки (x6, y6) блока аффинного кодирования. Вектор движения (vx0, vy0) верхней левой выборки (x0, y0) текущего блока вычисляется в соответствии с формулой (8), вектор движения (vx1, vy1) верхней правой выборки (x1, y1) текущего блока вычисляется согласно формуле (9), и вектор движения (vx2, vy2) нижней левой выборки (x2, y2) текущего блока вычисляется согласно формуле (10).
(8)
(9)
(10)
[0199] Комбинация вектора движения (vx0, vy0) левой верхней выборки (x0, y0), вектора движения (vx1, vy1) верхней правой выборки (x1, y1) и вектора движения (vx2, vy2) нижней левой выборки (x2, y2) текущего блока, которые получены на основе блока аффинного кодирования, в котором находится A1, представляет собой потенциально подходящий вектор движения контрольной точки текущего блока.
[0200] Следует отметить, что к настоящей заявке также применимы другие модели движения, потенциально подходящие позиции, а также порядки поиска и обхода. Подробности не описаны в вариантах осуществления настоящей заявки.
[0201] Следует отметить, что метод, в котором другие контрольные точки используются для представления моделей движения для соседних и текущих блоков кодирования, также применим к настоящей заявке. Подробности здесь не описываются.
[0202] 4. Метод 1 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки)
[0203] Метод предсказания построенного вектора движения контрольной точки объединяет векторы движения соседних закодированных блоков вокруг контрольной точки текущего блока и использует объединенные векторы движения в качестве векторов движения контрольной точки текущего блока аффинного кодирования, без учета того, являются ли соседние закодированные блоки блоками аффинного кодирования.
[0204] Векторы движения верхней левой выборки и верхней правой выборки текущего блока определяются с использованием информации о движении соседних закодированных блоков вокруг текущего блока кодирования. Фиг.8A используется в качестве примера для описания метода предсказания построенного вектора движения контрольной точки. Следует отметить, что Фиг.8A является просто примером.
[0205] Как показано на Фиг.8A, векторы движения соседних закодированных блоков A2, B2 и B3 в верхней левой выборке используются в качестве потенциально подходящих векторов движения для вектора движения верхней левой выборки текущего блока, а векторы движения соседних закодированных блоков B1 и B0 в правой верхней выборке используются в качестве потенциально подходящих векторов движения для вектора движения правой верхней выборки текущего блока. Потенциально подходящие векторы движения верхней левой выборки и верхней правой выборки объединяются, чтобы образовать множество двухэлементных кортежей. Векторы движения двух закодированных блоков, включенных в двухэлементный кортеж, могут использоваться в качестве потенциально подходящих векторов движения контрольной точки текущего блока, как показано в следующей формуле (11A):
(11А)
[0206]  указывает вектор движения A2,  указывает вектор движения B1,  указывает вектор движения B0,  указывает вектор движения B2, и  указывает вектор движения B3.
[0207] Как показано на Фиг.8A, векторы движения соседних закодированных блоков A2, B2 и B3 в верхней левой выборке используются в качестве потенциально подходящих векторов движения для вектора движения верхней левой выборки текущего блока, векторы движения соседних закодированных блоков B1 и B0 в правой верхней выборке используются в качестве потенциально подходящих векторов движения для вектора движения правой верхней выборки текущего блока, и векторы движения соседних закодированных блоков A0 и A1 в нижней левой выборке используются в качестве потенциально подходящих векторов движения для вектора движения нижней левой выборки текущего блока. Потенциально подходящие векторы движения верхней левой выборки, верхней правой выборки и нижней левой выборки объединяются в трехэлементный кортеж. Векторы движения трех закодированных блоков, включенные в трехэлементный кортеж, могут использоваться в качестве потенциально подходящих векторов движения контрольной точки текущего блока, как показано в следующих формулах (11B) и (11C):
(11B)
(11C)
[0208]  указывает вектор движения A2,  указывает вектор движения B1,  указывает вектор движения B0,  указывает вектор движения B2,  указывает вектор движения B3,  указывает вектор движения A0 и  указывает вектор движения A1.
[0209] Следует отметить, что к настоящей заявке применимы и другие методы объединения векторов движения контрольных точек. Подробности здесь не описаны.
[0210] Следует отметить, что метод, в котором другие контрольные точки используются для представления моделей движения соседних и текущих блоков кодирования, также применим к настоящей заявке настоящей заявке. Подробности здесь не описаны.
[0211] 5. Метод 2 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки): Для этого следует обратиться к Фиг.8B.
[0212] Этап 801: Получают информацию о движении контрольных точек текущего блока.
[0213] Например, на Фиг.8A, CPk (k=1, 2, 3 или 4) указывает k-ую контрольную точку, A0, A1, A2, B0, B1, B2 и B3 являются пространственно соседними позициями текущего блока и используются для предсказания CP1, CP2 или CP3, а T - это соседняя во временном плане позиция текущего блока, которая используется для предсказания CP4.
[0214] Предполагается, что координаты CP1, CP2, CP3 и CP4 равны (0, 0), (W, 0), (H, 0) и (W, H), соответственно, где W и H обозначают ширину и высоту текущего блока.
[0215] Информация о движении каждой контрольной точки получается в следующем порядке:
[0216] (1) Для CP1 порядок проверки: B2->A2->B3. Если доступна B2, используется информация о движении B2. Если B2 недоступна, проверяются A2 и B3. Если информация о движении всех трех позиций недоступна, информация о движении CP1 не может быть получена.
[0217] (2) Для CP2 порядок проверки B0->B1. Если B0 доступна, информация о движении B0 используется для CP2. Если B0 недоступна, проверяется B1. Если информация о движении обеих позиций недоступна, информация о движении CP2 не может быть получена.
[0218] (3) Для CP3 порядок проверки A0->A1.
[0219] (4) Для CP4 используется информация о движении T.
[0220] Здесь факт того, что X доступна, означает, что блок в позиции X (X есть A0, A1, A2, B0, B1, B2, B3 или T) закодирован и используется режим внешнего предсказания. В противном случае позиция X недоступна.
[0221] Следует отметить, что другие методы получения информации о движении контрольной точки также применимы к настоящей заявке. Подробности здесь не описаны.
[0222] Этап 802: Объединяют информацию о движении контрольных точек, чтобы получить построенную информацию о движении контрольных точек.
[0223] Информацию о движении двух контрольных точек объединяют, чтобы образовать двухкомпонентный кортеж, чтобы построить 4-параметрическую аффинную модель движения. Способами объединения двух контрольных точек могут быть {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3} или {CP3, CP4}. Например, 4-параметрическая аффинная модель движения, построенная с использованием двухкомпонентного кортежа, включающего в себя контрольные точки CP1 и CP2, может быть обозначена как Affine (CP1, CP2).
[0224] Информация о движении трех контрольных точек объединяется в трехкомпонентный кортеж, чтобы построить 6-параметрическую аффинную модель движения. Способ объединения трех контрольных точек может быть следующим: {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} или {CP1, CP3, CP4}. Например, 6-параметрическая аффинная модель движения, построенная с использованием трехкомпонентного кортежа, включающего в себя контрольные точки CP1, CP2 и CP3, может быть обозначена как Affine (CP1, CP2, CP3).
[0225] Информация о движении четырех контрольных точек объединяется в четырехкомпонентный кортеж, чтобы построить 8-параметрическую билинейную модель. 8-параметрическая билинейная модель, построенная с использованием четырехкомпонентного кортежа, включающего в себя контрольные точки CP1, CP2, CP3 и CP4, может быть обозначена как «Bilinear» (CP1, CP2, CP3, CP4).
[0226] В этом варианте осуществления настоящей заявки, для простоты описания, комбинация информации о движении двух контрольных точек (или двух закодированных блоков) просто упоминается как двухкомпонентный кортеж, комбинация информации о движении трех контрольных точек (или трех закодированных блоков) просто упоминается как трехкомпонентный кортеж, и комбинация информации о движении четырех контрольных точек (или четырех закодированных блоков) просто упоминается как четырехкомпонентный кортеж.
[0227] Эти модели проходятся в заранее заданном порядке. Если информация о движении контрольной точки, соответствующей комбинированной модели, недоступна, считается, что модель недоступна. В противном случае, индекс опорного кадра модели определяется, и векторы движения контрольных точек масштабируются. Если масштабированная информация о движении всех контрольных точек согласованна, модель некорректна. Если информация о движении всех контрольных точек, управляющих моделью, доступна и модель корректна, информация о движении контрольных точек, составляющих модель, добавляется в список потенциально подходящей информации о движении.
[0228] Метод масштабирования вектора движения контрольной точки представлен в формуле (12):
(12)
[0229]  указывает номер POC текущего кадра,  указывает номер POC опорного кадра текущего блока,  указывает номер POC опорного кадра контрольной точки,  указывает вектор движения, полученный через масштабирование, и MV указывает вектор движения контрольной точки.
[0230] Следует отметить, что комбинация разных контрольных точек может быть преобразована в контрольные точки в одной и той же позиции.
[0231] Например, 4-параметрическая аффинная модель движения, полученная с помощью комбинации {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3} или {CP3, CP4}, преобразуется в представление посредством {CP1, CP2} или {CP1, CP2, CP3}. Метод преобразования состоит в следующем: подставляют вектор движения и информацию координат контрольной точки в формулу (2), чтобы получить параметр модели, а затем подставляют информацию координат {CP1, CP2} в формулу (3), чтобы получить вектор движения.
0
0
1
1
2
2
3
3
[0232] Более конкретно, преобразование может выполняться в соответствии со следующими формулами (13)-(21), где W указывает ширину текущего блока, а H указывает высоту текущего блока. В формулах (13)-(21) (vx, vy) указывает вектор движения CP1, (vx, vy) указывает вектор движения CP2, (vx, vy) указывает вектор движения CP3, и (vx, vy) указывает вектор движения CP4.
[0233] {CP1, CP2} можно преобразовать в {CP1, CP2, CP3} согласно следующей формуле (13). Другими словами, вектор движения CP3 в {CP1, CP2, CP3} можно определить по формуле (13):
(13)
[0234] {CP1, CP3} можно преобразовать в {CP1, CP2} или {CP1, CP2, CP3} по следующей формуле (14):
(14)
[0235] {CP2, CP3} можно преобразовать в {CP1, CP2} или {CP1, CP2, CP3} по следующей формуле (15):
(15)
[0236] {CP1, CP4} можно преобразовать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии со следующей формулой (16) или (17):
(16)
(17)
[0237] {CP2, CP4} можно преобразовать в {CP1, CP2} в соответствии со следующей формулой (18), а {CP2, CP4} можно преобразовать в {CP1, CP2, CP3} в соответствии со следующими формулами (18) и (19):
(18)
(19)
[0238] {CP3, CP4} можно преобразовать в {CP1, CP2} в соответствии со следующей формулой (20), а {CP3, CP4} можно преобразовать в {CP1, CP2, CP3} в соответствии со следующими формулами (20) и (21):
(20)
(21)
[0239] Например, 6-параметрическая аффинная модель движения, полученная через комбинацию {CP1, CP2, CP4}, {CP2, CP3, CP4} или {CP1, CP3, CP4}, преобразуется в представление посредством {CP1, CP2, CP3}. Метод преобразования: подставляют вектор движения и информацию о координатах контрольной точки в формулу (4), чтобы получить параметр модели, а затем подставляют информацию о координатах {CP1, CP2, CP3} в формулу (5), чтобы получить вектор движения.
0
0
1
1
2
2
3
3
[0240] Более конкретно, преобразование может быть выполнено согласно следующим формулам (22)-(24), где W указывает ширину текущего блока, а H указывает высоту текущего блока. В формулах (13)-(21) (vx, vy) указывает вектор движения CP1, (vx, vy) указывает вектор движения CP2, (vx, vy) указывает вектор движения CP3, а (vx, vy) указывает вектор движения CP4.
[0241] {CP1, CP2, CP4} могут быть преобразованы в {CP1, CP2, CP3} по следующей формуле (22):
(22)
[0242] {CP2, CP3, CP4} могут быть преобразованы в {CP1, CP2, CP3} по следующей формуле (23):
(23)
[0243] {CP1, CP3, CP4} могут быть преобразованы в {CP1, CP2, CP3} по следующей формуле (24):
(24)
[0244] 6. Усовершенствованный режим предсказания вектора движения на основе аффинной модели движения (Affine AMVP mode)
[0245] (1) Создание списка потенциально подходящих векторов движения
[0246] Список потенциально подходящих векторов движения для режима AMVP на основе аффинной модели движения строится с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки. В этом варианте осуществления настоящей заявки список потенциально подходящих векторов движения для режима AMVP, основывающегося на аффинной модели движения, может упоминаться как список потенциально подходящих предикторов вектора движения контрольной точки (control point motion vectors predictor candidate list). Предиктор вектора движения для каждой контрольной точки включает в себя векторы движения двух (4-параметрическая аффинная модель движения) контрольных точек или векторы движения трех (6-параметрическая аффинная модель движения) контрольных точек.
[0247] В необязательном порядке, список потенциально подходящих предикторов вектора движения контрольной точки сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.
[0248] (2) Определение оптимального предиктора вектора движения контрольной точки.
[0249] На стороне кодера вектор движения каждой дочерней единицы компенсации движения в текущем блоке кодирования получается на основе каждого предиктора вектора движения контрольной точки в списке потенциально подходящих предикторов вектора движения контрольной точки с использованием формулы (3)/(5), с тем чтобы получить значение выборки в соответствующей позиции в опорном кадре, на которую указывает вектор движения каждой дочерней единицы движения компенсации, и это значение выборки используется в качестве предиктора для выполнения компенсации движения посредством использования аффинной модели движения. Вычисляют среднюю разность между исходным значением и предиктором каждой выборки в текущем блоке кодирования. Предиктор вектора движения контрольной точки, соответствующий минимальной средней разности, выбирается в качестве оптимального предиктора вектора движения контрольной точки и используется в качестве предиктора вектора движения двух/трех контрольных точек текущего блока кодирования. Номер индекса, представляющий позицию предиктора вектора движения контрольной точки в списке потенциально подходящих предикторов вектора движения контрольной точки, кодируется в поток битов и отправляется в декодер.
[0250] На стороне декодера получают номер индекса посредством синтаксического анализа, и предиктор вектора движения контрольной точки (control point motion vector predictor, CPMVP) определяют из списка потенциально подходящих предикторов вектора движения контрольной точки на основе номера индекса.
[0251] (3) Определение вектора движения контрольной точки
[0252] На стороне кодера предиктор вектора движения контрольной точки используется в качестве начальной точки поиска для поиска движения в пределах конкретного диапазона поиска, чтобы получить вектор движения контрольной точки (control point motion vector, CPMV). Разность (control point motion vector difference, CPMVD) между вектором движения контрольной точки и предиктором вектора движения контрольной точки передается на сторону декодера.
[0253] На стороне декодера получают разность векторов движения контрольной точки посредством синтаксического анализа и добавляют к предиктору вектора движения контрольной точки, чтобы получить вектор движения контрольной точки.
[0254] 7. Режим аффинного слияния (Affine Merge mode)
[0255] Список кандидатов на слияние для вектора движения контрольной точки (control point motion vectors merge candidate list) строится с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки.
[0256] В необязательном порядке, список кандидатов на слияние для вектора движения контрольной точки сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.
[0257] На стороне кодера вектор движения каждой дочерней единицы компенсации движения (выборка или блок выборок , полученный посредством разбиения согласно конкретному методу) в текущем блоке кодирования получается на основе каждого вектора движения контрольной точки в списке кандидатов на слияние, используя формулу (3)/(5), с тем чтобы получить значение выборки в позиции в опорном кадре, на которую указывает вектор движения каждой дочерней единицы компенсации движения, и это значение выборки используется в качестве предиктора для выполнения аффинной компенсации движения. Вычисляется средняя разность между исходным значением и предиктором каждой выборки в текущем блоке кодирования. Вектор движения контрольной точки, соответствующий минимальной средней разности, выбирается в качестве векторов движения двух/трех контрольных точек текущего блока кодирования. Номер индекса, представляющий позицию вектора движения контрольной точки в списке кандидатов, кодируется в поток битов и отправляется в декодер.
[0258] На стороне декодера получают номер индекса посредством синтаксического анализа, и вектор движения контрольной точки (control point motion vector, CPMV) определяют из списка кандидатов на слияние для вектора движения контрольной точки на основе номера индекса.
[0259] Кроме того, следует отметить, что в этой заявке «по меньшей мере один» означает один или более, а «множество» означает два или более. Термин «и/или» описывает отношения ассоциации для описания связанных объектов и указывает, что могут существовать три отношения. Например, A и/или B могут представлять следующие случаи: существует только A, существуют как A, так и B, и существует только B, причем A и B могут быть в единственном или множественном числе. Символ «/» обычно указывает связь «или» между связанными объектами. «По меньшей мере один из следующих объектов (частей)» или подобное выражение указывает любую комбинацию этих объектов, включая одиночный объект (часть) или любую комбинацию множества объектов (частей). Например, по меньшей мере один из a, b и c может обозначать: a, b, c, a и b, a и c, b и c, либо a, b и c, где a, b и c могут быть в единственном или множественном числе.
[0260] В настоящей заявке, когда режим внешнего предсказания используется для декодирования текущего блока, элемент синтаксиса может использоваться для сигнализирования режима внешнего предсказания.
[0261] Для некоторых используемых в настоящее время синтаксических структур режима внешнего предсказания, используемых для синтаксического анализа текущего блока, следует обратиться к Таблице 1. Следует отметить, что элемент синтаксиса в синтаксической структуре альтернативно может быть представлен другими идентификаторами. В данной заявке это особым образом не ограничено.
Таблица 1.
coding_unit(x0, y0, cb Width, cb Height) {
Дескриптор(Descriptor)
…
merge_flag[x0][y0]
ае(v)
if (merge_flag[x0][y0]) {
if (allowAffineMerge)
affine_merge_flag[x0][y0]
ае(v)
if (MaxNumMergeCand > 1 && affine_merge_flag[x0][y0] == 0)
merge_idx[x0][y0]
ае(v)
if (MaxNumAffineMergeCand > 1 && affine_merge_flag[x0][y0])
affine_merge_idx[x0][y0]
ае(v)
} else {
if (slice_type == B)
inter_pred_idc[x0][y0]
ае(v)
if (allowAffineInter) {
affine_inter_flag[x0][y0]
ае(v)
if (affine_inter_flag[x0][y0])
affine_type_flag[x0][y0]
ае(v)
}
MotionModelIdc[x0][y0] = affine_inter_flag[x0][y0] + affine_type_flag[x0][y0]
if (inter_pred_idc[x0][y0] != PRED_L1) {
if (num_ref_idx_l0_active_minus1>0)
ref_idx_l0[x0][y0]
ае(v)
mvd_coding(x0,y0,0,0)
if (MotionModelIdc[x0][y0]>0) {
mvd_coding(x0,y0,0,1)
if (MotionModelIdc[x0][y0]>1)
mvd_coding (x0,y0,0,2)
}
mvp_l0_flag[x0][y0]
ае(v)
}
if (inter_pred_idc [x0][y0] != PRED_L0) {
if (num_ref_idx_l1_active_minus1 > 0)
ref_idx_l1 [x0][y0]
ае (v)
mvd_coding (x0,y0,1,0)
if (MotionModelIdc [x0][y0] > 0) {
mvd_coding (x0,y0,1,1)
if (MotionModelIdc [x0][y0] > 1)
mvd_coding (x0,y0,1,2)
}
mvp_l1_flag[x0][y0]
ае(v)
}
}
…
}
[0262] Элемент синтаксиса merge_flag[x0][y0] может использоваться для указания того, используется ли режим слияния для текущего блока. Например, когда merge_flag[x0][y0] = 1, это указывает, что режим слияния используется для текущего блока, а когда merge_flag [x0][y0] = 0, это указывает, что режим слияния не используется для текущего блока, где x0 и y0 указывают координаты текущего блока в видеоизображении.
[0263] Переменная allowAffineMerge может использоваться для указания того, соответствует ли текущий блок условию для использования режима слияния на основе аффинной модели движения. Например, когда allowAffineInter=0, это указывает, что условие для использования режима слияния на основе аффинной модели движения не выполняется, а когда allowAffineInter=1, это указывает, что условие для использования режима слияния на основе аффинной модели движения выполняется. Условием использования режима слияния на основе аффинной модели движения может быть то, что и ширина, и высота текущего блока больше или равны 8, где cbWidth указывает ширину текущего блока, а cbHeight указывает высоту текущего блока. Другими словами, когда cbWidth < 8 или cbHeight < 8, allowAffineMerge = 0, а когда cbWidth ≥ 8 и cbHeight ≥ 8, allowAffineMerge = 1.
[0264] Переменная allowAffineInter может использоваться для указания того, соответствует ли текущий блок условию для использования режима AMVP на основе аффинной модели движения. Например, когда allowAffineInter = 0, это указывает, что условие для использования режима AMVP на основе аффинной модели движения не выполняется, а когда allowAffineInter = 1, это указывает, что условие для использования режима AMVP на основе аффинной модели движения выполняется. Условием для использования режима AMVP на основе аффинной модели движения может быть то, что ширина и высота текущего блока больше или равны 16. Другими словами, когда cbWidth < 16 или cbHeight < 16, allowAffineInter = 0, а когда cbWidth ≥ 16 и cbHeight ≥ 16, allowAffineInter = 1.
[0265] Элемент синтаксиса affine_merge_flag[x0][y0] может использоваться для указания того, используется ли для текущего блока режим слияния на основе аффинной модели движения. Тип среза (slice_type), в котором находится текущий блок, является P-типом или B-типом. Например, когда affine_merge_flag[x0][y0] = 1, это указывает, что режим слияния на основе аффинной модели движения используется для текущего блока, а когда affine_merge_flag [x0][y0] = 0, это указывает, что режим слияния на основе аффинной модели движение не используется для текущего блока, но может использоваться режим слияния на основе модели поступательного движения.
[0266] Элемент синтаксиса merge_idx[x0][y0] может использоваться для указания значения индекса списка кандидатов на слияние.
[0267] Элемент синтаксиса affine_merge_idx[x0][y0] может использоваться для указания значения индекса списка кандидатов на аффинное слияние.
[0268] Элемент синтаксиса affine_inter_flag[x0][y0] может использоваться для указания того, используется ли режим AMVP на основе аффинной модели движения для текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа. Например, когда allowAffineInter=0, это указывает, что режим AMVP на основе аффинной модели движения используется для текущего блока, а когда allowAffineInter=1, это указывает, что режим AMVP на основе аффинной модели движения не используется для текущего блока, но можно использовать режим AMVP на основе модели поступательного движения.
[0269] Элемент синтаксиса affine_type_flag[x0][y0] может использоваться для указания того, используется ли 6-параметрическая аффинная модель движения для выполнения компенсации движения в отношении текущего блока, когда срез, в котором расположен текущий блок, является срезом P-типа или срезом B-типа. Когда affine_type_flag[x0][y0]=0, это указывает, что 6-параметрическая аффинная модель движения не используется для выполнения компенсации движения в отношении текущего блока, но только 4-параметрическая аффинная модель движения может использоваться для выполнения компенсации движения, и когда affine_type_flag[x0][y0]=1, это указывает, что 6-параметрическая аффинная модель движения используется для выполнения компенсации движения в отношении текущего блока.
[0270] Как показано в Таблице 2, когда MotionModelIdc[x0][y0]=1, это указывает, что используется 4-параметрическая аффинная модель движения, когда MotionModelIdc[x0][y0]=2, это указывает, что используется 6-параметрическая аффинная модель движения, и когда MotionModelIdc[x0][y0]=0, это указывает, что используется модель поступательного движения.
Таблица 2.
MotionModelIdc [x0][y0]
Модель движения для компенсации движения (motion model for motion compensation)
0
Поступательное движение (translational motion)
1
4-параметрическая аффинная модель движения (4-parameter affine motion)
2
6-параметрическая аффинная модель движения (6-parameter affine motion)
[0271] Переменные MaxNumMergeCand и MaxAffineNumMrgCand используются для указания максимальной длины списка и указания максимальной длины построенного списка потенциально подходящих векторов движения; inter_pred_idc[x0][y0] используется для указания направления предсказания; PRED_L1 используется для указания обратного предсказания; num_ref_idx_l0_active_minus1 указывает количество опорных кадров в списке опорных кадров в прямом направлении и ref_idx_l0[х0][у0] указывает значение индекса опорного кадра в прямом направлении для текущего блока; mvd_coding(x0,y0,0,0) указывает первую разность векторов движения; mvp_l0_flag[x0][y0] указывает значение индекса списка потенциально подходящих MVP в прямом направлении; PRED_L0 указывает предсказание в прямом направлении; num_ref_idx_l1_active_minus1 указывает количество опорных кадров в списке опорных кадров в обратном направлении, а ref_idx_l1[x0][y0] указывает значение индекса опорных кадров в обратном направлении для текущего блока; и mvp_l1_flag[x0][y0] указывает значение индекса списка кандидатов MVP в обратном направлении.
[0272] В Таблице 1 ae(v) указывает элемент синтаксиса, закодированный с помощью контекстно-зависимого адаптивного двоичного арифметического кодирования (context-based adaptive binary arithmetic coding, CABAC).
[0273] Далее подробно описывается процесс внешнего предсказания. Для этого следует обратиться к Фиг.9А.
[0274] Этап 601: Выполняют синтаксический анализ потока битов на основе синтаксической структуры, показанной в Таблице 1, чтобы определить режим внешнего предсказания для текущего блока.
[0275] Если определено, что режимом внешнего предсказания для текущего блока является режим AMVP на основе аффинной модели движения, должен быть выполнен этап 602a.
[0276] Более конкретно, когда элемент синтаксиса merge_flag=0 и элемент синтаксиса affine_inter_flag=1, это указывает, что режим внешнего предсказания для текущего блока является режимом AMVP на основе аффинной модели движения.
[0277] Если определено, что режимом внешнего предсказания для текущего блока является режим слияния (merge) на основе аффинной модели движения, должен быть выполнен этап 602b.
[0278] Более конкретно, когда элемент синтаксиса merge_flag=1 и элемент синтаксиса affine_merge_flag=1, это указывает, что режим внешнего предсказания для текущего блока является режимом слияния на основе аффинной модели движения.
[0279] Этап 602a: Строят список потенциально подходящих векторов движения, соответствующий режиму AMVP на основе аффинной модели движения, и выполняют этап 603a.
[0280] Потенциально подходящий вектор движения контрольной точки текущего блока получают с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки и добавляют в список потенциально подходящих векторов движения.
[0281] Список потенциально подходящих векторов движения может включать в себя список двухэлементных кортежей (4-параметрическая аффинная модель движения используется для текущего блока кодирования) или список трехэлементных кортежей. Список двухэлементных кортежей включает в себя один или более двухэлементных кортежей, используемых для построения 4-параметрической аффинной модели движения. Список трехэлементных кортежей включает в себя один или более трехэлементных кортежей, используемых для построения 6-параметрической аффинной модели движения.
[0282] В необязательном порядке, список из двух-/трех-элементных кортежей потенциально подходящих векторов движения сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.
[0283] A1: Описывается процесс построения списка потенциально подходящих векторов движения с использованием перенятого метода предсказания вектора движения контрольной точки.
[0284] Фиг.7 используется в качестве примера. Например, соседние блоки вокруг текущего блока проходятся в порядке A1->B1->B0->A0->B2 на Фиг.7, чтобы найти блок аффинного кодирования, в котором расположен соседний блок, и получить информацию о движении контрольной точки блока аффинного кодирования. Кроме того, потенциально подходящая информация о движении контрольной точки текущего блока получается посредством использования модели движения, построенной на основе информации о движении контрольной точки блока аффинного кодирования. На предмет дополнительных сведений следует обратиться к соответствующим описаниям перенятого метода предсказания вектора движения контрольной точки согласно подразделу 3. Подробности здесь не описываются.
[0285] Например, когда аффинной моделью движения, используемой для текущего блока, является 4-параметрическая аффинная модель движения (то есть MotionModelIdc=1), если 4-параметрическая аффинная модель движения используется для соседнего блока аффинного декодирования, получаются векторы движения двух контрольных точек блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5). Блок аффинного декодирования - это блок аффинного кодирования, предсказанный на стадии кодирования с использованием аффинной модели движения.
[0286] Векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока соответственно получаются в соответствии с формулами (6) и (7), соответствующими 4-параметрической аффинной модели движения, с использованием 4-параметрической аффинной модели движения, включающей в себя две контрольные точки соседнего блока аффинного декодирования.
[0287] Если для соседнего блока аффинного декодирования используется 6-параметрическая аффинная модель движения, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например, вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5) и вектор движения (vx6, vy6) нижней левой контрольной точки (x6, y6) на Фиг.7.
[0288] Векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока соответственно получаются в соответствии с формулами (8) и (9), соответствующими 6-параметрической аффинной модели движения, посредством использования 6-параметрической аффинной модели движения, включающей в себя три контрольные точки соседнего блока аффинного декодирования.
[0289] Например, аффинной моделью движения, используемой для текущего блока декодирования, является 6-параметрическая аффинная модель движения (то есть MotionModelIdc=2).
[0290] Если аффинной моделью движения, используемой для соседнего блока аффинного декодирования, является 6-параметрическая аффинная модель движения, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например, вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки и вектор движения (vx6, vy6) нижней левой контрольной точки (x6, y6) на Фиг.7.
[0291] Векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока соответственно получаются в соответствии с формулами (8), (9) и (10), соответствующими 6-параметрической аффинной модели движения, посредством использования 6-параметрической аффинной модели движения, включающей в себя три контрольные точки соседнего блока аффинного декодирования.
[0292] Если аффинной моделью движения, используемой для соседнего блока аффинного декодирования, является 4-параметрическая аффинная модель движения, получают векторы движения двух контрольных точек блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5).
[0293] Векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока соответственно получаются согласно формулам (6) и (7), соответствующим 4-параметрической аффинной модели движения, посредством использования 4-параметрической аффинной модели движения, включающей в себя две контрольные точки соседнего блока аффинного декодирования.
[0294] Следует отметить, что к настоящей заявке также применимы другие модели движения, потенциально подходящие позиции и порядки поиска. Подробности здесь не описываются. Следует отметить, что метод, в котором другие контрольные точки используются для представления моделей движения для соседних и текущих блоков кодирования, также применим к настоящей заявке. Подробности здесь не описываются.
[0295] A2: Описан процесс построения списка потенциально подходящих векторов движения с использованием перенятого метода предсказания вектора движения контрольной точки.
[0296] Например, если аффинной моделью движения, используемой для текущего блока декодирования, является 4-параметрическая аффинная модель движения (то есть MotionModelIdc=1), векторы движения верхней левой выборки и верхней правой выборки текущего блока кодирования определяются с использованием информации о движении соседнего кодированного блока текущего блока кодирования. В частности, список потенциально подходящих векторов движения может быть построен с использованием перенятого метода 1 предсказания вектора движения контрольной точки или построенного метода 2 предсказания вектора движения контрольной точки. На предмет конкретного способа следует обратиться к описаниям согласно подразделам 4 и 5. Подробности здесь не описываются.
[0297] Например, если аффинной моделью движения, используемой для текущего блока декодирования, является 6-параметрическая аффинная модель движения (то есть MotionModelIdc=2), векторы движения верхней левой выборки, верхней правой выборки и нижней левой выборки текущего блока кодирования определяются с использованием информации движения соседнего закодированного блока текущего блока кодирования. В частности, список потенциально подходящих векторов движения может быть построен с использованием перенятого метода 1 предсказания вектора движения контрольной точки или построенного метода 2 предсказания вектора движения контрольной точки. На предмет конкретного способа следует обратиться к описаниям согласно подразделам 4 и 5. Подробности здесь не описываются.
[0298] Следует отметить, что другой способ объединения информации о движении контрольной точки также применим к настоящей заявке. Подробности здесь не описаны.
[0299] Этап 603a: Выполняют синтаксический анализ потока битов для определения оптимального предиктора вектора движения контрольной точки и выполняют этап 604a.
[0300] B1: Если аффинной моделью движения, используемой для текущего блока декодирования, является 4-параметрическая аффинная модель движения (MotionModelIdc=1), получают номер индекса посредством синтаксического анализа, и оптимальный предиктор вектора движения в двух контрольных точках определяют из списка потенциально подходящих векторов движения на основе номера индекса.
[0301] Например, номером индекса является mvp_l0_flag или mvp_l1_flag.
[0302] B2: Если аффинной моделью движения, используемой для текущего блока декодирования, является 6-параметрическая аффинная модель движения (MotionModelIdc=2), получают номер индекса посредством синтаксического анализа, и оптимальный предиктор вектора движения в трех контрольных точках определяют из списка потенциально подходящих векторов движения на основе номера индекса.
[0303] Этап 604a: Выполнят синтаксический анализ потока битов, чтобы определить вектор движения контрольной точки.
[0304] C1: Если аффинной моделью движения, используемой для текущего блока декодирования, является 4-параметрическая модель аффинного движения (MotionModelIdc=1), разности векторов движения двух контрольных точек текущего блока получаются из потока битов посредством декодирования, и векторы движения контрольной точки получаются на основе разностей векторов движения и предикторов вектора движения контрольных точек. Используя прямое предсказание в качестве примера, разности векторов движения двух контрольных точек равны mvd_coding(x0,y0,0,0) и mvd_coding(x0,y0,0,1) соответственно.
[0305] Например, разности векторов движения верхней левой контрольной точки и верхней правой контрольной точки получаются из потока битов посредством декодирования и соответственно добавляются к предикторам вектора движения, чтобы получить векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока.
[0306] C2: Аффинная модель движения, используемая для текущего блока декодирования, представляет собой 6-параметрическую аффинную модель движения (MotionModelIdc=2).
[0307] Разности векторов движения трех контрольных точек текущего блока получаются из потока битов посредством декодирования, и векторы движения контрольных точек получаются на основе разностей векторов движения и предикторов вектора движения контрольных точек. Используя в качестве примера прямое предсказание, разностями векторов движения трех контрольных точек являются mvd_coding(x0,y0,0,0), mvd_coding(x0,y0,0,1) и mvd_coding(x0,y0,0,2), соответственно.
[0308] Например, разности векторов движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки получаются из потока битов посредством декодирования и соответственно добавляются к предикторам вектора движения, чтобы получить векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока.
[0309] Этап 605a: Получают вектор движения каждого подблока в текущем блоке на основе информации о движении контрольной точки и аффинной модели движения, используемой для текущего блока декодирования.
[0310] Для каждого подблока в текущем блоке аффинного декодирования (один подблок может быть эквивалентен одной единице компенсации движения, а ширина и высота подблока меньше, чем ширина и высота текущего блока), информация о движении выборки в заранее заданной позиции в единице компенсации движения может использоваться для представления информации о движении всех выборок в единице компенсации движения. Предполагая, что размер единицы компенсации движения равен MxN, выборкой в упомянутой заранее заданной позиции может быть центральная выборка (M/2, N/2), верхняя левая выборка (0, 0), верхняя правая выборка (M-1, 0) или выборка в другой позиции единицы компенсации движения. Ниже в качестве примера для описания используется центральная выборка единицы компенсации движения. Обращаясь к Фиг.9C, V0 указывает вектор движения верхней левой контрольной точки, а V1 указывает вектор движения верхней правой контрольной точки. Каждый маленький квадрат указывает одну единицу компенсации движения.
[0311] Координаты центральной выборки единицы компенсации движения относительно верхней левой выборки текущего блока аффинного декодирования вычисляются с использованием формулы (25), где i указывает i-ую единицу компенсации движения (слева направо) в горизонтальном направлении, j указывает j-ую единицу компенсации движения (сверху вниз) в вертикальном направлении, а (x(i,j), y(i,j)) указывает координаты центральной выборки (i,j)-ой единицы компенсации движения относительно верхней левой выборки текущего блока аффинного декодирования.
[0312] Если аффинная модель движения, используемая для текущего блока аффинного декодирования, представляет собой 6-параметрическую аффинную модель движения, (, ) подставляется в формулу (26), соответствующую 6-параметрической аффинной модели движения, чтобы получить вектор движения центральной выборки каждой единицы компенсации движения, и вектор движения центральной выборки используется как вектор движения () всех выборок в единице компенсации движения.
[0313] Если аффинной моделью движения, используемой для текущего блока аффинного декодирования, является 4-параметрическая аффинная модель движения, (, ) подставляется в формулу (27), соответствующую 4-параметрической аффинной модели движения, чтобы получить вектор движения центральной выборки каждой единицы компенсации движения, и вектор движения центральной выборки используется как вектор движения () всех выборок в единице компенсации движения
(25)
(26)
(27)
[0314] Этап 606a: Выполняют компенсацию движения в отношении каждого подблока на основе определенного вектора движения подблока, чтобы получить предиктор выборки подблока.
[0315] Этап 602b: Строят список потенциально подходящей информации о движении, соответствующий режиму слияния на основе аффинной модели движения.
[0316] В частности, список потенциально подходящей информации о движении, соответствующий режиму слияния на основе аффинной модели движения, может быть построен с использованием перенятого метода предсказания вектора движения контрольной точки и/или построенного метода предсказания вектора движения контрольной точки.
[0317] В необязательном порядке, список потенциально подходящей информации о движении сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до определенного количества.
[0318] D1: Описывается процесс построения списка потенциально подходящих векторов движения с использованием перенятого метода предсказания вектора движения контрольной точки.
[0319] Потенциально подходящая информация о движении контрольной точки текущего блока получается с использованием перенятого метода предсказания вектора движения контрольной точки и добавляется в список потенциально подходящей информации о движении.
[0320] Соседние блоки вокруг текущего блока проходятся в порядке A1->B1->B0->A0->B2 на Фиг.8A, чтобы найти блок аффинного кодирования, в котором расположена позиция, и получить информацию о движении контрольной точки блока аффинного кодирования. Кроме того, потенциально подходящая информация о движении контрольной точки текущего блока получается с использованием модели движения для блока аффинного кодирования.
[0321] Если список потенциально подходящих векторов движения пуст, потенциально подходящая информация движения контрольной точки добавляется в список кандидатов. В противном случае информация о движении в списке потенциально подходящих векторов движения проходится последовательно, чтобы проверить, существует ли информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, в списке потенциально подходящих векторов движения. Если в списке потенциально подходящих векторов движения отсутствует информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, потенциально подходящая информация о движении контрольной точки добавляется в список потенциально подходящих векторов движения.
[0322] Чтобы определить, являются ли две части потенциально подходящей информации о движении одинаковыми, необходимо последовательно определить, являются ли опорные кадры в прямом направлении, опорные кадры в обратном направлении, горизонтальные и вертикальные компоненты каждого вектора движения в прямом направлении, а также горизонтальные и вертикальные компоненты каждого вектора движения в обратном направлении в двух частях потенциально подходящей информации о движении одинаковыми. Две части потенциально подходящей информации о движении считаются разными, только если все вышеперечисленные элементы различны.
[0323] Если количество частей информации о движении в списке потенциально подходящих векторов движения достигает максимальной длины списка MaxAffineNumMrgCand (MaxAffineNumMrgCand - положительное целое число, такое как 1, 2, 3, 4 или 5, ниже приводится описание с использованием длины 5 в качестве примера, и подробности здесь не описываются), список кандидатов завершен. В противном случае проходится следующий соседний блок.
[0324] D2: Потенциально подходящая информация о движении контрольной точки текущего блока получается с использованием построенного метода предсказания вектора движения для контрольной точки и добавляется в список потенциально подходящей информации о движении. Для этого следует обратиться к Фиг.9B.
[0325] Этап 601c: Получают информацию о движении контрольных точек текущего блока. Для этого следует обратиться к этапу 801 в построенном методе 2 предсказания вектора движения контрольной точки из подраздела 5. Подробности не описываются здесь снова.
[0326] Этап 602c: Объединяют информацию о движении контрольных точек, чтобы получить построенную информацию о движении контрольных точек. Для этого следует обратиться к этапу 801 на Фиг.8B. Подробности не описываются здесь снова.
[0327] Этап 603c: Добавляют построенную информацию о движении контрольной точки в список потенциально подходящих векторов движения.
[0328] Если длина списка кандидатов меньше максимальной длины списка MaxAffineNumMrgCand, комбинации проходятся в заранее установленном порядке, чтобы получить корректную комбинацию в качестве потенциально подходящей информации о движении контрольной точки. В этом случае, если список потенциально подходящих векторов движения пуст, потенциально подходящая информация движения точки контрольной точки добавляется в список потенциально подходящих векторов движения. В противном случае информация о движении в списке потенциально подходящих векторов движения проходится последовательно, чтобы проверить, имеется ли информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, в списке потенциально подходящих векторов движения. Если в списке потенциально подходящих векторов движения отсутствует информация о движении, которая является такой же, как потенциально подходящая информация о движении контрольной точки, потенциально подходящая информация о движении контрольной точки добавляется в список потенциально подходящих векторов движения.
[0329] Например, заранее заданный порядок выглядит следующим образом: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3) -> Affine (CP2, CP3) -> Affine (CP1, CP4) -> Affine (CP2, CP4) -> Affine (CP3, CP4). Всего существует 10 комбинаций.
[0330] Если информация о движении контрольной точки, соответствующая комбинации, недоступна, считается, что комбинация недоступна. Если комбинация доступна, определяется индекс опорного кадра комбинации (в случае двух контрольных точек, меньший индекс опорного кадра выбирается в качестве индекса опорного кадра комбинации; в случае более двух контрольных точек, выбирается индекс опорного кадра, который появляется наиболее часто, и количества раз, когда появляются множество индексов опорного кадра, одни и те же, минимальный индекс опорного кадра выбирается в качестве индекса опорного кадра комбинации), и векторы движения контрольных точек масштабируются. Если масштабированная информация о движении всех контрольных точек согласованна, комбинация некорректна.
[0331] В необязательном порядке, в этом варианте осуществления настоящей заявки список потенциально подходящих векторов движения может быть дополнен. Например, после вышеупомянутого процесса прохождения, если длина списка потенциально подходящих векторов движения меньше, чем максимальная длина списка MaxAffineNumMrgCand, список потенциально подходящих векторов движения может дополняться до тех пор, пока длина списка не станет равной MaxAffineNumMrgCand.
[0332] Дополнение может выполняться с использованием метода дополнения нулевого вектора движения или путем объединения или взвешенного усреднения имеющейся потенциально подходящей информации о движении в имеющемся списке. Следует отметить, что к настоящей заявке также применим другой метод дополнения списка потенциально подходящих векторов движения. Подробности здесь не описываются.
[0333] Этап 603b: Выполняют синтаксический анализ потока битов, чтобы определить оптимальную информацию о движении контрольной точки.
[0334] Получают номер индекса посредством синтаксического анализа, и оптимальную информацию о движении контрольной точки определяют из списка потенциально подходящих векторов движения на основе номера индекса.
[0335] Этап 604b: Получают вектор движения каждого подблока в текущем блоке на основе оптимальной информации о движении контрольной точки и аффинной модели движения, используемой для текущего блока декодирования.
[0336] Этот этап аналогичен этапу 605a.
[0337] Этап 605b: Выполняют компенсацию движения в отношении каждого подблока на основе определенного вектора движения подблока, чтобы получить предиктор выборки подблока.
[0338] В настоящем изобретении технологии относятся к энтропийному декодеру с контекстно-зависимым адаптивным двоичным арифметическим кодированием (CABAC) или другому энтропийному декодеру, такому как декодер на основе энтропии разбиения вероятностного интервала (PIPE) или связанный с ним декодер. Арифметическое декодирование - это форма энтропийного декодирования, используемая во многих алгоритмах сжатия с высокой эффективностью декодирования, поскольку символ может быть отображен в код нецелой длины при арифметическом декодировании. Как правило, декодирование символа данных с помощью CABAC включает в себя один или несколько из следующих этапов:
[0339] (1) Двоичный: Если символ, который должен быть декодирован, является недвоичным, символ отображается в «двоичную» последовательность, и каждый двоичный бит может иметь значение «0» или «1».
[0340] (2) Назначение контекста: Каждому двоичному биту назначается один контекст (в нормальном режиме). Модель контекста используется для определения метода вычисления контекста для данного двоичного бита на основе информации, доступной для двоичного бита. Информация представляет собой, например, значение предыдущего декодированного символа или двоичное число.
[0341] (3) Двоичное кодирование: Арифметический кодер кодирует двоичный бит. Для кодирования двоичного бита арифметическому кодеру требуется вероятность значения двоичного бита в качестве входа, каковая вероятность - это вероятность того, что значение двоичного бита равно «0», и вероятность того, что значение двоичного бита равно «1». (Оценочная) вероятность каждого контекста представлена целочисленным значением, которое называется «состоянием контекста». У каждого контекста есть состояние, и поэтому состояние (то есть предполагаемая вероятность) одинаково для двоичного бита, которому назначен один контекст, и отличается в разных контекстах.
[0342] (4) Обновление состояния: Вероятность (состояние) выбора контекста обновляется на основе фактического декодированного значения двоичного бита (например, если значение двоичного бита равно «1», вероятность «1» увеличивается).
[0343] В предшествующем уровне техники, когда выполняется синтаксический анализ информации о параметрах аффинной модели движения через CABAC, например, affine_merge_flag, affine_merge_idx, affine_inter_flag и affine_type_flag в Таблице 1, для разных элементов синтаксиса при синтаксическом анализе CABAC необходимо использовать разные контексты. В настоящем изобретении количество контекстов, используемых в CABAC, сокращено. Следовательно, для хранения контекстов занимается меньшее пространство, требующееся для кодера и декодера, не оказывая отрицательного воздействия на эффективность кодирования.
[0344] Для affine_merge_flag и affine_inter_flag два разных набора контекстов (каждый набор контекстов включает в себя три контекста) используются в CABAC согласно предшествующему уровню техники. Фактический индекс контекста, используемый в каждом наборе, равен сумме значения одного и того же элемента синтаксиса в левом соседнем блоке текущего блока декодирования и значения того же элемента синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 3. Здесь availableL указывает доступность левого соседнего блока текущего блока декодирования (существует ли левый соседний блок и был ли он декодирован), а availableA указывает доступность верхнего соседнего блока текущего блока декодирования (существует ли верхний соседний блок и был ли он декодирован). В предшествующем уровне техники количество контекстов affine_merge_flag и affine_inter_flag равно 6.
Таблица 3 Индексы контекста
Элемент синтаксиса
condL
condA
Индекс контекста
affine_merge_flag[x0][y0]
affine_merge_flag[x0-1][y0]
affine_merge_flag[x0][y0-1]
(condL && availableL) + (condA && availableA)
affine_inter_flag[x0][y0]
affine_inter_flag[x0-1][y0]
affine_inter_flag[x0][y0-1]
(condL && availableL) + (condA && availableA)
[0345] Фиг.10 описывает процедуру способа декодирования видео согласно варианту осуществления настоящего изобретения. Этот вариант осуществления может быть выполнен видеодекодером, показанным на Фиг.3. Как показано на Фиг.10, способ включает в себя следующие этапы.
[0346] 1001. Выполняют синтаксический анализ принятого потока битов, чтобы получить элемент синтаксиса, подлежащий энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке.
[0347] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.
[0348] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.
[0349] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.
[0350] Текущий блок в этом варианте осуществления настоящего изобретения может быть CU.
[0351] 1002. Выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где энтропийное декодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийное декодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста.
[0352] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.
[0353] 1003. Выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.
[0354] Этот этап может, в частности, выполняться модулем 360 обработки предсказания по Фиг.3.
[0355] 1004. Получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0356] Этот этап может быть, в частности, выполнен модулем 314 восстановления по Фиг.3.
[0357] В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, декодеру не нужно подтверждать модель контекста при выполнении энтропийного декодирования, чем повышается эффективность декодирования при выполнении декодирования видео декодером. Кроме того, поскольку видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, требуется меньше пространства хранения в видеодекодере.
[0358] В соответствии со способом декодирования видео, описанным на Фиг.10, вариант осуществления настоящего изобретения дополнительно предоставляет способ кодирования, включающий в себя этапы, на которых:
получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, при этом при выполнении энтропийного кодирования в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, энтропийное кодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста, или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием этой модели контекста; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Модель контекста, используемая при выполнении энтропийного кодирования в отношении текущего блока, такая же, как модель контекста в способе декодирования видео, описанном на Фиг.10. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, кодеру не нужно подтверждать модель контекста при выполнении энтропийного кодирования, чем повышается эффективность кодирования при выполнении кодирования видео кодером. Кроме того, поскольку видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, занимается меньше пространства хранения в видеокодере.
[0359] Фиг.11 описывает процедуру способа декодирования видео согласно другому варианту осуществления настоящего изобретения. Этот вариант осуществления может быть выполнен видеодекодером, показанным на Фиг.3. Как показано на Фиг.11, способ включает в себя следующие этапы.
[0360] 1101. Выполняют синтаксический анализ принятого потока битов, чтобы получить элемент синтаксиса, подлежащий энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке.
[0361] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.
[0362] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - affine_inter_flag.
[0363] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.
[0364] 1102. Получают модель контекста, соответствующую подлежащему энтропийному декодированию элементу синтаксиса, при этом модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста.
[0365] Видеодекодер должен хранить только один набор моделей контекста для элемента 1 синтаксиса и элемента 2 синтаксиса.
[0366] В некоторых реализациях заранее заданный набор моделей контекста включает в себя только две модели контекста. В некоторых других реализациях заранее заданный набор моделей контекста включает в себя только три модели контекста. Можно понять, что заранее заданный набор моделей контекста может альтернативно включать в себя четыре, пять или шесть моделей контекста. Количество моделей контекста, включенных в заранее заданный набор моделей контекста, не ограничено в этом варианте осуществления настоящего изобретения.
[0367] В реализации, то, что модель контекста, соответствующая элементу синтаксиса 1 в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке.
[0368] В другой реализации, то, что модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, включает в себя: определение индекса контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока и элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.
[0369] Например, если количество моделей контекста в заранее заданном наборе моделей контекста равно 3, значение индекса контекста элемента 1 синтаксиса в текущем блоке представляет собой сумму значения, полученного посредством выполнения операции ИЛИ в отношении элемента синтаксиса 1 и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0370] В частности, элемент 1 синтаксиса affine_merge_flag и элемент 2 синтаксиса affine_inter_flag могут совместно использовать один набор моделей контекста (каковой набор включает в себя три модели контекста). Фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством сложения значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, и значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 4. Здесь "|" указывает операцию ИЛИ.
Таблица 4 Индексы контекста согласно настоящему изобретению
Элемент синтаксиса
condL
condA
Индекс контекста
affine_merge_flag[x0][y0]affine_inter_flag[x0][y0]
affine_merge_flag[x0-1][y0] | affine_inter_flag [x0-1][y0]
affine_merge_flag[x0][y0-1] | affine_inter_flag[x0][y0-1]
(condL && availableL) + (condA && availableA)
[0371] Например, если количество моделей контекста в заранее заданном наборе моделей контекста равно 2, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента синтаксиса 2 в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0372] В частности, элемент 1 синтаксиса affine_merge_flag и элемент 2 синтаксиса affine_inter_flag совместно используют один набор моделей контекста (каковой набор включает в себя две модели контекста). Фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, и значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 5. Здесь "|" указывает операцию ИЛИ. В этом варианте осуществления настоящего изобретения количество контекстов для affine_merge_flag и affine_inter_flag уменьшено до 2.
Таблица 5 Индексы контекста согласно настоящему изобретению
Элемент синтаксиса
condL
condA
Индекс контекста
affine_merge_flag[x0][y0]affine_inter_flag [x0][y0]
affine_merge_flag[x0-1][y0] | affine_inter_flag[x0-1][y0]
affine_merge_flag[x0][y0-1] | affine_inter_flag[x0][y0-1]
(condL && availableL) | (condA && availableA)
[0373] 1103. Выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.
[0374] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.
[0375] 1104. Выполняют предсказание в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.
[0376] Этот этап может конкретно выполняться модулем 360 обработки предсказания по Фиг.3.
[0377] 1105. Получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0378] Этот этап может конкретно выполняться модулем 314 восстановления по Фиг.3.
[0379] В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеодекодере.
[0380] В соответствии со способом декодирования видео, описанным на Фиг.11, вариант осуществления настоящего изобретения дополнительно обеспечивает способ кодирования, включающий в себя этапы, на которых:
получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.11. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.
[0381] Фиг.12 описывает процедуру способа декодирования видео согласно варианту осуществления настоящего изобретения. Этот вариант осуществления может быть выполнен видеодекодером, показанным на Фиг.3. Как показано на Фиг.12, способ включает в себя следующие этапы.
[0382] 1201. Выполняют синтаксический анализ принятого потока битов, чтобы получить элемент синтаксиса, подлежащий энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке, включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке.
[0383] В реализации элемент 3 синтаксиса в текущем блоке - это merge_idx, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx.
[0384] В реализации элемент 3 синтаксиса в текущем блоке - это merge_idx, или элемент 4 синтаксиса в текущем блоке - это subblock_merge_idx.
[0385] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.
[0386] 1202. Получают модель контекста, соответствующую подлежащему энтропийному декодированию элементу синтаксиса, где модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста.
[0387] В реализации количество моделей контекста, включенных в заранее заданный набор моделей контекста, равно 5. Можно понять, что количество моделей контекста, включенных в заранее заданный набор моделей контекста, альтернативно может быть другим значением, таким как 1, 2, 3 или 4. Когда количество моделей контекста, включенных в заранее заданный набор моделей контекста, равно 1, заранее заданный набор моделей контекста является одной моделью контекста. Количество моделей контекста, включенных в заранее заданный набор моделей контекста, не ограничено в этом варианте осуществления настоящего изобретения.
[0388] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.
[0389] 1203. Выполняют энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.
[0390] Этот этап может конкретно выполняться модулем 304 энтропийного декодирования по Фиг.3.
[0391] 1204. Выполняют обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.
[0392] Этот этап может конкретно выполняться модулем 360 обработки предсказания по Фиг.3.
[0393] 1205. Получают восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0394] Этот этап может конкретно выполняться модулем 314 восстановления по Фиг.3.
[0395] В этом варианте осуществления, поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента 3 синтаксиса и элемента 4 синтаксиса, как следствие, занимается меньше пространства хранения в видеодекодере.
[0396] В соответствии со способом декодирования видео, описанным на Фиг.12, вариант осуществления настоящего изобретения дополнительно предоставляет способ кодирования, включающий в себя этапы, на которых: получают элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получают модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модели контекста, соответствующей элементу 4 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; выполняют энтропийного кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выводят поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.12. В этом варианте осуществления, поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 3 синтаксиса и элемента 4 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.
[0397] Вариант осуществления настоящего изобретения предоставляет видеодекодер 30, включающий в себя модуль 304 энтропийного декодирования, модуль 360 обработки предсказания и модуль 314 восстановления.
[0398] Модуль 304 энтропийного декодирования выполнен с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке, включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где энтропийное декодирование в элементе 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста или энтропийного декодирования в элементе 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста.
[0399] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.
[0400] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.
[0401] Модуль 360 обработки предсказания выполнен возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.
[0402] Блок 314 восстановления выполнен возможностью получать восстановленное изображение текущего блока на основе блока предсказания текущего блока.
[0403] В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, декодеру не нужно подтверждать модель контекста при выполнении энтропийного декодирования, чем повышается эффективность декодирования при выполнении декодирования видео декодером. Кроме того, поскольку видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, требуется меньше пространства хранения в видеодекодере.
[0404] Соответственно, вариант осуществления настоящего изобретения предоставляет видеокодер 20, включающий в себя: модуль 270 энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, в текущем блоке, при этом, при выполнении энтропийного кодирования в отношении подлежащего энтропийному кодированию элемента синтаксиса в текущем блоке, энтропийное кодирование в отношении элемента 1 синтаксиса в текущем блоке осуществляется с использованием заранее заданной модели контекста, или энтропийное кодирование в отношении элемента 2 синтаксиса в текущем блоке осуществляется с использованием данной модели контекста; и выход 272, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Модель контекста, используемая при выполнении энтропийного кодирования в отношении текущего блока, такая же, как модель контекста в способе, описанном на Фиг.10. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, кодеру не нужно подтверждать модель контекста при выполнении энтропийного кодирования, чем повышается эффективность кодирования при выполнении кодирования видео кодером. Кроме того, поскольку видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, занимается меньше пространства хранения в видеокодере.
[0405] Другой вариант осуществления настоящего изобретения предоставляет видеодекодер 30, включающий в себя модуль 304 энтропийного декодирования, модуль 360 обработки предсказания и модуль 314 восстановления.
[0406] Модуль 304 энтропийного декодирования выполнен в возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, где модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.
[0407] В реализации элемент 1 синтаксиса в текущем блоке - это affine_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.
[0408] В реализации элемент 1 синтаксиса в текущем блоке - это subblock_merge_flag, или элемент 2 синтаксиса в текущем блоке - это affine_inter_flag.
[0409] В одной реализации модуль 304 энтропийного декодирования может быть конкретно выполнен с возможностью: определять индекс контекста элемента 1 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока, а также элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 1 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 1 синтаксиса в текущем блоке; или
определять индекс контекста элемента 2 синтаксиса в текущем блоке на основе элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке текущего блока, а также элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке текущего блока, где индекс контекста элемента 2 синтаксиса в текущем блоке используется для указания модели контекста, соответствующей элементу 2 синтаксиса в текущем блоке.
[0410] Например, значение индекса контекста элемента 1 синтаксиса в текущем блоке представляет собой сумму значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или
значение индекса контекста элемента 2 синтаксиса в текущем блоке является суммой значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0411] Например, значение индекса контекста элемента 1 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного посредством выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке; или
значение индекса контекста элемента 2 синтаксиса в текущем блоке является результатом, полученным посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в верхнем соседнем блоке, и значения, полученного путем выполнения операции ИЛИ в отношении элемента 1 синтаксиса и элемента 2 синтаксиса в левом соседнем блоке.
[0412] Модуль 360 обработки предсказания выполнен с возможностью выполнять обработку предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.
[0413] Модуль 314 восстановления выполнен с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.
[0414] В этом варианте осуществления, поскольку элемент синтаксиса 1 и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеодекодере.
[0415] Соответственно, вариант осуществления настоящего изобретения дополнительно предоставляет видеокодер, включающий в себя: модуль 270 энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 1 синтаксиса в текущем блоке или элемент 2 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 1 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 2 синтаксиса в текущем блоке, определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход 272, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.11. В этом варианте осуществления, поскольку элемент 1 синтаксиса и элемент 2 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 1 синтаксиса и элемента 2 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.
[0416] Другой вариант осуществления настоящего изобретения предоставляет видеодекодер 30, включающий в себя модуль 304 энтропийного декодирования, модуль 360 обработки предсказания и модуль 314 восстановления.
[0417] Модуль 304 энтропийного декодирования выполнен с возможностью: выполнять синтаксический анализ принятого потока битов для получения элемента синтаксиса, подлежащего энтропийному декодированию, в текущем блоке, где подлежащий энтропийному декодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному декодированию, при этом модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное декодирование в отношении элемента синтаксиса, подлежащего энтропийному декодированию, на основе модели контекста, соответствующей подлежащему энтропийному декодированию элементу синтаксиса в текущем блоке.
[0418] Заранее заданный набор моделей контекста включает одну, две, три, четыре или пять моделей контекста. Можно понять, что когда заранее заданный набор моделей контекста включает в себя только одну модель контекста, заранее заданный набор моделей контекста является одной контекстной моделью.
[0419] В реализации элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - это affine_merge_idx и используется для указания значения индекса списка кандидатов на аффинное слияние для текущего блока; или
элемент 3 синтаксиса в текущем блоке - это merge_idx и используется для указания значения индекса списка кандидатов на слияние для текущего блока, или элемент 4 синтаксиса в текущем блоке - subblock_merge_idx и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.
[0420] Модуль 360 обработки предсказания выполнен с возможностью выполнения обработки предсказания в отношении текущего блока на основе элемента синтаксиса, который находится в текущем блоке и который получен посредством энтропийного декодирования, чтобы получить блок предсказания текущего блока.
[0421] Модуль 314 восстановления выполнен с возможностью получения восстановленного изображения текущего блока на основе блока предсказания текущего блока.
[0422] В этом варианте осуществления, поскольку элемент 3 синтаксиса и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеодекодеру необходимо хранить только одну модель контекста для элемента синтаксиса 3 и элемента синтаксиса 4, как следствие, занимается меньше пространства хранения в видеодекодере.
[0423] Соответственно, вариант осуществления настоящего изобретения дополнительно предоставляет видеокодер, включающий в себя: модуль 270 энтропийного кодирования, выполненный с возможностью: получать элемент синтаксиса, подлежащий энтропийному кодированию, в текущем блоке, где подлежащий энтропийному кодированию элемент синтаксиса в текущем блоке включает в себя элемент 3 синтаксиса в текущем блоке или элемент 4 синтаксиса в текущем блоке; получать модель контекста, соответствующую элементу синтаксиса, подлежащему энтропийному кодированию, при этом модель контекста, соответствующая элементу 3 синтаксиса в текущем блоке, определяется из заранее заданного набора моделей контекста, или модель контекста, соответствующая элементу 4 синтаксиса в текущем блоке определяется из этого заранее заданного набора моделей контекста; и выполнять энтропийное кодирование в отношении элемента синтаксиса, подлежащего энтропийному кодированию, на основе модели контекста, соответствующей подлежащему энтропийному кодированию элементу синтаксиса в текущем блоке; и выход 272, выполненный с возможностью выводить поток битов, включающий в себя элемент синтаксиса, который находится в текущем блоке и получен посредством энтропийного кодирования. Набор моделей контекста, используемый при выполнении энтропийного кодирования в отношении текущего блока, такой же, как набор моделей контекста в способе декодирования видео, описанном на Фиг.12. В этом варианте осуществления, поскольку элемент синтаксиса 3 и элемент 4 синтаксиса в текущем блоке совместно используют одну модель контекста, видеокодеру необходимо хранить только одну модель контекста для элемента 3 синтаксиса и элемента 4 синтаксиса, как следствие, занимается меньше пространства хранения в видеокодере.
[0424] Вариант 1 осуществления настоящего изобретения предлагает, что affine_merge_flag и affine_inter_flag совместно используют один набор контекста (каковой набор включает в себя три контекста), и фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством прибавления значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, к значению, полученному путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 4. Здесь "|" указывает операцию ИЛИ. В варианте 1 осуществления настоящего изобретения количество контекстов для affine_merge_flag и affine_inter_flag уменьшено до 3.
[0425] Вариант 2 осуществления настоящего изобретения предлагает, что affine_merge_flag и affine_inter_flag совместно используют один набор контекстов (каковой набор включает в себя два контекста), и фактический индекс контекста, используемый в каждом наборе, равен результату, полученному посредством выполнения операции ИЛИ в отношении значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в левом соседнем блоке текущего блока декодирования, и значения, полученного путем выполнения операции ИЛИ в отношении двух элементов синтаксиса в верхнем соседнем блоке текущего блока декодирования, как показано в Таблице 5. Здесь "|" указывает операцию ИЛИ. В варианте 2 осуществления настоящего изобретения количество контекстов для affine_merge_flag и affine_inter_flag уменьшено до 2.
[0426] Вариант 3 осуществления настоящего изобретения предлагает, что affine_merge_flag и affine_inter_flag совместно используют один контекст. В третьем варианте осуществления настоящего изобретения количество контекстов affine_merge_flag и количество контекстов affine_inter_flag уменьшено до 1.
[0427] В предшествующем уровне техники бинаризация выполняется в отношении merge_idx и affine_merge_idx с использованием усеченных унарных кодов, два разных набора контекстов (каждый набор контекстов включает в себя пять контекстов) используются в CABAC, и разные контексты используются для каждого двоичного бита после бинаризации. В предшествующем уровне техники количество контекстов для merge_idx и affine_merge_idx равно 10.
[0428] Вариант 4 осуществления настоящего изобретения предлагает, что merge_idx и affine_merge_idx совместно используют один набор контекстов (каждый набор контекстов включает в себя пять контекстов). В варианте 4 осуществления настоящего изобретения количество контекстов для merge_idx и affine_merge_idx уменьшено до 5.
[0429] В некоторых других технологиях элемент синтаксиса affine_merge_flag[x0][y0] в Таблице 1 может быть заменен на subblock_merge_flag[x0][y0] и используется для указания того, используется ли режим слияния на основе подблоков для текущего блока, и элемент синтаксиса affine_merge_idx[x0][y0] в Таблице 1 может быть заменен на subblock_merge_idx[x0][y0] и используется для указания значения индекса списка кандидатов на слияние на основе подблоков.
[0430] В этом случае варианты осуществления с 1 по 4 настоящего изобретения все еще применимы, то есть subblock_merge_flag и affine_inter_flag совместно используют один набор контекстов (или контекст) и один способ получения индекса, и merge_idx и subblock_merge_idx совместно используют один набор контекстов (или контекст).
[0431] Вариант осуществления настоящего изобретения дополнительно предоставляет видеодекодер, включающий в себя исполнительную схему, сконфигурированную для выполнения любого из вышеупомянутых способов.
[0432] Вариант осуществления настоящего изобретения дополнительно предоставляет видеодекодер, включающий в себя по меньшей мере один процессор и долговременный машиночитаемый носитель данных, соединенный с по меньшей мере одним процессором. Долговременный машиночитаемый носитель данных хранит компьютерную программу, которая может исполняться по меньшей мере одним процессором, и когда компьютерная программа исполняется по меньшей мере одним процессором, видеодекодер может выполнять любой из вышеупомянутых способов.
[0433] Вариант осуществления настоящего изобретения дополнительно предоставляет машиночитаемый носитель данных, приспособленный для хранения компьютерной программы, которая может исполняться процессором. Когда компьютерная программа исполняется по меньшей мере одним процессором, выполняется любой из вышеуказанных способов.
[0434] Вариант осуществления настоящего изобретения дополнительно предоставляет компьютерную программу. Когда компьютерная программа исполняется, выполняется любой из вышеуказанных способов.
[0435] В одном или нескольких вышеупомянутых примерах описанные функции могут быть реализованы с помощью аппаратных средств, программного обеспечения, встроенного программного обеспечения или любой их комбинации. Будучи реализованными в программном обеспечении, функции могут храниться или передаваться на машиночитаемом носителе и исполняться аппаратным процессором в виде одной или нескольких инструкций или кодов. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например, носителю данных или среде связи. Среда связи включает в себя, например, любую среду, которая обеспечивает передачу компьютерной программы из одного места в другое в соответствии с протоколом связи. Следовательно, машиночитаемый носитель в целом может соответствовать (1) долговременному материальному машиночитаемому носителю данных или (2) среде связи, например, сигналу или носителю. Носитель данных может быть любым доступным носителем, к которому могут осуществлять доступ один или несколько компьютеров или один или несколько процессоров для извлечения инструкции, кода и/или структуры данных для реализации технологий, описанных в настоящем изобретении. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
[0436] В качестве примера, а не ограничения, такой машиночитаемый носитель данных может включать в себя RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другое магнитное запоминающее устройство, флэш-память или любой другой носитель, который можно использовать для хранения необходимого программного кода в форме инструкции или структуры данных и к которому может осуществлять доступ компьютер. Кроме того, любое соединение можно правильно называть машиночитаемым носителем. Например, если инструкция передается с веб-сайта, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (digital subscriber line, DSL) или беспроводных технологий, таких как как инфракрасные, радио и микроволновые, то коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасные, радио и микроволновые, включены в определение среды. Однако следует понимать, что машиночитаемый носитель данных и носитель данных не включают в себя соединение, носитель, сигнал или какие-либо другие временные носители, а фактически направлены на долговременный материальный носитель данных. В данном описании диск и оптический диск включают в себя компакт-диск (compact disc, CD), лазерный диск, оптический диск, универсальный цифровой диск (digital versatile disc, DVD), дискету и диск Blu-ray. Диск обычно воспроизводит данные магнитным способом, а оптический диск воспроизводит данные оптическим способом с помощью лазера. Любые комбинации вышеизложенного также должны входить в объем машиночитаемого носителя.
[0437] Инструкция может исполняться одним или несколькими процессорами, и один или несколько процессоров представляют собой, например, один или несколько модулей цифровой обработки сигналов (digital signal processor, DSP), один или несколько микропроцессоров общего назначения, одну или несколько специализированных интегральных схем (application specific integrated circuit, ASIC), одну или несколько программируемых пользователем вентильных матриц (field programmable logic arrays, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Следовательно, термин «процессор», используемый в настоящем описании, может представлять любую из вышеупомянутых структур или других структур, применимых к реализации технологий, описанных в настоящем описании. Кроме того, в некоторых аспектах функции, описанные в этом описании, могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, сконфигурированных для выполнения кодирования и декодирования, или могут быть включены в комбинированный кодек. Кроме того, технологии могут быть полностью реализованы в одной или нескольких схемах или логических элементах.
[0438] Технологии согласно данному раскрытию могут быть реализованы во множестве устройств или устройств, которые включают в себя беспроводной телефон, интегральную схему (integrated circuit, IC) или набор IC (например, набор микросхем). Различные компоненты, модули или блоки описаны в этом раскрытии, чтобы подчеркнуть функции устройств, сконфигурированных для выполнения раскрытых технологий, которые не обязательно реализуются различными аппаратными блоками. Фактически, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека вместе с надлежащим программным обеспечением и/или встроенным программным обеспечением, либо могут быть предоставлены посредством набора взаимодействующих аппаратных блоков. Аппаратные блоки включают в себя один или несколько процессоров, описанных выше.