ОБЛАСТЬ ТЕХНИКИ
[1] Приведенный для примера вариант осуществления относится в целом к кодированию и декодированию видеосигнала.
УРОВЕНЬ ТЕХНИКИ
[2] В некоторых видеокодеках, например, кодек высокопроизводительного кодирования видеосигнала (High Efficiency Video Codec, HEVC), видеоизображения делятся на единицы кодирования (Coding Unit, CU), покрывающие область изображения. Единица CU состоит из одной или более единиц предсказания (Prediction Unit, PU), задающих процесс предсказания для выборок в CU, и одной или более единиц преобразования (Transform Unit, TU), задающих процесс кодирования ошибки предсказания для выборок в CU. CU состоит из квадратного блока выборок, размер которого выбирается из заранее заданного набора возможных размеров CU. CU максимально допустимого размера может именоваться наибольшей единицей кодирования (Largest Coding Unit, LCU) или единицей дерева кодирования (Coding Tree Unit, CTU), и видеоизображение делится на неперекрывающиеся LCU. LCU может дополнительно разбиваться на несколько меньших CU, например путем рекурсивного разбиения LCU и результирующих CU. Каждая результирующая CU может иметь по меньшей мере одну PU и по меньшей мере одну TU, связанную с CU. Каждая PU и TU может дополнительно разбиваться на меньшие PU и TU для улучшения гранулярности процессов предсказания и кодирования ошибки предсказания, соответственно. Каждая PU имеет информацию предсказания, связанную с PU, задающую разновидность предсказания, которая подлежит применению для пикселей в PU (например, информацию вектора движения для внешне предсказанных PU и информация направленности внутреннего предсказания для внутренне предсказанных PU).
[3] Слайс представляет собой целое число CTU, содержащихся в одном независимом сегменте слайса и всех последующих зависимых сегментов слайса (при наличии), которые предшествуют следующему независимому сегменту слайса (при наличии) в одной и той же единице доступа. В HEVC заголовок слайса задается как заголовок сегмента слайса независимого сегмента слайса, который является текущим сегментом слайса или является независимым сегментом слайса, который предшествует текущему зависимому сегменту слайса, и заголовок сегмента слайса задается как часть кодированного сегмента слайса, содержащего элементы данных, относящиеся к первому или всем единицам дерева кодирования, представленным в сегменте слайса. CU сканируются в порядке растрового сканирования LCU в тайлах или в изображении, если тайлы не используются. В LCU, CU имеют конкретный порядок сканирования. Позиция слайса в изображении указывается посредством индексации блока в порядке растрового сканирования в изображении.
[4] Поскольку позиция слайса в изображении указывается посредством индексации блока в порядке растрового сканирования в изображении, для перепозиционирования слайса или извлечения поднабора тайлов или слайсов (отличных от поднаборов по ширине изображения, начиная с верхнего левого угла изображения) требуется перезапись заголовка(ов) слайса(ов). Перепозиционирование слайсов происходит в самых различных ситуациях, например, при извлечении набора тайлов в его собственный битовый поток, переключение окна обзора с порядком тайлов или размером изображения в декодированных изображениях, отличающимся от кодированных изображений для круговых видеоизображений и пр. Перезапись заголовков слайсов с целью перепозиционирования слайса неэффективна, поскольку перезапись заголовка слайса влияет на битовую скорость потока и/или требует особых инструкций перезаписи, что приводит к дополнительному расходованию времени и ресурсов вычисления.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[5] В некоторых вариантах осуществления, способ, устройство и компьютерный программный продукт предусмотрены в соответствии с иллюстративным вариантом осуществления для кодирования изображения в кодированное изображение. В одном иллюстративном варианте осуществления, предусмотрен способ, который включает в себя прием изображения. Способ дополнительно включает в себя кодирование изображения в виде одного или более слайсов. Способ дополнительно включает в себя кодирование, в заголовок слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Способ дополнительно включает в себя кодирование одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в файле набора параметров.
[6] В некоторых реализациях такого способа, способ дополнительно включает в себя, кодирование, в заголовок слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, способ дополнительно включает в себя построение одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, способ дополнительно включает в себя построение файла ограничения порядка декодирования, связанного с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[7] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя по меньшей мере один процессор и по меньшей мере одна память, включающая в себя компьютерный программный код для одной или более программ, причем по меньшей мере одна память и компьютерный программный код выполнены с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству по меньшей мере прием изображения. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству кодирование изображения в виде одного или более слайсов. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству кодирование, в заголовок слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству кодирование одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в файле набора параметров.
[8] В некоторых реализациях такого устройства, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству кодирование, в заголовок слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству построение одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству построение файла ограничения порядка декодирования, связанного с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[9] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя средство для приема изображения. Устройство дополнительно включает в себя средство для кодирования изображения в виде одного или более слайсов. Устройство дополнительно включает в себя средство для кодирования, в заголовок слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Устройство дополнительно включает в себя средство для кодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в файле набора параметров.
[10] В некоторых реализациях такого устройства, устройство дополнительно включает в себя средство для, кодирования, в заголовок слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, устройство дополнительно включает в себя средство для построения одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, устройство дополнительно включает в себя средство для построения файла ограничения порядка декодирования, связанного с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[11] В еще одном иллюстративном варианте осуществления, предусмотрен компьютерный программный продукт, который включает в себя по меньшей мере один машиночитаемый носитель данных, на котором хранятся инструкции исполнимого компьютером программного кода, причем инструкции исполнимого компьютером программного кода содержат инструкции программного кода, выполненные с возможностью, при исполнении, приема изображения. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, кодирования изображения в виде одного или более слайсов. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, кодирования, в заголовок слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, кодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в файле набора параметров.
[12] В некоторых реализациях такого компьютерного программного продукта, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, кодирования, в заголовок слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, построения одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, построения файла ограничения порядка декодирования, связанного с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[13] В некоторых вариантах осуществления, способ, устройство и компьютерный программный продукт предусмотрены в соответствии с иллюстративным вариантом осуществления для построения набора тайлов с возможностью предсказания в изображении (IPPE). В одном иллюстративном варианте осуществления, предусмотрен способ, который включает в себя прием или кодирование битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Способ дополнительно включает в себя идентификацию одного или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Способ дополнительно включает в себя построение указания набора тайлов с возможностью предсказания в изображении, содержащего один или более зависимых тайлов. Способ дополнительно включает в себя предписание хранения битового потока и указания набора тайлов с возможностью предсказания в изображении.
[14] В некоторых реализациях такого способа, способ дополнительно включает в себя кодирование указания набора тайлов с возможностью предсказания в изображении в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указание указывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
[15] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя по меньшей мере один процессор и по меньшей мере одна память, включающая в себя компьютерный программный код для одной или более программ, причем по меньшей мере одна память и компьютерный программный код выполнены с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству по меньшей мере прием или кодирование битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству идентификацию одного или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству построение указания набора тайлов с возможностью предсказания в изображении, содержащего один или более зависимых тайлов. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству предписание хранения битового потока и указания набора тайлов с возможностью предсказания в изображении.
[16] В некоторых реализациях такого устройства, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству кодирование указания набора тайлов с возможностью предсказания в изображении в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указаниеуказывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
[17] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя средство для приема или кодирования битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Устройство дополнительно включает в себя средство для идентификации одного или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Устройство дополнительно включает в себя средство для построения указания набора тайлов с возможностью предсказания в изображении, содержащего один или более зависимых тайлов. Устройство дополнительно включает в себя средство для предписания хранения битового потока и указания набора тайлов с возможностью предсказания в изображении.
[18] В некоторых реализациях такого устройства, устройство дополнительно включает в себя средство для кодирования указания набора тайлов с возможностью предсказания в изображении в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указание указывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
[19] В еще одном иллюстративном варианте осуществления, предусмотрен компьютерный программный продукт, который включает в себя по меньшей мере один машиночитаемый носитель данных, на котором хранятся инструкции исполнимого компьютером программного кода, причем инструкции исполнимого компьютером программного кода содержат инструкции программного кода, выполненные с возможностью, при исполнении, приема или кодирования битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении идентификация одного или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, построения указания набора тайлов с возможностью предсказания в изображении, содержащего один или более зависимых тайлов. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении предписание хранения битового потока и указания набора тайлов с возможностью предсказания в изображении.
[20] В некоторых реализациях такого компьютерного программного продукта, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, кодирования указания набора тайлов с возможностью предсказания в изображении в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указание указывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
[21] В некоторых вариантах осуществления, способ, устройство и компьютерный программный продукт предусмотрены в соответствии с иллюстративным вариантом осуществления для декодирования кодированного изображения.
[22] В одном иллюстративном варианте осуществления, предусмотрен способ, который включает в себя прием кодированного изображения, содержащего один или более слайсов. Способ дополнительно включает в себя декодирование, из заголовка слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Способ дополнительно включает в себя декодирование данных слайса в декодированное изображение, начиная с одной или более позиций тайлов для одного или более тайлов в слайсе.
[23] В некоторых реализациях такого способа, способ дополнительно включает в себя, декодирование, из заголовка слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, способ дополнительно включает в себя декодирование одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, способ дополнительно включает в себя декодирование одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов в позициях тайлов из файла набора параметров. В некоторых вариантах осуществления, способ дополнительно включает в себя декодирование одного или более тайлов согласно файлу ограничения порядка декодирования, связанному с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[24] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя по меньшей мере один процессор и по меньшей мере одна память, включающая компьютерный программный код для одной или более программ, причем по меньшей мере одна память и компьютерный программный код выполнены с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству по меньшей мере прием кодированного изображения, содержащего один или более слайсов. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству декодирование, из заголовка слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству декодирование данных слайса в декодированное изображение, начиная с одной или более позиций тайлов для одного или более тайлов в слайсе.
[25] В некоторых реализациях такого устройства, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству декодирование, из заголовка слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству декодирование одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству декодирование одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов в позициях тайлов из файла набора параметров. В некоторых вариантах осуществления, компьютерный программный код дополнительно выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству декодирование одного или более тайлов согласно файлу ограничения порядка декодирования, связанному с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[26] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя средство для приема кодированного изображения, содержащего один или более слайсов. Устройство дополнительно включает в себя средство для декодирования, из заголовка слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Устройство дополнительно включает в себя средство для декодирования данных слайса в декодированное изображение, начиная с одной или более позиций тайлов для одного или более тайлов в слайсе.
[27] В некоторых реализациях такого устройства, устройство дополнительно включает в себя средство для декодирования, из заголовка слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, устройство дополнительно включает в себя средство для декодирования одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, устройство дополнительно включает в себя средство для декодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов в позициях тайлов из файла набора параметров. В некоторых вариантах осуществления, устройство дополнительно включает в себя средство для декодирования одного или более тайлов согласно файлу ограничения порядка декодирования, связанному с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[28] В другом иллюстративном варианте осуществления, предусмотрен компьютерный программный продукт, который включает в себя по меньшей мере один машиночитаемый носитель данных, на котором хранятся инструкции исполнимого компьютером программного кода, причем инструкции исполнимого компьютером программного кода содержат инструкции программного кода, выполненные с возможностью, при исполнении, приема кодированного изображения, содержащего один или более слайсов. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, декодирования, из заголовка слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, декодирования данных слайса в декодированное изображение, начиная с одной или более позиций тайлов для одного или более тайлов в слайсе.
[29] В некоторых реализациях такого компьютерного программного продукта, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, декодирования, из заголовка слайса, индекса блока относительно тайла из одного или более тайлов. Индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле. В некоторых вариантах осуществления, один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса. В некоторых вариантах осуществления, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, декодирования одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. В некоторых вариантах осуществления, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, декодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов в позициях тайлов из файла набора параметров. В некоторых вариантах осуществления, инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, декодирования одного или более тайлов согласно файлу ограничения порядка декодирования, связанному с изображением. Файл ограничения порядка декодирования включает в себя указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
[30] В некоторых вариантах осуществления, способ, устройство и компьютерный программный продукт предусмотрены в соответствии с иллюстративным вариантом осуществления для декодирования набора тайлов с возможностью предсказания в изображении (IPPE). В одном иллюстративном варианте осуществления, предусмотрен способ, который включает в себя прием битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Способ дополнительно включает в себя прием указания набора тайлов с возможностью предсказания в изображении. Набор тайлов с возможностью предсказания в изображении идентифицирует один или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Способ дополнительно включает в себя декодирование битового потока согласно указанию набора тайлов с возможностью предсказания в изображении.
[31] В некоторых реализациях такого способа, указание набора тайлов с возможностью предсказания в изображении кодируется в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указание указывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
[32] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя по меньшей мере один процессор и по меньшей мере одна память, включающая в себя компьютерный программный код для одной или более программ, причем по меньшей мере одна память и компьютерный программный код выполнены с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству по меньшей мере прием битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Компьютерный программный код выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству прием указания набора тайлов с возможностью предсказания в изображении. Набор тайлов с возможностью предсказания в изображении идентифицирует один или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Компьютерный программный код выполнен с возможностью, с помощью по меньшей мере одного процессора, предписывать устройству декодирование битового потока согласно указанию набора тайлов с возможностью предсказания в изображении.
[33] В некоторых реализациях такого устройства, указание набора тайлов с возможностью предсказания в изображении кодируется в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указание указывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
[34] В другом иллюстративном варианте осуществления, предусмотрено устройство, которое включает в себя средство для приема битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Устройство дополнительно включает в себя средство для приема указания набора тайлов с возможностью предсказания в изображении. Набор тайлов с возможностью предсказания в изображении идентифицирует один или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Устройство дополнительно включает в себя средство для декодирования битового потока согласно указанию набора тайлов с возможностью предсказания в изображении.
[35] В некоторых реализациях такого устройства, указание набора тайлов с возможностью предсказания в изображении кодируется в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указание указывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
[36] В другом иллюстративном варианте осуществления, предусмотрен компьютерный программный продукт, который включает в себя по меньшей мере один машиночитаемый носитель данных, на котором хранятся инструкции исполнимого компьютером программного кода, причем инструкции исполнимого компьютером программного кода содержат инструкции программного кода, выполненные с возможностью, при исполнении, приема битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, приема указания набора тайлов с возможностью предсказания в изображении. Набор тайлов с возможностью предсказания в изображении идентифицирует один или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Инструкции исполнимого компьютером программного кода дополнительно включают в себя инструкции программного кода, выполненные с возможностью, при исполнении, декодирования битового потока согласно указанию набора тайлов с возможностью предсказания в изображении.
[37] В некоторых реализациях такого компьютерного программного продукта, указание набора тайлов с возможностью предсказания в изображении кодируется в одном или более из: набора параметров последовательности, связанного с битовым потоком, набора параметров изображения, связанного с битовым потоком, и сообщения информации дополнительного улучшения, связанного с битовым потоком. В некоторых вариантах осуществления, указание указывает, является ли набор тайлов с возможностью предсказания в изображении временным набором тайлов с ограничением движения. В некоторых вариантах осуществления, указание содержит лес или граф зависимости, который указывает набор предсказательных зависимостей для одного или более тайлов, которые не являются тайлами без возможности предсказания в изображении, отличными от одного или более тайлов из набора тайлов с возможностью предсказания в изображении. В некоторых вариантах осуществления, указание содержит набор якорных позиций для набора векторов движения с внутриблочным копированием набора зависимых тайлов в наборе тайлов с возможностью предсказания в изображении.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[38] Описав таким образом некоторые иллюстративные варианты осуществления настоящего изобретения в общих чертах, далее мы обратимся к прилагаемым чертежам, которые не обязательно изображены в масштабе, и в которых:
[39] на фиг. 1 показана блок-схема устройства, которое может быть сконфигурировано в соответствии с иллюстративным вариантом осуществления настоящего изобретения;
[40] на фиг. 2 показана блок-схема операций, демонстрирующая набор операций, осуществляемых, например, устройством, показанным на фиг. 1, в соответствии с иллюстративным вариантом осуществления настоящего изобретения;
[41] на фиг. 3 показаны примеры векторов движения в соответствии с иллюстративным вариантом осуществления настоящего изобретения;
[42] на фиг.4 показана блок-схема операций, демонстрирующая набор операций, осуществляемых, например, устройством, показанным на фиг. 1, в соответствии с иллюстративным вариантом осуществления настоящего изобретения;
[43] на фиг. 5А и 5В показаны примеры наборов тайлов с возможностью предсказания в изображении, построенных и извлеченных в соответствии с иллюстративным вариантом осуществления настоящего изобретения;
[44] на фиг. 6 показана блок-схема операций, демонстрирующая набор операций, осуществляемых, например, устройством, показанным на фиг. 1, в соответствии с иллюстративным вариантом осуществления настоящего изобретения; и
[45] на фиг. 7 показана блок-схема операций, демонстрирующая набор операций, осуществляемых, например, устройством, показанным на фиг. 1, в соответствии с иллюстративным вариантом осуществления настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[46] Далее некоторые варианты осуществления будут описаны ниже более подробно со ссылками на прилагаемые чертежи, на которых показаны некоторые, но не все, варианты осуществления изобретения. Различные варианты осуществления изобретения могут быть реализованы во многих разных формах, которые не должны ограничиваться изложенными здесь вариантами осуществления; напротив, эти варианты осуществления представлены для того, чтобы описание настоящего изобретения удовлетворяло требованиям закона. Аналогичные ссылочные позиции обозначают аналогичные элементы на всех чертежах. Используемые здесь термины "данные", "содержание", "информация" и аналогичные термины могут использоваться взаимозаменяемо в отношении данных, которые можно передавать, принимать и/или сохранять в соответствии с вариантами осуществления настоящего изобретения. Таким образом, использование любых таких терминов не служит для ограничения сущности и объема вариантов осуществления настоящего изобретения.
[47] Дополнительно, используемый здесь термин «схема» означает (а) чисто аппаратные реализации (например, реализации в аналоговой схеме и/или цифровой схеме); (b) комбинации схем и компьютерного(-ых) программного(-ых) продукта(-ов), содержащие инструкции программного обеспечения и/или программно-аппаратного обеспечения, хранящиеся в одном или более машиночитаемых блоках памяти, которые работают совместно для обеспечения осуществления устройством одной или более описанных здесь функций; и (с) схемы, например, микропроцессора(-ов) или участка(-ов) микропроцессора(-ов), для работы которых требуется программное обеспечение или программно-аппаратное обеспечение, даже если программное обеспечение или программно-аппаратное обеспечение физически не присутствуют. Это определение «схемы» применяется здесь ко всем вариантам использования этого термина, в том числе в формуле. В порядке дополнительного примера, используемый здесь термин «схема» также включает в себя реализацию, содержащую один или более процессоров и/или его/их участок(и) и сопутствующее программное обеспечение и/или программно-аппаратное обеспечение. В порядке другого примера, используемый здесь термин «схема» также включает в себя, например, низкочастотную интегральную схему или специализированную интегральную схему для мобильного телефона или аналогичную интегральную схему на сервере, устройстве сотовой сети, другом сетевом устройстве и/или другом вычислительном устройстве.
[48] Согласно приведенному здесь определению, «машиночитаемый носитель данных», который означает физический носитель данных (например, энергозависимое или энергонезависимое запоминающее устройство), может отличаться от "машиночитаемой среды передачи", которая означает электромагнитный сигнал.
[49] Способ, устройство и компьютерный программный продукт предусмотрены в соответствии с иллюстративным вариантом осуществления для обеспечения адресации, связанной с тайлом, при кодировании видеосигнала. Способ, устройство и компьютерный программный продукт могут использоваться совместно с различными форматами видео, включающими в себя стандарт высокопроизводительного кодирования видеосигнала (HEVC или H.265/HEVC) или перспективный стандарт универсального кодирования видеосигнала (Versatile Video Coding, VVC) H.266 или H.266/VVC). Иллюстративный вариант осуществления описан в связи с HEVC, однако настоящее изобретение не ограничивается HEVC, напротив, в настоящем описании приведена база, на которой может быть частично или полностью реализован иллюстративный вариант осуществления настоящего изобретения. В частности, изобретение может быть частично или полностью реализовано с перспективным стандартом Н.266.
[50] Некоторые аспекты изобретения относятся к форматам файла-контейнера, например, базовому формату медиа-файла Международной организации по стандартам (International Standards Organization, ISO) (ISO/IEC 14496-12, который может сокращенно называться ISOBMFF), формату файла группы экспертов по движущимся изображениям (Moving Picture Experts Group, MPEG)-4 (ISO/IEC 14496-14, также известному как формат МР4), форматам файла для видео со структурой единиц (Network Abstraction Level, NAL) (уровня сетевой абстракции) (ISO/IEC 14496-15) и формату файла проект партнерства третьего поколения (3rd Generation Partnership Project, 3GPP) (техническая спецификация 3GPP 26.244, также известный как формат 3GP).
[51] При описании HEVC и иллюстративных вариантов осуществления, может использоваться общее обозначение для арифметических операторов, логических операторов, операторов отношения, битовых операторов, операторы присваивания, и обозначение диапазона, например, как указано в HEVC. Кроме того, могут использоваться общие математические функции, например, как указано в HEVC, и может использоваться общий или приоритетный порядок и порядок исполнения (слева направо или справа налево) операторов, например, указанный в HEVC.
[52] При описании HEVC и иллюстративных вариантов осуществления, могут использоваться следующие математические функции. Ceil(x) определяется как наименьшее целое число, большее или равное х. Log2(x) определяется как логарифм х по основанию 2.
[53] При описании HEVC и иллюстративных вариантов осуществления, следующее описание может использоваться для указания процесса парсинга каждого синтаксического элемента.
- u(n): беззнаковое целое число, использующее п битов. Когда n равно «v» в синтаксической таблице, количество битов изменяется в зависимости от значения других синтаксических элементов. Процесс сопряжения для этого дескриптора указывается n следующими битами из битового потока, интерпретированного как двоичное представление беззнакового целого числа, где старший бит записан первым.
- ue(v): беззнаковое целое число синтаксического элемента, подвергнутого экспоненциальному кодированию Голомба, начиная с левого бита.
[54] Битовая строка, соответствующая экспоненциальному коду Голомба, может преобразовываться в кодовое число (codeNum), например, с использованием следующей таблицы:
[55] При описании HEVC и иллюстративных вариантов осуществления, только важные части синтаксических структур могут быть включены в описание синтаксиса и семантики. Многоточие ('…') может использоваться для указания, что другие синтаксические элементы могут быть включены в синтаксическую структуру. Следует понимать, что варианты осуществления можно аналогично реализовать с другим порядком и именами синтаксических элементов.
[56] При описании HEVC и иллюстративных вариантов осуществления, синтаксические структуры, семантика синтаксических элементов, и процесс декодирования может указываться следующим образом. Синтаксические элементы в битовом потоке представлены жирным шрифтом. Каждый синтаксический элемент описан своим именем (все буквы нижнего регистра с символами подчеркивания), опционально его одной или двумя категориями синтаксиса, и одного или двумя дескрипторами для его способа кодированного представления. Процесс декодирования ведет себя согласно значению синтаксического элемента и значениям ранее декодированных синтаксических элементов. Когда значение синтаксического элемента используется в синтаксических таблицах или тексте, имя состоит из букв нижнего регистра и верхнего регистра и без символов подчеркивания. Переменные, начинающиеся с буквы верхнего регистра, выводятся (вычисляются) для декодирования текущей синтаксической структуры и всех зависящих синтаксических структур. Переменные, начинающиеся с буквы верхнего регистра, могут использоваться в процессе декодирования для более поздних синтаксических структур без упоминания первоначальной синтаксической структуры переменной. Переменные, начинающиеся с буквы нижнего регистра, используются только в контексте, в котором они выводятся. В ряде случаев, "мнемонические" имена для значений синтаксического элемента или значения переменных используются взаимозаменяемо с их численными значениями. Иногда "мнемонические" имена используются без каких-либо связанных численных значений. Связь значений и имен указывается в тексте. Имена строятся из одной или более групп букв, разделенных символом подчеркивания. Каждая группа начинается с буквы верхнего регистра и может содержать больше букв верхнего регистра.
[57] При описании иллюстративных вариантов осуществления, термин "файл" иногда используется как синоним синтаксической структуры или экземпляр синтаксический структуры. Например, выражение "файл набора параметров" может использоваться в смысле синтаксической структуры набора параметров или экземпляра набора параметров (с конкретными значениями его синтаксических элементов). В других контекстах, термин "файл" может использоваться в смысле компьютерного файла, т.е. ресурса, образующего самостоятельную единицу в хранилище.
[58] При описании HEVC и иллюстративных вариантов осуществления, синтаксическая структура может указываться с использованием следующего. Группа утверждений, заключенных в круглые скобки, является составным утверждением и обрабатывается функционально как единое утверждение. Структура "while" указывает проверку выполнения условия, и если выполняется, указывает повторное оценивание утверждения (или составного утверждения) пока условие не перестанет выполняться. Структура "do … while" указывает оценивание утверждения один раз, с последующей проверкой, выполняется ли условие, и если выполняется, указывает повторяющееся оценивание утверждения, пока условие не перестанет выполняться. Структура "if … else" указывает проверку выполнения условия, и если условие выполняется, указывает оценивание первичного утверждения, в противном случае, указывает оценивание альтернативного утверждения. Часть "else" структуры и связанное альтернативное утверждение исключаются, если оценивание альтернативного утверждения не требуется. Структура "for" указывает оценивание первоначального утверждения, сопровождаемое проверкой условия, и если условие выполняется, указывает повторяющееся оценивание первичного утверждения, сопровождаемое последующим утверждением, пока условие не перестанет выполняться.
[59] Видеокодек содержит кодер, который преобразует входной видеосигнал в сжатое представление, пригодное для хранения/передачи, и декодер, который может преобразовывать сжатое представления видеосигнала обратно в доступную для просмотра форму. Видеокодер и/или видеодекодер также могут быть отделены друг от друга, т.е. не образовывать кодек. Обычно кодер отбрасывает некоторую информацию в исходной видеопоследовательности для представления видео в более компактной форме (то есть на более низкой битовой скорости).
[60] Многие гибридные видеокодеры кодируют видеоинформацию в два этапа. Во-первых, пиксельные значения в некоторой области изображения (или "блоке") предсказываются, например, средством компенсации движения (находящим и указывающим область в одном из ранее кодированных кадров видео, которое близко соответствует кодируемому блоку) или пространственным средством (с использованием пиксельных значений вокруг блока, подлежащего кодированию указанным образом). Во-вторых, ошибка предсказания, т.е. различие между предсказанным блоком пикселей и исходным блоком пикселей, кодируется. Это обычно делается путем преобразования различия в пиксельных значениях с использованием указанного преобразования (например, дискретного косинусного преобразования (DCT) или его разновидности), квантования коэффициентов и энтропийного кодирования квантованных коэффициентов. Изменяя точность процесса квантования, кодер может управлять балансом между точностью пиксельного представления (качеством изображения) и размером результирующего кодированного представления видеосигнала (размером файла или битовой скоростью передачи).
[61] Во временном предсказании, источниками предсказания являются ранее декодированные изображения (также именуемые опорными изображениями). При внутриблочном копировании (Intra Block Copy, IBC) также именуемом предсказанием с внутриблочным копированием, предсказание применяется аналогично временному предсказанию, но опорное изображение является текущим изображением, и в процессе предсказания можно рассматривать только ранее декодированные выборки. Межуровневое или межвидовое предсказание может применяться аналогично временному предсказанию, но опорным изображением является декодированное изображение из другого масштабируемого уровня или из другого вида, соответственно. В ряде случаев внешнее предсказание может означать только временное предсказание, хотя в других случаях внешнее предсказание может означать совместно временное предсказание и любое из внутриблочного копирования, межуровневого предсказания и межвидового предсказания при условии, что они осуществляются с тем же процессом, что и временное предсказание, или аналогичным. Внешнее предсказание или временное предсказание иногда может именоваться компенсацией движения или предсказанием с компенсацией движения.
[62] Внешнее предсказание, которое также может именоваться временным предсказанием, компенсацией движения или предсказанием с компенсацией движения, снижает временную избыточность. Во внешнем предсказании источниками предсказания являются ранее декодированные изображения. Внутреннее предсказание использует тот факт, что соседние пиксели в одном и том же изображении вероятно коррелируют. Внутреннее предсказание может осуществляться в пространственной или преобразовательной области, т.е. можно предсказывать либо значения выборки, либо коэффициентами преобразования. В случае применения в пространственной области, значения выборки соседних блоков используются при предсказании значений выборки текущего блока. Внутреннее предсказание обычно используется во внутреннем кодировании, где внешнее предсказание не применяется.
[63] В результате процедуры кодирования получается набор параметров кодирования, например, векторов движения и квантованных коэффициентов преобразования. Многие параметры можно энтропийно кодировать более эффективно, если они предсказываются в первую очередь из параметров, соседствующих в пространстве или времени. Например, вектор движения можно предсказывать из пространственно соседствующих векторов движения и можно кодировать только отличие от предсказателя вектора движения.
[64] Вектор движения можно рассматривать как двухмерный евклидов вектор, используемый для внешнего предсказания для указания позиции предсказательного блока в опорном изображении относительно позиции блока, который предсказывается, например, единицы предсказания, которая в данный момент кодируется или декодируется. Вектор движения может указывать на положение дробной выборки, и в этом случае значения выборки предсказательного блока могут интерполироваться из значений выборки опорного изображения.
[65] Предсказание в изображении можно задавать совместно содержащим, но не обязательно ограниченным одним или более из следующего: пространственного предсказания параметров кодирования (например, пространственного предсказания вектора движения), внутреннего предсказания, предсказания с внутриблочным копированием, внутрицикловой фильтрации между блоками, и обновление состояния контекста между блоками в контекстно-адаптивном энтропийном кодировании. Определение предсказания в изображении можно регулировать в зависимости от контекста, относящегося к термину.
[66] Декодер реконструирует выходной видеосигнал путем применения средства предсказания, аналогичного кодеру, для формирования предсказанного представления пиксельных блоков (с использованием информации движения или пространственной информации, созданной кодером и сохраненной в сжатом представлении) и декодирования ошибки предсказания (операции, обратной кодированию ошибки предсказания, восстанавливающей сигнал квантованной ошибки предсказания в пространственной пиксельной области). После применения средства предсказания и декодирования ошибки предсказания декодер суммирует сигналы предсказания и ошибки предсказания (пиксельные значения) для формирования кадра выходного видеосигнала. Декодер (и кодер) также может применять дополнительное средство фильтрации для повышения качества выходного видеосигнала до передачи его для отображения и/или сохранения в качестве опоры предсказания для предстоящих кадров в видеопоследовательности. Фильтрация может, например, включать в себя одно или более из следующего: деблокирование, смещение, адаптивное к выборке (Sample Adaptive Offset, SAO) и/или фильтрация адаптивного цикла (Adaptive Loop Filtering, ALF).
[67] В типичных видеокодеках информация движения указывается векторами движения, связанными с каждым блоком изображения с компенсацией движения, например, с единицей предсказания. Каждый из этих векторов движения представляет перемещение блока изображения в изображении, подлежащем кодированию (на стороне кодера) или декодированию (на стороне декодера) и блока источника предсказания в одном из ранее кодированных или декодированных изображений. Для эффективного представления векторов движения они обычно кодируются по-разному в отношении предсказанных векторов движения в зависимости от блока. В типичных видеокодеках предсказанные векторы движения создаются заранее определенным образом, например, путем вычисления медианы кодированных или декодированных векторов движения соседних блоков. Другой путь для создания предсказаний вектора движения состоит в формировании списка предсказаний-кандидатов из соседних блоков и/или совмещенных блоков во временных опорных изображениях и сигнализации выбранных кандидатов в качестве предсказателя вектора движения. Помимо предсказания значений вектора движения, можно предсказывать, какое(-ие) опорное(-ые) изображение(-я) используется(-ются) для предсказания с компенсацией движения, и эта информация предсказания может представляться, например, опорным индексом ранее кодированного/декодированного изображения. Опорный индекс обычно предсказывается из соседних блоков и/или совмещенных блоков во временном опорном изображения. Кроме того, типичные высокопроизводительные видеокодеки используют дополнительный механизм кодирования/декодирования информации движения, часто именуемый режимом слияния, где вся информация поля движения, которая включает в себя вектор движения и соответствующий индекс опорного изображения для каждого доступного списка опорных изображений, предсказывается и используется без какой-либо модификации/коррекции. Аналогично, предсказание информации поля движения осуществляется с использованием информации поля движения соседних блоков и/или совмещенных блоков во временных опорных изображениях, и используемая информация поля движения сигнализируется среди списка кандидатных полей движения, наполненного информацией поля движения доступных соседних / совмещенных блоков.
[68] В типичных видеокодеках остаток предсказания после того, как компенсация движения сначала преобразуется ядром преобразования (наподобие DCT) и затем кодируется. Причина этому в том, что часто остается некоторая корреляция с остатком, и преобразование может во многих случаях помогать снижать эту корреляцию и обеспечивать более эффективное кодирование.
[69] Параметры кодирования, например, векторы движения и квантованные коэффициенты преобразования, кодируются без потерь в битовый поток. Это кодирование без потерь может именоваться энтропийным кодированием. Операция, обратная декодированию битового потока в параметры кодирования, может именоваться энтропийным декодированием. Энтропийное кодирование/декодирование может осуществляться по-разному. Например, может применяться контекстное кодирование/декодирование, когда и кодер, и декодер изменяют контекстное состояние параметра кодирования на основании ранее кодированных/декодированных параметров кодирования. Контекстное кодирование может быть, например, контекстно-адаптивным двоичным арифметическим кодированием (Context Adaptive Binary Arithmetic Coding, CABAC) или контекстным кодированием с переменной длиной (Context-Based Variable Length Coding, CAVLC) или любое аналогичное энтропийное кодирование. Энтропийное кодирование/декодирование может альтернативно или дополнительно может осуществляться с использованием схемы кодирования с переменной длиной, например, кодирования/декодирования по Хаффману или экспоненциального кодирования/декодирования Голомба. Декодирование параметров кодирования из энтропийно кодированного битового потока или кодовых слов может именоваться парсингом.
[70] Разбиение может задаваться как разделение набора на поднаборы таким образом, что каждый элемент набора находится строго в одном из поднаборов.
[71] В HEVC, видеоизображения делятся на единицы кодирования (CU), покрывающие область изображения. Единица CU состоит из одной или более единиц предсказания (PU), задающих процесс предсказания для выборок в CU, и одной или более единиц преобразования (TU), задающих процесс кодирования ошибки предсказания для выборок в CU. CU состоит из квадратного блока выборок, размер которого выбирается из заранее заданного набора возможных размеров CU. CU максимально допустимого размера может именоваться LCU (наибольшей единицей кодирования) или единицей дерева кодирования (CTU), и видеоизображение делится на неперекрывающиеся LCU. LCU может дополнительно разбиваться на несколько меньших CU, например, путем рекурсивного разбиения LCU и результирующих CU. Каждая результирующая CU может иметь по меньшей мере одну PU и по меньшей мере одну TU, связанную с CU. Каждая PU и TU может дополнительно разбиваться на меньшие PU и TU для улучшения гранулярности процессов предсказания и кодирования ошибки предсказания, соответственно. Каждая PU имеет информацию предсказания, связанную с PU, задающую, какая разновидность предсказания подлежит применению для пикселей в этой PU (например, информацию вектора движения для внешне предсказанных PU и информация направленности внутреннего предсказания для внутренне предсказанных PU).
[72] Блок кодирования можно определить как блок выборок NxN для некоторого значения N таким образом, что разделение блока дерева кодирования на блоки кодирования является разбиением. Блок дерева кодирования (Coding Tree Block, (СТВ) можно определить как блок выборок NxN для некоторого значения N таким образом, что разделение компонента на блоки дерева кодирования является разбиением. Единицу дерева кодирования (CTU) можно определить как блок дерева кодирования выборок яркости, два соответствующих блока дерева кодирования выборок цветности изображения, которое имеет три массива выборок, или блок дерева кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Единицу кодирования (CU) можно определить как блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок.
[73] Каждая TU может быть связана с информацией, описывающей процесс декодирования ошибки предсказания для выборок в упомянутой TU (включающей в себя, например, информацию коэффициентов дискретного косинусного преобразования). На уровне CU сигнализируется, применяется ли кодирование ошибки предсказания для каждого CU. В случае, когда не существует остатка ошибки предсказания, связанного с CU, предполагается, что не существует TU для CU. Разделение изображения на CU и разделение CU на PU и TU могут сигнализироваться в битовом потоке, чтобы декодер мог воспроизводить заданную структуру этих единиц.
[74] В стандарте HEVC, изображение может разбиваться на тайлы, которые являются прямоугольными и содержат целое число CTU. В стандарте HEVC, разбиение на тайлы формирует сетку, которая может характеризоваться списком ширин столбцов тайлов (в единицах CTU) и списком высот строк тайлов (в единицах CTU). Тайлы упорядочены в битовом потоке последовательно в порядке растрового сканирования сетки тайлов. Тайл может содержать целое число слайсов. Некоторые типы предсказания в изображении, например, внутреннее предсказание, предсказание с внутриблочным копированием и предсказание контекстного состояния для энтропийного кодирования, запрещены между тайлами. Кодеры могут управлять и указывать в битовом потоке, применяется ли внутрицикловая фильтрация, например, фильтрация с деблокированием, между тайлами.
[75] Стандарты и спецификации кодирования видеосигнала дают возможность кодерам делить кодированное изображение на кодированные слайсы и т.п. Предсказание внутри изображения с пересечением границ слайсов обычно запрещено. Таким образом, слайсы можно рассматривать как способ разделения кодированного изображения на независимо декодируемые фрагменты. В HEVC, предсказание внутри изображения с пересечением границ слайсов может быть запрещено. Таким образом, слайсы можно рассматривать как способ разделения кодированного изображения на независимо декодируемые фрагменты, и поэтому слайсы часто рассматриваются как элементарные единицы для передачи. Во многих случаях, кодеры могут указывать в битовом потоке, для каких типов предсказания внутри изображения отключено пересечение границ слайсов, и декодер в своей работе учитывает эту информацию, например, при определении доступных источников предсказания. Например, выборки из соседних CU можно рассматривать как недоступные для внутреннего предсказания, если соседний CU находится в другом слайсе.
[76] В HEVC, слайс состоит из целого числа CTU. CTU сканируются в порядке растрового сканирования CTU в тайлах или в изображении если тайлы не используются. Слайс может содержать целое число тайлов, или слайс может содержаться в тайле. В CTU единицы CU имеют конкретный порядок сканирования.
[77] В HEVC слайс задается как целое число единиц дерева кодирования, содержащихся в одном независимом сегменте слайса и всех последующих зависимых сегментов слайса (при наличии), которые предшествуют следующему независимому сегменту слайса (при наличии) в одной и той же единице доступа. В HEVC сегмент слайса задается как целое число единиц дерева кодирования, последовательно упорядоченных при сканировании тайла и содержащихся в одной единице NAL. Разделение каждого изображения на сегменты слайса является разбиением. В HEVC независимый сегмент слайса задается как сегмент слайса, для которого значения синтаксических элементов заголовка сегмента слайса не следуют из значений для предыдущего сегмента слайса, а зависимый сегмент слайса задается как сегмент слайса, для которого значения некоторых синтаксических элементов заголовка сегмента слайса следуют из значений для предыдущего независимого сегмента слайса в порядке декодирования. В HEVC заголовок слайса задается как заголовок сегмента слайса независимого сегмента слайса, который является текущим сегментом слайса или является независимым сегментом слайса, который предшествует текущему зависимому сегменту слайса, а заголовок сегмента слайса задается как часть кодированного сегмента слайса, содержащего элементы данных, относящиеся к первому или всем единицам дерева кодирования, представленным в сегменте слайса. CU сканируются в порядке растрового сканирования LCU в тайлах или в изображении если тайлы не используются. В LCU, единицы CU имеют конкретный порядок сканирования.
[78] Набор тайлов с ограничением движения (Motion-Constrained Tile Set, MCTS) таков, что процесс внешнего предсказания ограничивается при кодировании таким образом, что для внешнего предсказания любой выборки в наборе тайлов с ограничением движения не используется ни одного значения выборки вне набора тайлов с ограничением движения и ни одного значения выборки в позиции дробной выборки, вычисляемого с использованием одного или более значений выборки вне набора тайлов с ограничением движения. Дополнительно, кодирование MCTS ограничивается таким образом, что при декодировании MCTS не используются ни синтаксические элементы, ни переменные вне MCTS. Например, кодирование MCTS ограничивается таким образом, что кандидатные векторы движения не выводятся из блоков вне MCTS. Это может обеспечиваться отключением временного предсказания вектора движения (Temporal Motion Vector Prediction, TMVP) HEVC или запрещением кодеру использовать TMVP-кандидат или любое кандидатное предсказание вектора движения, следующее за TMVP-кандидатом в объединенном списке кандидатов на улучшенное предсказание вектора движения (Advanced Motion Vector Prediction, AMVP) для PU расположенных непосредственно слева от правой границы тайла MCTS за исключением последнего тайла в нижнем правом углу набора MCTS. В общем случае MCTS может определяться как набор тайлов, который не зависит ни от каких значений выборок и кодированных данных, например, векторов движения, которые не входят в MCTS. В ряде случаев может предъявляться требование, чтобы MCTS формировал прямоугольную область. Следует понимать, что в зависимости от контекста, MCTS может означать набор тайлов в изображении или соответствующий набор тайлов в последовательности изображений. Соответствующий набор тайлов может быть совмещен в последовательности изображений, но в общем случае это не обязательно.
[79] Следует отметить, что положениям выборок, используемых во внешнем предсказании, процессом кодирования и/или декодирования могут присваиваться значения насыщения таким образом, что положению, которое в противном случае окажется вне изображения, присваивается значение насыщения, указывающее на соответствующую граничную выборку изображения. Поэтому, если граница тайла также является границей изображения, в некоторых вариантах применения, кодеры позволяют векторам движения фактически пересекать эту границу или позволяют вектору движения фактически обеспечивать интерполяцию дробных выборок, которая будет относиться к положению вне этой границы, поскольку положения выборок насыщаются до границы. В других вариантах применения, в частности, если кодированный тайл может извлекаться из битового потока, где он располагается в позиции рядом с границей изображения, в другой битовый поток, где тайл располагается в позиции не рядом с границей изображения, кодеры могут ограничивать векторы движения на границах изображения аналогично любым границам MCTS.
[80] Сообщение об информации дополнительного улучшения (Supplemental Enhancement Information, SEI) наборов тайлов с временным ограничением движения для HEVC может использоваться для указания присутствия наборов тайлов с ограничением движения в битовом потоке.
[81] Следует понимать, что несмотря на то, что некоторые примеры и варианты осуществления описаны в отношении MCTS, они могут быть аналогично реализованы с другими аналогичными принципами независимо декодируемых пространственно-временных единиц. Кроме того, ограничения движения для таких пространственно-временных единиц могут быть указаны аналогично тому, как описано выше для MCTS. Пример таких пространственно-временных единиц включает в себя, но без ограничения слайсы с ограничением движения и изображения с ограничением движения. Слайс с ограничением движения таков, что процесс внешнего предсказания ограничивается в кодировании таким образом, что для внешнего предсказания любой выборки в слайсе с ограничением движения не используется никаких синтаксических или выведенных переменных вне слайса с ограничением движения, ни одного значения выборки вне слайса с ограничением движения, и ни одного значения выборки в позиции дробной выборки, которые выводятся с использованием одного или более значений выборки вне слайса с ограничением движения. Когда выражение пространственно-временная единица используется в контексте единого момента времени, его можно рассматривать как пространственную единицу, соответствующую некоторому поднабору кодированного изображения и, при декодировании, некоторому поднабору области декодированного изображения.
[82] Элементарная единица для выходного сигнала кодера HEVC и входного сигнала декодера HEVC является единицей уровня сетевой абстракции (Network Abstraction Layer, NAL). Для переноса по пакетно-ориентированным сетям или сохранения в структурированные файлы, единицы NAL могут инкапсулироваться в пакеты или аналогичные структуры. Формат байтового потока был указан в HEVC для условий передачи или хранения, которые не обеспечивают кадровые структуры. Формат байтового потока отделяет единицы NAL друг от друга путем присоединения начального кода перед каждой единицей NAL. Во избежание ложного обнаружения границ единицы NAL, кодеры выполняют байтово-ориентированный алгоритм предотвращения эмуляции начального кода, который добавляет байт предотвращения эмуляции к полезной нагрузке единицы NAL, если бы в противном случае возник начальный код. Для обеспечения прямой шлюзовой операции между пакетно- и потоко-ориентированной системами, предотвращение эмуляции начального кода может всегда осуществляться независимо от того, используется ли формат байтового потока. Единицу NAL можно определить как синтаксическую структуру, содержащую указание типа данных для следования и байты, содержащие эти данные в форме полезной нагрузки необработанной байтовой последовательности (Raw Byte Sequence Payload, RBSP), перемеженной по мере необходимости с байтами предотвращение эмуляции. RBSP можно определить как синтаксическую структуру, содержащую целое число байтов, которая инкапсулирована в единице NAL. RBSP либо пуста, либо имеет форму строки битов данных, содержащей синтаксические элементы, сопровождаемые стоповым битом RBSP и сопровождаемые нулем или более последующими битами, равными 0.
[83] Единицы NAL состоят из заголовка и полезной нагрузки. В HEVC двухбайтовый заголовок единицы NAL используется для всех указанных типов единицы NAL. Заголовок единицы NAL содержит один зарезервированный бит, шестибитовое указание типа единицы NAL, трехбитовое указание nuh_temporal_id_plus1 для временного уровня (при необходимости большее или равное 1) и шестибитовый синтаксический элемент nuh_layer_id. Синтаксический элемент temporal_id_plus1 можно рассматривать как временной идентификатор для единицы NAL, и переменная TemporalId на основе нулей может вычисляться следующим образом: TemporalId=temporal_id_plus1 - 1. Аббревиатура TID может использоваться взаимозаменяемо с переменной TemporalId. TemporalId, равный 0, соответствует самому низкому временному уровню. Значение temporal_id_plus1 должно быть ненулевым, чтобы не использовать два байты заголовок единицы NAL для эмуляции начального кода. Битовый поток, созданный исключением всех единиц NAL VCL, для которых TemporalId больше или равен выбранному значению, и включением всех остальных единиц NAL VCL, остается согласующимся. Поэтому изображение, имеющее TemporalId, равный tid_value, не использует в качестве опоры внешнего предсказания ни одного изображения, имеющего TemporalId, превышающий tid_value. Подуровень или временной подуровень может определяться как временной масштабируемый уровень (или временной уровень, TL) битового потока с временным масштабированием, состоящего из единиц NAL VCL с конкретным значением переменной TemporalId и связанных единиц non-VCL NAL, nuh_layer_id можно рассматривать как идентификатор уровня масштабируемости.
[84] Единицы NAL можно подразделить на единицы NAL уровня кодирования видеосигнала (VCL) и единицы NAL, не принадлежащие уровню VCL (non-VCL). Единицы NAL VCL обычно являются кодированным единиц NAL слайса. В HEVC, единицы NAL VCL содержат синтаксические элементы, представляющие один или более CU. В HEVC, тип единицы NAL в некотором диапазоне указывает единицу NAL VCL, и тип единицы NAL VCL указывает тип изображения.
[85] Единица non-VCL NAL может относиться, например, к одному из следующих типов: набор параметров последовательности, набор параметров изображения, единица NAL информации дополнительного улучшения (SEI), разделитель единиц доступа, единица NAL конца последовательности, единица NAL конца битового потока или единица NAL данных заполнителя. Наборы параметров могут потребоваться для реконструкции декодированных изображений, тогда как многие другие единицы non-VCL NAL не требуются для реконструкции декодированных значений выборки.
[86] Параметры, которые остаются неизменными на протяжении кодированной видеопоследовательности, могут быть включены в набор параметров последовательности. Помимо параметров, которые могут потребоваться процессу декодирования, набор параметров последовательности может опционально содержать информацию пригодности видео (Video Usability Information, VUI), которая включает в себя параметры, которые могут быть важны для буферизации, расписания вывода изображения, визуализации и резервирования ресурса. В HEVC RBSP набора параметров последовательности включает в себя параметры, на которые могут ссылаться одна или более RBSP набора параметров изображения или одна или более единиц SEI NAL, содержащих сообщение SEI периода буферизация. Набор параметров изображения содержит такие параметры, которые, вероятно, остаются неизменными в нескольких кодированных изображениях. RBSP набор параметров изображения может включать в себя параметры, на которые могут ссылаться кодированные единицы NAL слайса одного или более кодированных изображений.
[87] В HEVC, набор параметров видео (Video Parameter Set, VPS) можно определить как синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулю или более полных кодированных видеопоследовательностей, что определяется содержанием синтаксического элемента, найденного в наборе параметров последовательности (Sequence Parameter Set, SPS), на который ссылается синтаксический элемент, найденный в наборе параметров изображения (Picture Parameter Set, PPS), на который ссылается синтаксический элемент, найденный в каждом заголовке сегмента слайса.
[88] RBSP набора параметров видео может включать в себя параметры, на которые могут ссылаться одна или более RBSP набора параметров последовательности.
[89] Соотношение и иерархию в наборе параметров видео (VPS), SPS и PPS можно описать следующим образом. VPS находится на один уровень выше SPS в наборе параметров иерархия и в контексте масштабируемости и/или 3D видео. VPS может включать в себя параметры, которые являются общими для всех слайсов на всех уровнях (масштабируемости или вида) во всей кодированной видеопоследовательности. SPS включает в себя параметры, которые являются общими для всех слайсов на конкретном уровне (масштабируемости или вида) во всей кодированной видеопоследовательности, и может совместно использоваться несколькими уровнями (масштабируемости или вида). PPS включает в себя параметры, которые являются общими для всех слайсов в представлении конкретного уровня (представлении одного уровня масштабируемости или вида в одной единице доступа) и, вероятно, подлежат совместном используемому всеми слайсами в нескольких представлениях уровня.
[90] VPS может обеспечивать информацию об отношении зависимости уровней в битовом потоке, а также различную другую информацию, которая применима ко всем слайсам на всех уровнях (масштабируемости или вида) во всей кодированной видеопоследовательности. Можно считать, что VPS содержат две части, базовый VPS и расширение VPS, где расширение VPS может присутствовать опционально.
[91] Внеполосные передача, сигнализация или сохранение могут дополнительно или альтернативно использоваться в других целях, чем толерантность к ошибкам передачи, например, простоты согласования доступа или сеанса. Например, элемент выборки дорожки в файле, согласующимся с базовым форматом медиа-файла ISO, может содержать наборы параметров, тогда как кодированные данные в битовом потоке сохраняются в другом месте файла или в другом файле. Выражение на протяжении битового потока (например, указывающее вдоль битового потока) или вдоль кодированной единицы битового потока (например, указывающий вдоль кодированного тайла) может использоваться в формуле изобретения и описанных вариантах осуществления в отношении внеполосных передачи, сигнализации или сохранения таким образом, что внеполосные данные связаны с битовым потоком или кодированной единицей, соответственно. Выражение декодирование на протяжении битового потока или вдоль кодированной единицы битового потока и т.п. может означать декодирование вышеупомянутых внеполосных данных (которые могут быть получены из внеполосных передачи, сигнализации или сохранения), которые связаны с битовым потоком или кодированной единицей, соответственно.
[92] Единица SEI NAL может содержать одно или более сообщений SEI, которые не требуются для декодирования выходных изображений, но могут помогать в соответствующих процессах, например, расписание вывода изображения, визуализация, обнаружение ошибки, маскирование ошибки, и резервирование ресурса. В HEVC указано несколько сообщений SEI, и сообщения SEI пользовательских данных позволяют организациям и компаниям указывать сообщения SEI для их собственного использования. HEVC содержит синтаксис и семантику для указанных сообщений SEI, но не задается процесс для обработки сообщений на получателе. Следовательно, кодеры должны следовать стандарту HEVC при создании сообщений SEI, и декодеры, согласующиеся со стандартом HEVC, не требуются для обработки сообщений SEI в соответствии с порядком вывода. Одна из причин включения синтаксиса и семантики сообщений SEI в HEVC в том, чтобы разные спецификации системы могли интерпретировать дополнительную информацию одинаково и, таким образом, взаимодействовать. Предполагается, что система спецификации может требовать использования конкретных сообщений SEI как на стороне кодирования, так и на стороне декодирования, и дополнительно может указываться процесс для обработки конкретные сообщения SEI на получателе.
[93] В HEVC существует два типа единиц NAL SEI, а именно суффиксная единица NAL SEI и префиксная единица NAL SEI, отличающиеся друг от друга значением типа единицы NAL. Сообщения SEI, содержащиеся в суффиксной единице NAL SEI, связаны с единицей NAL VCL, предшествующей в порядке декодирования суффиксной единице NAL SEI. Сообщения SEI, содержащиеся в префиксной единице NAL SEI, связаны с единицей NAL VCL предшествующей в порядке декодирования префиксной единице NAL SEI.
[94] Кодированное изображение является кодированным представлением изображения. Битовый поток можно определить как последовательность битов, в форме потока единиц NAL или потока байтов, который образует представление кодированных изображений, и связанные данные, образующие одну или более кодированных видеопоследовательностей. Первый битовый поток может сопровождаться вторым битовым потоком на одном и том же логическом канале, например, в одном и том же файле или на одном и том же соединении протокола связи. Элементарный поток (в контексте кодирования видеосигнала) можно определить как последовательность из одного или более битовых потоков. Конец первого битового потока может указываться конкретной единицей NAL, которая может именоваться единицей NAL конца битового потока (End of Bitstream, ЕОВ) и которая является последней единицей NAL битового потока.
[95] Кодированную видеопоследовательность можно определить как такую последовательность кодированных изображений в порядке декодирования, которая может независимо декодироваться и сопровождается другой кодированной видеопоследовательностью или концом битового потока или единицей NAL конца последовательности.
[96] Во многих режимах кодирования HEVC или других кодеков, опорное изображение для внешнего предсказания указывается индексом списка опорных изображений. Индекс может кодироваться путем кодирования переменной длины, в соответствии с которым обычно меньший индекс имеет более короткое значение для соответствующего синтаксического элемента. В HEVC два списка опорных изображений (список 0 опорных изображений и список 1 опорных изображений) генерируются для каждого (В) слайса двойного предсказания, и один список опорных изображений (список 0 опорных изображений) формируется для каждого внешне кодированного (Р) слайса.
[97] Список опорных изображений, например, список 0 опорных изображений и список 1 опорных изображений, может строиться в два этапа: во-первых, генерируется первоначальный список опорных изображений. Первоначальный список опорных изображений может генерироваться, например, на основе номера кадра, РОС, временного id, или информации об иерархии предсказаний, например, структуры GOP, или любой их комбинации. Во-вторых, первоначальный список опорных изображений может переупорядочиваться синтаксисом переупорядочения списка опорных изображений (Reference Picture List Reordering, RPLR), также известным как синтаксическая структура модификации списка опорных изображений, который может содержаться в заголовках слайсов. Первоначальные списки опорных изображений можно модифицировать посредством синтаксической структуры модификации списка опорных изображений, где изображения в первоначальных списках опорных изображений можно идентифицировать посредством индекса элемента в списке.
[98] Многие стандарты кодирования, включающие в себя HEVC, могут иметь процесс декодирования для вывода индекса опорного изображения в список опорных изображений, который может использоваться для указания, какое из нескольких опорных изображения используется для внешнего предсказания для конкретного блока. Индекс опорного изображения может кодироваться кодером в битовый поток в некоторых режимах внешнего кодирования или может вычисляться (кодером и декодером), например, с использованием соседних блоков в некоторых других режимах внешнего кодирования.
[99] Для одной единицы предсказания может вычисляться несколько кандидатных векторов движения. Например, предсказание вектора движения HEVC включает в себя две схемы предсказания вектора движения, а именно, AMVP и режим слияния. В AMVP или режиме слияния, список кандидатных векторов движения вычисляются для PU. Существует два вида кандидатов: пространственные кандидаты и временные кандидаты, где временные кандидаты также могут именоваться TMVP-кандидатами.
[100] Вывод списка кандидатов может осуществляться, например, следующим образом, хотя следует понимать, что для вывода списка кандидатов могут существовать и другие возможности. Если заполненность списка кандидатов не достигла максимума, пространственные кандидаты включаются в список кандидатов первыми, если они доступны и пока отсутствуют в списке кандидатов. После этого, если заполненность списка кандидатов все еще не достигла максимума, в список кандидатов включается временной кандидат. Если количество кандидатов все еще не достигло максимально допустимой величины, добавляются объединенные кандидаты двойного предсказания (для В-слайсов) и нулевой вектор движения. После построения списка кандидатов, кодер определяет из кандидатов окончательную информацию движения, например, на основании решения по оптимизации скорости-искажения (Rate-Distortion Optimization RDO) и кодирует индекс выбранного кандидата в битовый поток. Аналогично, декодер декодирует индекс выбранного кандидата из битового потока, строит список кандидатов и использует декодированный индекс для выбора предсказателя вектора движения из списка кандидатов.
[101] В HEVC, AMVP и режим слияния могут характеризоваться следующим образом. В AMVP, кодер указывает, используется ли одинарное предсказание или двойное предсказание, и какие используются опорные изображения, а также кодирует разность векторов движения. В режиме слияния, в битовый поток кодируется только выбранный кандидат из списка кандидатов, указывая, что текущая единица предсказания имеет такую же информацию движения, как и указанный предсказатель. Таким образом, режим слияния создает зоны, состоящие из соседствующих предсказательных блоков, совместно использующих одинаковую информацию движения, которая сигнализируется только один раз для каждой зоны.
[102] Далее приведен пример операции улучшенного предсказания вектора движения, хотя возможны и другие аналогичные реализации улучшенного предсказания вектора движения, например, с другими наборами позиций кандидатов и положениями кандидатов с наборами позиций кандидатов. Также следует понимать, что другой режим предсказания, например, режим слияния, может работать аналогично. Могут вычисляться два пространственных предсказателя вектора движения (MVP), и может вычисляться временной предсказатель вектора движения. Они могут выбираться из позиций: трех пространственных позиций кандидата в предсказатели вектора движения, расположенных над текущим предсказательным блоком (В0, B1, В2) и двух слева (А0, A1). Первый доступный предсказатель вектора движения (например, находящийся в том же слайсе, подвергающийся внешнему кодированию, и т.д.) в заранее заданном порядке каждого набора позиций кандидатов, (В0, В1, В2) или (А0, A1), может выбираться для представления этого направления предсказания (вверх или влево) в состязании векторов движения. Опорный индекс для временного предсказателя вектора движения может указываться кодером в заголовке слайса (например, как синтаксический элемент collocated_ref_idx). Первый доступный предсказатель вектора движения (например, подвергающийся внешнему кодированию) в заранее заданном порядке возможных положений временного кандидата, например, в порядке (С0, С1), может выбираться как источник для временного предсказателя вектора движения. Вектор движения, полученный из первого доступного положения кандидата в совмещенном изображении может масштабироваться согласно пропорциям разностей счетчика порядка изображений опорного изображения временного предсказателя вектора движения, совмещенного изображения и текущего изображения. Кроме того, среди кандидатов может осуществляться контроль избыточности для удаления одинаковых кандидатов, которые могут приводить к включению нулевого вектора движения в список кандидатов. Предсказатель вектора движения может указываться в битовом потоке например путем указания направления пространственного предсказателя вектора движения (вверх или влево) или выбора кандидатного временного предсказателя вектора движения. Совмещенное изображение также может именоваться совмещенным изображением, источником для предсказания вектора движения или исходным изображением для предсказания вектора движения.
[103] Типы параметров движения или информация движения может включать в себя, но без ограничения один или более из:
- указания типа предсказания (например, внутреннее предсказание, одинарное предсказание, двойное предсказание) и/или количества опорных изображений;
- указания направления предсказания, например, внешнего (также именуемого временного) предсказания, межуровневого предсказания, межвидового предсказания, предсказания синтеза видов (View Synthesis Prediction, VSP) и межкомпонентного предсказания (которое может указываться для каждого опорного изображения и/или для каждого типа предсказания и где в некоторых вариантах осуществления межвидовое предсказание и предсказание синтеза видов может совместно рассматриваться как одно направление предсказания) и/или
- указания типа опорного изображения, например, кратковременного опорного изображения и/или долговременного опорного изображения и/или межуровневого опорного изображения (который может указываться, например, для каждого опорного изображения);
- опорного индекса списка опорных изображений и/или любого другого идентификатора опорного изображения (который может указываться, например, для каждого опорного изображения и тип которого может зависеть от направления предсказания и/или типа опорного изображения, и который может сопровождаться другими важными фрагментами информации, например, списком опорных изображений и т.п., к которому применяется опорный индекс);
- горизонтальной компоненты вектора движения (которая может указываться, например, для каждого предсказательного блока или для каждого опорного индекса и т.п.);
- вертикальной компоненты вектора движения (которая может указываться, например, для каждого предсказательного блока или для каждого опорного индекса и т.п.);
- одного или более параметров, например, разности счетчиков порядка изображений и/или относительного разделения камер между изображением, содержащим или связанным с параметрами движения, и его опорным изображением, которое может использоваться для масштабирования горизонтальной компоненты вектора движения и/или вертикальной компоненты вектора движения в одном или более процессах предсказания вектора движения (где упомянутые один или более параметров могут указываться, например, для каждого опорного изображения или каждого опорного индекса и т.п.);
- координат блока, к которому применяется параметры движения и/или информация движения, например, координат верхней левой выборки блока в единицах выборки яркости;
- размеров (например, ширины и высоты) блока, к которому применяется параметры движения и/или информация движения.
[104] В общем случае, механизмы предсказания вектора движения, например, механизмы предсказания вектора движения, представленные выше в качестве примеров, могут включать в себя предсказание или наследование некоторых заранее заданных или указанных параметров движения.
[105] Поле движения, связанное с изображением, может считаться содержащим набор информации движения, создаваемый для каждого кодированного блока изображения. Доступ к полю движения может осуществляться, например, по координатам блока. Поле движения может использоваться, например, в TMVP или любом другом механизме предсказания движения, где используется источник или эталон для предсказания, отличный от текущего (де)кодированного изображения.
[106] Позиция слайса в изображении указывается посредством индексации блока в порядке растрового сканирования в изображении. В HEVC адрес сегмента слайса синтаксический элемент slice_segment_header() указывает адрес первого блока дерева кодирования в сегменте слайса, в блоке дерева кодирования растровое сканирование изображения.
[107] Якорная позиция вектора движения является позицией (например, горизонтальной и вертикальной координат) в области изображения относительно которой применяется вектор движения. Якорную позицию вектора движения можно рассматривать как первоначальную точку для вектора движения. Хотя традиционно считается, что позиция вектора движения идентична позиции блока, который предсказывается, было предложено, что горизонтальное смещение и вертикальное смещение для адаптации якорной позиции вектора движения может кодироваться в битовый поток и/или декодироваться из битового потока. Горизонтальное смещение и вертикальное смещение для якорной позиции может задаваться в заголовке слайса, наборе параметров слайса, заголовке тайла, наборе параметров тайла и т.п.
[108] Иллюстративный способ кодирования на основании якорной позиции вектора движения, содержит: кодирование входного изображения в кодированное составное изображение; реконструкцию, как часть упомянутого кодирования, декодированного составного изображения, соответствующего кодированному составному изображению; кодирование пространственной зоны в кодированный тайл, причем кодирование содержит: определение горизонтального смещения и вертикального смещения, указывающих зональную якорную позицию пространственной зоны в декодированном составном изображении; кодирование горизонтального смещения и вертикального смещения; определение, что единица предсказания в позиции первой горизонтальной координаты и первой вертикальной координаты кодированного тайла предсказывается относительно зональной якорной позиции, где первая горизонтальная координата и первая вертикальная координата являются горизонтальной и вертикальной координатами, соответственно, в пространственной зоне; указание, что единица предсказания предсказывается относительно якорной позиции единицы предсказания, которая связана зональной якорной позицией; вывод якорной позиции единицы предсказания, равной сумме первой горизонтальной координаты и горизонтального смещения, и первой вертикальной координаты и вертикального смещения, соответственно; определение вектора движения для единицы предсказания; и применение вектора движения относительно якорной позиции единицы предсказания для получения предсказательного блока.
[109] Иллюстративный способ декодирования, в котором используется якорная позиция вектора движения, содержит: декодирование кодированного тайла в декодированный тайл, причем декодирование содержит: декодирование горизонтального смещения и вертикального смещения; декодирование указания, что единица предсказания в позиции первой горизонтальной координаты и первой вертикальной координаты кодированного тайла предсказывается относительно якорной позиции единицы предсказания, которая связано горизонтальное и вертикальное смещение; вывод якорной позиции единицы предсказания, равной сумме первой горизонтальной координаты и горизонтального смещения, и первой вертикальной координаты и вертикального смещения, соответственно; определение вектора движения для единицы предсказания; и применение вектора движения относительно якорной позиции единицы предсказания для получения предсказательного блока.
[110] Составное изображение можно определить как такую часть охватывающего (де)кодированного изображения, которое соответствует представлению полного входного изображения. Помимо составного изображения, охватывающее (де)кодированное изображение может содержать другие данные, например, другое составное изображение.
[111] Упаковка кадров может задаваться так, чтобы содержать размещение более одного входное изображение, которое может именоваться (входными) составными кадрами или составными изображениями, в выходном изображении. В общем случае, упаковка кадров не ограничивается никаким конкретным типом составных кадров, или составные кадры не обязаны быть конкретным образом связаны друг с другом. Во многих случаях, упаковка кадров используется для размещения составных кадров стереоскопического видеоклипа в одной последовательности изображений. Размещение может включать в себя размещение входных изображений в не перекрывающихся в пространстве областях в выходном изображении. Например, при размещении бок о бок, два входных изображения располагаются в выходном изображении по горизонтали рядом друг с другом. Размещение также может включать в себя разбиение одного или более входных изображений на два или более разбиений составных кадров и размещение разбиений составных кадров в не перекрывающихся в пространстве областях в выходном изображении. Выходное изображение или последовательность покадрово упакованных выходных изображений может кодироваться в битовый поток, например, видеокодером. Битовый поток может декодироваться, например, видеодекодером. Декодер или операция постобработки после декодирования может извлекать декодированные составные кадры из декодированное(го) изображения(й), например, для отображения.
[112] Последняя тенденция в потоковой передаче кругового видео для снижения битовой скорости потоковой передачи может именоваться потоковой передачей, зависящей от окна обзора или потоковой передачей, адаптируемой к окну обзора, и может быть кратко описана следующим образом: поднабор кругового видеоконтента, покрывающее первичное окно обзора (т.е. ориентация текущего вида) передается при наилучшем качестве/разрешении, хотя оставшееся круговое видео передается при более низком качестве/разрешении. Потоковая передача, адаптируемая к окну обзора, может быть реализована согласно подходам кодирования на основе тайлов и потоковой передачи. В одном подходе кодирования на основе тайлов и потоковой передачи, кодирование осуществляется таким образом, что результирующий битовый поток содержит наборы тайлов с ограничением движения. Несколько битовых потоков одного и того же исходного контента кодируется с использованием наборов тайлов с ограничением движения. Одна или более последовательностей наборов тайлов с ограничением движения (MCTS) извлекаются из битового потока, и каждая извлеченная последовательность наборов тайлов с ограничением движения сохраняется как дорожка (например, дорожка тайлов HEVC или дорожка под-изображений) в файле. Клиент выборочно принимает дорожки таким образом, чтобы можно было принимать дорожки MCTS лучшего качества или более высокого разрешения по сравнению с качеством или разрешением текущего окна обзора, покрывающим оставшиеся, в данный момент невидимые окна обзора. Клиент объединяет содержание принятых дорожек, т.е. объединяет принятые MCTS, в битовый поток, подлежащий декодированию. Поскольку ориентация обзора может изменяться со временем, выбранные дорожки и MCTS также могут изменяться со временем и дополнительно позиция соответствующих MCTS в объединенных изображениях может изменяться от одного объединенного изображения к другому.
[113] Часто бывает желательно переставлять слайсы/тайлы или извлекать поднабор слайсов /тайлов. Одним типичным примером является ситуация, когда можно извлекать набор тайлов из существующего потока для создания другого потока. Например, можно извлекать набор тайлов с ограничением движения из битового потока в свой собственный битовый поток. Другим типичным примером является переключение окна обзора в потоковой передаче, зависящей от окна обзора, кругового видео. Когда слайсы/тайлы можно переставлять в битовых потоках, подлежащих декодированию, не изменяя содержание слайса или тайла, перепозиционирование может осуществляться даже для зашифрованных потоков.
[114] Поскольку позиция слайса в изображении указывается посредством индексации блока в порядке растрового сканирования в изображении, традиционно, для перепозиционирования слайса или извлечения поднабора тайлов или слайсов (отличных от поднаборов по ширине изображения, начиная с верхнего левого угла изображения) требуется перезапись заголовка(ов) слайса(ов). Аналогично, когда используются якорные позиции векторов движения, синтаксические элементы, указывающие положения, например, tile_ref_x и tile_ref_y, необходимо переписывать, при перепозиционировании слайсов/тайлов или извлечении поднабора тайлов или слайсов в свой собственный битовый поток. Перезапись заголовков слайсов с целью перепозиционирования слайса неэффективна, поскольку перезапись заголовка слайса влияет на битовую скорость потока и/или требует особых инструкций перезаписи.
[115] Изложенный здесь иллюстративный вариант осуществления позволяет перепозиционировать тайлов в битовом потоке, не перезаписывая заголовки слайсов, путем кодирования идентификаторов тайлов, указывающих тайл в порядке растрового сканирования тайлов в сетке тайлов в наборе параметров, связанном с битовым потоком.
[116] Независимо от формата файла битового потока видео, устройство иллюстративного варианта осуществления может обеспечиваться любым из самых разнообразных вычислительных устройств, включающих в себя, например, видеокодер, компьютерную рабочую станцию, сервер и т.п., или любым из различных мобильных вычислительных устройств, например, мобильным терминалом, например, смартфоном, планшетным компьютером, игровой видеоприставкой и т.п.
[117] Независимо от вычислительного устройства, воплощающего устройство, устройство 10 иллюстративного варианта осуществления включает в себя, связано с или иным образом осуществляет связь со схемой 12 обработки, памятью 14, интерфейсом 16 связи и опционально, пользовательским интерфейсом 18, как показано на фиг. 1.
[118] Схема 12 обработки может осуществлять связь с запоминающим устройством 14 по шине для передачи информации между компонентами устройства 10. Запоминающее устройство может быть нетранзиторным и может включать в себя, например, один или более энергозависимых и/или энергонезависимых блоков памяти. Другими словами, например, запоминающее устройство может быть электронным запоминающим устройством (например, машиночитаемый носитель данных), содержащим вентили, выполненные с возможностью хранения данных (например, битов), которые могут извлекаться машиной (например, вычислительным устройством наподобие схемы обработки), запоминающее устройство может быть выполнено с возможностью хранения информации, данных, содержания, приложений, инструкций и т.п., чтобы устройство могло осуществлять различные функции в соответствии с иллюстративным вариантом осуществления настоящего изобретения. Например, запоминающее устройство может быть выполнено с возможностью буферизации входных данных для обработки схемой обработки. Дополнительно или альтернативно, запоминающее устройство может быть выполнено с возможностью хранения инструкций для выполнения схемой обработки.
[119] Устройство 10 можно согласно некоторым вариантам осуществления реализовать в различных вычислительных устройствах, как описано выше. Однако, в некоторых вариантах осуществления, устройство может быть реализовано как микросхема или набор микросхем. Другими словами, устройство может содержать один или более физических пакетов (например, микросхем), включающих в себя материалы, компоненты и/или провода на конструктивном узле (например, системной плате). Конструктивный узел может обеспечивать физическую прочность, сохранение размера и/или ограничение электрического взаимодействия для включенной в него компонентной схемы. Поэтому устройство, в ряде случаев, может быть выполнено с возможностью реализации варианта осуществления настоящего изобретения на одной микросхеме или как «однокристальная система». Таким образом, в ряде случаев, микросхема или набор микросхем может образовывать средство для осуществления одной или более операций для обеспечения описанных здесь функциональных возможностей.
[120] Схема 12 обработки может быть реализована по-разному. Например, схема обработки может быть реализована как одно или более из различных аппаратных средств обработки, например, сопроцессор, микропроцессор, контроллер, цифровой сигнальный процессор (Digital Signal Processor, DSP), обрабатывающий элемент с сопутствующим DSP или без него, или различные другие схемы, включающие в себя интегральные схемы, [118] Схема 12 обработки может осуществлять связь с запоминающим устройством 14 по шине для передачи информации между компонентами устройства 10. Запоминающее устройство может быть нетранзиторным и может включать в себя, например, один или более энергозависимых и/или энергонезависимых блоков памяти. Другими словами, например, запоминающее устройство может быть электронным запоминающим устройством (например, машиночитаемый носитель данных), содержащим вентили, выполненные с возможностью хранения данных (например, битов), которые могут извлекаться машиной (например, вычислительным устройством наподобие схемы обработки), запоминающее устройство может быть выполнено с возможностью хранения информации, данных, содержания, приложений, инструкций и т.п., чтобы устройство могло осуществлять различные функции в соответствии с иллюстративным вариантом осуществления настоящего изобретения. Например, запоминающее устройство может быть выполнено с возможностью буферизации входных данных для обработки схемой обработки. Дополнительно или альтернативно, запоминающее устройство может быть выполнено с возможностью хранения инструкций для выполнения схемой обработки.
[119] Устройство 10 можно согласно некоторым вариантам осуществления реализовать в различных вычислительных устройствах, как описано выше. Однако, в некоторых вариантах осуществления, устройство может быть реализовано как микросхема или набор микросхем. Другими словами, устройство может содержать один или более физических пакетов (например, микросхем), включающих в себя материалы, компоненты и/или провода на конструктивном узле (например, системной плате). Конструктивный узел может обеспечивать физическую прочность, сохранение размера и/или ограничение электрического взаимодействия для включенной в него компонентной схемы. Поэтому устройство, в ряде случаев, может быть выполнено с возможностью реализации варианта осуществления настоящего изобретения на одной микросхеме или как «однокристальная система». Таким образом, в ряде случаев, микросхема или набор микросхем может образовывать средство для осуществления одной или более операций для обеспечения описанных здесь функциональных возможностей.
[120] Схема 12 обработки может быть реализована по-разному. Например, схема обработки может быть реализована как одно или более из различных аппаратных средств обработки, например, сопроцессор, микропроцессор, контроллер, цифровой сигнальный процессор (Digital Signal Processor, DSP), обрабатывающий элемент с сопутствующим DSP или без него, или различные другие схемы, включающие в себя интегральные схемы, например, специализированная интегральная схема (Application Specific Integrated Circuit, ASIC), вентильная матрица, программируемая пользователем (Field Programmable Gate Array, FPGA), микроконтроллер (Microcontroller Unit, MCU), аппаратный ускоритель, процессор специального назначения и т.п. Таким образом, в некоторых вариантах осуществления, схема обработки может включать в себя одно или более ядер обработки, выполненных с возможностью независимого действия. Многоядерная схема обработки обеспечивает возможность параллельной обработки в едином физическом пакете. Дополнительно или альтернативно, схема обработки может включать в себя один или более процессоров, организованных в тандеме через шину для обеспечения независимого исполнения инструкций, конвейерной обработки и/или многопотоковой обработки.
[121] В иллюстративном варианте осуществления, схема 12 обработки может быть выполнен с возможностью выполнения инструкций, хранящихся в запоминающем устройстве 14 или иным образом доступных схеме обработки. Альтернативно или дополнительно, схема обработки может быть выполнена с возможностью осуществления жестко закодированных функциональных возможностей. Таким образом, независимо от своей реализации, аппаратной, программной или комбинированной, схема обработки может представлять сущность (например, физически реализованную в схеме), способную осуществлять операции согласно варианту осуществления настоящего изобретения, будучи соответственно сконфигурированной. Таким образом, например, когда схема обработки реализована как ASIC, FPGA и т.п., схема обработки в частности может быть сконфигурирована аппаратно для проведения описанных здесь операций. Альтернативно, в порядке другого примера, когда схема обработки реализована как исполнитель инструкций, инструкции в частности могут предписывать процессору осуществлять описанные здесь алгоритмы и/или операции при выполнении инструкций. Однако, в ряде случаев, схема обработки может быть процессором конкретного устройства (например, системы обработки изображений или видео), выполненного с возможностью использования варианта осуществления настоящего изобретения путем дополнительного конфигурирования схемы обработки инструкциями для осуществления описанных здесь алгоритмов и/или операций. Схема обработки может включать в себя, помимо прочего, тактовый генератор, блок арифметической логики (Arithmetic Logic Unit, ALU) и логические вентили, выполненные с возможностью поддержки операции схемы обработки.
[122] Интерфейс 16 связи может быть любым средством, например, устройством или схемой, реализованной либо аппаратными средствами, либо аппаратными средствами в комбинации с программными средствами, которая выполнена с возможностью принимать и/или передавать данные, включающие в себя битовые потоки видео. В связи с этим, интерфейс связи может включать в себя, например, антенну (или несколько антенн) и поддерживающее аппаратное и/или программное обеспечение для обеспечения связи посредством сети беспроводной связи. Дополнительно или альтернативно, интерфейс связи может включать в себя схему для взаимодействия с антенной(-ами) для предписания передачи сигналов через антенну(-ы) или обрабатывать прием сигналов, принимаемых через антенну(-ы). В некоторых условиях, интерфейс связи может альтернативно или дополнительно поддерживать проводную связь. Таким образом, например, интерфейс связи может включать в себя модем связи и/или другое аппаратное/программное обеспечение для поддержки связи через кабель, цифровую абонентскую линию (Digital Subscriber Line, DSL), универсальную последовательную шину (Universal Serial Bus, USB) или другие механизмы.
[123] В некоторых вариантах осуществления, например, в случаях, когда устройство 10 выполнено с возможностью кодирования битового потока видео, устройство 10 может опционально включать в себя пользовательский интерфейс 18, который может, в свою очередь, осуществлять связь со схемой 12 обработки для обеспечения выхода пользователю, например, путем вывода кодированного битового потока видео и, в некоторых вариантах осуществления, для приема указания пользовательского ввода. Таким образом, пользовательский интерфейс может включать в себя дисплей и, в некоторых вариантах осуществления, также может включать в себя клавиатуру, мышь, джойстик, сенсорный экран, области касания, экранные кнопки, микрофон, громкоговоритель или другие механизмы ввода/вывода. Альтернативно или дополнительно, схема обработки может содержать схему пользовательского интерфейса, выполненную с возможностью управления по меньшей мере некоторыми функциями одного или более элементов пользовательского интерфейса, например, дисплея и, в некоторых вариантах осуществления, громкоговорителя, звонка, микрофона и/или т.п. Схема обработки и/или схема пользовательского интерфейса, содержащие схему обработки может быть выполнена с возможностью управления одной или более функций одного или более элементов пользовательского интерфейса посредством инструкций компьютерной программы (например, программного обеспечения и/или программно-аппаратного обеспечения), хранящихся в памяти, доступном схеме обработки (например, запоминающем устройстве 14 и/или т.п).
[124] На фиг. 2 изображены операции, осуществляемые, например, устройством 10, показанным на фиг. 1, для кодирования изображения в кодированное изображение, причем кодированное изображение разбивается на два или более тайлов, в соответствии с иллюстративным вариантом осуществления. Как показано в блоке 20, устройство включает в себя средство, например, схему 12 обработки, интерфейс 16 связи и т.п., для приема изображения. Изображение кодируется в кодированное изображение, содержащее один или более слайсов. Изображение разбивается на один или более тайлов. Кодированное изображение может быть частью битового потока. Битовый поток может быть битовым потоком, форматированным в соответствии с HEVC, H.266/VVC или любые вышеописанные форматы файла.
[125] Как показано в блоке 22, устройство 10 включает в себя средство, например, схему 12 обработки, для кодирования, в заголовок слайса для слайса, один или более идентификаторов тайлов для любого набора следующих целей:
- Информация положения слайса. Идентификатор тайла указывает тайл, который содержит заранее заданный или указанный блок слайса, например, первый блок слайса. Блок может быть, например, блоком дерева кодирования или единицей дерева кодирования и т.п.
- Вывод горизонтального и вертикального смещения для определения якорной позиции для вектора движения. Идентификатор тайла указывает позицию тайла, которая используется для вывода горизонтального и вертикального смещения.
- Вывод горизонтального и вертикального смещения для определения якорной позиции для получения кандидатного вектора движения из указанного изображения в TMVP или подобной операции.
[126] Согласно варианту осуществления для кодирования идентификатора тайла для информации положения слайса, синтаксис заголовка сегмента слайса приведен ниже:
[127] slice_pic_parameter_set_id указывает используемый набор параметров изображения. Например, когда синтаксис набора параметров изображения содержит pps_pic_parameter_set_id, обеспечивающий идентификатор PPS, slice_pic_parameter_set_id указывает значение pps_pic_parameter_set_id для используемого PPS. slice_tile_id указывает, что первый блок дерева кодирования в сегменте слайса является верхним левым блоком дерева кодирования тайла, идентифицированного значением slice_tile_id. Длина синтаксического элемента slice_tile_id определяется используемым PPS. Альтернативно, в другом варианте осуществления, slice_tile_id относятся к типу ue(v) и, таким образом, его длина указывается неявно, а не определяется используемым PPS.
[128] Согласно варианту осуществления, длина кодового слова идентификатора тайла фиксированной длины, например, slice_tile_id в различных вариантах осуществления, определяется количеством тайлов в изображении, например, как указано используемым PPS. В некоторых вариантах осуществления, упомянутое количество тайлов в изображении устанавливается равным NumTilesmPic, и длина кодового слова идентификатора тайла определяется равным Ceil(Log2(NumTilesInPic)) битов. Например, используемый PPS может указывать количество строк и столбцов тайлов, и NumTilesbiPic может быть получено умножением количество строк тайлов на количество столбцов тайлов.
[129] Согласно варианту осуществления, длина кодового слова идентификатора тайла фиксированной длины, например, slice_tile_id в различных вариантах осуществления, указывается (кодером) или декодируется (декодером) в высокоуровневой синтаксической структуре, например, наборе параметров изображения или наборе параметров последовательности. Этот вариант осуществления может иметь преимущество в некоторых вариантах применения, поскольку длина идентификаторов тайлов в заголовках слайсов и т.п. становится независимой от размера сетки тайлов или изображения, позволяя извлекать поднабор тайлов в их собственный битовый поток без модификаций заголовка слайса или с меньшими модификациями заголовка слайса. Например, может использоваться следующий синтаксис набора параметров изображения:
[130] Семантика вышеописанных синтаксических элементов может указываться следующим образом, tiles_enabled_flag указывает, существует ли более одного тайла в каждом изображении, относящемся к PPS. Если tiles_enabled_flag равен 1, существует более одного тайла в каждом изображении, относящемся к PPS. Если tiles_enabled_flag равен 0, существует один-единственный тайл в каждом изображении, относящемся к PPS. tile_id_len_minus 1+1 указывает длину в битах синтаксического(их) элемента(ов) идентификатора тайла, например, slice_tile_id в различных вариантах осуществления.
[131] В другом иллюстративном варианте осуществления, может использоваться следующий синтаксис набора параметров изображения:
[132] В некоторых вариантах осуществления, семантика вышеописанных синтаксических элементов может указываться следующим образом, tiles_enabled_flag указывает, существует ли более одного тайла в каждом изображении, относящемся к PPS. Если tiles_enabled_flag равен 1, существует более одного тайла в каждом изображении, относящемся к PPS. Если tiles_enabled_flag равен 0, существует один-единственный тайл в каждом изображении, относящемся к PPS. num_tile_columns_minus1 указывает количество столбцов тайлов разбиения изображения минус один, num_tile_row_sminus1 указывает количество строк тайлов разбиения изображения минус один. В некоторых вариантах осуществления, NumTilesInPic устанавливается равным (num_tile_columns_minus 1+1) * (num_tile_rows_minus1+1). В некоторых вариантах осуществления, выведенная переменная MinBitsTileld вводится и задается равным синтаксическому элементу Ceil(Log2(NumTilesInPic)) битов, rel_tile_id_len указывает количество дополнительных битов помимо MinBitsTileId, используемого для синтаксического(их) элемента(ов) идентификатора тайла. Длина в битах синтаксического(их) элемента(ов) идентификатора тайла, например, slice_tile_id в различных вариантах осуществления, равен MinBitsTileId+rel_tile_id_len.
[133] Согласно варианту осуществления, кодер кодирует и/или декодер декодирует два синтаксических элемента, из которых вычисляется идентификатор тайла. Синтаксические элементы могут именоваться множителем и аддитивным фактором. Согласно варианту осуществления, идентификатор тайла вычисляется умножением множителя на ширину сетки тайлов и прибавлением аддитивного фактора. В другом варианте осуществления, идентификатор тайла вычисляется умножением множителя на высоту сетки тайлов и прибавлением аддитивного фактора. Этот подход может быть полезен, когда используется кодирование переменной длины синтаксических элементов, в частности, для первого слайса изображения и для слайсов, которые выравниваются с началом строк тайлов или столбцов тайлов. Для этого варианта осуществления может использоваться следующий синтаксис и т.п. Следует отметить, что варианты осуществления могут быть аналогично реализованы в любом порядке синтаксических элементов в следующей синтаксической структуре.
[134] slice_tile_mul и slice_tile_add указывают, что первый блок дерева кодирования в сегменте слайса является верхним левым блоком дерева кодирования тайла, идентифицированного посредством slice_tile_mul * (num_tile_columns_minus 1+1)+slice_tile_add. slice_pic_parameter_set_id указывает используемый набор параметров изображения. Например, когда набор параметров изображения синтаксис содержит pps_pic_parameter_set_id, обеспечивающий идентификатор PPS, slice_pic_parameter_set_id указывает значение pps_pic_parameter_set_id для используемого PPS. В некоторых вариантах осуществления, кодирование с фиксированной длиной, т.е. u(v), может использоваться для одного или обоих из slice_tile_mul и slice_tile_add.
[135] Согласно варианту осуществления, сетка или разбиение, указывающее позиции тайлов или слайсов, указывается или декодируется отдельно от сетки тайлов. Например, может использоваться следующий синтаксис:
[136] num_slice_tile_id_columns_minus1 указывает количество столбцов разбиения изображения минус один, num_slice_tile_id_rows_minus1 указывает количество строк разбиения изображения минус один, id_column_width_minus1 [i] указывает ширину i-го столбца в единицах блоков дерева кодирования минус один. id_row_height_minus1[i] указывает высоту i-ой строки в единицах блоков дерева кодирования минус один. Значения идентификатора тайла (например, slice_tile_id) связаны с пространственным положением в сетке, указанным этими синтаксическими элементами. Когда термин "сетка тайлов" упоминается в различных вариантах осуществления, эти варианты осуществления могут аналогично реализовываться сеткой, указанной этими синтаксическими элементами и т.п., далее именуемой сеткой идентификаторов. Семантика slice_tile_id, который может указываться как первый блок дерева кодирования в сегменте слайса, является верхним левым блоком дерева кодирования ячейки сетки (сетки идентификаторов), которая идентифицируется значением slice_tile_id.
[137] Согласно варианту осуществления, вершины сетки тайлов совмещены с вершинами сетки идентификаторов, но могут быть более редкими. Вершины сетки тайлов могут указываться относительно сетки идентификаторов, т.е. может указываться, какая вершина сетки идентификаторов также является вершиной сетки тайлов. Например, может использоваться следующий синтаксис:
[138] tile_column_flag[i] указывает, является ли граница (правая) i-го столбца в сетке идентификаторов границей столбца тайлов. Если tile_column_flag[i] равен 1, граница (правая) i-го столбца в сетке идентификаторов является границей столбца тайлов. Если tile_row_flag[i] равен 0, граница i-ой строки (ниже i-ой строки) в сетке идентификаторов не является границей строки тайлов. tile_column_flag[i] указывает, является ли граница i-ой строки в сетке идентификаторов границей строки тайлов. Если tile_column_flag[i] равен 1, граница i-ой строки в сетке идентификаторов является границей строки тайлов.
[139] Использование сетки идентификаторов облегчает смешанное использование слайсов с ограничением движения и MCTS в некоторых вариантах использования.
[140] В некоторых вариантах осуществления идентификаторы тайлов назначаются позициям тайлов в порядке растрового сканирования тайлов в сетке тайлов. В некоторых вариантах осуществления, идентификаторы тайлов принимают форму синтаксических элементов tile_id и т.п. Значения tile_id могут назначаться заранее определенным образом, например, 0, 1, 2, 3, … в порядке растрового сканирования тайлов в сетке тайлов.
[141] Согласно варианту осуществления, значения идентификатора тайла (т.е. значения id тайла и т.п.) в явном виде назначаются позициям тайлов в битовом потоке или на его протяжении, например, в наборе параметров изображения, например, в качестве списка значений идентификатора тайла в порядке растрового сканирования тайлов в сетке тайлов. В отсутствие указанных идентификаторов, может использоваться заранее заданная схема индексации.
[142] Согласно варианту осуществления, в битовом потоке или на его протяжении указывается, например, в наборе параметров последовательности или наборе параметров изображения, если значения идентификатора тайла назначаются заранее определенным образом или в явном виде назначаются в битовом потоке или на его протяжении.
[143] Как показано в блоке 24, устройство 10 может дополнительно включать в себя средство, например, схему 12 обработки, для опционального кодирования назначения значений идентификатора тайла позициям тайлов в файле набора параметров. Приведенные для примера файлы набора параметров включают в себя файл набора параметров изображения, файл набора параметров последовательности, файл набора параметров видео и т.п.
[144] В иллюстративном варианте осуществления, может использоваться следующий синтаксис набора параметров изображения:
[145] tile_enabled_flag может указываться как описано выше, и семантика других вышеупомянутых синтаксических элементов может указываться следующим образом: explicit_tile_id_order_flag равный 0, указывает, что значения идентификатора тайла назначаются позициям тайлов заранее определенным образом, например, 0, 1, 2, 3, … в порядке растрового сканирования тайлов в сетке тайлов, explicit_tile_id_order_flag указывает, используется ли порядок идентификаторов тайлов для тайлов изображения, для которых этот PPS, указывается синтаксическими элементами tile_id[i]. Если explicit_tile_id_order_flag равен 1, порядок идентификаторов тайлов для тайлов изображения, для которых используется этот PPS, указывается синтаксическими элементами tile_id[i]. tile_id[i] указывает идентификатор тайла i-го тайла в порядке растрового сканирования тайлов в сетке тайлов.
[146] Устройство также может строить индекс блока относительно тайла. В некоторых вариантах осуществления, индекс блока включает в себя синтаксический элемент, указывающий позицию блока для блока в тайле. Например, индекс блока могут указываться единым синтаксическим элементом, например, синтаксическим элементом block_index_wrt_tile_id, или двумя синтаксическими элементами, например, first_slice_segment_in_tile_flag и block_index_wrt_tile_id. first_slice_segment_intile_flag указывает, совпадает ли адрес слайса с верхним левым блоком тайла, block_index_wrt_tile_id указывает позицию блока в тайле. В некоторых вариантах осуществления, присутствие индекса блока для адреса слайса управляется в наборе параметров изображения.
[147] В иллюстративном варианте осуществления, используются следующие синтаксические структуры набора параметров изображения и заголовка сегмента слайса:
[148] Семантика tiles_enabled_flag, slice_pic_parameter_set_id и slice_tile_id описана выше, tile_aligned_slices_flag указывает, ли все слайсы (или все независимые сегменты слайса) начинаются с верхнего левого угла тайла, т.е. что первая CTU каждого слайса является верхней левой CTU тайла. Если tile_aligned_slices_flag равен 0, слайсы (или независимые сегменты слайса) могут начинаться или не начинаться с верхнего левого угла тайла, т.е. что первая CTU слайса может быть или не быть верхней левой CTU тайла. Если tile_aligned_slices_flag равен 1, все слайсы (или все независимые сегменты слайса) начинаются с верхнего левого угла тайла, dependent_slice_segment_flag указывает, предполагается ли значение каждого синтаксического элемента заголовка сегмента слайса, который отсутствует, равным значению соответствующего синтаксического элемента заголовка сегмента слайса в заголовке слайса. Если dependent_slice_segment_flag равен 1, значение каждого синтаксического элемента заголовка сегмента слайса, который отсутствует, предполагается равным значению соответствующего синтаксического элемента заголовка сегмента слайса в заголовке слайса, block_index_wrt_tile_id указывает адрес первого блока дерева кодирования в сегменте слайса, в блоке дерева кодирования растровое сканирование тайла, идентифицированного посредством slice_tile_id. Длина синтаксического элемента slice_segment_address составляет Ceil(Log2(TileSizeInCtbsY)) битов, где TileSizelnCtbsY это количество блоков дерева кодирования яркости тайла. В другом варианте осуществления, block_index_wrt_tile_id имеет тип ue(v) вместо u(v).
[149] Согласно варианту осуществления, индекс блока относительно тайла указывается двумя синтаксическими элементами, один из которых указывает горизонтальную позицию блока в тайле, и другой указывает вертикальную позицию блока в тайле. Тип двух синтаксических элементов может быть, например, ue(v) или u(v). При использовании u(v) длина синтаксических элементов может определяться количеством строк блоков и количеством столбцов блоков.
[150] В некоторых вариантах осуществления, устройство 10 дополнительно включает в себя средство, например, схему 12 обработки, для построения одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов. Один или более векторов движения содержат один или более идентификаторов якорной позиции, каждый из которых задает позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов. Векторы движения включают в себя идентификаторы якоря в форме синтаксических элементов, указывающих заранее заданную позицию, например, tile_ref_x и tile_ref_y, именуемые горизонтальным и вертикальным смещением, соответственно. Как описано выше, горизонтальное и вертикальное смещение используются для определения якорной позиции для применения вектора движения для получения предсказательного блока. В примере, проиллюстрированном на фиг. 3, идентификаторы якоря используются для кругового видео, где совместно используемое кодированное изображение при базовом качестве и тайлы при повышенном качестве кодируются в одном и том же кодированном изображении, и где совместно используемое кодированное изображение и тайлы повышенного качества того же кодированного изображения происходят из одного и того же кругового изображения. На фиг. 3, идентификаторы якоря для тайла повышенного качества указывают положение в совместно используемом составном изображении.
[151] В некоторых вариантах осуществления, якорная(-ые) позиция(-и) для векторов движения указываются идентификатором(-ами) тайла, например, значением(-ями) tile_id и т.п., вместо координат х и у выборки относительно изображения. Якорная позиция вектора движения вычисляется как заранее заданное положение относительно тайла, идентифицированного идентификатором тайла (например, значением tile_id), например, верхнего левого угла тайла, идентифицированного идентификатором тайла (например, значением tile_id).
[152] Вариант осуществления для декодирования кодированного тайла в декодированный тайл содержит следующее:
- декодирование идентификатора тайла, назначенного для вывода якорной позиции вектора движения;
- вывод позиции тайла из идентификатора тайла;
- вывод горизонтального смещения и вертикального смещения из позиции тайла;
- декодирование указания, что единица предсказания в позиции первой горизонтальной координаты и первой вертикальной координаты кодированного тайла предсказывается относительно якорной позиции единицы предсказания, которая связано горизонтальное и вертикальное смещение;
- вывод якорной позиции единицы предсказания, равной сумме первой горизонтальной координаты и горизонтального смещения, и первой вертикальной координаты и вертикального смещения, соответственно;
- определение вектора движения для единицы предсказания; и
- применение вектора движения относительно якорной позиции единицы предсказания для получения предсказательного блока.
[153] Вариант осуществления для кодирования на основании якорной позиции вектора движения, содержит следующее:
- кодирование входного изображения в кодированное составное изображение;
- реконструкцию, как часть упомянутого кодирования, декодированного составного изображения, соответствующего кодированному составному изображению;
- кодирование пространственной зоны в кодированный тайл, причем кодирование содержит:
- определение позиции тайла в кодированном составном изображении, причем позиция тайла указывает горизонтальное смещение и вертикальное смещение, которые указывают зональную якорную позицию пространственной зоны в декодированном составном изображении;
- кодирование идентификатора тайла, который указывает позицию тайла;
- определение, что единица предсказания в позиции первой горизонтальной координаты и первой вертикальной координаты кодированного тайла предсказывается относительно зональной якорной позиции, где первая горизонтальная координата и первая вертикальная координата являются горизонтальной и вертикальной координатами, соответственно, в пространственной зоне;
- указание, что единица предсказания предсказывается относительно якорной позиции единицы предсказания, которая связана зональной якорной позицией;
- вывод якорной позиции единицы предсказания, равной сумме первой горизонтальной координаты и горизонтального смещения, и первой вертикальной координаты и вертикального смещения, соответственно;
- определение вектора движения для единицы предсказания; и
- применение вектора движения относительно якорной позиции единицы предсказания для получения предсказательного блока.
[154] Согласно варианту осуществления, идентификатор тайла, назначенный для вывода якорной позиции вектора движения, предполагается идентичным идентификатору тайла для информации положения слайса. Вышеописанные варианты осуществления применяются следующим образом: когда идентификатор тайла кодированного тайла (содержащего единицу предсказания) равен конкретному значению, обозначенному как tileIdA, идентификатор тайла, назначенный для вывода якорной позиции вектора движения, предполагается равным tileIdA, и позиция тайла для тайла с идентификатором тайла, равный tileIdA в опорном изображении для вектора движения используется при выводе якорной позиции вектора движения. Этот вариант осуществления устанавливает соответствие тайлов между изображениями на основании одного и того же значения идентификатора тайла. Согласно варианту осуществления для кодирования, в битовом потоке или на его протяжении указывается, например, в PPS, SPS или VPS, что идентификатор тайла, назначенный для вывода якорной позиции вектора движения, предполагается идентичным идентификатору тайла для информации положения слайса. Согласно варианту осуществления, из или на протяжении битового потока, например, из PPS, SPS или VPS, декодируется, что идентификатор тайла, назначенный для вывода якорной позиции вектора движения, предполагается идентичным идентификатору тайла для информации положения слайса. Указание может быть специфичным для указанного набора идентификаторов тайлов или может применяться ко всем идентификаторам тайлов. Например, для указания применения ко всем идентификаторам тайлов может использоваться следующий синтаксис и т.п.:
[155] tile_id_relative_motion_flag указывает, используются ли горизонтальное и вертикальное смещения для вывода якорной позиции вектора движения, tile_id_relative_motion_flag равный 0, указывает, что горизонтальное и вертикальное смещения для вывода якорной позиции вектора движения не используются, tile_id_relative_motion_flag равный 1, указывает, что горизонтальное и вертикальное смещения для вывода якорной позиции вектора движения используются и выводятся из идентификатора тайла кодированного тайла, как описано выше.
[156] В некоторых вариантах осуществления, идентификатор тайла, назначенный для вывода якорной позиции вектора движения, сопровождается индексом блока, причем индекс блока включает в себя синтаксический элемент, указывающий позицию блока для блока в тайле. Например, индекс блока могут указываться единым синтаксическим элементом, например, синтаксическим элементом block_index_wrt_tile_id, или двумя синтаксическими элементами, например, first_block_in_tile_flag и block_index_wrt_tile_id. first_block_in_tile_flag указывает, совпадают ли горизонтальное и вертикальное смещения с верхним левым углом тайла, block_index_wrt_tile_id указывает позицию блока в тайле, и горизонтальное и вертикальное смещения выводятся из позиции блока заранее определенным образом, например, из верхнего левого угла позиции блока. В некоторых вариантах осуществления, присутствие индекса блока для вывода якорной позиции вектора движения управляется в наборе параметров изображения. Варианты осуществления, соответствующие индексу блока для идентификатора тайла, указывающего информацию положения слайса, применяются аналогично к индексу блока для идентификатора тайла, назначенного для вывода якорной позиции вектора движения.
[157] В некоторых вариантах осуществления, опорные идентификаторы тайлов для вывода якорной позиции вектора движения могут быть предусмотрены (например, в заголовке слайса) для указанных изображений в списке(-ках) опорных изображений. Например, для каждого появления текущего изображения в списке опорных изображений, заголовок слайса может включать в себя флаг, указывающий, используется ли условная якорная позиция вектора движения для этого опорного индекса, и если да, заголовок слайса также содержит tile_id для этого опорного индекса, указывающий якорную позицию вектора движения.
[158] В иллюстративном варианте осуществления, синтаксис заголовка сегмента слайса выглядит наподобие нижеприведенного и включает в себя синтаксическую структуру, именуемую здесь ref_pic_anchor_offsets(), для указания значений идентификатора тайла для вывода якорных позиций векторов движения.
[159] num_ref_idx_active_override_flag указывает, присутствует ли синтаксический элемент num_ref_idx_l0_active_minus1 для Р- и В-слайсов, и присутствует ли синтаксический элемент num_ref_idx_l1_active_minus1 для В-слайсов. Если num_ref_idx_active_override_flag равен 1, синтаксический элемент num_ref_idx_l0_active_minus1 присутствует для P- и В-слайсов, и синтаксический элемент num_ref_idx_l1_active_minus1 присутствует для В-слайсов. Если num_ref_idx_active_override_flag равен 0, синтаксические элементы num_ref_idx_l0_active_minus1 и num_ref_idx_l1_active_minus1 отсутствуют, num_ref_idx_l0_active_minus1 указывает максимальный опорный индекс для списка 0 опорных изображений, который может использоваться для декодирования слайса. Когда текущий слайс является Р- или В-слайсом и num_ref_idx_l0_active_minus 1 отсутствует, num_ref_idx_l0_active_minus1 предполагается равным num_ref_idx_l0_default_active_minus1, который предусмотрен в PPS (но в альтернативных конфигурациях может располагаться в SPS или VPS), num_ref_idx_l1_active_minus1 указывает максимальный опорный индекс для списка 1 опорных изображений, который может использоваться для декодирования слайса. Когда num_ref_idx_l1_active_minus1 отсутствует, num_ref_idx_l1_active_minus1 предполагается равным num_ref_idx_l1_default_active_minus1, который предусмотрен в PPS (но в альтернативных конфигурациях может располагаться в SPS или VPS).
[160] IsCurrPic(picInp) это функция, которая возвращает 0, когда piclnp не является текущим изображением, подлежащим кодированию или декодированию, и возвращает 1, когда piclnp является текущим изображением, подлежащим кодированию или декодированию. Далее, X равен 0 или 1 для списка 0 или 1 опорных изображений, соответственно. mv_anchor_pos_lX_flag[i] указывает, используется ли якорная позиция вектора движения во внешнем предсказании для этого опорного изображения, mv anchor_pos_lX_flag[i], равный 0, указывает, что якорная позиция вектора движения не используется во внешнем предсказании для этого опорного изображения. mv_anchor_pos_lX_flag[i], равный 1, указывает, что якорная позиция вектора движения используется во внешнем предсказании для этого опорного изображения, anchor_tile_id_lX[i], равный 0, указывает, что идентификатор тайла на основании которого получается позиция тайла для вывода якорной позиции вектора движения как описано в других вариантах осуществления.
[161] В некоторых вариантах осуществления, опорные идентификаторы tile_id могут быть предусмотрены (например, в заголовке слайса) или предполагаться для изображений в списке(-ках) опорных изображений. Например, идентификатор тайла может быть предусмотрен (например, в заголовке слайса) для каждого экземпляра текущего изображения в списке(-ках) опорных изображений. Для временного опорного изображения или для опорных изображений, отличных от текущего изображения, опорный идентификатор tile_id может предполагаться равным текущему идентификатору tile_id, или может предполагаться, что якорная позиция вектора движения не использоваться.
[162] В некоторых вариантах осуществления, помимо идентификатора тайла, горизонтальное и вертикальное смещения для якорной позиции вектора движения могут указываться индексом блока, указывающим позицию блока относительно заранее заданной позиции тайла, указанного идентификатором тайла, например, верхним левым углом тайла.
[163] В некоторых вариантах осуществления, помимо идентификатора тайла, горизонтальное и вертикальное смещения для якорной позиции вектора движения могут указываться координатами х и у пикселя относительно заранее заданной позиции тайла, указанного идентификатором тайла, например, верхним левым углом тайла.
[164] В некоторых вариантах осуществления, якорная позиция может применяться при определении совмещенного блока для совмещенного изображения в операции TMVP или аналогичных операциях. Якорная позиция может условно применяться, например, когда выполняется заранее заданное условие, или когда указана кодером. Якорная позиция может вычисляться одинаково или аналогично тому, как якорная позиция для вывода вектора движения вычисляется в различных вариантах осуществления.
[165] В некоторых вариантах осуществления, когда совмещенное изображение для TMVP указывается как текущее изображение, якорная позиция вектора движения применяется для нахождения совмещенного блока, то есть совмещенный блок выбирается на основе (tile_х+rel_х, tile_у+rel_у), где тайл х и тайл у может быть получен через reference tile_id. reference tile_id может указываться, как описано выше, для идентификатора тайла на основании якорных позиций векторов движения. Альтернативно, reference tile_id может условно обеспечиваться, например, в заголовке слайса, когда совмещенное изображение указывается как текущее изображение.
[166] Синтаксис заголовка слайса HEVC содержит first_slice_segment_in_pic_flag. Будучи равным 1, он указывает, что сегмент слайса является первым сегментом слайса изображения в порядке декодирования. first_slice_segment_in_pic_flag, равный О, указывает, что сегмент слайса не является первым сегментом слайса изображения в порядке декодирования. Этот синтаксический элемент может использоваться для обнаружения границы между кодированными изображениями, которые следуют друг за другом в порядке декодирования. В случае переупорядочения слайсов или извлечения поднабора слайсов, first_slice_segment_in_pic_flag (или любой аналогично определенный синтаксический элемент) может нуждаться в переписывании. В одном подходе, first_slice_segment_in_pic_flag и т.п. не включен в синтаксис заголовка слайса, но, напротив, для первого сегмента слайса изображения используется другой начальный код, чем для других сегментов слайса изображения. В другом подходе, first_slice_segment_in_pic_flag и т.п. не включен в синтаксис заголовка слайса, но, напротив, при определении первого сегмента слайса изображения используется(-ются) другой(-ие) синтаксический(-е) элемент(-ы), например, счетчик порядка изображений. Согласно варианту осуществления, first_slice_segment_injtic_flag и т.п. не включен в синтаксис заголовка слайса, но, напротив, идентификатор тайла используется при определении первого сегмента слайса изображения. Когда идентификаторы тайлов назначаются позициям тайлов неявно, делается вывод, что сегмент слайса с некоторым значением идентификатора тайла, например 0 (например, slice_tile_id, равный 0), является первым сегментом слайса изображения. Когда идентификаторы тайлов назначаются позициям тайлов в явном виде как описано в других вариантах осуществления, делается вывод, что сегмент слайса с некоторым в явном виде указанным значением идентификатора тайла является первым сегментом изображения. Например, порядок назначения идентификаторов тайла позициям тайлов может указываться в PPS, как описано выше, и делается вывод, что сегмент слайса с идентификатором тайла, равным первому идентификатору тайла в списке, заданном в PPS, является первым сегментом слайса изображения.
[167] В некоторых вариантах осуществления, устройство 10 дополнительно включает в себя средство, например, схему 12 обработки, для кодирования файла ограничения порядка декодирования, связанный с битовым потоком в битовом потоке или на его протяжении который включает в себя указание переупорядочения, указывающее, могут ли тайлы переупорядочиваться без влияния на декодируемость для каждого из тайлов. Например, указание переупорядочения может указывать, что тайлы в конкретном наборе тайлов могут переупорядочиваться или не переупорядочиваться (в порядке их зависимости) без влияния на их декодируемость. Альтернативно, указание переупорядочения может указывать, что тайлы или указанные или предполагаемые наборы тайлов, например, наборы тайлов с ограничением движения, могут упорядочиваться или не упорядочиваться без влияния на их декодируемость.
[168] Указание переупорядочения может указывать одно, любое, или оба из следующих: тайлы могут переупорядочиваться без влияния на декодируемость для каждого из тайлов, при условии, что измененное упорядочение обеспечено в явном виде, например, в качестве списка значений идентификатора тайла, как описано выше; тайлы могут переупорядочиваться без влияния на декодируемость для каждого из тайлов без модификаций в битовом потоке или на его протяжении. В последнем случае, может понадобиться, чтобы тайлы имели одинаковый размер (например, в отношении ширины и высоты в CTU).
[169] В некоторых вариантах осуществления, кодер может принимать решение, например, на основании вышеописанного(-ых) указания(-й), что может использоваться любой порядок декодирования тайлов, который согласуется с указанной или предполагаемой сеткой тайлов. Кодер может указывать конкретное указание, например, в наборе параметров последовательности или сообщении SEI, что любой порядок декодирования тайлов, который согласуется с указанной или предполагаемой сеткой тайлов может использоваться.
[170] В некоторых вариантах осуществления, когда решено, что любой порядок декодирования тайлов, который согласуется с указанной или предполагаемой сеткой тайлов может использоваться без модификаций в битовом потоке или на его протяжении, кодер может исключать кодирование списка явных tile_id и т.п., и/или декодер может исключать декодирование списка явных tile_id и т.п., который указывает порядок декодирования или тайлы.
[171] В некоторых вариантах осуществления, декодер может принимать решение, например, на основании вышеописанного(-ых) указания(-ий), что может использоваться любой порядок декодирования тайлов, который согласуется с указанной или предполагаемой сеткой тайлов. Например, в битовом потоке или на его протяжении может указываться, что каждый тайл образует набор тайлов с ограничением движения, и декодер может принимать решение на этом основании, а также на основании использования адресации, связанной с тайлом, что любой порядок декодирования тайлов может использоваться. Например, если все тайлы имеют одинаковый размер, декодер может декодировать тайлы изображения в любом порядке, который не должен быть идентичен порядку кодирования тайлов. Например, декодер может декодировать тайлы в порядке их приема. С использованием идентификаторов тайлов, извлечение наборов тайлов может осуществляться без перезаписи заголовка слайса, например, только путем модификаций набора параметров, или с более прямыми модификациями заголовка слайса. Кроме того, переупорядочение тайлов может осуществляться без перезаписи заголовка слайса, например, только путем модификаций набора параметров, или с более прямыми изменениями заголовка слайса. Кроме того, заголовки слайсов будут более короткими. Например, для сетки тайлов 16×8 в изображении 8192×4096, CTU 64×64, кодирование с фиксированной длиной, как в HEVC, адрес сегмента слайса будет использовать 13-битовое кодовое слово. Количество сохраненный битов в расчет на изображение с использованием идентификаторов тайлов равно 468, что соответствует около 28 килобит в секунду в видео с частотой кадров 60 герц.
[172] Согласно фиг. 4, операции, осуществляемые, например, устройством 10, показанным на фиг. 1, для построения набора тайлов с возможностью предсказания в изображении (in-picture-prediction-enabled, IPPE) в соответствии с иллюстративным вариантом осуществления изображены. Как показано в блоке 40, устройство включает в себя средство, например, схему 12 обработки, интерфейс 16 связи и т.п., для приема битового потока, содержащего кодированное изображение, которое содержит один или более тайлов. Альтернативно, устройство включает в себя средство, например, схему 12 обработки, для кодирования битового потока, содержащего кодированное изображение, которое содержит один или более тайлов. Кодированию может подвергаться, например, несжатая последовательность изображений. Битовый поток может быть битовым потоком, форматированным в соответствии с HEVC, H.266/VVC или любые вышеописанные форматы файла.
[173] Как показано в блоке 42, устройство 10 включает в себя средство, например, схему 12 обработки, для идентификации одного или более зависимых тайлов из одного или более тайлов. В некоторых вариантах осуществления, устройство принимает в качестве настройки конфигурации или такой зависимости тайлов, информацию, подлежащую использованию при кодировании. В некоторых вариантах осуществления, устройство определяет зависимости тайлов как часть кодирования, например, тайл второго вида может зависеть от соответствующего тайла первого вида, где первый и второй вид покадрово упакованы. В некоторых вариантах осуществления, устройство идентифицирует один или более зависимых тайлов, анализируя файлы метаданных, связанные с каждым из тайлов в битовом потоке, например, идентификатор тайла для вывода якорной позиции вектора движения. В некоторых вариантах осуществления, устройство определяет зависимости каждого из тайлов. Каждый из одного или более зависимых тайлов зависит от другого зависимого тайла в кодированном изображении или образует элементарную логическую единицу с другим зависимым тайлом.
[174] Как показано в блоке 44, устройство 10 включает в себя средство, например, схему 12 обработки, для построения указания набора тайлов с возможностью предсказания в изображении, содержащего один или более зависимых тайлов. В некоторых вариантах осуществления, тайл в наборе тайлов IPPE не зависит ни от каких тайлов вне набора тайлов IPPE для предсказания в изображении. В некоторых вариантах осуществления, может быть дополнительно указываться, что тайлы вне конкретного набора тайлов IPPE не зависят ни от каких тайлов в наборе тайлов IPPE.
[175] Как показано в блоке 46, устройство 10 включает в себя средство, например, схему 12 обработки, для предписания хранения битового потока и указания набора тайлов с возможностью предсказания в изображении. Набор тайлов IPPE может храниться совместно с битовым потоком или внутри него. Указания наборов тайлов IPPE могут присутствовать, например, в файле набора параметров последовательности, файле набора параметров изображения, файле сообщения информации дополнительного улучшения и т.п.
[176] В некоторых вариантах осуществления, набор тайлов IPPE также может указываться указаниями или в противном случае (например, с использованием сообщения SEI временного набора тайлов с ограничением движения) быть временным набором тайлов с ограничением движения. Набор тайлов, который является как набором тайлов IPPE, так и временным набором тайлов с ограничением движения может использоваться для пространственно-временного произвольного доступа и извлечения. Пространственный произвольный доступ это ситуация, когда для визуализации требуется только поднабор тайлов, и для решения, какие тайлы требуются для правильного декодирования поднабора тайлов, могут использоваться указания. При извлечении, указания могут использоваться для решения, какие тайлы можно извлекать и декодировать независимо от других тайлов.
[177] В некоторых вариантах осуществления, предсказание в изображении (например, внутриблочное копирование) может быть разрешено между тайлами набора тайлов IPPE. Согласно варианту осуществления, предсказание в изображении разрешенный между тайлами набора тайлов IPPE содержит один или более из: внутреннего предсказания, предсказания с внутриблочным копированием, вывода кандидатного вектора движения из блока опорного тайла в соответствующий блок в текущем тайле одного и того же набора тайлов IPPE, внутрицикловой фильтрации между тайлами, например, фильтрации с деблокированием между соседними тайлами одного и того же набора тайлов IPPE, обновления состояния контекста и использования между тайлами в контекстно-адаптивном энтропийном кодировании. Согласно варианту осуществления, слайсу разрешено переходить через границу тайла в наборе тайлов IPPE, даже когда начальная позиция слайса и/или конечная позиция слайса не выровнена с границей тайла. Согласно варианту осуществления, заранее заданные или указанные типы предсказания внутри изображения могут быть запрещены на границах слайсов или единиц NAL кодирования видеосигнала (VCL) в наборе тайлов IPPE. Например, распространение состояния энтропийного кодирования через границы единиц NAL VCL может быть запрещено, что позволяет параллельно осуществлять энтропийное кодирование и декодирование единиц NAL VCL.
[178] В некоторых вариантах осуществления, предсказание внутри изображения с пересечением границ слайсов может быть разрешено и наборы слайсов с возможностью предсказания в изображении могут указываться аналогично наборам тайлов IPPE. Аналогично, смесь слайсов и тайлов, через которые разрешено предсказание внутри изображении, может указываться и может именоваться набором IPPE.
[179] В иллюстративном варианте осуществления, следующий синтаксис и т.п. используется для указания одного или более наборов IPPE. Может условно включаться синтаксис, например, синтаксические структуры VPS, SPS, PPS и/или сообщение SEI. Отсутствие синтаксиса ippe_sets() в содержащей структуре может указывать отсутствие наборов IPPE.
[180] each_grid_cell_one_ippe_set_flag указывает, включена ли каждая ячейка сетки в сетке идентификаторов или сетке тайлов (какая бы ни применялась согласно другим вариантам осуществления) в изображении в набор IPPE. Если each_grid_cell_one_ippe_set_flag равен 1, каждая ячейка сетки в сетке идентификаторов или сетке тайлов в изображении включена в набор IPPE. Если each_grid_cell_one_ippe_set_flag равен 0, он указывает, что такое ограничение может не применяться, num_sets_minus1 указывает количество наборов IPPE, идентифицированных в этой синтаксической структуре минус один, ippe_set_id[i] указывает идентификатор i-го набора IPPE. num_cell_rects_in_set_minus1[i] указывает количество прямоугольных зон ячеек сетки (сетки идентификаторов или сетки тайлов, какая бы ни применялась согласно другим вариантам осуществления) в i-ом наборе IPPE минус один. top_left_cell_index[i][j] и bottom_right_cell_index[i][j] идентифицируют позицию ячейки сетки для верхней левой ячейки и позицию ячейки сетки для нижней правой ячейки в прямоугольной зоне i-го идентифицированного набора IPPE, соответственно, в порядке тайлов растрового сканирования (сетки идентификаторов или сетки тайлов, какая бы ни применялась согласно другим вариантам осуществления).
[181] Согласно варианту осуществления, набор с ограничением движения тайлов и/или слайсы указывается в битовом потоке или на его протяжении, например, в синтаксических структурах VPS, SPS, PPS и/или сообщения SEI. Отсутствие синтаксиса указания ограничения движения в содержащей структуре может указывать отсутствие наборов тайлов и/или слайсов с ограничением движения. Например, может использоваться следующий синтаксис:
[182] each_grid_cell_one_mc_set_flag указывает, включена ли каждая ячейка сетки в сетке идентификаторов или сетке тайлов (какая бы ни применялась согласно другим вариантам осуществления) в изображении в набор с ограничением движения тайлов или слайсов.
each_grid_cell_one_mc_set_flag, равный 1, указывает, что каждая ячейка сетки в сетке идентификаторов или сетке тайлов (какая бы ни применялась согласно другим вариантам осуществления) в изображении включена в набор с ограничением движения тайлов или слайсов.
each_grid_cell_one_mc_set_flag равный 0, указывает, что такое ограничение может не применяться, num_sets_minus1 указывает количество наборов с ограничением движения тайлов или слайсов, идентифицированных в этой синтаксической структуре минус один, mc_set_id[i] указывает идентификатор i-го набора с ограничением движения тайлов или слайсов. num_cell_rects_in_set_minus1[i] плюс 1 указывает количество прямоугольных зон ячеек сетки (сетки идентификаторов или сетки тайлов, какая бы ни применялась согласно другим вариантам осуществления) в i-ом наборе с ограничением движения. top_left_cell_index[i][j] и bottom_right_cell_index[i][j] идентифицируют позицию ячейки сетки для верхней левой ячейки и позицию ячейки сетки для нижней правой ячейки в прямоугольной зоне i-го идентифицированного набора с ограничением движения, соответственно, в порядке тайлов растрового сканирования (сетки идентификаторов или сетки тайлов, какая бы ни применялась согласно другим вариантам осуществления).
[183] Согласно варианту осуществления, кодер указывает в битовом потоке или на его протяжении, например, в VPS или SPS, и/или декодер декодирует из или на протяжении битового потока, например, из VPS или SPS, если границы набора с ограничением движения тайлов или слайсов подлежат обработке наподобие границ изображения. Такое указание может присутствовать в синтаксисе или может быть разрешено указывать такое указание как пригодное только когда набор с ограничением движения тайлов или слайсов удовлетворяет некоторым ограничениям, например, но не обязательно ограничивать одной и той же прямоугольной формой и одинаковым размером на протяжении кодированной видеопоследовательности, и либо находится в одном и том же пространственном положении в изображениях кодированной видеопоследовательности, либо указание переупорядочения, указывающее, что тайлы или слайсы могут переупорядочиваться без влияния на декодируемость для каждого из тайлов или слайсов. Обработка границ набора с ограничением движения тайлов или слайсов в качестве границ изображения может включать в себя, но не обязательно ограничивается одним или более из следующих: насыщения положений выборок, которые во внешнем предсказании рассматриваются как находяшиеся в наборе с ограничением движения; обработка, например, в различных процессах предсказание, ссылки на синтаксические элементы и выведенные переменные (например, векторы движения) блоков вне набора с ограничением движения тайлов или слайсов в качестве ссылок на недоступные данные. Такая обработка границ набора с ограничением движения тайлов или слайсов эффективно позволяет векторам движения опираться на положения выборок поверх границ, где значение выборки на границе используется как значения выборки для ссылочных положений выборок поверх границ. В некоторых вариантах осуществления, указание набора IPPE также включает в себя лес или граф зависимости, который указывает один или более тайлов, которые не предсказываются в изображении из других тайлов и предсказательных зависимостей от других тайлов одного и того же набора тайлов IPPE.
[184] В некоторых вариантах осуществления, якорная позиция для векторов движения с внутриблочным копированием зависимого тайла в наборе тайлов IPPE указывается или предполагается относящейся к идентифицированному опорному тайлу в одном и том же наборе тайлов IPPE. В некоторых вариантах осуществления, якорная позиция может применяться, если текущее изображение является выбранным опорным изображением (например, когда используется внутриблочное копирование), и не применяться в противном случае. Вышеописанные идентификаторы тайлов могут использоваться для указания якорную позицию.
[185] В иллюстративных вариантах осуществления для кодирования пленоптических (также именуемых плотного светового поля) или многовидовых видеоизображений, пленоптическое изображение или изображения из всех видов одного момента времени кодируются как одно кодированное изображение, один тайл или набор тайлов для каждого субапертурного изображения или одного вида. Кроме того, предсказание в изображении может быть разрешено между выбранными тайлами или наборами тайлов. Кодер указывает наборы тайлов IPPE, например, для каждого "краевого" тайла или набора тайлов из которого не предсказываются другие тайлы или наборы тайлов.
[186] В иллюстративных вариантах осуществления, предусматривающих заплаточное видео, например для кодирования видеосигнала облаков проецируемых точек, устройство 10, например, схема 12 обработки, может кодировать заплатки разных типов (например, текстуру, глубину, текстуру второго слоя, глубину второго слоя, отражательную способность и т.д.) как одно кодированное изображение таким образом, что одна или более полных заплаток образуют набор тайлов. Устройство может выбирать и указывать наборы тайлов IPPE для вмещения соответствующих наборов тайлов, например, наборов тайлов совмещенных заплаток разных типов. Предсказание в изображении может быть разрешено между тайлами набора тайлов IPPE. Например, может быть разрешено предсказание с внутриблочным копированием из тайла текстуры первого слоя в совмещенный тайл текстуры второго слоя, или может быть разрешено предсказание вектора движения, как описано в других вариантах осуществления, из тайла первого типа (например, текстуры) в совмещенный тайл второго типа (например, глубины).
[187] Согласно фиг. 5А, в порядке примера используется сетка 50 тайлов NxM (N=М=5) для кодирования пленоптического изображения/видео, по одному субапертурному изображению на каждый тайл. Предсказание в изображении может использоваться в тайлах изображения. Наборы 52 и 54 тайлов IPPE могут указываться в битовом потоке, связанном с сеткой тайлов, или на его протяжении. Наборы тайлов с ограничением движения (MCTS), например, по одному MCTS на каждый тайл, может кодироваться и указываться в битовом потоке или на его протяжении. Каждому тайлу в сетке 50 тайлов назначен идентификатор тайла. Идентификаторы тайлов указывают порядок растрового сканирования тайлов в сетке тайлов. В битовом потоке или на его протяжении может указываться следующее назначение tile_id:
24, 20, 9, 13,21,
19, 8, 1, 5, 14,
12, 4, 0, 2, 10,
18, 7, 3, 6, 15,
23, 17, 11, 16, 22
[188] Может извлекаться набор тайлов IPPE, например, набор 52 тайлов IPPE. На фиг. 5 В показан пример извлеченного набора 52 IPPE.
[189] Для извлеченного битового потока, в битовом потоке или на его протяжении может указываться следующее назначение tile_id (указывающее порядок tile_id в порядке растрового сканирования тайлов в сетке тайлов):
0, 2, 10,
3, 6, 15,
11, 16, 22
[190] Как объяснено ранее, назначение значений идентификатора тайла позициям тайлов могут указываться, например, в наборе параметров изображения. Как упомянуто выше, выборочные элементы дорожек ISOBMFF могут содержать наборы параметров. Таким образом, извлеченный битовый поток можно построить путем извлечения единиц NAL VCL нужных слайсов и/или тайлов и путем модификации назначения значений идентификатора тайла в наборе(ах) параметров. Измененные наборы параметров могут быть предусмотрены в элементе выборки для дорожки, выборки которой содержат извлеченные единицы NAL VCL.
[191] Иллюстративный вариант осуществления описан выше в отношении заголовков слайсов. Следует понимать, что другие варианты осуществления применяются одинаково к любым другим типам заголовков для единиц разбиения изображения, например, сегмент слайса заголовки или тайл заголовки.
[192] Некоторые иллюстративные варианты осуществления были описаны выше в отношении тайлы. Следует понимать, что другие варианты осуществления применяются одинаково к любым другим типам единиц разбиения изображения или пространственно-временных единиц, например, слайсов или групп слайсов. Тайлы и слайсы были описаны выше содержащими целое число полных единиц дерева кодирования. Следует понимать, что тайл и слайсы могут быть более тонко гранулированы в своих границах. Например, тайл ширина и высота могут быть указаны в единицах кодирования некоторой ширины и высоты, например, единицах кодирования 8x8. В другом примере, слайсу может быть разрешено содержать целое число единиц кодирования, но он не обязан иметь целое число полных единиц дерева кодирования.
[193] Некоторые иллюстративные варианты осуществления были описаны выше в отношении сеток тайлов и идентификаторов тайлов, указывающих позицию тайла в сетке тайлов. Следует понимать, что другие варианты осуществления в равной степени применяются к сеткам идентификаторов, описанных в некоторых иллюстративных вариантах осуществления и сетках других единицах разбиения изображения (например, сетках MCTS). Аналогично, варианты осуществления применяются к любым идентификаторам, из которых можно вывести назначение позиции в используемой сетке.
[194] Варианты осуществления также применяются к другим типам средства разбиения изображения, чем сетки. Например, согласно варианту осуществления, может указываться, какие соседние ячейки сетки в порядке растрового сканирования объединяются для формирования одной ячейки в назначении идентификатора. Такое слияние может быть полезно, например, для достижения более коротких кодовых слов идентификатора тайла в заголовках слайсов.
[195] В вышеприведенном описании, где иллюстративные варианты осуществления были приведены со ссылкой на кодер, следует понимать, что результирующий битовый поток и декодер могут содержать соответствующие элементы. Например, как показано на фиг. 6, на блоке 60, декодер может содержать средство для приема изображения, причем изображение содержит один или более слайсов. Как показано в блоке 62, декодер может дополнительно содержать средство для декодирования, из заголовка слайса для слайса, идентификаторы тайлов, указывающих позиции тайлов, идентификаторы тайлов может использоваться для указания положения слайса, для определения якорной позиции для вектора движения и/или для определения якорной позиции для получения кандидатного вектора движения. Как показано в блоке 64, декодер может дополнительно содержать средство для декодирования назначения значения идентификатора тайла позициям тайлов в файле набора параметров.
[196] Аналогично, как показано на фиг. 7, на блоке 70, декодер может содержать средство для приема битового потока, содержащего кодированное изображение, причем кодированное изображение содержит один или более тайлов. Как показано в блоке 72, декодер может дополнительно включать в себя средство для приема указания набора тайлов с возможностью предсказания в изображении, причем набор тайлов с возможностью предсказания в изображении идентифицирует один или более зависимых тайлов из одного или более тайлов, причем один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. Как показано в блоке 74, декодер может дополнительно включать в себя средство для декодирования битового потока согласно указанию набора тайлов с возможностью предсказания в изображении.
[197] Аналогично, где иллюстративные варианты осуществления были описаны со ссылкой на декодер, следует понимать, что кодер может иметь структуру и/или компьютерную программу для генерации битового потока, подлежащего декодированию декодером.
[198] В вышеприведенном описании, где иллюстративные варианты осуществления были приведены со ссылкой на синтаксис и семантика, следует понимать, что варианты осуществления аналогично охватывают кодер, который выводит участок битового потока согласно синтаксису и семантике. Аналогично, варианты осуществления аналогично охватывают декодер, который декодирует участок битового потока согласно синтаксису и семантике.
[199] Описанные выше варианты осуществления изобретения описывают кодек в отношении отдельного устройства кодера и декодера для помощи в понимании осуществляемых процессов. Однако очевидно, что устройство, структуры и операции могут быть реализованы как единое устройство/структуру/операцию кодера-декодера. Кроме того, кодер и декодер могут совместно использовать некоторые или все общие элементы.
[200] Хотя вышеприведенные примеры описывают варианты осуществления изобретения, действующие в кодеке в устройстве, очевидно, что изобретение, заданное в формуле изобретения, может быть реализовано как часть любого видеокодека. Таким образом, например, варианты осуществления изобретения могут быть реализованы в видеокодеке, которые могут осуществлять кодирование видеосигнала по фиксированным или проводным каналам связи.
[201] Многие модификации и другие варианты осуществления изложенного здесь изобретения будут очевидны специалистам в области техники, к которой относится это изобретение, следуют принципам, представленным в вышеприведенном описании и прилагаемых чертежах. Поэтому следует понимать, что изобретение не ограничивается конкретными раскрытыми вариантами осуществления, и что модификации и другие варианты осуществления подлежат включению в объем нижеследующей формулы изобретения. Кроме того, хотя вышеприведенное описание и прилагаемые чертежи описывают иллюстративные варианты осуществления в контексте некоторых иллюстративных комбинаций элементов и/или функций, очевидно, что разные комбинации элементов и/или функций могут быть предусмотрены альтернативными вариантами осуществления, не выходя за рамки объема нижеследующей формулы изобретения. В связи с этим, например, комбинации элементов и/или функций, отличные от в явном виде описанных выше, также считаются охваченными нижеследующей формулой изобретения. Хотя здесь применяются конкретные термины, они используются только в общем и описательном смысле, но не в целях ограничения.
Изобретение относится к технике кодирования и декодирования видеосигнала. Техническим результатом является повышение эффективности кодирования и декодирования идентификаторов тайлов. Предложен способ, который принимает изображение с последующим кодированием изображения в виде одного или более слайсов, кодирует в заголовок слайса для слайса из одного или более слайсов, одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе, далее кодируют одно или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в файле набора параметров. Другой способ предусмотрен для кодирования или декодирования указания набора тайлов с возможностью предсказания в изображении, содержащего один или более зависимых тайлов путем идентификации одного или более зависимых тайлов из одного или более тайлов. Один или более зависимых тайлов зависят от другого зависимого тайла в кодированном изображении или образуют элементарную логическую единицу с другим зависимым тайлом. 6 н. и 39 з.п. ф-лы, 7 ил.
1. Способ кодирования, включающий:
прием изображения;
кодирование изображения в виде одного или более слайсов;
кодирование, в заголовок слайса одного из одного или более слайсов, идентификатора тайла, указывающего позицию тайла для тайла, содержащего первый блок слайса, при этом упомянутый идентификатор тайла является одним из одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе; и
кодирование одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в наборе параметров.
2. Способ по п. 1, дополнительно включающий:
кодирование, в заголовок слайса, индекса блока относительно одного из одного или более тайлов, причем индекс блока включает синтаксический элемент, указывающий позицию блока для блока в тайле.
3. Способ по любому из пп. 1-2, в котором один из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса.
4. Способ по любому из пп. 1-3, дополнительно включающий:
построение одного или более векторов движения, связанных с одной или более единицами предсказания в одной или более единицах кодирования в одном или более тайлов, причем упомянутые один или более векторов движения применяются в одной или более якорных позициях, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных с помощью одного или более идентификаторов тайлов.
5. Способ по любому из пп. 1-4, дополнительно включающий:
построение файла ограничения порядка декодирования, связанного с изображением, причем файл ограничения порядка декодирования включает указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
6. Способ по п. 1, дополнительно включающий указание, в синтаксическом элементе, длины одного или более идентификаторов тайлов в заголовке слайса.
7. Способ по п. 6, в котором набор параметров изображения или набор параметров последовательности включает синтаксический элемент.
8. Способ по п. 6, дополнительно включающий: указание, в битовом потоке или наряду с ним, назначают ли одно или более назначений одного или более значений идентификаторов тайлов, указывающих одну или более позиций тайлов, заранее заданным образом в порядке растрового сканирования тайлов или указывают в явном виде в битовом потоке или наряду с ним.
9. Способ по п. 8, дополнительно включающий:
указание, в битовом потоке или наряду с ним, одного или более назначений одного или более значений идентификаторов тайлов, указывающих одну или более позиций тайлов, в виде списка значений идентификаторов тайлов в порядке растрового сканирования тайлов.
10. Способ по п. 1, дополнительно включающий: указание, в наборе параметров, одного или более назначений одного или более значений идентификаторов тайлов, указывающих одну или более позиций тайлов, в виде списка значений идентификаторов тайлов в порядке растрового сканирования тайлов.
11. Устройство для кодирования, включающее по меньшей мере один процессор и по меньшей мере одну память, включающую компьютерный программный код для одной или более программ, причем упомянутые по меньшей мере одна память и компьютерный программный код выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
приема изображения;
кодирования изображения в виде одного или более слайсов;
кодирования, в заголовок слайса одного из одного или более слайсов, идентификатора тайла, указывающего позицию тайла для тайла, содержащего первый блок слайса, при этом упомянутый идентификатор тайла является одним из одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе; и
кодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в наборе параметров.
12. Устройство по п. 11, в котором по меньшей мере одну память и компьютерный программный код дополнительно выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
кодирования, в заголовок слайса, индекса блока относительно одного из одного или более тайлов, причем индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле.
13. Устройство по п. 12, в котором один из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса.
14. Устройство по любому из пп. 11-13, в котором по меньшей мере одна память и компьютерный программный код дополнительно выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
построения одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов, причем упомянутые один или более векторов движения применяются в одной или более якорных позициях, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов.
15. Устройство по любому из пп. 11-14, в котором по меньшей мере одна память и компьютерный программный код дополнительно выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
построения файла ограничения порядка декодирования, связанного с изображением, причем файл ограничения порядка декодирования включает указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
16. Машиночитаемый носитель данных, на котором хранятся инструкции исполнимого компьютером программного кода, причем инструкции исполнимого компьютером программного кода содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
приема изображения;
кодирования изображения в виде одного или более слайсов;
кодирования, в заголовок слайса одного из одного или более слайсов, идентификатора тайла, указывающего позицию тайла для тайла, содержащего первый блок слайса, при этом упомянутый идентификатор тайла является одним из одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе; и
кодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов, указывающих позиции тайлов в наборе параметров.
17. Машиночитаемый носитель по п. 16, в котором инструкции исполнимого компьютером программного кода дополнительно содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
кодирования, в заголовок слайса, индекса блока относительно одного из одного или более тайлов, причем индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле.
18. Машиночитаемый носитель по п. 17, в котором один из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса.
19. Машиночитаемый носитель по любому из пп. 16-18, в котором инструкции исполнимого компьютером программного кода дополнительно содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
построения одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов, причем один или более векторов движения применяются в одной или более якорных позициях, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов.
20. Машиночитаемый носитель по любому из пп. 16-19, в котором инструкции исполнимого компьютером программного кода дополнительно содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
построения файла ограничения порядка декодирования, связанного с изображением, причем файл ограничения порядка декодирования включает указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
21. Способ декодирования, включающий:
прием кодированного изображения, содержащего один или более слайсов;
декодирование, из заголовка слайса одного из одного или более слайсов, идентификатора тайла, указывающего позицию тайла для тайла, содержащего первый блок слайса, при этом упомянутый идентификатор тайла является одним из одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе; и
декодирование данных слайса в декодированное изображение, начиная с одной или более позиций тайлов для одного или более тайлов в слайсе.
22. Способ по п. 21, дополнительно включающий:
декодирование, из заголовка слайса, индекса блока относительно одного из одного или более тайлов, причем индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле.
23. Способ по любому из пп. 21-22, в котором один из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса.
24. Способ по любому из пп. 21-23, дополнительно включающий:
декодирование одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов, причем один или более векторов движения применяются в одной или более якорных позициях, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов.
25. Способ по любому из пп. 21-24, дополнительно включающий:
декодирование одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов в позициях тайлов из набора параметров.
26. Способ по любому из пп. 21-25, дополнительно включающий:
декодирование одного или более тайлов согласно файлу ограничения порядка декодирования, связанному с изображением, причем файл ограничения порядка декодирования включает указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
27. Способ по п. 21, в котором набор параметров изображения или набор параметров последовательности содержат список значений идентификаторов тайлов.
28. Способ по п. 21, дополнительно включающий: декодирование, из синтаксического элемента, длины одного или более идентификаторов тайлов в заголовке слайса.
29. Способ по п. 28, в котором набор параметров изображения или набор параметров последовательности содержат синтаксический элемент.
30. Способ по п. 21, дополнительно включающий: декодирование, из битового потока или наряду с ним, назначают ли одно или более назначений одного или более значений идентификаторов тайлов, указывающих одну или более позиций тайлов, заранее заданным образом в порядке растрового сканирования тайлов или указывают в явном виде в битовом потоке или наряду с ним.
31. Способ по п. 30, дополнительно включающий: декодирование, из битового потока или наряду с ним, одного или более назначений одного или более значений идентификаторов тайлов, указывающих одну или более позиций тайлов, в виде списка значений идентификаторов тайлов в порядке растрового сканирования тайлов.
32. Способ по п. 31, в котором набор параметров изображения или набор параметров последовательности содержит список значений идентификаторов тайлов.
33. Способ по п. 16, дополнительно включающий: декодирование, из битового потока или наряду с ним, одного или более назначений одного или более значений идентификаторов тайлов, указывающих одну или более позиций тайлов, в виде списка значений идентификаторов тайлов в порядке растрового сканирования тайлов.
34. Устройство для декодирования, содержащее по меньшей мере один процессор и по меньшей мере одну память, включающую компьютерный программный код для одной или более программ, причем по меньшей мере одна память и компьютерный программный код выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
приема кодированного изображения, содержащего один или более слайсов;
декодирования, из заголовка слайса одного из одного или более слайсов, идентификатора тайла, указывающего позицию тайла для тайла, содержащего первый блок слайса, при этом упомянутый идентификатор тайла является одним из одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе; и
декодирования данных слайса в декодированное изображение, начиная с одной или более позиций тайлов для одного или более тайлов в слайсе.
35. Устройство по п. 32, в котором по меньшей мере одна память и компьютерный программный код дополнительно выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
декодирования, из заголовка слайса, индекса блока относительно одного из одного или более тайлов, причем индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле.
36. Устройство по любому из пп. 34-35, в котором один из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса.
37. Устройство по любому из пп. 34-36, в котором по меньшей мере одна память и компьютерный программный код дополнительно выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
декодирования одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов, причем один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов.
38. Устройство по любому из пп. 34-37, в котором по меньшей мере одна память и компьютерный программный код дополнительно выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
декодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов в позициях тайлов из набора параметров.
39. Устройство по любому из пп. 34-38, в котором по меньшей мере одна память и компьютерный программный код дополнительно выполнены с возможностью, с помощью по меньшей мере одного процессора, обеспечивать выполнение устройством по меньшей мере следующего:
декодирования одного или более тайлов согласно файлу ограничения порядка декодирования, связанному с изображением, причем файл ограничения порядка декодирования включает указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
40. Машиночитаемый носитель данных, на котором хранятся инструкции исполнимого компьютером программного кода, причем инструкции исполнимого компьютером программного кода содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
приема кодированного изображения, содержащего один или более слайсов;
декодирования, из заголовка слайса одного из одного или более слайсов, идентификатора тайла, указывающего позицию тайла для тайла, содержащего первый блок слайса, при этом упомянутый идентификатор тайла является одним из одного или более идентификаторов тайлов, указывающих одну или более позиций тайлов для одного или более тайлов в слайсе; и
декодирования данных слайса в декодированное изображение, начиная с одной или более позиций тайлов для одного или более тайлов в слайсе.
41. Машиночитаемый носитель по п. 40, в котором инструкции исполнимого компьютером программного кода дополнительно содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
декодирования, из заголовка слайса, индекса блока относительно одного из одного или более тайлов, причем индекс блока содержит синтаксический элемент, указывающий позицию блока для блока в тайле.
42. Машиночитаемый носитель по любому из пп. 40-41, в котором один идентификатор тайла из одного или более идентификаторов тайлов указывает тайл, который содержит заранее заданный блок слайса.
43. Машиночитаемый носитель по любому из пп. 40-42, в котором инструкции исполнимого компьютером программного кода дополнительно содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
декодирования одного или более векторов движения, связанных с одной или более единицами предсказания, в одной или более единицах кодирования в одном или более тайлов, причем один или более векторов движения применяются в одной или более якорных позиций, выведенных из одного или более идентификаторов якорной позиции, задающих позицию относительно одного или более тайлов, указанных одним или более идентификаторами тайлов.
44. Машиночитаемый носитель по любому из пп. 40-43, в котором инструкции исполнимого компьютером программного кода дополнительно содержат инструкции программного кода, выполненные с возможностью обеспечения при их исполнении:
декодирования одного или более назначений одного или более значений идентификатора тайла для одного или более идентификаторов тайлов в позициях тайлов из набора параметров.
45. Машиночитаемый носитель по любому из пп. 40-44, в котором инструкции исполнимого компьютером программного кода дополнительно содержат инструкции программного кода, выполненные с возможностью, при исполнении:
декодирования одного или более тайлов согласно файлу ограничения порядка декодирования, связанному с изображением, причем файл ограничения порядка декодирования включает указание переупорядочения, указывающее, способны ли один или более тайлов к переупорядочению без влияния на декодируемость одного или более тайлов.
KIRAN MISRA et al., An overview of tiles in HEVC, IEEE Journal of Selected Topics in Signal Processing, vol | |||
Способ восстановления хромовой кислоты, в частности для получения хромовых квасцов | 1921 |
|
SU7A1 |
Приспособление для точного наложения листов бумаги при снятии оттисков | 1922 |
|
SU6A1 |
WO 2015197815 A1 - 2015-12-30 | |||
C-W HSU еt al., AHG4: Low latency CABAC initialization for dependent tiles, Joint Collaborative Team on Video Coding of ISO/IEC JTC1/SC29/WG11 and ITU-T SG.16, JCTVC-G197, Geneva, |
Авторы
Даты
2022-03-17—Публикация
2019-06-18—Подача