ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ
Эта заявка испрашивает приоритет согласно заявке PCT/EP2020/055220, поданной во Всемирную организацию интеллектуальной собственности. Полное описание вышеупомянутых патентных заявок включено сюда посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
Варианты осуществления настоящей заявки в целом относятся к области обработки изображения и, более конкретно, к сигнализации информации разделения изображения для слайсов.
УРОВЕНЬ ТЕХНИКИ
Кодирование видео (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео, желательны улучшенные способы сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Варианты осуществления настоящей заявки обеспечивают устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.
Вышеупомянутые и другие цели достигаются изобретением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.
Первый аспект настоящего изобретения обеспечивает способ кодирования/декодирования, реализуемый устройством декодирования, при этом способ содержит: получение битового потока для текущего изображения; получение количества тайлов в строке тайлов текущего изображения; получение значения адреса слайса текущего изображения; получение значения tileX в соответствии со значением адреса слайса; синтаксический анализ значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
В соответствии с вариантами осуществления настоящего изобретения раскрыта схема сигнализации, только имеется по меньшей мере два столбца тайлов, после чего сигнализируется синтаксический элемент для ширины слайса. Следовательно, эффективность использования битового потока и эффективность декодирования были улучшены.
Первое пороговое значение представляет собой целочисленное значение, первое пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в строке тайлов равно количеству столбцов тайлов.
В одной реализации способ дополнительно содержит: установку значения индикации ширины слайса на значение по умолчанию, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX равно первому пороговому значению. Значение по умолчанию представляет собой целочисленное значение, в примере значение по умолчанию может быть 0 или 1.
В одной реализации значение по умолчанию указывает, что ширина слайса содержит 1 столбец тайлов.
В одной реализации получение значения tileX в соответствии со значением адреса слайса включает в себя: получение значения tileX в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
В одной реализации значение tileX получается в соответствии с операцией модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения. Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению» равно условию «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения не равно первому пороговому значению». Следовательно, значение tileX сначала не вычисляется, а представляется в соответствии с результатом операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации в качестве значения адреса слайса указывают адрес верхней левой координаты слайса в индексе тайла.
В одной реализации значение tileX указывает значение горизонтальной координаты. В примере значение tileX указывает горизонтальный адрес в индексе тайла.
В одной реализации способ дополнительно содержит: получение количества тайлов в столбце тайлов текущего изображения; получение значения tileY в соответствии со значением адреса слайса; синтаксический анализ значения индикации для высоты слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению. Второе пороговое значение представляет собой целочисленное значение, второе пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в столбце тайлов означает то же самое, что и количество строк тайлов.
В одной реализации способ дополнительно включает в себя: установку значения индикации для высоты слайса на предварительно установленное значение, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY равно второму пороговому значению.
В одной реализации получение значения tileY в соответствии со значением адреса слайса содержит: получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения. В одной реализации значение tileY указывает значение вертикальной координаты. Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению» равноценно условию «когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением операции целочисленного деления между значением адреса слайса и количеством тайлов в столбце тайлов текущего изображения не равно второму пороговому значению». Следовательно, значение tileY сначала не вычисляется, а представляется в соответствии с результатом операции целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения. В примере значение tileY указывает вертикальный адрес в индексе тайла.
Второй аспект настоящего изобретения обеспечивает способ кодирования/декодирования, реализуемый устройством декодирования, при этом способ включает в себя: получение битового потока для текущего изображения; получение количества тайлов в столбце тайлов текущего изображения; получение значения адреса слайса текущего изображения; получение значения tileY в соответствии со значением адреса слайса; синтаксический анализ значения индикации для высоты слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
Второе пороговое значение представляет собой целочисленное значение, второе пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в столбце тайлов означает то же самое, что и количество строк тайлов.
В одной реализации способ дополнительно включает в себя: установку значения индикации для высоты слайса на предварительно установленное значение, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY равно второму пороговому значению. Значение по умолчанию представляет собой целочисленное значение, в примере значение по умолчанию может быть 0 или 1.
В одной реализации значение по умолчанию указывает, что высота слайса составляет 1 строку тайлов.
В одной реализации получение значения tileY в соответствии со значением адреса слайса содержит:
получение количества тайлов в строке тайлов текущего изображения;
получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации значение tileY указывает значение вертикальной координаты. В примере значение tileY указывает вертикальный адрес в индексе тайла.
В одной реализации адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
В одной реализации значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации в качестве значения адреса слайса указывают адрес верхней левой координаты слайса в индексе тайла.
В одной реализации способ дополнительно содержит: получение количества тайлов в строке тайлов текущего изображения; получение значения tileX в соответствии со значением адреса слайса; синтаксический анализ значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению. Первое пороговое значение представляет собой целочисленное значение, первое пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в строке тайлов равно количеству столбцов тайлов.
В одной реализации способ дополнительно содержит: установку значения индикации ширины слайса на значение по умолчанию, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX равно первому пороговому значению. Значение по умолчанию представляет собой целочисленное значение, в примере значение по умолчанию может быть 0 или 1.
В одной реализации значение по умолчанию указывает, что ширина слайса содержит 1 столбец тайлов.
В одной реализации получение значения tileX в соответствии со значением адреса слайса включает в себя: получение значения tileX в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
В одной реализации значение tileX получается в соответствии с операцией модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения. Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению» равно условию «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения не равно первому пороговому значению». Следовательно, значение tileX сначала не вычисляется, а представляется в соответствии с результатом операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации в качестве значения адреса слайса указывают адрес верхней левой координаты слайса в индексе тайла.
В одной реализации значение tileX указывает значение горизонтальной координаты.
Третий аспект настоящего изобретения обеспечивает способ кодирования/декодирования, реализуемый устройством кодирования, при этом способ содержит: получение количества тайлов в строке тайлов текущего изображения; получение значения адреса слайса текущего изображения; получение значения tileX в соответствии со значением адреса слайса; кодирование значения индикации ширины слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
В соответствии с вариантами осуществления настоящего изобретения раскрыта схема сигнализации, только имеется по меньшей мере два столбца тайлов, после чего сигнализируется синтаксический элемент для ширины слайса. Следовательно, эффективность использования битового потока и эффективность декодирования были улучшены.
Первое пороговое значение представляет собой целочисленное значение, первое пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в строке тайлов равно количеству столбцов тайлов.
В одной реализации получение значения tileX в соответствии со значением адреса слайса включает в себя: получение значения tileX в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
В одной реализации значение tileX получается в соответствии с операцией модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения. Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению» равно условию «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения не равно первому пороговому значению». Следовательно, значение tileX сначала не вычисляется, а представляется в соответствии с результатом операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации в качестве значения адреса слайса указывают адрес верхней левой координаты слайса в индексе тайла.
В одной реализации значение tileX указывает значение горизонтальной координаты.
В одной реализации способ дополнительно содержит: получение количества тайлов в столбце тайлов текущего изображения; получение значения tileY в соответствии со значением адреса слайса; кодирование значения индикации для высоты слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению. Второе пороговое значение представляет собой целочисленное значение, второе пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в столбце тайлов означает то же самое, что и количество строк тайлов.
В одной реализации получение значения tileY в соответствии со значением адреса слайса содержит: получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения. В одной реализации значение tileY указывает значение вертикальной координаты. Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению» равноценно условию «когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением операции целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения не равно второму пороговому значению». Следовательно, значение tileY сначала не вычисляется, а представляется в соответствии с результатом операции целочисленного деления между значением адреса слайса и количеством тайлов в столбце тайлов текущего изображения.
Четвертый аспект настоящего изобретения обеспечивает способ кодирования/декодирования, реализуемый устройством кодирования, при этом способ включает в себя: получение количества тайлов в столбце тайлов текущего изображения; получение значения адреса слайса текущего изображения; получение значения tileY в соответствии со значением адреса слайса; кодирование значения индикации для высоты слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
Второе пороговое значение представляет собой целочисленное значение, второе пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в столбце тайлов означает то же самое, что и количество строк тайлов.
В одной реализации получение значения tileY в соответствии со значением адреса слайса содержит:
получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации значение tileY указывает значение вертикальной координаты.
В одной реализации адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
В одной реализации значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации в качестве значения адреса слайса указывают адрес верхней левой координаты слайса в индексе тайла.
В одной реализации способ дополнительно содержит: получение количества тайлов в строке тайлов текущего изображения; получение значения tileX в соответствии со значением адреса слайса; кодирование значения индикации ширины слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению. Первое пороговое значение представляет собой целочисленное значение, первое пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в строке тайлов равно количеству столбцов тайлов.
В одной реализации получение значения tileX в соответствии со значением адреса слайса включает в себя: получение значения tileX в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
В одной реализации значение tileX получается в соответствии с операцией модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения. Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению» равно условию «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения не равно первому пороговому значению». Следовательно, значение tileX сначала не вычисляется, а представляется в соответствии с результатом операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации в качестве значения адреса слайса указывают адрес верхней левой координаты слайса в индексе тайла.
В одной реализации значение tileX указывает значение горизонтальной координаты.
Пятый аспект заданного изобретения обеспечивает устройство декодирования видео, которое содержит:
модуль получения, который выполнен с возможностью получения битового потока для текущего изображения; и модуль получения выполнен с возможностью получения количества тайлов в строке тайлов текущего изображения и получения значения адреса слайса текущего изображения;
модуль вычисления, который выполнен с возможностью получения значения tileX в соответствии со значением адреса слайса;
модуль синтаксического анализа, который выполнен с возможностью синтаксического анализа значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
Подробности для каждого модуля в пятом аспекте предварительно установленного изобретения могут относиться к вариантам осуществления и реализациям в вышеупомянутом первом аспекте предварительно установленного изобретения.
Шестой аспект настоящего изобретения обеспечивает устройство декодирования видео, при этом устройство декодирования содержит:
модуль получения, который выполнен с возможностью получения битового потока для текущего изображения; модуль получения выполнен с возможностью получения количества тайлов в столбце тайлов текущего изображения и получения значения адреса слайса текущего изображения;
модуль вычисления, который выполнен с возможностью получения значения tileY в соответствии со значением адреса слайса;
модуль синтаксического анализа, который выполнен с возможностью синтаксического анализа значения индикации для высоты слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
Подробности для каждого модуля в шестом аспекте предварительно установленного изобретения могут относиться к вариантам осуществления и реализациям в вышеуказанном втором аспекте предварительно установленного изобретения.
Седьмой аспект настоящего изобретения обеспечивает устройство кодирования видео, при этом устройство кодирования содержит:
модуль получения, который выполнен с возможностью получения количества тайлов в строке тайлов текущего изображения; модуль получения выполнен с возможностью получения значения адреса слайса текущего изображения;
модуль вычисления, который выполнен с возможностью получения значения tileX в соответствии со значением адреса слайса;
модуль кодирования, который выполнен с возможностью кодирования значения индикации ширины слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
Подробности для каждого модуля в седьмом аспекте предварительно установленного изобретения могут относиться к вариантам осуществления и реализациям в вышеуказанном третьем аспекте предварительно установленного изобретения.
Восьмой аспект настоящего изобретения обеспечивает устройство кодирования видео, при этом устройство кодирования видео содержит: модуль получения, который выполнен с возможностью получения количества тайлов в столбце тайлов текущего изображения; модуль получения выполнен с возможностью получения значения адреса слайса текущего изображения;
модуль вычисления, который выполнен с возможностью получения значения tileY в соответствии со значением адреса слайса;
модуль кодирования, который выполнен с возможностью кодирования значения индикации для высоты слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
Подробности для каждого модуля в восьмом аспекте предварительно установленного изобретения могут относиться к вариантам осуществления и реализации в вышеупомянутом четвертом аспекте предварительно установленного изобретения.
Девятый аспект настоящего изобретения обеспечивает декодер, содержащий схему обработки для выполнения способа согласно первому аспекту, второму аспекту и любой реализации первого аспекта, второму аспекту.
Десятый аспект настоящего изобретения обеспечивает декодер, содержащий схему обработки для осуществления способа в соответствии с третьим аспектом, четвертым аспектом и любой из реализаций третьего аспекта, четвертого аспекта.
Десятый аспект настоящего изобретения обеспечивает компьютерный программный продукт, содержащий программный код для выполнения способа по первому аспекту, второму аспекту, третьему аспекту, четвертому аспекту и любой из реализаций первого аспекта, второго аспекта, третий аспект и четвертый аспект.
Одиннадцатый аспект настоящего изобретения обеспечивает энергонезависимый считываемый компьютером носитель, содержащий программный код, который при выполнении компьютерным устройством предписывает компьютерному устройству выполнять способ первого аспекта, второго аспекта, третьего аспекта, четвертый аспект и любой из вариантов осуществления первого аспекта, второго аспекта, третьего аспекта и четвертого аспекта.
Двенадцатый аспект настоящего изобретения обеспечивает декодер, содержащий:
один или более процессоров; и
энергонезависимый считываемый компьютером носитель данных, соединенный с процессорами и хранящий программу для выполнения процессорами, при этом программирование, когда оно выполняется процессорами, конфигурирует декодер для выполнения способа согласно первому аспекту, второму аспекту и любой из вариантов осуществления первого аспекта, второго аспекта.
Тринадцатый аспект настоящего изобретения обеспечивает кодер, содержащий:
один или более процессоров; и
энергонезависимый считываемый компьютером носитель данных, соединенный с процессорами и хранящий программу для выполнения процессорами, при этом программирование, когда оно выполняется процессорами, конфигурирует декодер для выполнения способа согласно третьему аспекту, четвертому аспекту и любой из вариантов реализации третьего аспекта, четвертого аспекта.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:
Фиг. 1A является блок-схемой, показывающей пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;
Фиг. 1B является блок-схемой, показывающей другой пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления настоящего изобретения;
Фиг. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;
Фиг. 6 является примером изображения, разделенного на CTU;
Фиг. 7 - пример порядка растрового сканирования CTU на основе тайлов;
Фиг. 8 является примером разделения изображения;
Фиг. 9 является примером адресной информации CTU на изображении;
Фиг. 10 является еще одним примером разделения изображения;
Фиг. 11 является блок-схемой, показывающей примерную структуру системы 3100 доставки контента, которая реализует услугу доставки контента;
Фиг. 12 является блок-схемой, показывающей структуру примерного терминального устройства.
Фиг. 13 представляет собой блок-схему последовательности операций, показывающую вариант осуществления способа.
Фиг. 14 представляет собой блок-схему, показывающую вариант осуществления устройства.
В дальнейшем идентичные ссылочные обозначения относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из упомянутого множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» термины «кадр» или «картинка» могут использоваться как синонимы в области кодирования видео. Кодирование видео (или кодирование (coding) в целом) содержит две части: кодирование видео (video encoding) и декодирование видео. Кодирование видео выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (Coding and Decoding, кодирование и декодирование).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, т.е. восстановленные видеоизображения имеют такое же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например посредством квантования, для сокращения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с 2D преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (внутри изображения) предсказания и/или временного (между изображениями) предсказания для формирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут формировать идентичные предсказания (например, внутрикадрового и межкадрового предсказания) и/или восстановления для обработки, то есть кодирования (coding), последующих блоков.
В нижеследующих вариантах осуществления системы 10 кодирования видео, видеокодер 20 и видеодекодер 30 описаны на основе фиг. 1-3.
Фиг. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодирования, например систему 10 кодирования видео (или сокращенно систему 10 кодирования), которая может использовать способы из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнения способов в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на фиг. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 изображения, например в устройство-получатель 14 для декодирования кодированных данных 13 изображения.
Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. опционально, содержать источник 16 изображений, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображений, а также интерфейс связи или блок 22 связи.
Источник 16 изображений может содержать или быть устройством захвата изображений любого типа, например камерой для захвата изображения реального мира, и/или устройством формирования изображений любого типа, например процессором компьютерной графики для формирования компьютерного анимированного изображения, или любым типом другого устройства для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником изображения может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых изображений.
В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, изображение или данные 17 изображения также могут именоваться необработанным (raw) изображением или необработанными данными 17 изображения.
Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки в отношении этих данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, на основе фиг. 2).
Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи этих кодированных данных 21 изображения (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления.
Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. опционально, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения.
Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 изображения (или любой их дальнейшей обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройства хранения кодированных данных изображений, и предоставления кодированных данных 21 изображения в декодер 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки кодированных данных 21 изображения в соответствующий формат, например, в пакеты, и/или обработки кодированных данных изображения с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи.
Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки и/или распаковки передачи для получения кодированных данных 21 изображения.
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например отправки и приема сообщений, например для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче кодированных данных изображения.
Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основе фиг. 3 или фиг. 5.
Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 изображения (также называемых восстановленными данными изображения), таких как декодированное изображение 31, чтобы получить пост-обработанные данные 33 изображения, такие как пост-обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например для подготовки декодированных данных 31 изображения для отображения, например с помощью устройства 34 отображения.
Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 изображения для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленного изображения, например, интегрированного или внешнего дисплея или монитора. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, дисплеии, основанные на жидкрх кристаллах на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа.
Хотя фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.
Как будет очевидно для специального элемента на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на фиг. 1A, может варьироваться в зависимости от фактического устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на фиг. 1B, такую как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матрицы (FPGA), дискретной логики, аппаратного обеспечения, выделенного кодирования видео или любых их комбинаций. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 с фиг. 2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с фиг. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на фиг. 5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем не-кратковременном считываемом компьютером носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на фиг. 1B.
Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, проиллюстрированная на фиг. 1A, является лишь примером, а способы настоящей заявки могут применяться к настройкам кодирования видео (такого как кодирование видео или декодирование видео), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство кодирования видео может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное кодирование видео (HEVC) или на эталонное программное обеспечение универсального кодирования видео (VVC), стандарт кодирования видео следующего поколения, разрабатываемый объединенной группой сотрудничества по кодированию видео (JCT-VC) экспертной группы по кодированию видео ITU-T (VCEG) и экспертной группой по движущимся изображениям ISO/IEC (MPEG). Специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
Фиг. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации способов настоящей заявки. В примере на фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных изображений, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 межкадрового предсказания, блок 254 внутрикадрового предсказания и блок 262 разделения. Блок 244 межкадрового предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого пути прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных изображений (DPB) 230, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию «встроеннного декодера» видеокодера 20.
Изображения и разделение изображений (изображения и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 изображения 17 (или данных 17 изображения), например изображения из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). Для простоты нижеследующее описание ссылается на изображение 17. Изображение 17 также может именоваться текущим изображением или изображением, которое подлежит кодированию (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение).
Изображение (цифровое) является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента изображения) или пэл (picture element, элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив красных, зеленых или синих выборок. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать блок разделения изображения (не показан на фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разделения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или подмножествами или группами изображений и разделения каждого изображения на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 изображения 17, например одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения также может именоваться текущим блоком изображения или блоком изображения, подлежащим кодированию.
Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив дискретных выборок MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.
Варианты осуществления видеокодера 20, показанные на фиг. 2, могут быть выполнены с возможностью кодирования изображения 17 блок за блоком, например кодирование и предсказание выполняется для каждого блока 203.
Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием слайсов (также именуемых видеослайсами), при этом изображение может быть разделено на или кодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеокодера 20, показанные на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых тайлами видео), при этом изображение может быть разделено на или кодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.
Вычисление остатка
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок.
Преобразование
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например блоком 312 обработки обратного преобразования в видеодекодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20.
Варианты осуществления видеокодера 20 (соответственно блок 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например, типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.
Квантование
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.
Варианты осуществления видеокодера 20 (соответственно блок 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Обратное квантование
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например путем применения обратной схемы квантования относительно таковой, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.
Обратное преобразование
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.
Восстановление
Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т. е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например посредством сложения - выборка за выборкой - значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
Фильтрация
Блок 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на фиг. 2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Буфер декодированных изображений
Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающими устройствами других типов. Буфер 230 (DPB) декодированных изображений может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего изображения или разных изображений, например ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для межкадрового предсказания. Буфер 230 декодированных изображений (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок.
Выбор режима (разделение и предсказание)
Блок 260 выбора режима содержит блок 262 разделения, блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания и выполнен с возможностью приема или получения исходных данных изображения, например исходного блока 203 (текущего блока 203 текущего изображения 17), и восстановленных данных изображения, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков того же самого (текущего) изображения и/или из одного или множества ранее декодированных изображений, например из буфера 230 декодированных изображений или других буферов (например, линейного (строкового) буфера, не показан). Восстановленные данные изображения используются в качестве данных опорного изображения для предсказания, например межкадрового предсказания или внутрикадрового предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разделения для текущего режима предсказания блока (включая отсутствие разделения) и режима предсказания (например, режима внутреннего или межкадрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации скорость/искажение (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение при определенной скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т. д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.
Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на более мелкие разделы блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделов блока или субблоков.
Далее более подробно поясняется разделение (например, посредством блока 260 разделения) и обработка предсказания (посредством блока 244 межкадрового предсказания и блока 254 внутрикадрового предсказания), выполняемые примерным видеокодером 20.
Разделение
Блок 262 разделения может разделять (или разбивать) текущий блок 203 на более мелкие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).
Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB).
Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть NxN блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть MxN блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры квадродерева, обозначенной в качестве дерева кодирования. Решение о том, следует ли кодировать область изображения с использованием предсказания между изображениями (временного) или внутри изображения (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разделена на одну, две или четыре PU в соответствии с типом разделения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разделения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом кодирования видео, который называется универсальное кодирование видео (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или тройчной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественный раздел, например раздел троичного дерева.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разделения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутрикадрового предсказания и/или режимы межкадрового предсказания.
Внутрикадровое предсказание
Набор режимов внутрикадрового предсказания может содержать 35 различных режимов внутрикадрового предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутрикадрового предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены для VVC.
Блок 254 внутрикадрового предсказания выполнен с возможностью использования восстановленных дискретных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутрикадрового предсказания согласно режиму внутрикадрового предсказания набора режимов внутрикадрового предсказания.
Блок 254 внутрикадрового предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутрикадрового предсказания (или, в общем, информации, указывающей выбранный режим внутрикадрового предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Межкадровое предсказание
Набор (возможных) режимов межкадрового предсказания зависит от доступных опорных изображений (то есть предыдущих, по меньшей мере частично декодированных изображений, например сохраненных в DBP 230) и других параметров межкадрового предсказания, например используется ли опорное изображение целиком или только часть, например область окна поиска вокруг области текущего блока, опорного изображения для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 244 межкадрового предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одного или множества других/отличных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из упомянутого множества опорных блоков одинаковых или разных изображений из множества других изображений и обеспечения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров межкадрового предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получения, например, приема параметра межкадрового предсказания и выполнения межкадрового предсказания на основе или с использованием параметра межкадрового предсказания для получения блока 265 межкадрового предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или формирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений.
Блок компенсации движения может также формировать синтаксические элементы, связанные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков изображения слайса видео. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут формироваться или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Энтропийное кодирование
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого способа или методологии энтропийного кодирования) или пропуска (без сжатия) в отношении квантованных коэффициентов 209, параметров межкадрового предсказания, параметров внутрикадрового предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения кодированных данных 21 изображения, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
Фиг. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированное изображение 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных изображения, например данных, которые представляют блоки изображения кодированного слайса видео (и/или тайлов или групп тайлов и связанные синтаксические элементы.
В примере на фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных изображений, блок 360 применения режима, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на фиг. 2.
Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных изображений может быть идентичен по функции буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.
Энтропийное декодирование
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем случае, кодированных данных 21 изображения) и выполнения, например, энтропийного декодирования кодированных данных 21 изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показано на фиг. 3), например, любой или все параметры межкадрового предсказания (например, индекс опорного изображения и вектор движения), параметр внутрикадрового предсказания (например, режим или индекс внутрикадрового предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров межкадрового предсказания, параметра внутрикадрового предсказания и/или других синтаксических элементов блоку 360 применения режима и других параметров другим блокам декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне видеослайса и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы тайлов и/или тайлы и соответствующие синтаксические элементы.
Обратное квантование
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или тайле или группе тайлов, для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.
Обратное преобразование
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311.
Восстановление
Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Фильтрация
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на фиг. 3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированных изображений
Декодированные видеоблоки 321 изображения затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, отображения.
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователю.
Предсказание
Блок 344 межкадрового предсказания может быть идентичен блоку 244 межкадрового предсказания (в частности, блоку компенсации движения), а блок 354 внутрикадрового предсказания может быть идентичен блоку 254 внутрикадрового предсказания по функции, и принимает решения по разделению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутрикадрового или межкадрового предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеослайс кодируется как внутрикадрово-кодируемый (I) слайс, блок 354 внутрикадрового предсказания блока 360 применения режима выполнен с возможностью формирования блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима внутрикадрового предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как межкадрово-кодируемый (т.е. B или P) слайс, блок 344 межкадрового предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для межкадрового предсказания блоки предсказания могут быть созданы из одного из опорных изображений в пределах одного из списков опорных изображений. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя способы построения по-умолчанию на основе опорных изображений, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутрикадровое или межкадровое предсказание), используемого для кодирования видеоблоков видеослайса, типа слайса межкадрового предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого межкадрово-кодированного видеоблока слайса, статуса межкадрового предсказания для каждого межкадрово-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп тайлов (например, групп видеотайлов) и/или тайлов (например, видеотайлов) в дополнение или альтернативно к слайсам (например, видеослайсам), например, видео может быть кодировано с использованием групп I, P или B тайлов и/или тайлов.
Варианты осуществления видеодекодера 30, как показано на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием слайсов (также именуемых видеослайсами), при этом изображение может быть разделено на или декодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU).
Варианты осуществления видеодекодера 30, показанные на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием групп тайлов (также называемых группами тайлов видео) и/или тайлов (также называемых тайлами видео), при этом изображение может быть разделено на или декодировано с использованием одной или более групп тайлов (обычно не перекрывающихся), и каждая группа тайлов может содержать, например один или более блоков (например, CTU) или один или более тайлов, при этом каждый тайл, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.
Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth установлена равной 16, диапазон составляет -32768 ~ 32767; если bitDepth установлена равной 18, диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех субблоков 4x4 в одном блоке 8x8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4x4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операций
где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или субблока, а ux и uy указывает промежуточное значение;
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двух. Дополнением до двух для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двух является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах (5)-(8).
Способ 2: удаление MSB переполнения посредством усечения значения
где vx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:
Clip3( x, y, z )=
Фиг. 4 является схематичным представлением устройства 400 кодирования видео согласно варианту осуществления настоящего раскрытия. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг. 1A, или кодером, таким как видеокодер 20 по фиг. 1A.
Устройство 400 кодирования видео содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.
Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает трансформацию устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, кратковременной и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).
Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с фиг. 1 согласно примерному варианту осуществления.
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.
Память 504 в устройстве 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, при этом прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные в данном документе способы.
Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.
Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях.
Наборы параметров
Наборы параметров принципиально схожи и преследуют одни и те же основные цели проектирования, а именно эффективность битовой скорости, устойчивость к ошибкам и обеспечение интерфейсов системных уровней. В HEVC (ITU-T H.265) существует иерархия наборов параметров, включая набор параметров видео (VPS), набор параметров последовательности (SPS) и набор параметров изображения (PPS), которые аналогичны своим аналогам в AVC и VVC. Каждый слайс ссылается на один активный PPS, SPS и VPS для доступа к информации, используемой для декодирования слайса. PPS содержит информацию, которая применяется ко всем слайсам в изображении, и, следовательно, все слайсы в изображении должны относиться к одному и тому же PPS. Слайсы в разных изображениях также могут ссылаться на один и тот же PPS. Аналогичным образом, SPS содержит информацию, которая применяется ко всем изображениям в одной и той же кодируемой/декодируемой видеопоследовательности.
Хотя PPS может различаться для отдельных изображений, обычно многие или все изображения в кодируемой/декодируемой видеопоследовательности относятся к одному и тому же PPS. Повторное использование наборов параметров является эффективным с точки зрения битовой скорости, поскольку позволяет избежать многократной отправки совместно используемой информации. Он также является устойчивым к потерям, поскольку позволяет переносить содержимое набора параметров по более надежному внешнему каналу связи или часто повторять его в битовом потоке, чтобы гарантировать, что он не будет потерян.
Набор параметров последовательности (SPS)
SPS содержит параметры, которые применяются к одному или более уровням кодированной видеопоследовательности и не изменяются от изображения к изображению в пределах кодированной видеопоследовательности. В частности, SPS включает в себя информацию, сигнализация которой относится к подизображению.
В некоторых частях нижеследующей таблицы показан моментальный снимок части сигнализации подизображения в SPS в ITU JVET-Q2001-v11 со следующей ссылкой для загрузки:
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/17_Brussels/wg11/JVET-Q2001-v11.zip. В оставшейся части заявки этот документ для простоты будет называться проект 8 VVC (VVC draft 8).
Некоторые синтаксические элементы в информации о положении сигнала SPS и управляющие флаги каждого подизображения. Информация о местоположении для i-го подизображения включает в себя:
subpic_ctu_top_left_x[i], указывающий горизонтальную составляющую верхней левой координаты подизображения i в изображении; или
subpic_ctu_top_left_y[i], указывающий вертикальную составляющую верхней левой координаты подизображения i в изображении; или
subpic_width_minus1[i], указывающий ширину подизображения i в изображении; или
subpic_height_minus1[i] указывает высоту подизображения i в изображении.
Некоторые синтаксические элементы указывают количество подизображений в изображении, например, sps_num_subpics_minus1.
Разбиение изображения на CTU, слайсы, тайлы и подизображения
Разбиение изображения на ГТЕ
Изображение разделено на последовательность единиц дерева кодирования (CTU). Термин CTU иногда используется взаимозаменяемо как CTB (блок дерева кодирования). Например, термин CTU совпадает с определением CTU в ITU-T H.265. Для изображения, которое имеет три массива выборок, CTU содержит блок N×N выборок яркости и два соответствующих блока выборок цветности. На фиг. 6 показан пример изображения, разделенного на CTU. Размер CTU может быть одинаковым, за исключением CTU, расположенных на границах изображения (где могут присутствовать неполные CTU).
Разбиение изображения на тайлы
В некоторых примерах, когда включены тайлы, изображение делится на прямоугольные группы CTU, разделенные вертикальными и/или горизонтальными границами. Вертикальные и горизонтальные границы тайла пересекают изображение сверху вниз и от левой границы изображения до правой границы изображения соответственно. Информация индикации, относящаяся к положению горизонтальных границ тайла и вертикальных границ тайла, кодируется в битовом потоке.
Фиг. 7 иллюстрирует разделение изображения на 9 тайлов. В этом примере границы тайла отмечены жирными пунктирными линиями. Порядок растрового сканирования CTU на основе тайлов с девятью тайлами разных размеров на изображении.
Когда имеется более 1 тайла, разделяющего изображение по вертикали, порядок сканирования CTU изменяется относительно порядка растрового сканирования CTU в изображении. ГТЕ сканируются по следующему правилу:
1. Тайлы сканируются слева направо и сверху вниз в порядке растрового сканирования, который называется порядком сканирования тайлов. Это означает, что, начиная с верхнего левого тайла, все тайлы в одной строке тайлов сканируются слева направо. Затем, начиная с первого тайла во второй строке тайлов (строка тайлов, которая находится на единицу ниже), все тайлы во второй строке тайлов сканируются слева направо. Процесс повторяется до тех пор, пока все тайлы не будут отсканированы.
2. Для тайла CTU в этом тайле сканируются в порядке растрового сканирования. Для каждой строки CTU CTU сканируются слева направо, а строки CTU сканируются сверху вниз. На фиг. 7 показан пример порядка сканирования CTU в тайлах, номера, соответствующие CTU, указывают порядок сканирования.
Тайл обеспечивает разделение изображения таким образом, что каждый тайл можно декодировать независимо от других тайлов того же изображения, при этом декодирование относится к энтропийному, остаточному и прогнозирующему декодированию. Кроме того, с помощью тайлов можно разделить изображение на области одинакового размера. Следовательно, можно обрабатывать тайлы изображения параллельно друг другу, что предпочтительно для многоядерных сред обработки, где каждое ядро обработки идентично друг другу.
Термины порядок обработки и порядок сканирования используются в приложении следующим образом:
Обработка относится к кодированию или декодированию CTU в кодере или декодере. Порядок сканирования относится к индексации конкретного раздела в изображении. CTU индексируются в порядке возрастания изображения в соответствии с заданным порядком сканирования. Порядок сканирования CTU в тайле означает, как индексируются CTU внутри тайла, что может не совпадать с порядком, в котором они обрабатываются (т. е. порядком обработки).
Разбиение изображения на слайсы
Концепция слайса обеспечивает разделение изображения таким образом, что каждый слайс можно декодировать независимо от других слайсов того же изображения, при этом декодирование относится к энтропийному, остаточному и прогнозирующему декодированию. Отличие от тайлов заключается в том, что слайсы могут иметь произвольную форму, не обязательно прямоугольную (более гибкая в возможностях разделения), и целью секционирования слайсов является не параллельная обработка, а сопоставление размеров пакетов в средах передачи и устойчивость к ошибкам.
Слайс может содержать полное изображение или часть изображения. В ITU-T H.265 слайс состоит из последовательных CTU изображения в порядке обработки. Слайс идентифицируется в соответствии с начальным адресом CTU, начальный адрес CTU сигнализируется в заголовке слайса, или в наборе параметров изображения, или в другом блоке. В примере слайс может быть идентифицирован в соответствии с начальным адресом тайла, когда требуется, чтобы слайсы содержали целое число тайлов.
В проекте 8 VVC слайс содержит целое число тайлов или целое число последовательных строк CTU в тайле изображения. Следовательно, вертикальная граница слайса также является вертикальной границей тайла. Возможно, что горизонтальная граница слайса не является границей тайла, горизонтальные границы CTU могут содержаться в тайле. В примере, когда тайл разделен на несколько прямоугольных слайсов, каждый слайс содержит целое число последовательных полных строк CTU в тайле.
В некоторых примерах существует два режима слайсов: режим слайсов растрового сканирования и режим прямоугольных слайсов. В режиме слайсов растрового сканирования слайс содержит последовательность тайлов в растровом сканировании тайлов изображения. В режиме прямоугольных слайсов слайс содержит некоторое число тайлов, которые в совокупности формируют прямоугольную область изображения, или слайс содержит некоторое число последовательных строк CTU одного тайла, которые вместе образуют прямоугольную область изображения. Тайлы внутри прямоугольного слайса сканируются в порядке растрового сканирования тайлов в пределах прямоугольной области, соответствующей этому слайсу.
Все слайсы изображения в совокупности образуют полное изображение, все CTU изображения содержатся в одном из слайсов изображения. Аналогичные правила применяются к тайлам и подизображениям.
Разбиение изображения на подизображения
Подизображение может быть прямоугольной частью изображения. Подизображение может быть целым изображением или частью изображения. Подизображение - это разделение изображения таким образом, что каждое подизображение можно декодировать независимо от других подизображений всей видеопоследовательности. В проекте 8 VVC, когда указание subpic_treated_as_pic_flag[i] является истинным (например, значение subpic_treated_as_pic_flag[i] равно 1) для подизображения i, подизображение i декодируется независимо от других подизображений всей видеопоследовательности.
Разница между подизображением и тайлами или слайсами заключается в том, что подизображения относятся к независимо декодируемой видеопоследовательности. Для тайлов и слайсов выполняется независимое декодирование в одном изображении видеопоследовательности.
В проекте 8 VVC подизображение содержит один или более слайсов, которые вместе покрывают прямоугольную область изображения. Следовательно, каждая граница подизображения всегда является границей слайса, а каждая вертикальная граница подизображения всегда является вертикальной границей тайла.
Фигура 8 иллюстрирует пример тайлов, слайсов и подизображений. На фиг. 8 показан пример изображения, содержащего 4 тайла (2 столбца тайлов и 2 строки тайлов), 4 прямоугольных слайса и 3 подизображения. Подизображение 2 содержит два слайса, подизображения 1 и 3 содержат по 1 слайсу. Подизображение 1 содержит 2 тайла, подизображение 2 и 3 содержат по 1 тайлу. Границы подизображения, слайса и тайла совпадают с границами CTU. В границах показаны с небольшим смещением друг к другу, чтобы сделать их различимыми.
В одном примере, показанном на фиг. 8, изображение разделено на 216 CTU, 4 тайла, 4 слайса и 3 подизображения. Значение sps_num_subpics_minus1 равно 2, а синтаксические элементы, связанные с позицией, имеют следующие значения:
Для подизображения 1
subpic_ctu_top_left_x[0], не сигнализируется, но выводится как 0;
subpic_ctu_top_left_y[0], не сигнализируется, но выводится как 0;
subpic_width_minus1[0], значение равно 8;
subpic_height_minus1[ 0 ] , значение равно 11.
Для подизображения 2
subpic_ctu_top_left_x[1], значение равно 9;
subpic_ctu_top_left_y[1], значение равно 0;
subpic_width_minus1[ 1 ], значение равно 8;
subpic_height_minus1[ 1 ] , значение равно 5.
Для подизображения 3
subpic_ctu_top_left_x[ 2 ], значение равно 9;
subpic_ctu_top_left_y[ 2 ], значение равно 6;
subpic_width_minus1[ 2 ], не сигнализируется, но выводится как 8;
subpic_height_minus1[ 2 ], не сигнализируется, но выводится как 5.
Сигнализация тайла
Следующая таблица иллюстрирует передачу сигналов о размерах тайлов и координатах тайлов в изображении, которые раскрыты в таблице синтаксиса RBSP набора параметров изображения в проекте 8 VVC.
Информация о разбиении (например, адрес тайла и размеры тайла) тайла обычно кодируется в наборе параметров. В приведенном выше примере значение индикации no_pic_partition_flag кодируется в битовом потоке, значение no_pic_partition_flag используется для указания того, разделено ли изображение на слайсы и тайлы или нет. Если значение no_pic_partition_flag равно true (означающее, что изображение не разделено на слайсы или тайлы), делается вывод, что изображение разделено только на один слайс и только один тайл, границы которого выровнены с границами изображения. В противном случае (no_pic_partition_flag имеет значение false) информация о разделении тайла кодируется в битовом потоке.
Значение синтаксического элемента tile_column_width_minus1[ i ] указывает ширину i-го столбца тайлов. Значение синтаксического элемента tile_row_height_minus1[i] указывает высоту i-й строки тайлов.
Высота строки тайлов и ширина столбца тайлов могут быть либо явно указаны в битовом потоке, либо могут быть выведены в соответствии с битовым потоком. Синтаксические элементы num_exp_tile_columns_minus1 и num_exp_tile_rows_minus1 указывают количество столбцов тайлов и строк тайлов соответственно, ширина и высота этих тайлов явно сигнализируется в битовом потоке. Ширина и высота других столбцов и строк тайлов выводятся в соответствии с функцией.
Индексация тайлов представляет собой «порядок сканирования тайлов на изображении». Тайлы в изображении упорядочены (отсканированы) в соответствии с порядком растрового сканирования, первый тайл, который находится в верхнем левом углу изображения, является 0-м тайлом, и индекс увеличивается слева направо в каждом строке тайлов и после сканируется последний тайл в строке тайлов, затем продолжается самый левый тайл следующей строки тайлов (на один ниже текущей строки тайлов).
CTU в тайле (порядок сканирования CTU в тайле) сканируются в порядке растрового сканирования.
Основанный на тайлах порядок сканирования CTU в изображении указывает, что порядок сканирования тайлов в изображении и порядок сканирования CTU в каждом тайле соблюдаются одновременно. Другими словами,
тайлы изображения сканируются в соответствии с порядком сканирования тайлов на изображении;
CTU одного тайла сканируются полностью перед любой из CTU другого тайла;
в каждом тайле CTU сканируются в порядке растрового сканирования (порядок сканирования CTU в тайле).
Сигнализация слайсов
Следующая таблица иллюстрирует передачу сигналов о размерах и координатах прямоугольных слайсов в изображении, которые раскрыты в таблице синтаксиса RBSP набора параметров изображения в проекте 8 VVC.
В проекте 8 VVC слайс содержит один или более полных тайлов, либо тайл содержит один или более полных слайсов. Поэтому координаты и размеры слайсов указываются относительно разбиения тайлов. В проекте 8 VVC разбиение тайла сигнализируется в наборе параметров изображения. Информация о разделении слайсов сигнализируется с использованием информации о отображении тайлов.
В приведенной выше таблице значение синтаксического элемента num_slices_in_pic_minus1 указывает количество слайсов в изображении. Значение синтаксического элемента Tile_idx_delta[i] указывает разницу между индексами тайлов первого тайла (i+1)-го слайса и i-го слайса. Например, индекс тайла первого тайла первого слайса изображения равен 0. Если индекс тайла первого тайла второго слайса равен 5, значение Tile_idx_delta[0] равно 5. В этом контексте индекс тайла может использоваться как адрес слайса, например, индекс первого тайла слайса является начальным адресом слайса.
Значение синтаксического элемента slice_width_in_tiles_minus1[i] указывает ширину i-го слайса изображения в количестве тайлов, а значение синтаксического элемента slice_height_in_tiles_minus1[i] указывает высоту i-го слайса изображения в количестве тайлов (в примере, как показано в проекте 8 VVC, slice_width_in_tiles_minus1[i] плюс 1 указывает ширину i- го прямоугольного слайса в единицах столбцов тайлов. slice_height_in_tiles_minus1[i] плюс 1 указывает высоту i-го прямоугольного слайса в единицах строк тайлов).
В приведенной выше таблице, если значение slice_width_in_tiles_minus1[i] и значение slice_height_in_tiles_minus1[i] равны 0 (указывая, что i-й слайс имеет размер не более одного тайла в высоту и одного тайла в ширину), значение синтаксического элемента num_exp_slices_in_tile[ i ] кодируется в битовом потоке. Значение синтаксического элемента num_exp_slices_in_tile[ i ] указывает количество слайсов в тайле.
В соответствии с проектом 8 VVC слайс может содержать несколько полных тайлов, или тайл может содержать несколько полных слайсов. Как показано в приведенной выше таблице синтаксиса, количество тайлов в слайсе указывается с помощью slice_width_in_tiles_minus1[i] и slice_height_in_tiles_minus1[i]. А если количество тайлов в слайсе равно 1, количество слайсов в тайле указывается как num_exp_slices_in_tile[ i ]. Таким образом, если значение slice_width_in_tiles_minus1[i] и значение slice_height_in_tiles_minus1[i] равны 1, размер слайса может быть равен или меньше размера тайла.
Синтаксический элемент single_slice_per_subpic_flag имеет значение true (например, значение single_slice_per_subpic_flag равно 1) указывает, что существует один и только один слайс для каждого подизображения для всех подизображений изображения (в этом случае подизображение не может быть разделено более чем на один слайс) .
В соответствии с одним альтернативным способом сигнализации начальные адреса слайсов и размеры слайсов указываются в проекте 8 VVC в соответствии со следующими этапами:
1. Сначала информация о разделении тайлов указывается в битовом потоке, где индекс (tileIdx) используется для индексирования тайлов в изображении (в соответствии с порядком сканирования тайлов в изображении). После этого этапа получаются значения индексов, координат и размеров каждого тайла.
2. Сигнализируется количество слайсов изображения. В одном примере количество слайсов может быть указано значением синтаксического элемента num_slices_in_pic_minus1.
3. Для первого слайса на изображении указаны ширина и высота слайса в количестве тайлов. Начальный адрес первого слайса явно не сигнализируется, и предполагается, что он равен tileIdx 0, первый тайл в изображении является первым тайлом в первом слайсе изображения.
4. Если размер первого слайса равен одному тайлу по ширине и одному тайлу по высоте, и, если в тайле имеется более одной строки CTU, сигнализируется значение синтаксического элемента num_exp_slices_in_tile[ 0 ], значение синтаксического элемента num_exp_slices_in_tile[0] указывает количество слайсов, которые содержатся в упомянутом тайле. Значение num_exp_slices_in_tile[ 0 ] может указывать количество слайсов в тайле, размеры которых явно указаны в битовом потоке, тогда как в указанном тайле могут быть слайсы, количество и размеры которых выводятся на основе размера тайла, а размеры слайсов, размеры которых явно указаны. Таким образом, общее количество слайсов в тайле может быть определено в соответствии с num_exp_slices_in_tile[ 0 ] и размером тайла. В одном примере количество слайсов в тайле может быть представлено параметром numSlicesInTile[0].
5. Для каждого от второго слайса до последнего слайса (включая второй слайс, но исключая последний слайс) на изображении явно указывается ширина и высота слайса в количестве тайлов. Начальный адрес слайса может быть явно указан значением синтаксического элемента tile_idx_delta[i], где i - индекс слайса. Если начальный адрес не сообщается явно (например, если слайсы передаются в порядке, позволяющем сделать вывод о начальном положении следующего слайса, используя начальное положение, ширину и высоту текущего слайса), то начальный адрес слайса выводится через функцию. Например, если слайсы сигнализируются в битовом потоке слева направо в изображении, если горизонтальная координата начального адреса слайса и ширина слайса известны, горизонтальная координата начальной координаты следующего слайс выводится как сумма ширины слайсов плюс начальный адрес слайса.
6. Если размер n-го слайса (n находится между 2 и значением слайсов на изображении минус 1, оба включительно) равен 1 тайлу в ширину и 1 тайлу в высоту, и, если в тайле больше 1 строки CTU который содержится в n-м слайсе, сигнализируется значение синтаксического элемента num_exp_slices_in_tile[n], значение синтаксического элемента num_exp_slices_in_tile[n] указывает количество слайсов, которые содержатся в упомянутом тайле.
7. Для последнего слайса в изображении ширина и высота слайсов явно не сигнализируются, а выводятся в соответствии с количеством тайлов в ширине изображения, количеством тайлов в высоте изображения и начальным адресом последнего слайса. Начальный адрес последнего слайса может быть явно указан или выведен. Вывод ширины и высоты последнего слайса изображения можно выполнить в соответствии со следующими двумя уравнениями, взятыми из раздела 6.5.1 документа проект 8 VVC.
slice_width_in_tiles_minus1[i]=NumTileColumns - 1 – tileX
slice_height_in_tiles_minus1[i]=NumTileRows - 1 - tileY
slice_width_in_tiles_minus1[ i ] плюс 1 задает ширину i-го прямоугольного слайса в единицах столбцов тайлов.
slice_height_in_tiles_minus1[ i ] plus 1 определяет высоту i-го прямоугольного слайса в единицах строк тайлов.
На приведенных выше этапах ширина и высота последнего слайса не сигнализируются, так как это можно сделать, если известен начальный адрес слайса.
Переменные tileX, tileY, NumTileColumns, NumTileRows в приведенном выше уравнении объясняются позже.
Раздел 6.5.1 проекта 8 VVC
6.5.1 Процессы растрового сканирования CTB, сканирования тайлов и сканирования подизображений
Для прямоугольных слайсов список NumCtusInSlice[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно с указанием количества CTU в i-м слайсе, список SliceTopLeftTileIdx[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно с указанием индекса верхнего левого тайла слайса и матрица CtbAddrInSlice[ i ][ j ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно и j в диапазоне от 0 до NumCtusInSlice[ i ] − 1 включительно, задающая адрес сканирования растра изображения сканирования j-го CTB в i-м слайсе, выводятся следующим образом:
Где функция AddCtbsToSlice( sliceIdx, startX, stopX, startY, stopY) указана следующим образом:
Приведенное выше описание сигнализации начальных адресов слайсов и размеров слайсов в изображении является одним из примеров, раскрытых в проекте 8 VVC. В частности, описание описывает случай, когда используются слайсы прямоугольной формы, количество слайсов в каждом подизображении не указано равным 1 (значение синтаксического элемента single_slice_per_subpic_flag не равно 1; когда значение синтаксического элемента single_slice_per_subpic_flag равно равно 1, каждое подизображение изображения состоит из одного и только одного слайса), в изображении присутствует более 1 тайла, и количество строк CTU в тайле больше 1. Если некоторые из указанных параметров изменены, могут использоваться другие режимы сигнализации начальных адресов слайсов и размеров слайсов. Например, если в каждом подизображении есть только 1 слайс, ширина и высота слайсов явно не сигнализируются в битовом потоке, а предполагаются равными соответствующей ширине и высоте подизображения соответственно.
Подпункт 6.5.1 проекта 8 VVC также раскрывает порядок сканирования CTU в слайсе i, где i - индекс слайса. Матрица CtbAddrInSlice[ i ][ n ], которая является выходными данными этого подпункта, определяет порядок сканирования CTU в слайсе i, где n - индекс CTU, который находится в диапазоне от 0 до числа CTU слайса i. Значение CtbAddrInSlice[ i ][ n ] указывает адрес n- й CTU в слайсе i.
Обычно порядок сканирования CTU в слайсе определяет порядок, в котором сканируются CTU слайса. Этапы, описанные выше в разделе 6.5.1 проекта 8 VVC, иллюстрируют пример того, как определяется порядок сканирования CTU в слайсе, например, как создается матрица CtbAddrInSlice[ i ][ n ].
Как раскрыто в проект 8 VVC, CtbAddrInSlice[ i ][ n ] (который определяет порядок сканирования CTU в слайсе i) также указывает порядок обработки CTU в слайсе. В частности, CTU изображения обрабатываются в следующем порядке:
Слайсы индексируются i и обрабатываются по возрастанию i, начиная с i, равного 0, до i, равного количеству слайсов на изображении минус 1. Каждая CTU n в слайсе i обрабатывается в возрастающем порядке, начиная с n, равного 0, до n, равного количеству CTU в слайсе i минус 1. Значение CtbAddrInSlice[ i ][ n ] указывает адрес n-й CTU в слайсе i.
Как раскрыто в проект 8 VVC, способ сигнализации используется для указания количества слайсов в каждом подизображении изображения. Значение single_slice_per_subpic_flag используется для указания того, содержат ли все подизображения один и только один слайс или нет. Если значение single_slice_per_subpic_flag равно 1, все подизображения изображения содержат один и только один слайс. В противном случае (значение single_slice_per_subpic_flag не равно 1) подизображение может содержать более 1 слайса.
На фиг. 9 в качестве примера показаны адреса CTU на изображении и один слайс (слайс 5, 5-й слайс на изображении). В соответствии с этим примером значения CtbAddrInSlice следующие:
CtbAddrInSlice[4][0]=27
CtbAddrInSlice[4][1]=28
CtbAddrInSlice[4][2]=29
CtbAddrInSlice[4][3]=30
CtbAddrInSlice[4][4]=37
CtbAddrInSlice[4][5]=38
CtbAddrInSlice[4][6]=39
CtbAddrInSlice[4][7]=40.
Порядок сканирования относится к индексации в соответствии с порядком увеличения индекса X в Y, например, порядок сканирования CTU в тайле, где X - это CTU, а Y - тайл.
Обработка означает декодирование или кодирование в кодере или декодере. Следовательно, порядок обработки означает порядок, в котором X (например, CTU) обрабатывается в кодере или декодере.
В проекте 8 VVC, когда в изображении содержится более одного тайла, слайс изображения сигнализируется следующим образом:
1. Значение синтаксического элемента (явное указание в битовом потоке или вывод из битового потока) используется для определения начального адреса тайла слайса в количестве тайлов.
2. Для каждого слайса, за исключением последнего слайса, сообщается количество тайлов, содержащихся в слайсе.
Если слайс содержит только 1 тайл, указывается количество слайсов, содержащихся в тайле.
3. Для последнего слайса изображения количество тайлов, содержащихся в слайсе, выводится, если слайс содержит по меньшей мере 1 полный тайл.
В проект 8 VVC, если размер последнего слайса в изображении больше или равен 1 тайлу (по ширине и высоте), то значение размера последнего слайса выводится из битового потока и не кодируется напрямую в битовый поток.
Как показано выше, значение slice_width_in_tiles_minus1[i] и значение slice_height_in_tiles_minus1[i] (которые указывают ширину и высоту i-го слайса в числе тайлов соответственно) кодируются в битовом потоке, если i меньше, чем num_slices_in_pic_minus1 (из-за цикла for «for(i=0; i < num_slices_in_pic_minus1; i++)»). Значение ширины и значение высоты слайса не сигнализируются, когда i равно num_slices_in_pic_minus1, например, для последнего слайса.
Вариант 1 осуществления
- Определение того, разделено ли изображение более чем на один тайл.
- Когда определено, что изображение разделено более чем на один тайл (например, когда условие NumTilesInPic > 1 истинно), получение количества тайлов по ширине изображения (например, количество тайлов в строке тайлов изображения), NumTileColumns.
- Получение количества строк тайлов по высоте изображения (например, количество тайлов в столбце тайлов), NumTileRows.
- Получение верхней левой координаты слайса в индексе тайла (SliceTopLeftTileIdx[ i ]). Значение индекса тайла задает значение индекса тайла в изображении, где тайлы упорядочены (индексированы) в порядке растрового сканирования в изображении.
- Получение горизонтальной координаты тайла по значению индекса тайла, указанному параметром tileX.
- Получение вертикальной координаты тайла по значению индекса тайла, указанному параметром tileY.
- Для каждого слайса в изображении значение индикации ширины слайса кодируется в битовом потоке, если значение разности между NumTileColumns и tileX больше, чем первое пороговое значение.
- Для каждого слайса в изображении значение индикации высоты слайса кодируется в битовом потоке, если значение разности между NumTileRows и tileY больше второго порогового значения.
Первый и второй пороговые значения могут быть целыми числами больше 0. В одном примере оба пороговых значения могут быть равны 1. Пороговые значения указывают пороговое значение размера в количестве тайлов вдоль горизонтального (первое пороговое значение) и вертикального (второе пороговое значение) направлений. Когда первое пороговое значение указывает, что пороговое значение размера равно 1 тайлу, указание ширины слайса включается в битовый поток, если разница между элементом tileX и числом тайлов в ширине изображения превышает 1 тайл. Следует отметить, что в зависимости от соглашения о начальном значении tileX (значение tileX для первого тайла в изображении) пороговое значение может отличаться. Например, если начальное значение tileX равно 0, то первое пороговое значение может быть равно 1. Если начальное значение tileX равно 1, то первое пороговое значение может быть равно 0.
В варианте осуществления значение ширины последнего слайса и значение высоты последнего слайса также не кодируются в битовом потоке, если последний слайс содержит по меньшей мере 1 полный тайл.
В варианте осуществления значение tileX получается в соответствии с операцией модуля и в соответствии со значением NumTileColumns. Например, tileX=tileIdx% NumTileColumns.
В варианте осуществления значение tileY получается в соответствии с операцией деления и в соответствии со значением NumTileRows. Например, tileY=tileIdx/ NumTileRows.
В варианте осуществления условие «больше порогового значения а» может быть реализовано как «не равно пороговому значению b». Также можно реализовать условие как «больше или равно пороговому значению с». Обычно пороговое значение a равно пороговому значению b, а третье пороговое значение c равно пороговому значению a+1.
Один из возможных вариантов осуществления изобретения изображен в таблице 3. Таблица 1, которая была частью проекта 8 VVC, изменена.
В таблице 3 строки с номерами 10 и 11 описывают, как получить tileX и tileY. Значение SliceTopLeftTileIdx[ i ] указывает значение индекса (индекса тайла) верхнего левого тайла в i-м слайсе. Значением индекса тайла является индекс тайла в изображении, где тайлы упорядочены на изображении в порядке растрового сканирования. Например, как показано на фиг. 7, тайл, содержащий CTU 0, имеет индекс тайла 0. Тайл, содержащий CTU 16, имеет индекс тайла 1, тайл, содержащий CTU 24, имеет индекс тайла 2, тайл, содержащий CTU 44, имеет индекс тайла 3, тайл, содержащий CTU 52, имеет индекс тайла 4, тайл, содержащий CTU 56, имеет индекс тайла 5, и так далее.
Значение tileX (горизонтальная координата тайла на изображении) и значение tileY (вертикальная координата тайла на изображении) получаются с помощью уравнений:
tileX=SliceTopLeftTileIdx[ i ] % NumTileColumns;
tileY=SliceTopLeftTileIdx[ i ] / NumTileColumns.
В варианте осуществления в строке 12 к другим условиям добавляется следующее условие «NumTileColumns - tileX > 1». Если условие не выполняется (NumTileColumns - tileX не больше 1), значение синтаксического элемента slice_width_in_tiles_minus1[i] не кодируется напрямую в битовом потоке. Следовательно, может быть достигнута экономия битовой скорости и, следовательно, эффективность сжатия.
Точно так же в строке 14 к другим условиям добавляется следующее условие «NumTileRows - tileY > 1». Если условие не выполняется (NumTileRows - tileY не больше 1), значение синтаксического элемента slice_height_in_tiles_minus1[] не кодируется напрямую в битовом потоке. Следовательно, может быть достигнута экономия битовой скорости и, следовательно, эффективность сжатия.
В примере пороговое значение равно 1, которое может быть разным в разных реализациях.
В одном варианте осуществления значения slice_width_in_tiles_minus1[i] и slice_height_in_tiles_minus1[i] выводятся, когда они отсутствуют в битовом потоке.
Ниже в качестве примера представлена реализация изобретения в разделе 6.5.1 проекта 8 VVC.
Согласно одному примеру, предполагается, что значения равны нулю. Например, это может быть реализовано в Разделе 6.5.1 проекта 8 VVC следующим образом:
В приведенных выше назначениях значения slice_width_in_tiles_minus1[i] устанавливаются равными 0, когда разница между NumTileColumns и tileX больше 1, что является тем же пороговым значением, которое определяет наличие slice_width_in_tiles_minus1[i] в битовом потоке. Другими словами, условие «NumTileColumns − tileX <= thr» определяет, присутствует ли в битовом потоке slice_width_in_tiles_minus1[i] или нет, и, когда slice_width_in_tiles_minus1[i] отсутствует в битовом потоке, выводится значение slice_width_in_tiles_minus1[i]. (установить равным 0). Аналогичное назначение выполняется для slice_height_in_tiles_minus1[i], когда slice_height_in_tiles_minus1[i] отсутствует в битовом потоке.
Условия «NumTileRows - tileY =< 1» и «NumTileColumns - tileX =< 1» в разделе 6.5.1 проекта 8 VVC ниже предназначены для проверки наличия slice_width_in_tiles_minus1[i] и slice_height_in_tiles_minus1[i] в битовом потоке. Они могут быть представлены и другими способами, ключевым моментом является то, что slice_width_in_tiles_minus1 и slice_height_in_tiles_minus1 отсутствуют в строках 13 и 15 таблицы 3 (условие определения присутствия в битовом потоке оценивается как ложное), тогда значения slice_width_in_tiles_minus1 и slice_height_in_tiles_minus1 должны быть выведены как 0.
Предполагается, что значение slice_height_in_tiles_minus1[ i ] равно нулю, что указывает на то, что высота слайса i равна 1 тайлу.
Когда значение slice_width_in_tiles_minus1[ i ] предполагается равным нулю, это указывает, что ширина слайса i равна 1 тайлу.
slice_height_in_tiles_minus1 и slice_width_in_tiles_minus1 - это синтаксические элементы, указывающие размер слайса в каждом направлении. Согласно вариантам осуществления изобретения, если синтаксический элемент, относящийся к ширине или высоте слайса в количестве тайлов, отсутствует в битовом потоке, предполагается, что ширина или высота слайса равна 1 тайлу.
Реализация изобретения в разделе 6.5.1 проекта 8 VVC
6.5.1 Процессы растрового сканирования CTB, сканирования тайлов и сканирования подизображений
Для прямоугольных слайсов список NumCtusInSlice[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно с указанием количества CTU в i-м слайсе, список SliceTopLeftTileIdx[ i ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно с указанием индекса верхнего левого тайла слайса и матрица CtbAddrInSlice[ i ][ j ] для i в диапазоне от 0 до num_slices_in_pic_minus1 включительно и j в диапазоне от 0 до NumCtusInSlice[ i ] − 1 включительно, задающая адрес сканирования растра изображения сканирования j-го CTB в i-м слайсе, выводятся следующим образом:
Где функция AddCtbsToSlice( sliceIdx, startX, stopX, startY, stopY) указана следующим образом:
Как показано на фиг. 13, раскрыт способ кодирования/декодирования, реализуемый устройством декодирования, включающий:
S1301: получение битового потока для текущего изображения.
Битовый поток может быть получен согласно беспроводной сети или проводной сети. Битовый поток может передаваться с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная связь, радио связь, микроволновая связь, WIFI, Bluetooth, LTE или 5G.
В варианте осуществления битовый поток представляет собой последовательность битов, например в форме потока единиц уровня сетевой абстракции (NAL) или байтового потока, который формирует представление последовательности единиц доступа (AU), формирующей одну или более кодируемых/декодируемых видеопоследовательностей (CVS).
В некоторых вариантах осуществления для процесса декодирования сторона декодера считывает битовый поток и получает декодированные изображения из битового потока; для процесса кодирования сторона кодера создает битовый поток.
Обычно битовый поток будет содержать синтаксические элементы, которые формируются синтаксической структурой. синтаксический элемент: Элемент данных, представленный в битовом потоке.
синтаксическая структура: ноль или более синтаксических элементов, присутствующих вместе в битовом потоке в определенном порядке.
В конкретном примере форматы битового потока специфицируют взаимосвязь между потоком единиц уровня сетевой абстракции (NAL) и байтовым потоком, каждый из которых называется битовым потоком.
Битовый поток может быть, например, в одном из двух форматов: в формате потока единиц NAL или в формате байтового потока. Формат потока единиц NAL концептуально является более «базовым» типом. Формат потока единиц NAL содержит последовательность синтаксических структур, называемых единицами NAL. Эта последовательность упорядочена в порядке декодирования. Существуют ограничения, налагаемые на порядок декодирования (и содержимое) единиц NAL в потоке единиц NAL.
Формат байтового потока может быть построен из формата потока единиц NAL путем упорядочивания единиц NAL в порядке декодирования и добавления к каждой единице NAL начального кодового префикса и нуля или более байтов с нулевым значением для формирования потока байтов. Формат потока единиц NAL может быть извлечен из формата байтового потока путем поиска местоположения уникального шаблона начального кодового префикса в пределах этого потока байтов.
В этом разделе описывается взаимосвязь между исходными и декодируемыми изображениями, которая определена через битовый поток.
Источник видео, который представлен битовым потоком, представляет собой последовательность изображений в порядке декодирования.
Каждое из исходных и декодированных изображений состоит из одного или более массивов выборок:
- Только яркость (Y) (монохромная).
- Яркость и две цветности (YCbCr или YCgCo).
- Зеленый, синий и красный (GBR, также известный как RGB).
- Массивы, представляющие другие неопределенные монохромные или трехцветные выборки цветов (например, YZX, также известные как XYZ).
Переменные и термины, ассоциированные с этими массивами, упоминаются как яркость (либо L, либо Y) и цветность, при этом два массива цветности упоминаются как Cb и Cr; независимо от фактического используемого способа представления цвета. Фактический используемый способ представления цвета может быть указан в синтаксисе, который задан в параметрах VUI как описано в ITU-T H.SEI | ISO/IEC 23002-7.
S1302: получение количества тайлов в строке тайлов текущего изображения.
Можно понять, что количество тайлов в строке тайлов равно количеству столбцов тайлов.
В примере количество тайлов в строке тайлов текущего изображения представлено в соответствии с переменной NumTileColumns, определяющей количество столбцов тайлов.
В примере количество тайлов в строке тайлов текущего изображения получается в соответствии с параметрами, закодированными в наборе параметров изображения битового потока. Количество тайлов в строке тайлов текущего изображения может быть получено в соответствии с параметром прямого синтаксического анализа в битовом потоке или получено в соответствии с получением значения из параметра.
S1303: получение значения адреса слайса текущего изображения.
В примере значение адреса слайса указывает адрес верхней левой координаты слайса в индексе тайла.
В примере адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
В примере значение адреса слайса представлено в соответствии с переменной SliceTopLeftTileIdx[i], «i» - это индекс слайса.
SliceTopLeftTileIdx[ i ] для i в диапазоне от 0 до pps_num_slices_in_pic_minus1 включительно, указывающий индекс тайла для тайла, содержащего первую CTU в слайсе. pps_num_slices_in_pic_minus1 плюс 1 задает количество прямоугольных слайсов в каждом изображении, относящееся к набору параметров изображения, PPS.
В примере значение адреса слайса получается в соответствии с параметром, закодированным в наборе параметров изображения битового потока. Количество тайлов в строке тайлов текущего изображения может быть получено в соответствии с параметром прямого синтаксического анализа в битовом потоке или получено в соответствии с получением значения из параметра.
S1304: получение значения tileX в соответствии со значением адреса слайса.
В примере получение значения tileX в соответствии со значением адреса слайса включает в себя: получение значения tileX в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В примере значение tileX получается в соответствии с операцией модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В примере tileX = SliceTopLeftTileIdx[i]%NumTileColumns.
В примере значение tileX указывает значение горизонтальной координаты.
S1305: синтаксический анализ значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
Первое пороговое значение представляет собой целочисленное значение, первое пороговое значение может быть 0, 1, 2…
В примере значение индикации ширины слайса представлено как pps_slice_width_in_tiles_minus1[i]. pps_slice_width_in_tiles_minus1[ i ] плюс 1 указывает ширину i-го прямоугольного слайса в единицах столбцов тайлов. Значение pps_slice_width_in_tiles_minus1[ i ] может находиться в диапазоне от 0 до NumTileColumns - 1 включительно. Если значение pps_slice_width_in_tiles_minus1[ i ] отсутствует, предполагается, что оно равно 0.
Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению» равно условию «когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения не равно первому пороговому значению». Следовательно, значение tileX сначала не вычисляется, а представляется в соответствии с результатом операции модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В соответствии с вариантами осуществления настоящего изобретения раскрыта схема сигнализации, только имеется по меньшей мере два столбца тайлов, после чего сигнализируется синтаксический элемент для ширины слайса. Следовательно, эффективность использования битового потока и эффективность декодирования были улучшены.
В примере, в котором способ дополнительно содержит: установку значения индикации ширины слайса на значение по умолчанию, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX равно первому пороговому значению. Значение по умолчанию представляет собой целочисленное значение, в примере значение по умолчанию может быть 0 или 1.
В примере, в котором значение по умолчанию указывает, что ширина слайса содержит 1 столбец тайлов.
В примере способ дополнительно содержит: получение количества тайлов в столбце тайлов текущего изображения; получение значения tileY в соответствии со значением адреса слайса; синтаксический анализ значения индикации для высоты слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению. Второе пороговое значение представляет собой целочисленное значение, второе пороговое значение может быть 0, 1, 2…
Можно понять, что количество тайлов в столбце тайлов означает то же самое, что и количество строк тайлов.
В примере количество тайлов в столбце тайлов текущего изображения представлено в соответствии с переменной NumTileRows. Переменная NumTileRows, указывающая номер строки тайлов.
В примере значение индикации для высоты слайса представлено в соответствии с pps_slice_height_in_tiles_minus1[i]. pps_slice_height_in_tiles_minus1[i] плюс 1 указывает высоту i-го прямоугольного слайса в единицах строк тайлов, когда pps_num_exp_slices_in_tile[i] равен 0. Значение pps_slice_height_in_tiles_minus1[ i ] должно находиться в диапазоне от 0 до NumTileRows - 1 включительно.
В примере способ дополнительно содержит: установку значения индикации для высоты слайса на предварительно установленное значение, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY равно второму пороговому значению.
В примере, в котором получение значения tileY в соответствии со значением адреса слайса включает в себя: получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
В одной реализации значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в столбце тайлов текущего изображения. Например, tileY=SliceTopLeftTileIdx[i]/NumTileColumns.
В примере значение tileY указывает значение вертикальной координаты. Можно понять, что в некоторых примерах условие «когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению» равноценно условию «когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением операции целочисленного деления между значением адреса слайса и количеством тайлов в столбце тайлов текущего изображения не равно второму пороговому значению». Следовательно, значение tileY сначала не вычисляется, а представляется в соответствии с результатом операции целочисленного деления между значением адреса слайса и количеством тайлов в столбце тайлов текущего изображения.
В примере таблица синтаксиса для вышеупомянутых вариантов осуществления
Как показано на фиг.14, раскрыто устройство 1400 декодирования видео, устройство 1400 содержит:
модуль 1401 получения, который выполнен с возможностью получения битового потока для текущего изображения; и модуль 1401 получения выполнен с возможностью получения количества тайлов в строке тайлов текущего изображения и получения значения адреса слайса текущего изображения;
модуль 1402 вычисления, который выполнен с возможностью получения значения tileX в соответствии со значением адреса слайса;
модуль 1403 синтаксического анализа, который выполнен с возможностью синтаксического анализа значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
Подробности для каждого модуля могут относиться к вариантам осуществления и реализациям в вышеупомянутых вариантах осуществления способа.
Преимущества изобретения
Фиг. 10 иллюстрирует разделение изображения на 96 CTU, 4 тайла и 8 слайсов.
В соответствии с решением, раскрытым в документе проект 8 VVC, следующие синтаксические элементы должны быть закодированы в битовом потоке в соответствии с таблицей 1.
- num_slices_in_pic_minus1, значение которого равно 0.
- tile_idx_delta_present_flag, значение которого равно 1
- для первого слайса (это означает, что индекс i равен 0)
- slice_width_in_tiles_minus1[ 0 ], значение которого равно 0
- slice_height_in_tiles_minus1[ 0 ], значение которого равно 0
- num_exp_slices_in_tile[ 0 ], значение которого равно 2
- exp_slice_height_in_ctus_minus1[ 0 ], значение которого равно 0, что указывает высоту первого слайса в количестве строк CTU.
- для второго слайса (i=1)
- exp_slice_height_in_ctus_minus1[ 1 ], значение которого равно 1,
- tile_idx_delta[ 1 ], значение которого равно 1.
- для третьего слайса (i=2)
- slice_width_in_tiles_minus1[ 2 ], значение которого равно 0
- slice_height_in_tiles_minus1[ 2 ], значение которого равно 0
- num_exp_slices_in_tile[ 2 ], значение которого равно 2
- exp_slice_height_in_ctus_minus1[ 2 ], значение которого равно 0
- для четвертого слайса (i=3)
exp_slice_height_in_ctus_minus1[ 3 ], значение которого равно 1,
- tile_idx_delta[ 3 ], значение которого равно 1.
- для пятого слайса (i=4)
- slice_width_in_tiles_minus1[ 4 ], значение которого равно 0
- slice_height_in_tiles_minus1[ 4 ], значение которого равно 0
- num_exp_slices_in_tile[ 4 ], значение которого равно 0
- tile_idx_delta[ 4 ], значение которого равно 1.
- для шестого слайса (i=5)
- slice_width_in_tiles_minus1[ 5 ], значение которого равно 0
- slice_height_in_tiles_minus1[ 5 ], значение которого равно 0
- num_exp_slices_in_tile[ 5 ], значение которого равно 3
- exp_slice_height_in_ctus_minus1[ 5 ], значение которого равно 1
- для седьмого слайса (i=6)
- exp_slice_height_in_ctus_minus1[ 6 ] значение которого равно 0,
- для восьмого слайса (i=7)
- exp_slice_height_in_ctus_minus1[ 7 ], значение которого равно 2,
Согласно варианту осуществления изобретения, как показано в таблице 3, следующие синтаксические элементы должны быть закодированы в битовом потоке, чтобы описать такое же разделение изображения на фиг. 10.
- num_slices_in_pic_minus1, значение которого равно 0.
- tile_idx_delta_present_flag, значение которого равно 1
- для первого слайса (это означает, что индекс i равен 0)
- slice_width_in_tiles_minus1[ 0 ], значение которого равно 0
- slice_height_in_tiles_minus1[ 0 ], значение которого равно 0
- num_exp_slices_in_tile[ 0 ], значение которого равно 2
- exp_slice_height_in_ctus_minus1[ 0 ], значение которого равно 0, что указывает высоту первого слайса в количестве строк CTU.
- для второго слайса (i=1)
- exp_slice_height_in_ctus_minus1[ 1 ], значение которого равно 1,
- tile_idx_delta[ 1 ], значение которого равно 1.
для третьего слайса (i=2)
- slice_height_in_tiles_minus1[ 2 ], значение которого равно 0
- num_exp_slices_in_tile[ 2 ], значение которого равно 2
- exp_slice_height_in_ctus_minus1[ 2 ], значение которого равно 0
- для четвертого слайса (i=3)
exp_slice_height_in_ctus_minus1[ 3 ], значение которого равно 1,
- tile_idx_delta[ 3 ], значение которого равно 1.
- для пятого слайса (i=4)
- slice_width_in_tiles_minus1[ 4 ], значение которого равно 0
- num_exp_slices_in_tile[ 4 ], значение которого равно 0
- tile_idx_delta[ 4 ], значение которого равно 1.
- для шестого слайса (i=5)
- num_exp_slices_in_tile[ 5 ], значение которого равно 3
- exp_slice_height_in_ctus_minus1[ 5 ], значение которого равно 1
- для седьмого слайса (i=6)
- exp_slice_height_in_ctus_minus1[ 6 ] значение которого равно 0,
- для восьмого слайса (i=7)
- exp_slice_height_in_ctus_minus1[ 7 ], значение которого равно 2,
Таким образом, следующие синтаксические элементы не нужно кодировать в битовом потоке:
- slice_width_in_tiles_minus1[ 2 ], значение которого равно 0
- slice_height_in_tiles_minus1[ 4 ], значение которого равно 0
- slice_width_in_tiles_minus1[ 5 ], значение которого равно 0
- slice_height_in_tiles_minus1[ 5 ], значение которого равно 0
Предполагается, что значения этих синтаксических элементов равны нулю в соответствии со следующими условиями, добавленными в раздел 6.5.1 проекта 8 VVC.
Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.
1. Способ кодирования/декодирования, реализуемый устройством декодирования, при этом способ содержит:
получение битового потока для текущего изображения (или кадра);
получение количества тайлов в строке тайлов текущего изображения (например, значение NumTileColumns);
получение значения адреса текущего слайса (например, SliceTopLeftTileIdx[i]), текущий слайс содержится в текущем изображении;
получение значения горизонтальной координаты (в примере под горизонтальной координатой понимается координата, расположенная на горизонтальной оси координат) (например, tileX) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
синтаксический анализ значения индикации ширины слайса (т. е. ширины слайса) из битового потока для текущего изображения (т. е. значение индикации ширины слайса закодировано в битовом потоке), когда значение разности между количеством тайлов в строке тайлов текущего изображения (например, значение NumTileColumns) и значением горизонтальной координаты (например, tileX) больше первого порогового значения (например, первое пороговое значение - целое число, может быть 0, 1,2… и т. д. ).
Пример 2. Способ примера 1, в котором способ дополнительно содержит:
установку значения индикации ширины слайса в значение по умолчанию (например, значение по умолчанию может быть равно 0), когда значение разности между количеством тайлов в строке тайлов текущего изображения (например, значение NumTileColumns) и значением горизонтальной координаты (например, tileX) меньше или равно первому пороговому значению.
Пример 3. Способ из примера 2, в котором значение по умолчанию указывает, что ширина текущего слайса содержит 1 столбец тайлов.
Пример 4. Способ по любому из примеров 1-3, в котором получение значения горизонтальной координаты в соответствии со значением адреса текущего слайса содержит:
получение значения горизонтальной координаты по значению адреса текущего слайса и количеству тайлов в строке тайлов текущего изображения.
Пример 5. Способ по любому из примеров 1-4, в котором адрес текущего слайса представляет собой индекс самого левого тайла самой верхней строки тайлов текущего слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
Пример 6. Способ по примеру 4 или 5, в котором значение горизонтальной координаты получаются в соответствии с операцией модуля между значением адреса текущего слайса и количеством тайлов в строке тайлов текущего изображения (например, SliceTopLeftTileIdx[ i ])%NumTileColumns).
Пример 7. Способ по любому из примеров с 1 по 6, в котором значение адреса текущего слайса (например, SliceTopLeftTileIdx[i]) указывает адрес верхней левой координаты текущего слайса в индексе тайла.
Пример 8. Способ по любому из примеров 1-7, в котором способ дополнительно содержит:
получение количества тайлов в столбце тайлов текущего изображения (например, значение NumTileRows);
получение значения вертикальной координаты (в примере под вертикальной координатой понимается координата, расположенная на вертикальной оси координат) (например, tileY) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
синтаксический анализ значения индикации для высоты слайса (т. е. высоты слайса) из битового потока для текущего изображения (т. е. значение индикации для высоты слайса закодировано в битовом потоке), когда значение разности между количеством тайлов в столбце тайлов текущего изображения (например, значение NumTileRows) и значением вертикальной координаты (например, tileY) больше второго порогового значения (например, второе пороговое значение представляет собой целое число, может быть 0, 1,2… и т. д. ).
Пример 9. Способ по примеру 8, в котором способ дополнительно содержит:
установку значения индикации для высоты слайса на предварительно установленное значение (например, предварительно установленное значение может быть равно 0), когда значение разности между количеством тайлов в столбце тайлов текущего изображения (например, значение NumTileRows) и значением вертикальной координаты (например, tileY) меньше или равно второму пороговому значению.
Пример 10. Способ по примеру 8 или 9, в котором получение значения вертикальной координаты в соответствии со значением адреса текущего слайса содержит:
получение значения вертикальной координаты по значению адреса текущего слайса и количеству тайлов в столбце тайлов текущего изображения.
Пример 11. Способ по примеру 10, в котором значение вертикальной координаты получаются в соответствии с операцией целочисленного деления между значением адреса текущего слайса и количеством тайлов в столбце тайлов текущего изображения (например, SliceTopLeftTileIdx[i] )/NumTileRows).
Пример 12. Способ кодирования/декодирования, реализуемый устройством декодирования, при этом способ содержит:
получение битового потока для текущего изображения (или кадра);
получение количества тайлов в столбце тайлов текущего изображения (например, значение NumTileRows);
получение значения адреса текущего слайса (например, SliceTopLeftTileIdx[i]), текущий слайс содержится в текущем изображении;
получение значения вертикальной координаты (в примере под вертикальной координатой понимается координата, расположенная на вертикальной оси координат) (например, tileY) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
синтаксический анализ значения индикации для высоты слайса (т. е. высоты слайса) из битового потока для текущего изображения (т. е. значение индикации для высоты слайса закодировано в битовом потоке), когда значение разности между количеством тайлов в столбце тайлов текущего изображения (например, значение NumTileRows) и значением вертикальной координаты (например, tileY) больше второго порогового значения (например, второе пороговое значение представляет собой целое число, может быть 0, 1,2… и т. д. ).
Пример 13. Способ примера 12, в котором способ дополнительно содержит:
установку значения индикации для высоты слайса на предварительно установленное значение (например, предварительно установленное значение может быть равно 0), когда значение разности между количеством тайлов в столбце тайлов текущего изображения (например, значение NumTileRows) и значением вертикальной координаты (например, tileY) меньше или равно второму пороговому значению.
Пример 14. Способ примера 13, в котором
значение по умолчанию указывает, что высота текущего слайса составляет 1 строку тайлов.
Пример 15. Способ по любому из примеров с 12 по 14, в котором получение значения вертикальной координаты в соответствии со значением адреса текущего слайса содержит:
получение значения вертикальной координаты по значению адреса текущего слайса и количеству тайлов в столбце тайлов текущего изображения.
Пример 16. Способ по любому из примеров 12-15, в котором адрес текущего слайса представляет собой индекс самого левого тайла самой верхней строки тайлов текущего слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
Пример 17. Способ по примеру 15 или 16, в котором значение вертикальной координаты получаются в соответствии с операцией целочисленного деления между значением адреса текущего слайса и количеством тайлов в столбце тайлов текущего изображения (например, SliceTopLeftTileIdx[ i ])/NumTileRows).
Пример 18. Способ по любому из примеров с 12 по 17, в котором значение адреса текущего слайса (например, SliceTopLeftTileIdx[i]) указывает адрес верхней левой координаты текущего слайса в индексе тайла.
Пример 19. Способ по любому из примеров с 12 по 18, в котором способ дополнительно содержит:
получение количества тайлов в строке тайлов текущего изображения (например, значение NumTileColumns);
получение значения горизонтальной координаты (в примере под горизонтальной координатой понимается координата, расположенная на горизонтальной оси координат) (например, tileX) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
синтаксический анализ значения индикации ширины слайса (т. е. ширины слайса) из битового потока для текущего изображения (т. е. значение индикации ширины слайса закодировано в битовом потоке), когда значение разности между количеством тайлов в строке тайлов текущего изображения (например, значение NumTileColumns) и значением горизонтальной координаты (например, tileX) больше первого порогового значения (например, первое пороговое значение - целое число, может быть 0, 1,2… и т. д. ).
Пример 20. Способ по примеру 19, в котором способ дополнительно содержит:
установку значения индикации ширины слайса в значение по умолчанию (например, значение по умолчанию может быть равно 0), когда значение разности между количеством тайлов в строке тайлов текущего изображения (например, значение NumTileColumns) и значением горизонтальной координаты (например, tileX) меньше или равно первому пороговому значению.
Пример 21. Способ по примеру 19 или 20, в котором получение значения горизонтальной координаты в соответствии со значением адреса текущего слайса содержит:
получение значения горизонтальной координаты по значению адреса текущего слайса и количеству тайлов в строке тайлов текущего изображения.
Пример 22. Способ по примеру 21, в котором значение горизонтальной координаты получаются в соответствии с операцией модуля между значением адреса текущего слайса и количеством тайлов в строке тайлов текущего изображения (например, SliceTopLeftTileIdx[i]) % NumTileColumns).
Пример 23. Способ кодирования/декодирования, реализуемый устройством кодирования, при этом способ содержит:
получение количества тайлов в строке тайлов текущего изображения (например, значение NumTileColumns);
получение значения адреса текущего слайса (например, SliceTopLeftTileIdx[i]), текущий слайс содержится в текущем изображении;
получение значения горизонтальной координаты (в примере под горизонтальной координатой понимается координата, расположенная на горизонтальной оси координат) (например, tileX) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
кодирование значения индикации ширины слайса (т. е. ширины слайса) для текущего изображения (т. е. значение индикации ширины слайса закодировано в битовом потоке) для получения битового потока, когда значение разности между количеством тайлов в строке тайлов текущего изображения (например, значение NumTileColumns) и значением горизонтальной координаты (например, tileX) больше первого порогового значения (например, первое пороговое значение представляет собой целое число, может быть 0, 1,2… и т. д. на).
Пример 24. Способ примера 23, в котором способ дополнительно содержит:
получение количества тайлов в столбце тайлов текущего изображения (например, значение NumTileRows);
получение значения вертикальной координаты (в примере под вертикальной координатой понимается координата, расположенная на вертикальной оси координат) (например, tileY) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
кодирование значения индикации для высоты слайса (т. е. высоты слайса) для текущего изображения (т. е. значение индикации для высоты слайса кодируется в битовом потоке) для получения битового потока, когда значение разности между количеством тайлов в столбце тайлов текущего изображения (например, значение NumTileRows) и значением вертикальной координаты (например, tileY) больше второго порогового значения (например, второе пороговое значение представляет собой целое число, может быть 0, 1,2… и т. д. на).
Пример 25. Способ кодирования/декодирования, реализуемый устройством кодирования, при этом способ содержит:
получение количества тайлов в столбце тайлов текущего изображения (например, значение NumTileRows);
получение значения адреса текущего слайса (например, SliceTopLeftTileIdx[i]), текущий слайс содержится в текущем изображении;
получение значения вертикальной координаты (в примере под вертикальной координатой понимается координата, расположенная на вертикальной оси координат) (например, tileY) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
кодирование значения индикации для высоты слайса (т. е. высоты слайса) для текущего изображения (т. е. значение индикации для высоты слайса кодируется в битовом потоке) для получения битового потока, когда значение разности между количеством тайлов в столбце тайлов текущего изображения (например, значение NumTileRows) и значением вертикальной координаты (например, tileY) больше второго порогового значения (например, второе пороговое значение представляет собой целое число, может быть 0, 1,2… и т. д. на).
Пример 26. Способ по примеру 25, в котором способ дополнительно содержит:
получение количества тайлов в строке тайлов текущего изображения (например, значение NumTileColumns);
получение значения горизонтальной координаты (в примере под горизонтальной координатой понимается координата, расположенная на горизонтальной оси координат) (например, tileX) по значению адреса текущего слайса (например, SliceTopLeftTileIdx[i]);
кодирование значения индикации ширины слайса (т. е. ширины слайса) для текущего изображения (т. е. значение индикации ширины слайса закодировано в битовом потоке) для получения битового потока, когда значение разности между количеством тайлов в строке тайлов текущего изображения (например, значение NumTileColumns) и значением горизонтальной координаты (например, tileX) больше первого порогового значения (например, первое пороговое значение представляет собой целое число, может быть 0, 1,2… и т. д. на).
Пример 27. Декодер (30), содержащий схему обработки для выполнения способа по любому из примеров с 1 по 22.
Пример 28. Кодер, содержащий схему обработки для осуществления способа согласно любому из примеров 23-26.
Пример 29. Компьютерный программный продукт, содержащий программный код для выполнения способа по любому из предшествующих примеров, когда он исполняется на компьютере или процессоре.
Пример 30. Декодер, содержащий:
один или более процессоров; и
не-кратковременный считываемый компьютером запоминающий носитель, связанный с упомянутыми процессорами и хранящий программную часть для исполнения упомянутыми процессорами, при этом программная часть, когда исполняется упомянутыми процессорами, конфигурирует декодер для выполнения способа по любому из предшествующих примеров.
Пример 31. Кодер, содержащий:
один или более процессоров; и
не-кратковременный считываемый компьютером запоминающий носитель, связанный с упомянутыми процессорами и хранящий программную часть для исполнения упомянутыми процессорами, при этом программная часть, когда исполняется упомянутыми процессорами, конфигурирует декодер для выполнения способа по любому из предшествующих примеров.
Пример 32. Не-кратковременный считываемый компьютером носитель, несущий программный код, который при исполнении компьютерным устройством, побуждает компьютерное устройство к выполнению способа по любому из предшествующих примеров.
Фиг. 8 является блок-схемой, показывающей систему 3100 доставки контента для реализации услуги распространения контента. Данная система 3100 доставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.
Устройство 3102 захвата формирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может передавать данные на сервер потоковой передачи (не показан на фигурах), а сервер кодирует эти данные и передает кодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет кодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106 по отдельности.
В системе 3100 доставки контента терминальное устройство 3106 принимает и воспроизводит кодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR) / цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда кодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.
Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования изображения или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
Фиг. 9 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.
После того, как блок 3202 обработки протокола обработает поток, формируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.
Посредством обработки демультиплексирования формируются элементарный поток (ES) видео, ES аудио и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует ES видео с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для формирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для формирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на фиг. 9) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на фиг. 9) перед его подачей в блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования изображения, либо устройство декодирования изображения в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.
Математические операторы
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т. д.
Арифметические операторы
Следующие арифметические операторы определены следующим образом:
Логические операторы
Следующие логические операторы определены следующим образом:
Операторы отношения
Следующие операторы отношения определены следующим образом:
Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение «na» (not applicable, не применимо), значение «na» обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение «na» не считается равным любому другому значению.
Битовые операторы
Следующие побитовые операторы определены следующим образом:
& - Побитовое «и». При работе над целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
| - Побитовое «или». При работе над целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
^ - При работе над целочисленными аргументами оперирует над представлением дополнения до двух целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0.
x >> y - Арифметический сдвиг вправо целочисленного представления дополнения до двух x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига.
x << y - Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие значающие биты (LSB) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Следующие арифметические операторы определены следующим образом:
Обозначение диапазона
Следующее обозначение используется для специфицирования диапазона значений:
x=y..z - x принимает целочисленные значения от y до z включительно, где x, y и z являются целыми числами, а z больше y.
Математические функции
Определены следующие математические функции:
Abs(x)=
Asin(x) - тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан
Atan(x) - тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан
Atan2(y, x)=
Ceil(x) - наименьшее целое число, которое больше или равно x.
Clip1Y(x)=Clip3( 0, ( 1 << BitDepthY ) − 1, x )
Clip1C(x)=Clip3( 0, ( 1 << BitDepthC ) − 1, x )
Clip3(x, y, z)=
Cos(x) - тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан.
Floor(x) наибольшее целое число, меньшее или равное x.
GetCurrMsb(a, b, c, d)=
Ln(x) - натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма, равная 2,718 281 828...).
Log2(x) - логарифм x по основанию 2
Log10(x) - логарифм x по основанию 10.
Min(x, y)=
Max(x, y)=
Round( x )=Sign( x ) * Floor( Abs( x ) + 0,5)
Sign(x)=
Sin(x) - тригонометрическая функция синуса, работающая с аргументом x в единицах радиан.
Sqrt(x)=
Swap(x, y)=(y, x)
Tan(x) - тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан.
Порядок приоритетности операций
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
-- Операции с более высоким приоритетом выполняются перед любой операцией с более низким приоритетом.
-- Операции с одинаковым приоритетом выполняются последовательно слева направо.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.
Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до низшей (в нижней части таблицы)
Текстовое описание логических операций
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
if( условие 0 )
определение 0
else if( условие 1 )
определение 1
...
else /* информативный комментарий по оставшемуся условию */
определение n
может быть описано следующим образом:
... как указано ниже / ... применяется следующее:
- Если условие 0, определение 0
- Иначе, Если условие 1, определение 1
- ...
-- Иначе (информативный комментарий по оставшемуся условию), определение n.
Каждое определение "если ... Иначе, если ... Иначе, ..." в тексте вводится словами "... как указано ниже" или "...применяется следующее", за которым сразу следует "если ...". Последним условием "если ... Иначе, если ... Иначе, ..." всегда является "Иначе, ...". Чередование определений "если ... Иначе, если ... Иначе, ..." могут быть идентифицированы путем сопоставления "... как указано ниже" или "... применяется следующее" с завершающим "Иначе, ...".
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
if( условие 0a && условие 0b )
определение 0
else if( условие 1a | | условие 1b )
определение 1
...
else
определение n
может быть описано следующим образом:
... как указано ниже / ... применяется следующее:
-- Если все из следующих условий выполняются, определение 0:
- условие 0a
- условие 0b
-- Иначе, если истинными являются одно или более из следующих условий, определение 1:
- условие 1a
- условие 1b
- ...
- Иначе, определение n
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
if( условие 0 )
определение 0
if( условие 1 )
определение 1
может быть описано следующим образом:
Когда условие 0, определение 0
Когда условие 1, определение 1.
Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования/декодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования/декодирования неподвижного изображения, т.е. обработки или кодирования/декодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при кодировании/декодировании видео. В общем, только блоки 244 межкадрового предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование/декодирование для обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (также называемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижного изображения, например, вычисление остатка 204/304, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, разделение 262/362, внутрикадровое предсказание 254/354 и/или контурная фильтрация 220, 320, энтропийное кодирование 270 и энтропийное декодирование 304.
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. При реализации в программном обеспечении, функции могут храниться на считываемом компьютером носителе данных или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером запоминающим носителям, которые являются не-кратковременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель данных.
В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель данных, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемым компьютером носителем данных. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на не-кратковременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.
Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах функциональные возможности, описанные в данном документе, могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования, или включены в комбинированный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе таких как беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.
Изобретение относится к области обработки изображения и, более конкретно, к сигнализации информации разделения изображения для слайсов. Техническим результатом является улучшение степени сжатия с минимальными потерями качества изображения или вообще без таких потерь. Предложен способ кодирования/декодирования, реализуемый устройством декодирования и декодером, при этом способ включает: получение битового потока для текущего изображения; получение количества тайлов в строке тайлов текущего изображения; получение значения адреса текущего слайса, текущий слайс содержится в текущем изображении; получение значения tileX согласно значению адреса текущего слайса; синтаксический анализ значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению. 15 н. и 24 з.п. ф-лы, 15 ил.
1. Способ декодирования, реализуемый устройством декодирования, при этом способ содержит:
получение битового потока для текущего изображения;
получение количества тайлов в строке тайлов текущего изображения;
получение значения адреса слайса текущего изображения;
получение значения tileX в соответствии со значением адреса слайса, при этом значение tileX указывает горизонтальный адрес в индексе тайла;
синтаксический анализ значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
2. Способ по п. 1, при этом способ дополнительно содержит:
установку значения индикации ширины слайса на значение по умолчанию, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX равно первому пороговому значению.
3. Способ по п. 2, в котором значение по умолчанию указывает, что ширина слайса содержит 1 столбец тайлов.
4. Способ по любому из пп. 1-3, в котором получение значения tileX в соответствии со значением адреса слайса содержит:
получение значения tileX в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
5. Способ по любому из пп. 1-4, в котором значение tileX получается в соответствии с операцией модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
6. Способ по любому из пп. 1-5, в котором адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
7. Способ по любому из пп. 1-6, в котором значение адреса слайса указывает адрес верхней левой координаты слайса в индексе тайла.
8. Способ по любому из пп. 1-7, при этом способ дополнительно содержит:
получение количества тайлов в столбце тайлов текущего изображения;
получение значения tileY в соответствии со значением адреса слайса, при этом значение tileY указывает вертикальный адрес в индексе тайла;
синтаксический анализ значения индикации для высоты слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
9. Способ по п. 8, при этом способ дополнительно содержит:
установку значения индикации для высоты слайса на предварительно установленное значение, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY равно второму пороговому значению.
10. Способ по п. 8 или 9, в котором получение значения tileY в соответствии со значением адреса слайса содержит:
получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
11. Способ по любому из пп. 8-10, в котором значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
12. Способ декодирования, реализуемый устройством декодирования, при этом способ содержит:
получение битового потока для текущего изображения;
получение количества тайлов в столбце тайлов текущего изображения;
получение значения адреса слайса текущего изображения;
получение значения tileY в соответствии со значением адреса слайса, при этом значение tileY указывает вертикальный адрес в индексе тайла;
синтаксический анализ значения индикации для высоты слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
13. Способ по п. 12, при этом способ дополнительно содержит:
установку значения индикации для высоты слайса на предварительно установленное значение, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY равно второму пороговому значению.
14. Способ по п. 13, в котором значение по умолчанию указывает, что высота слайса составляет 1 строку тайлов.
15. Способ по любому из пп. 12-14, в котором получение значения tileY в соответствии со значением адреса слайса содержит:
получение количества тайлов в строке тайлов текущего изображения;
получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
16. Способ по п. 15, в котором значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
17. Способ по любому из пп. 12-16, в котором адрес слайса представляет собой индекс самого левого тайла самой верхней строки тайлов слайса, при этом тайлы, содержащиеся в текущем изображении, индексируются в соответствии с порядком растрового сканирования.
18. Способ по любому из пп. 12-17, в котором значение адреса слайса указывает адрес верхней левой координаты слайса в индексе тайла.
19. Способ кодирования, реализуемый устройством кодирования, при этом способ содержит:
получение количества тайлов в строке тайлов текущего изображения;
получение значения адреса слайса текущего изображения;
получение значения tileX в соответствии со значением адреса слайса, при этом значение tileX указывает горизонтальный адрес в индексе тайла;
кодирование значения индикации ширины слайса для текущего изображения для получения битового потока, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
20. Способ по п. 19, при этом способ дополнительно содержит:
получение количества тайлов в столбце тайлов текущего изображения;
получение значения tileY в соответствии со значением адреса слайса, при этом значение tileY указывает вертикальный адрес в индексе тайла; кодирование значения индикации для высоты слайса для текущего изображения в битовый поток, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
21. Способ по п. 19 или 20, в котором получение значения tileX в соответствии со значением адреса слайса содержит:
получение значения tileX в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
22. Способ по любому из пп. 19-21, в котором значение tileX получается в соответствии с операцией модуля между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
23. Способ по п. 20 или 22, в котором получение значения tileY в соответствии со значением адреса слайса содержит:
получение значения tileY в соответствии со значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
24. Способ по любому из пп. 20-23, в котором значение tileY получается в соответствии с операцией целочисленного деления между значением адреса слайса и количеством тайлов в строке тайлов текущего изображения.
25. Способ кодирования, реализуемый устройством кодирования, при этом способ содержит:
получение количества тайлов в столбце тайлов текущего изображения;
получение значения адреса слайса текущего изображения;
получение значения tileY в соответствии со значением адреса слайса, при этом значение tileY указывает вертикальный адрес в индексе тайла;
кодирование значения индикации для высоты слайса для текущего изображения для получения битового потока, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
26. Декодер, содержащий схему обработки, выполненную с возможностью выполнения способа по любому из пп. 1-18.
27. Кодер, содержащий схему обработки, выполненную с возможностью осуществления способа по любому из пп. 19-25.
28. Декодер, содержащий:
один или более процессоров; и
не-кратковременный считываемый компьютером носитель, связанный с упомянутыми процессорами и хранящий программную часть для исполнения упомянутыми процессорами, при этом программная часть, когда исполняется упомянутыми процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-18.
29. Кодер, содержащий:
один или более процессоров; и
не-кратковременный считываемый компьютером носитель, связанный с упомянутыми процессорами и хранящий программную часть для исполнения упомянутыми процессорами, при этом программная часть, когда исполняется упомянутыми процессорами, конфигурирует декодер для выполнения способа по любому из пп. 19-25.
30. Не-кратковременный считываемый компьютером носитель, содержащий программный код, который при выполнении компьютерным устройством предписывает компьютерному устройству выполнять способ по любому из пп. 1-18.
31. Устройство декодирования видеоданных, содержащее:
не-кратковременное запоминающее устройство, выполненное с возможностью хранения видеоданных в форме битового потока; и
видеодекодер, выполненный с возможностью осуществления любого из способов по пп. 1-18.
32. Устройство кодирования видеоданных, содержащее:
не-кратковременную память, выполненную с возможностью хранения видеоданных в форме битового потока; и
видеокодер, выполненный с возможностью выполнения любого из способов по пп. 19-25.
33. Устройство декодирования видео, содержащее:
модуль получения, выполненный с возможностью получения битового потока для текущего изображения;
при этом модуль получения дополнительно выполнен с возможностью получения количества тайлов в строке тайлов текущего изображения и получения значения адреса слайса текущего изображения;
модуль вычисления, который выполнен с возможностью получения значения tileX в соответствии со значением адреса слайса;
модуль синтаксического анализа, который выполнен с возможностью выполнения синтаксического анализа значения индикации ширины слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
34. Устройство декодирования видео по п. 33, в котором модуль получения, модуль вычисления и модуль синтаксического анализа дополнительно выполнены с возможностью выполнения способа по любому из пп. 1-11.
35. Устройство декодирования видео, содержащее:
модуль получения, выполненный с возможностью получения битового потока для текущего изображения;
при этом модуль получения дополнительно выполнен с возможностью получения количества тайлов в столбце тайлов текущего изображения и получения значения адреса слайса текущего изображения;
модуль вычисления, выполненный с возможностью получения значения tileY в соответствии со значением адреса слайса;
модуль синтаксического анализа, который выполнен с возможностью выполнения синтаксического анализа значения индикации высоты слайса из битового потока для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
36. Устройство декодирования видео по п. 35, в котором модуль получения, модуль вычисления и модуль синтаксического анализа дополнительно выполнены с возможностью выполнения способа по любому из пп. 13-18.
37. Устройство кодирования видео, содержащее:
модуль получения, выполненный с возможностью получения количества тайлов в строке тайлов текущего изображения; при этом модуль получения дополнительно выполнен с возможностью получения значения адреса слайса текущего изображения;
модуль вычисления, выполненный с возможностью получения значения tileX в соответствии со значением адреса слайса;
модуль кодирования, выполненный с возможностью кодирования значения индикации ширины слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в строке тайлов текущего изображения и значением tileX не равно первому пороговому значению.
38. Устройство кодирования видео по п. 37, в котором модуль получения, модуль вычисления и модуль кодирования дополнительно выполнены с возможностью выполнения способа по любому из пп. 20-24.
39. Устройство кодирования видео, содержащее:
модуль получения, выполненный с возможностью получения количества тайлов в столбце тайлов текущего изображения;
при этом модуль получения дополнительно выполнен с возможностью получения значения адреса слайса текущего изображения;
модуль вычисления, выполненный с возможностью получения значения tileY в соответствии со значением адреса слайса;
модуль кодирования, выполненный с возможностью кодирования значения индикации высоты слайса в битовый поток для текущего изображения, когда значение разности между количеством тайлов в столбце тайлов текущего изображения и значением tileY не равно второму пороговому значению.
BROSS B | |||
et al., Versatile Video Coding (Draft 8), Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-Q2001-vС, 17th Meeting: Brussels, 7-17 January 2020 | |||
BAE-KEUN LEE AND DONGSAN JUN, AHG12: Singalling of rectangular slices, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, |
Авторы
Даты
2025-01-22—Публикация
2021-02-20—Подача