СПОСОБ И УСТРОЙСТВО ДЛЯ ЭФФЕКТИВНОЙ СИГНАЛИЗАЦИИ ИНФОРМАЦИИ О РАЗМЕРЕ И РАЗБИЕНИИ ИЗОБРАЖЕНИЯ В БИТОВОМ ПОТОКЕ ВИДЕО
METHOD AND APPARATUS FOR EFFECTIVE SIGNALLING OF SIZE AND PARTITIONING INFORMATION OF AN IMAGE IN A VIDEO BITSTREAM

Перекрестные ссылки на связанные заявки
[0001] Настоящая заявка ссылается на приоритет предварительной заявки на патент США №62/907344, зарегистрированной 27 сентября 2019 года, и заявки на патент США №17/026967, зарегистрированной 21 сентября 2020 года, при этом обе упомянутые заявки полностью включены в настоящий документ путем ссылки.
Предпосылки создания изобретения
1. Область техники
[0002] Способы и устройства, соответствующие вариантам осуществления настоящего изобретения, относятся к видеокодированию, а именно к способу и устройству для эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео.
2. Описание существующего уровня техники
[0003] При блочном гибридном видеокодировании каждое изображение разбивают на блоки отсчетов, при этом множество блоков в изображении объединяют в слайсы, которые являются независимо декодируемыми элементами. При блочном видеокодировании каждое изображение может быть разбито на несколько блоков, которые могут называться пакетами кодового дерева (coding tree units, CTU), пакетами кодирования (coding units, CU) и/или блоками кодирования (coding blocks, CB).
[0004] На фиг.1 показан пример структуры разбиения, применяемой в стандарте высокоэффективного видеокодирования (High Efficiency Video Coding, HEVC). В HEVC применяют структуру разбиения на кодовые блоки в форме квадродерева, что позволяет гибко применять как малые, так и крупные блоки кодирования, предсказания и преобразования.
[0005] В универсальном видеокодировании (Versatile Video Coding, VVC) периодически сигнализируют, в наборах параметров, набор синтаксических элементов, определяющих размер изображения, информацию о разбиении на подизображения, информацию о разбиении на тайлы, информацию о разбиении на прямоугольные слайсы и смещения окна соответствия (conformance window).
Сущность изобретения
[0006] В соответствии с вариантами осуществления настоящего изобретения способ эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео выполняют при помощи по меньшей мере одного процессора, при этом способ включает получение, из набора параметров последовательности (sequence parameter set, SPS), на который ссылается кодированное изображение, флага, указывающего, включена ли в этот SPS информация о размере и разбиении изображения для упомянутого кодированного изображения, и определение, указывает ли полученный флаг на то, что информация о размере и разбиении изображения включена в упомянутый SPS. Способ дополнительно включает, если определено, что упомянутый флаг указывает на то, что информация о размере и разбиении изображения включена в упомянутый SPS, получение, из этого SPS, информации о размере и разбиении изображения, а если определено, что флаг указывает на то, что информация о размере и разбиении изображения не включена в упомянутый SPS, получение, из набора параметров видео (video parameter set, VPS), информации о размере и разбиении изображения, включенной в VPS.
[0007] Устройство для эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео включает по меньшей мере одну память, сконфигурированную для хранения компьютерного программного кода, и по меньшей мере один процессор, сконфигурированный для доступа к упомянутой по меньшей мере одной памяти и для выполнения операций в соответствии с компьютерным программным кодом. Компьютерный программный код включает первый код получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, из набора параметров последовательности (SPS), на который ссылается кодированное изображение, флага, указывающего, включена ли в этот SPS информация о размере и разбиении изображения для упомянутого кодированного изображения, и первый код определения, сконфигурированный для обеспечения определения, упомянутым по меньшей мере одним процессором, указывает ли полученный флаг на то, что информация о размере и разбиении изображения включена в упомянутый SPS. Компьютерный программный код дополнительно включает второй код получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, если определено, что флаг указывает на то, что информация о размере и разбиении изображения включена в упомянутый SPS, из этого SPS, информации о размере и разбиении изображения, и третий код получения, сконфигурированный для получения, упомянутым по меньшей мере одним процессором, если определено, что флаг указывает на то, что информация о размере и разбиении изображения не включена в упомянутый SPS, из набора параметров видео (VPS), информации о размере и разбиении изображения, включенной в VPS.
[0008] Машиночитаемый носитель, на котором хранят инструкции, обеспечивающие получение, упомянутым по меньшей мере одним процессором, из набора параметров последовательности (SPS), на который ссылается кодированное изображение, флага, указывающего, включена ли в этот SPS информация о размере и разбиении изображения для упомянутого кодированного изображения, и определение, указывает ли полученный флаг на то, что информация о размере и разбиении изображения включена в упомянутый SPS. Упомянутые инструкции дополнительно обеспечивают получение, упомянутым по меньшей мере одним процессором, если определено, что флаг указывает на то, что информация о размере и разбиении изображения включена в упомянутый SPS, из этого SPS, информации о размере и разбиении изображения, а если определено, что флаг указывает на то, что информация о размере и разбиении изображения не включена в упомянутый SPS, получение, из набора параметров видео (VPS), информации о размере и разбиении изображения, включенной в VPS.
Краткое описание чертежей
[0009] Фиг. 1 иллюстрирует структуру разбиения в стандарте HEVC.
[0010] На фиг. 2 показана упрощенная блок-схема системы связи в соответствии с вариантами осуществления настоящего изобретения.
[0011] На фиг. 3 показана блок-схема размещения видеокодера и видеодекодера в окружении потоковой передачи, в соответствии с вариантами осуществления настоящего изобретения.
[0012] На фиг. 4 показана функциональная блок-схема видеодекодера в соответствии с вариантами осуществления настоящего изобретения.
[0013] На фиг. 5 показана функциональная блок-схема видеокодера в соответствии с вариантами осуществления настоящего изобретения.
[0014] На фиг. 6 показана блок-схема алгоритма, иллюстрирующая способ эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео, в соответствии с вариантами осуществления настоящего изобретения.
[0015] На фиг. 7 показана блок-схема алгоритма, иллюстрирующая способ эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео, в соответствии с вариантами осуществления настоящего изобретения.
[0016] На фиг. 8 показана упрощенная блок-схема устройства для эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео, в соответствии с вариантами осуществления настоящего изобретения.
[0017] На фиг. 9 показана блок-схема компьютерной системы, подходящей для реализации вариантов осуществления настоящего изобретения.
Подробное описание изобретения
[0018] На фиг. 2 показана упрощенная блок-схема системы (200) связи в соответствии с вариантами осуществления настоящего изобретения. Система (200) связи может включать по меньшей мере два терминала (210-220), связанных друг с другом сетью (250). При однонаправленной передаче данных первый терминал (210) может кодировать видеоданные локально для передачи во второй терминал (220) по сети (250). Второй терминал (220) может принимать кодированные видеоданные от первого терминала из сети (250), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных широко применяется в приложениях медиасервисов и аналогичных приложениях.
[0019] На фиг. 2 проиллюстрирована вторая пара терминалов (230, 240), сконфигурированных для поддержки двунаправленной передачи кодированного видео, которая может требоваться, например, при видеоконференцсвязи. При двунаправленной передаче данных оба терминала (230, 240) могут кодировать локально захватываемые видеоданные для передачи в другой терминал по сети (250). Оба терминала (230, 240) могут также принимать кодированные видеоданные, переданные другим терминалом, могут декодировать кодированные данные и отображать восстановленные видеоданные на локальном дисплейном устройстве.
[0020] В примере фиг. 2 терминалы (210 240) могут быть серверами, персональными компьютерами или смартфонами, однако без ограничения ими замысла настоящего изобретения. Варианты осуществления настоящего изобретения могут применяться в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (250) может представлять собой любое количество сетей, передающих кодированные видеоданные между терминалами (210-240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи может обеспечивать обмен данными по линиям связи с коммутацией каналов и/или коммутацией пакетов. Примерами таких сетей могут быть телекоммуникационные сети, локальные вычислительные сети, глобальные вычислительные сети и/или Интернет. В настоящем описании архитектура и топология сети (250) не играют никакой роли в функционировании вариантов осуществления настоящего изобретения, если на это явно не указано.
[0021] На фиг. 3 показана блок-схема размещения видеокодера и видеодекодера в окружении потоковой передачи, в соответствии с вариантами осуществления настоящего изобретения. Предложенное изобретение может применяться с равной эффективностью и в других областях, где используется видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранения сжатого видео на цифровых носителях, включая CD, DVD, карты памяти и т.п.
[0022] Система потоковой передачи может включать подсистему (313) захвата, которая может включать источник (301) видео, например, видеокамеру, которая формирует поток (302) несжатых отсчетов. Поток (302) отсчетов, показанный жирной линией, чтобы подчеркнуть больший объем данных по сравнению с кодированными видеопотоками, может обрабатываться кодером (303), связанным с камерой (301). Кодер (303) может включать аппаратное обеспечение, программное обеспечение, или их комбинацию, которые позволяют реализовать аспекты предложенного изобретения, в соответствии с последующим более подробным описанием. Битовый поток (304) кодированного видео, показанной тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с несжатым потоком видеоотсчетов, может сохраняться на сервере (305) потоковой передачи для последующего использования. Один или более клиентов (306, 308) потоковой передачи могут осуществлять доступ к серверу (305) потоковой передачи для получения копий (307, 309) битового потока (304) кодированного видео. Клиентское устройство (306) может включать видеодекодер (310), который декодирует принятую копию битового потока (307) кодированного видео и формировать выходной поток (311) видеотсчетов, который может отображаться на дисплее (312) или другом устройстве отображения (не показано на чертеже). В некоторых системах потоковой передачи битовые видеопотоки (304, 307, 309) могут быть кодированы в соответствии с заданными стандартами видеокодирования/видеосжатия. Примером таких стандартов может быть Рекомендация Н.265. ITU-T. В настоящее время ведется разработка стандарта видеокодирования, который неформально называют «универсальным видеокодированием» (Versatile Video Coding, VVC). Описанное в данном документе изобретение может применяться в контексте стандарта VVC.
[0023] На фиг. 4 показана функциональная блок-схема видеодекодера (310) в соответствии с вариантами осуществления настоящего изобретения.
[0024] Приемник (410) может принимать одну или более кодированных видеопоследовательностей для декодирования при помощи декодера (310). В этом же варианте осуществления или в альтернативных вариантах осуществления настоящего изобретения прием видеопоследовательностей может выполняться поочередно, при этом декодирование каждой из кодированных видеопоследовательностей не зависит от декодирования остальных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (412), который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Приемник (410) может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться в соответствующие использующие их элементы (не показано на чертеже). Приемник (410) может отделять кодированную видеопоследовательность от остальных данных. Для борьбы с сетевым «дрожанием» (джиттером) между приемником (410) и энтропийным декодером/анализатором (420) (далее, «анализатор») может быть установлена буферная память (415). Когда приемник (410) принимает данные из устройства хранения или передачи с достаточной полосой пропускания и управляемостью, или из сети с изосинхронной передачей, буфер (415) может не применяться или иметь малый объем. В случае применения пакетных сетей с негарантированной доставкой, таких как Интернет, буфер (415) необходим, он может быть сравнительно объемным и, предпочтительно, иметь при этом адаптивный размер.
[0025] Видеодекодер (310) может иметь в своем составе анализатор (420) для восстановления символов (421) из энтропийно-кодированной видеопоследовательности. Типы этих символов могут включать, например, информацию, используемую для управления работой декодера(310), а также, возможно, информацию для управления устройством отображения, такого как дисплей(312), который может быть связан с декодером, но не являться его неотъемлемой частью, как это показано на фиг.4. Управляющая информация для устройств отображения может, например, иметь форму сообщений дополнительной уточняющей информации (Supplementary Enhancement Information, SEI) или фрагментов наборов параметров информации об используемости видео (Video Usability Information, VUI) (не показано на чертеже). Анализатор (420) может выполнять анализ/энтропийное декодирование принятой кодированной видеопоследовательности. Кодированная видеопоследовательность может быть закодирована в соответствии с некоторой технологией или стандартом видеокодирования, и может следовать принципам, хорошо известным специалистам в данной области техники, включая кодирование с переменной длиной кодового слова, кодирование Хаффмана, контекстно-зависимое или контекстно-независимое арифметическое кодирование и т.п.Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной подгруппы пикселей в видеодекодере, на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (Groups of Pictures, GOP), изображения, тайлы, слайсы, макроблоки, кодовые пакеты (Coding Units, CU), блоки отсчетов (blocks), пакеты преобразования (Transform Units, TU), пакеты предсказания (Prediction Units, PU) и т.п.Анализатор может также извлекать из кодированной видеопоследовательности такую информацию, как коэффициенты преобразования, значения параметров квантователя (quantizer parameter, QP), векторы движения и т.п.
[0026] Анализатор (420) может выполнять операции энтропийного декодирования/анализа над видеопоследовательностью, принятой из буфера (415), и формировать символы(421). Анализатор (420) может принимать кодированные данные и избирательно декодировать некоторые из символов (421). Также, анализатор (420) может определять, должны ли некоторые из символов (421) быть переданы в блок (453) предсказания с компенсацией движения, блок (451) масштабирования / обратного преобразования, блок (452) внутреннего предсказания или в контурный фильтр (454).
[0027] При восстановлении символов (421) могут задействоваться различные блоки устройства, в зависимости от типа кодированных видеоизображений или их частей (например, внутренне и внешне предсказываемые изображения, внутренне и внешне предсказываемые блоки отсчетов), а также от других факторов. То, какие блоки устройства будут задействованы, и каким образом, может определяться управляющей информацией подгруппы, извлеченной из кодированной видеопоследовательности анализатором (420). Для простоты поток такой управляющей информации подгруппы между анализатором (420) и множеством описанных ниже блоков устройства на чертеже не показан.
[0028] Помимо уже упомянутых функциональных блоков декодер (310) может быть концептуально подразбит на набор описанных ниже функциональных блоков. В практических реализациях, применяемых в коммерческих условиях, многие из этих блоков плотно взаимодействуют друг с другом и могут быть, по меньшей мере частично, взаимно интегрированы. Однако в целях описания предложенного изобретения подходит описанное ниже подразделение на функциональные блоки.
[0029] Первым из таких блоков может быть блок (451) масштабирования/обратного преобразования. Блок (451) масштабирования/обратного преобразования принимает квантованные коэффициенты преобразования, а также управляющую информацию, включая информацию о том, какое преобразование следует использовать, размер блока отсчетов, коэффициент квантования, масштабирующие матрицы квантования и т.п., в виде символов (421) из анализатора (420). Он выдает блоки отсчетов, включающие значения отсчетов, которые могут быть введены в агрегатор (455).
[0030] В некоторых случаях отсчеты на выходе из блока (451) масштабирования / обратного преобразования могут относиться к типу внутренне кодированных блоков отсчетов; то есть, блоков отсчетов, для которых не используют информацию предсказания из ранее восстановленных изображений, но могут использовать информацию из ранее восстановленных частей текущего изображения. Такая информация предсказания может предоставляться блоком (452) внутреннего предсказания изображений. В некоторых случаях блок (452) внутреннего предсказания изображений может формировать блоки отсчетов тех же размеров и формы, что и восстанавливаемый блок отсчетов, с использованием уже восстановленной информации его окружения, полученной из текущего (частично восстановленного) изображения в памяти (456) текущих изображений. Агрегатор (455) может в некоторых случаях добавлять информацию предсказания, сформированную блоком (452) внутреннего предсказания, к выходной информации отсчетов, предоставляемой блоком (451) масштабирования/обратного преобразования, индивидуально для каждого отсчета.
[0031] В других случаях отсчеты на выходе блока (451) масштабирования/обратного преобразования могут относиться к внешнему предсказанию, и потенциально, блоку отсчетов с компенсацией движения. В таких случаях блок (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений и получать отсчеты, используемые для предсказания. После компенсации движения полученные отсчеты, в соответствии с символами(421), относящимися к этому блоку отсчетов, могут быть добавлены агрегатором (455) к выходным данным блока масштабирования/обратного преобразования (в этом случае их называют разностными отсчетами или разностным сигналом), в результате чего формируют выходную информацию отсчетов. Адреса в памяти опорных изображений, по которым блок предсказания с компенсацией движения получает предсказанные отсчеты, могут определяться векторами движения, доступными для блока предсказания с компенсацией движения в форме символов (421), которые могут иметь, например, Х-компоненту, Y-компоненту и компоненту опорного изображения. Компенсация движения может также включать интерполяцию значений отсчетов, полученных из памяти опорных изображений, когда применяют векторы движения, механизмы предсказания векторов движения и т.п., имеющие субпиксельную точность.
[0032] Отсчеты на выходе из агрегатора (455) могут обрабатываться при помощи различных методов контурной фильтрации в блоке (454) контурной фильтрации. Технологии сжатия видео могут включать технологии внутриконтурной фильтрации, которые управляются параметрами, содержащимися в кодированном битовом видеопотоке, и предоставляемыми в блок (454) контурной фильтрации в виде символов (421) из анализатора (420). Они могут также зависеть от метаинформации, полученной при декодировании предшествующих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также от ранее восстановленных и прошедших контурную фильтрацию значений отсчетов.
[0033] Выходными данными блока (454) контурной фильтрации может быть поток отсчетов, который подают в устройство (312) отображения, а также сохраняют в памяти (456) опорных изображений для использования при будущем внешнем предсказании изображений.
[0034] Отдельные кодированные изображения, после их полного восстановления могут использоваться в качестве опорных для будущего предсказания. После полного восстановления кодированного изображения, и если оно было определено как опорное (например, анализатором (420)), текущее опорное изображение (456) может быть помещено в буфер (457) опорных изображений, и перед началом восстановления следующего кодированного изображения может быть выделена новая память текущих изображений.
[0035] Видеодекодер (310) может выполнять операции декодирования в соответствии с заранее заданной технологий сжатия видео, которая может быть задокументирована в стандарте, например, Рекомендации Н.265 ITU-T. Кодированная видеопоследовательность может удовлетворять синтаксису, заданному применяемой технологией или стандартом сжатия видео, в том смысле, что она удовлетворяет синтаксису, заданному в документе, или стандарте, технологии сжатия видео, и в частности, синтаксису специфицированных профилей стандарта. При этом, чтобы отвечать некоторым из технологий или стандартов сжатия видео, сложность кодированной видеопоследовательности должна быть в пределах ограничений, определяемых уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни стандарта ограничивают максимальный размер изображения, максимальную частоту смены кадров, максимальную частоту восстановления отсчетов (измеряемую, например, в миллионах отсчетов за секунду), максимальный размер опорного изображения и т.п.Накладываемые уровнями ограничения в некоторых случаях могут быть дополнительно лимитированы при помощи спецификаций гипотетического опорного декодера (Hypothetical Reference Decoder, HRD) и метаданных для управления буфером HRD-декодера, сигнализируемых в кодированной видеопоследовательности.
[0036] В вариантах осуществления настоящего изобретения приемник (410) может вместе с кодированным видео принимать дополнительные (избыточные) данные. Эти дополнительные данные могут быть составной частью кодированной видеопоследовательности (или видеопоследовательностей). Дополнительные данные могут использоваться видеодекодером (310) для корректного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут иметь форму, например, уточняющих временных, пространственных или уровней уточнения отношения сигнал/шум (signal noise ratio, SNR), избыточных слайсов, избыточных изображений, кодов упреждающей коррекции ошибок и т.п.
[0037] На фиг. 5 показана функциональная блок-схема видеокодера (303) в соответствии с вариантами осуществления настоящего изобретения.
[0038] Кодер (303) может принимать видеоотсчеты из источника (301) видео (который не является частью кодера), захватывающего видеоизображения для кодирования при помощи кодера (303).
[0039] Источник (301) видео может подавать исходную видеопоследовательность для кодирования видеокодером (303) в форме цифрового потока видеоотсчетов, имеющих любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе медиасервиса источник (301) видео может быть запоминающим устройством, на котором хранят заранее подготовленное видео. В системе видеоконференцсвязи источник (301) видео может быть видеокамерой, которая захватывает информацию изображений локально в форме видеопоследовательности. Видеоданные могут иметь форму множества отдельных изображений, которые передают ощущение движения при их последовательном просмотре. Сами изображения могут быть организованы в виде пространственной матрицы пикселей, где каждый пиксель может включать один или более отсчетов, в зависимости от применяемой структуры отсчетов, цветового пространства и т.п. Специалистам в данной области техники должно быть очевидна связь между пикселями и отсчетами. Далее в настоящем описании будут рассматриваться отсчеты.
[0040] В соответствии вариантами осуществления настоящего изобретения видеокодер (303) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени, или в соответствии с другими временными ограничениями, накладываемыми практическим применением. Одной из функций контроллера (550) может быть обеспечение подходящей скорости кодирования. Контроллер управляет остальными функциональными блоками, описанными ниже, и быть функционально связан с этими блоками. Эта связь для простоты на чертеже не показана. Параметры, задаваемые контроллером, могут включать параметры, связанные с управлением скоростью (пропуск изображений, квантователь, значение λ для методов оптимизации скорость-искажения, …), размером изображений, компоновкой групп изображений (GOP), максимальным диапазоном поиска векторов движения и т.п.Специалистам в данной области техники должны быть очевидны и другие функции контроллера (550), поскольку они могут соответствовать видеокодеру (303), оптимизированному для конструкции конкретной системы.
[0041] Некоторые из видеокодеров работают в конфигурации, которая знакома специалистам в данной области техники под названием «петля кодирования». Крайне упрощенно, петля кодирования может состоять из подсистемы кодирования в кодере (530) (далее «кодер источника»), отвечающей за формирование символов на основе входных кодируемых изображений, а также опорных изображений, и (локального) декодера (533), встроенного в кодер (303) и восстанавливающего символы, с формированием данных отсчетов, которые бы идентичным образом формировал (удаленный) декодер (поскольку сжатие символов в кодированный битовый видеопоток является сжатием без потерь, в технологиях сжатия видео, рассматриваемых в настоящем изобретении). Этот восстановленный поток отсчетов вводят в память (534) опорных изображений. Поскольку декодирование потока символов дает результатом одинаковые с точностью до бита результаты, независимо от декодера (локального или удаленного), содержимое буфера опорных изображений также одинаково с точностью до бита в локальном кодере и удаленном кодере. Другими словами, подсистема предсказания в кодере «видит» в качестве отсчетов опорных изображений в точности те же значения отсчетов, которые «увидит» декодер, используя предсказание при декодировании. Этот фундаментальный принцип синхронности опорных изображений (и результирующий дрейф, если синхронность не может быть обеспечена, например, из-за ошибок в канале) должен быть хорошо известен специалистам в данной области техники.
[0042] Работа «локального» декодера (533) по существу идентична «удаленному» декодеру (310), которая уже была подробно описана выше в связи с фиг. 4. Однако, возвращаясь к фиг. 4, поскольку символы доступны, а кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может выполняться без потерь, в локальном декодере (533) могут не быть в полной мере реализованы подсистемы энтропийного декодирования из состава декодера (310), включая канал (412), приемник (410), буфер (415) и анализатор (420).
[0043] Здесь можно заметить, что любая технология декодирования, помимо анализа/энтропийного декодирования, имеющаяся в декодере, должна присутствовать в по существу идентичной функциональной форме в соответствующем кодере. Описание технологий кодирования может быть опущено, поскольку они могут быть обратными подробно описанным технологиям декодирования. Лишь в некоторых местах необходимо более подробное описание, и оно будет приведено ниже.
[0044] В числе своих операций кодер (530) источника может выполнять кодирование с предсказанием на основе компенсации движения, при котором входные кадры кодируют с предсказанием на основе одного или более ранее кодированных кадров видеопоследовательности, которые были помечены как «опорные кадры». Таким образом, машина (532) кодирования кодирует разности между блоками пикселей во входном кадре и блоками пикселей в опорном кадре (или кадрах), которые могут быть выбраны как опорные для предсказания входного кадра.
[0045] Локальный видеодекодер (533) может декодировать кодированные видеоданные кадров, помеченные как опорные, в зависимости от символов, формируемых кодером (530) источника. Операции машины (532) кодирования, предпочтительно, являются обработкой данных с потерями. Когда кодированные видеоданные декодируют в видеодекодере (не показан на фиг.4), восстановленная видеопоследовательность, как правило, является репликой исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) в точности воспроизводит процесс декодирования, который мог бы выполняться удаленным видеодекодером, над опорными кадрами и помещает восстановленные опорные кадры в кэш (534) опорных изображений. Таким образом, кодер (303) может локально хранить копии восстановленных опорных кадров, содержимое которых совпадает с восстановленными опорными кадрами, получаемыми удаленным видеодекодером (при отсутствии ошибок передачи).
[0046] Предсказатель (535) может выполнять поиск предсказаний для машины (532) кодирования. То есть, для нового кодируемого кадра предсказатель (535) может выполнять поиск в памяти (534) опорных изображений, чтобы найти данные отсчетов (в качестве кандидатных опорных блоков пикселей), или метаданных, например, векторы движений опорных изображений, формы блоков и т.п., которые могут служить опорными для новых изображений. Предсказатель (535), может находить подходящие опорные данные для каждого отдельного блока пикселей. В некоторых случаях, в зависимости от результатов поиска, полученных предсказателем (535), опорные данные для предсказания входного изображения могут извлекаться из нескольких опорных изображений, хранимых в памяти (534) опорных изображений.
[0047] Контроллер (550) может управлять операциями кодирования в видеокодере (530), включая, например, задание параметров и параметров подгрупп, используемых для кодирования видеоданных.
[0048] Выходные данные всех описанных выше функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер преобразует символы, формируемые различными функциональными блоками, в кодированную видеопоследовательность при помощи сжатия этих символов, без потерь, в соответствии с технологиями, известными специалистами в данной области техники, например, кодированием Хаффмана, кодированием с переменной длиной кодового слова, арифметическим кодированием и т.п.
[0049] Передатчик (540) может буферизовать кодированную видеопоследовательность (или видеопоследовательности), формируемую энтропийным кодером (545), чтобы подготовить ее к передаче по каналу (560), связи, который может представлять собой аппаратную и/или программную линию связи с запоминающим устройством, где хранят кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (530) с другими передаваемыми данными, например, потоками кодированных аудиоданных и/или служебных данных (их источники не показаны на чертеже).
[0050] Контроллер (550) может управлять работой кодера (303). При кодировании контроллер (550) может присваивать каждому кодированному изображению некоторый тип кодированного изображения, который может влиять на применяемые к нему методы кодирования. Например, изображениям может быть присвоен один из описанных ниже типов кадров.
[0051] Внутренне предсказываемым изображением (1-изображением) может быть изображение, которое кодируют и декодируют без использования, в качестве источника для предсказания, каких-либо других кадров видеопоследовательности. Некоторые видеокодеки поддерживают различные типы внутренне предсказываемых изображений, например, изображения независимого обновления декодирования (Independent Decoder Refresh, IDR). Специалисты в данной области техники должны быть осведомлены о подобных вариантах I-изображений, а также об их свойствах и применимости.
[0052] Предсказываемое изображение (Р-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум одного вектора движения и указателя на опорное изображение для предсказания значений отсчетов каждого блока отсчетов.
[0053] Двунаправленно предсказываемое изображение (В-изображение) - это изображение, которое может кодироваться и декодироваться при помощи внутреннего или внешнего предсказания с использованием максимум двух векторов движения и указателей на опорное изображение для предсказания значений отсчетов каждого блока отсчетов. Аналогично, в случае множественно предсказываемых изображений могут применяться более чем два опорных изображения и соответствующих метаданных, чтобы восстановить один блок отсчетов.
[0054] Исходные изображения обычно пространственно разбивают на множество блоков отсчетов (например, блоки размера 4x4, 8x8, 4x8 или 16x16 отсчетов в каждом) и кодируют поблочно. Блоки отсчетов могут кодироваться с предсказанием на основе других (уже кодированных) блоков, в зависимости от типов кодирования, назначенных соответствующим этим блоками изображениям. К примеру, блоки отсчетов в I-изображениях могут кодироваться без предсказания или с предсказанием на основе уже закодированных блоков того же изображения («пространственное предсказание» или «внутреннее предсказание»). Блоки пикселей в Р-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного ранее кодированного опорного изображения. Блоки отсчетов в В-изображениях могут кодироваться без предсказания, с помощью пространственного предсказания или с помощью временного предсказания на основе одного или двух ранее кодированных опорных изображений.
[0055] Видеокодер (203) может выполнять операции кодирования в соответствии с заранее заданной технологией или стандартом видеокодирования, которые могут быть задокументированы в стандарте, например, в Рекомендации Н.265 ITU-T. При своем функционировании видеокодер (303) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, использующие временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, соответственно, могут удовлетворять синтаксису, заданному применяемой технологией или стандартом видеокодирования.
[0056] В вариантах осуществления настоящего изобретения передатчик (540) может, совместно с кодированным видео, передавать дополнительные данные. Видеокодер (530), например, может предоставлять такие данные, как фрагмент кодированной видеопоследовательности. Дополнительные данные могут включать данные уточняющих временных, пространственных или SNR-уровней, избыточных изображений или слайсов, сообщений дополнительной уточняющей информации (SEI) или фрагментов наборов параметров информации об используемости видео (VUI) и т.п.
[0057] Для достижения оптимальной, в отношении битового объема, сигнализации и предварительного сообщения информации о размере и разбиении изображения, в вариантах осуществления настоящего изобретения, рассмотренных в данном документе, введен иерархический механизм сигнализации информации о размере и разбиении изображения. В наборе параметров видео (VPS) перечисляют все кандидатные значения информации о размере и разбиении изображения, pic_size_partitioning_info(), которые могут присутствовать в любом уровне кодированных видеопоследовательностей (coded video sequences, CVS), ссылающихся на данный VPS. В наборе параметров последовательности (SPS) перечисляют указатели (индексы), отсылающие к кандидатам в наборе VPS и к дополнительным кандидатам в информации о размере и разбиении изображения, pic_size_partitioning_info(), ссылка на которую может выполняться при помощи указателя (индекса) в наборе параметров изображения (picture parameter set, PPS), ссылающегося на SPS. В PPS сигнализируют указатель (индекс), отсылающий к информации о размере и разбиении изображения, pic_size_partitioning_info(), приведенной в наборе SPS, на который ссылается данный PPS. При необходимости в PPS некоторые фрагменты информации о размере и разбиении изображения, pic sizejtartitioning info(), могут быть обновлены. Соответствующий текст спецификации приведен ниже.
[0058] VPS определен в приведенной ниже таблице 1.
[0059] Параметр vps_num_pic_size_partitioning_info_minus1 плюс 1 определяет номер информации о размере и разбиении изображения, pic_size_partitioning_info(), приведенной в наборе VPS.
[0060] SPS определен в приведенной ниже таблице 2.
[0061] Параметр sps_num_pic_size_partitioning_info_minus1 плюс 1 определяет номер информации о размере и разбиении изображения, pic_size_partitioning_info(), приведенной в наборе SPS.
[0062] Флаг sps_additional_pic_size_partitioning_info flagfi], равный 0, определяет, что указатель sps_vps_pic_size_partitioning_info_idx[i] присутствует. Флаг sps_additional_pic_size_partitioning_info_flag[i], равный 1, определяет, что присутствует i-я информация о размере и разбиении изображения, pic_size_partitioning_info(), приведенная в наборе SPS, без ссылки на информацию о размере и разбиении изображения, pic_size_partitioning_info(), приведенную в наборе VPS.
[0063] Указатель sps_vps_pic_size_partitioning_info_idx[i] определяет, что i-ая информация о размере и разбиении изображения, pic_size_partitioning_info(), приведенная в данном наборе SPS, идентична sps_vps_pic_size_partitioning_info_idx[i]-ой информации о размере и разбиении изображения, pic_size_partitioning_info(), приведенной в наборе VPS, на который ссылается данный SPS.
[0064] PPS определен в приведенной ниже таблице 3.
[0065] Указатель pps_sps_pic_size_partitioning_info_idx определяет, что информация о размере и разбиении изображения, pic_size_partitioning info(), для всех кодированных изображений, ссылающихся на данный PPS, идентична pps_sps_pic_size_partitioning_info_idx-ой информации о размере и разбиении изображения, information pic_size_partitioning_info(), приведенной в наборе SPS, на который ссылается данный PPS.
[0066] Флаг pps_pic_size_partitioning_info_update_flag, равный 1, определяет что в данном PPS присутствует обновление информации о размере и разбиении изображения, pic_size_partitioning_update_info().
[0067] Информация о размере и разбиении изображения, pic_size_partitioning_info(), определена в приведенной ниже таблице 4.
[0068] Флаг conf_win_present_flag, равный 1, определяет, что информация conf_win_info() присутствует в данной информации о размере и разбиении изображения, information pic size_partitioning info(). Флаг conf win_presentflag, равный 0, определяет, что информация conf win info() не присутствует в данной информации о размере и разбиении изображения, information pic_size_partitioning_info(). В информации conf_win_info() указывают смещения окна соответствия.
[0069] Флаг tile_brick_partitioning_present_flag, равный 1, определяет, что информация tile_brick_partitioning_info() присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). Флаг tile_brick_partitioning_present_flag, равный 0, определяет, что информация tile_brick_partitioning_info() не присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). В информации tile_brick_partitioning_info() указывают информацию о разбиении на прямоугольные тайлы.
[0070] Флаг rect_slice_partitioning_present_flag, равный 1, определяет, что информация rect_slice_partitioning_info() присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). Флаг rect_slice_partitioning_present_flag, равный 0, определяет, что информация rect_slice_partitioning_info() не присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). В информации rect_slice_partitioning_info() указывают информацию о разбиении на прямоугольные слайсы.
[0071] Флаг subpic_partitioning_present_flag, равный 1, определяет, что информация subpic_partitioning_info() присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). Флаг subpic_partitioning_present_flag, равный 0, определяет, что информация subpic_partitioning_info() не присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). В информации subpic_partitioning_info() указывают информацию о разбиении на подизображения.
[0072] Флаг subpic_conf_win_present_flag, равный 1, определяет, что информация subpic_conf_win_info() присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). Флаг subpic_conf_win_present_flag, равный 0, определяет, что информация subpic_conf_win_info() не присутствует в данной информации о размере и разбиении изображения, pic_size_partitioning_info(). В информации subpic_conf_win_info() указывают смещения окна соответствия подизображений.
[0073] Информация pic_size_partitioning_update_info() определяет обновление информации о размере и разбиении изображения, pic_size_partitioning_info(), при этом она определена в приведенной ниже таблице 5.
[0074] Флаг conf win update flag, равный 1, определяет, что текущая информация conf_win_info() обновлена информацией conf_win_info() в данной информации pic_size_partitioning_update_info(). Флаг conf win update flag, равный 0, определяет, что текущая информация conf win info() не обновлена.
[0075] Флаг_brick_partitioning_update_flag, равный 1, определяет, что текущая инфомация tile_brickpartitioning_info() обновлена информацией tile_brick_partitioning_info() в данной информации pic_size_partitioning_update_info(). Флаг brick_partitioning_update_flag, равный 0, определяет, что текущая информация tile_brick_partitioning_info() не обновлена.
[0076] Флаг rect_slice_partitioning_update_flag, равный 1, определяет, что текущая информация rect_ slice_partitioning _info() обновлена информацией rect_slicepartitioning_info() в данной информации pic_size_partitioning_update_info(). Флаг rect_slice_partitioning_update_flag, равный 0, определяет, что текущая информация rect_slice_partitioning_info() не обновлена.
[0077] Флаг subpic_partitioning_update_flag, равный 1, определяет, что текущая информация subpic_partitioning_info() обновлена информацией subpic_partitioning_info() в данной информации pic_sizepartitioning_update_info(). Флаг subpic_partitioning_update_flag, равный 0, определяет, что текущая информация subpic_partitioning_info() не обновлена.
[0078] Флаг subpic_conf_win_update_flag, равный 1, определяет, что текущая информация subpic_conf_win_info() обновлена информацией subpic_conf_win_info() в данной информации pic_size_partitioning_update_info(). Флаг subpic_conf_win_update_flag, равный 0, определяет, что текущая информация subpic_conf_win_info() не обновлена.
[0079] Полученную информацию о размере и разбиении изображения, pic_size_partitioning_info(), используют для декодирования кодированного изображения, например, при помощи декодера (310). Информацию о размере и разбиении изображения для кодированного изображения сигнализируют в наборах VPS, SPS и PPS, в соответствии с приведенным выше описанием, например, при помощи кодера (303).
[0080] На фиг.6 показана блок-схема алгоритма, иллюстрирующая способ (600) эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео, в соответствии с вариантами осуществления настоящего изобретения. В некоторых реализациях один или более блоков процедуры, показанной на фиг.6, могут выполняться декодером (310). В некоторых реализациях один или более блоков процедуры, показанной на фиг.6, могут выполняться другим устройством или группой устройств, отдельных от декодера (310), или включающих декодер (310), например, кодером (303).
[0081] В соответствии с иллюстрацией фиг.6 в первом блоке (610) способ (600) включает получение, из SPS, на который ссылается кодированное изображение, флага, указывающего, включена ли информация о размере и разбиении изображения для упомянутого кодированного изображения, в этот SPS.
[0082] Во втором блоке (620) способ (620) включает определение, указывает ли полученный флаг на то, что информация о размере и разбиении изображения включена в упомянутый SPS.
[0083] В третьем блоке (630) способ (600) включает, если определено, что флаг указывает на то, что информация о размере и разбиении изображения включена в упомянутый SPS, получение, из этого SPS, информации о размере и разбиении изображения.
[0084] В четвертом блоке (640) способ (600) включает, если определено, что флаг указывает на то, что информация о размере и разбиении изображения не включена в упомянутый SPS, получение, из VPS, информации о размере и разбиении изображения, включенной в VPS.
[0085] Способ (600) может дополнительно включать получение, из упомянутого SPS, номера информации о размере и разбиении изображения, включенной в этот SPS, и определение, является ли указатель меньшим или равным полученному номеру информации о размере и разбиении изображения, включенной в упомянутый SPS.
[0086] Способ (600) может также включать, если определено, что указатель меньше или равен номеру информации о размере и разбиении изображения, включенной в упомянутый SPS, увеличение указателя и получение, из этого SPS, другого флага, указывающего, включена ли дополнительная информация о размере и разбиении изображения в упомянутый SPS, при этом упомянутый другой флаг соответствует увеличенному указателю. Способ (600) может дополнительно включать определение, указывает ли полученный другой флаг на то, что дополнительная информация о размере и разбиении изображения включена в упомянутый SPS, и если определено, что упомянутый другой флаг указывает на то, что дополнительная информация о размере и разбиении изображения включена в этот SPS, получение, из этого SPS, дополнительной информации о размере и разбиении изображения, а если определено, что упомянутый другой флаг указывает на то, что дополнительная информация о размере и разбиении изображения не включена в упомянутый SPS, получение, из VPS, дополнительной информации о размере и разбиении изображения, включенной в VPS.
[0087] Информация о размере и разбиении изображения может включать любое, или любую комбинацию, из следующего: смещения окна соответствия кодированного изображения, информация о разбиении кодированного изображения на прямоугольные тайлы, информация о разбиении кодированного изображения на прямоугольные слайсы, информация о разбиении кодированного изображения на подизображения и смещения окна соответствия подизображений кодированного изображения.
[0088] На фиг. 6 показаны примеры блоков для способа (600), однако в некоторых реализациях способ (600) может включать большее количество блоков, меньшее количество блоков, отличающиеся блоки или блоки в отличающемся порядке, по сравнению с иллюстрацией фиг.6. При этом, в дополнение или альтернативно, два или более блоков способа (600) могут выполняться параллельно.
[0089] На фиг. 7 показана блок-схема алгоритма, иллюстрирующая способ (700) эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео, в соответствии с вариантами осуществления настоящего изобретения. В некоторых реализациях один или более блоков процедуры, показанной на фиг. 7, могут выполняться декодером (310). В некоторых реализациях один или более блоков процедуры, показанной на фиг. 7, могут выполняться другим устройством или группой устройств, отдельных от декодера (310), или включающих декодер (310), например, кодером (303).
[0090] В соответствии с иллюстрацией фиг.7 в первом блоке (710) способ (700) включает получение, из PPS, на который ссылается кодированное изображение, указателя, указывающего на то, что информация о размере и разбиении изображения включена в SPS.
[0091] Во втором блоке (720) способ (700) включает, на основе полученного указателя, получение, из SPS, информации о размере и разбиении изображения.
[0092] Способ (700) может дополнительно включать получение, из набора параметров изображения (PPS), на который ссылается кодированное изображение, другого флага, указывающего, обновлена ли в этом PPS информация о размере и разбиении изображения, и определение, указывает ли полученный другой флаг на то, что информация о размере и разбиении изображения обновлена в упомянутом PPS. Способ (700) может дополнительно включать, если определено, что полученный другой флаг указывает на то, что информация о размере и разбиении изображения обновлена в упомянутом PPS, получение, из этого PPS, обновленной информации о размере и разбиении изображения.
[0093] Обновленная информация о размере и разбиении изображения может включать любое, или любую комбинацию, из следующего: смещения окна соответствия кодированного изображения, информация о разбиении кодированного изображения на прямоугольные тайлы, информация о разбиении кодированного изображения на прямоугольные слайсы, информация о разбиении кодированного изображения на под изображения и смещения окна соответствия подизображений кодированного изображения, которые были обновлены.
[0094] На фиг. 7 показаны примеры блоков для способа (700), однако в некоторых реализациях способ (700) может включать большее количество блоков, меньшее количество блоков, отличающиеся блоки или блоки в отличающемся порядке, по сравнению с иллюстрацией фиг. 7. При этом, в дополнение или альтернативно, два или более блоков способа (700) могут выполняться параллельно.
[0095] При этом предложенные способы могут быть реализованы при помощи схем обработки данных (например, одного или более процессоров или одной или более интегральных схем). В одном из примеров один или более процессоров для выполнения одного или более из предложенных способов могут исполнять программу, хранящуюся на машиночитаемом носителе.
[0096] На фиг.8 показана упрощенная блок-схема устройства (800) для эффективной сигнализации информации о размере и разбиении изображения в битовом потоке видео, в соответствии с вариантами осуществления настоящего изобретения.
[0097] В соответствии с иллюстрацией фиг.8 устройство (800) включает первый код (810) получения, первый код (820) определения, второй код (830) определения и третий код (840) получения.
[0098] Первый код (810) получения сконфигурирован для обеспечения получения, упомянутым по меньшей мере одним процессором, из набора (SPS), на который ссылается кодированное изображение, флага, указывающего, включена ли в этот SPS информация о размере и разбиении изображения для упомянутого кодированного изображения.
[0099] Первый код (820) определения сконфигурирован для обеспечения определения, упомянутым по меньшей мере одним процессором, указывает ли полученный флаг на то, что информация о размере и разбиении изображения включена в упомянутый SPS.
[0100] Второй код (830) получения сконфигурирован для обеспечения получения, упомянутым по меньшей мере одним процессором, если определено, что флаг указывает на то, что информация о размере и разбиении изображения включена в упомянутый SPS, из этого SPS, информации о размере и разбиении изображения.
[0101] Третий код (840) получения сконфигурирован для получения, упомянутым по меньшей мере одним процессором, если определено, что флаг указывает на то, что информация о размере и разбиении изображения не включена в упомянутый SPS, из набора параметров видео (VPS), информации о размере и разбиении изображения, включенной в VPS.
[0102] Устройство (800) может дополнительно включать четвертый код (850) получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, из упомянутого SPS, номера информации о размере и разбиении изображения, включенной в этот SPS, и второй код (860) определения, сконфигурированный для обеспечения определения, упомянутым по меньшей мере одним процессором, является ли указатель меньшим или равным полученному номеру информации о размере и разбиении изображения, включенной в упомянутый SPS.
[0103] Устройство (800) может дополнительно включать код (870) увеличения, сконфигурированный для обеспечения увеличения упомянутого указателя, упомянутым по меньшей мере одним процессором, если определено, что указатель меньше или равен номеру информации о размере и разбиении изображения, включенной в упомянутый SPS.
[0104] Первый код (810) получения может быть дополнительно сконфигурирован для обеспечения получения, упомянутым по меньшей мере одним процессором, из упомянутого SPS, другого флага, указывающего, включена ли в этот SPS дополнительная информация о размере и разбиении изображения, при этом упомянутый другой флаг соответствует увеличенному указателю.
[0105] Первый код (820) определения может быть дополнительно сконфигурирован для обеспечения определения, упомянутым по меньшей мере одним процессором, указывает ли полученный другой флаг на то, что дополнительная информация о размере и разбиении изображения включена в упомянутый SPS.
[0106] Второй код (830) получения может быть дополнительно сконфигурирован для обеспечения получения, упомянутым по меньшей мере одним процессором, если определено, что упомянутый другой флаг указывает на то, что дополнительная информация о размере и разбиении изображения в упомянутый SPS, из этого SPS, дополнительной информации о размере и разбиении изображения.
[0107] Третий код (840) получения может быть дополнительно сконфигурирован для обеспечения получения, упомянутым по меньшей мере одним процессором, если определено, что упомянутый другой флаг указывает на то, что дополнительная информация о размере и разбиении изображения не включена в упомянутый SPS, из VPS, дополнительной информации о размере и разбиении изображения, включенной в VPS.
[0108] Устройство (800) может дополнительно включать четвертый код (850) получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, из набора параметров изображения (PPS), на который ссылается кодированное изображение, указателя, указывающего на то, что информация о размере и разбиении изображения включена в SPS, и пятый код (880) получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, на основе полученного указателя, из этого SPS, информации о размере и разбиении изображения.
[0109] Устройство (800) может дополнительно включать четвертый код (850) получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, из набора параметров изображения (PPS), на который ссылается кодированное изображение, другого флага, указывающего, обновлена ли информация о размере и разбиении изображения в этом PPS, второй код (860) определения, сконфигурированный для обеспечения определения, упомянутым по меньшей мере одним процессором, указывает ли полученный другой флаг на то, что информация о размере и разбиении изображения обновлена в упомянутом PPS, и пятый код (880) получения, сконфигурированный для обеспечения получения, упомянутым по меньшей мере одним процессором, если определено, что полученный другой флаг указывает на то, что информация о размере и разбиении изображения обновлена в упомянутом PPS, из этого PPS, обновленной информации о размере и разбиении изображения.
[0110] Обновленная информация о размере и разбиении изображения может включать любое, или любую комбинацию, из следующего: смещения окна соответствия кодированного изображения, информация о разбиении кодированного изображения на прямоугольные тайлы, информация о разбиении кодированного изображения на прямоугольные слайсы, информация о разбиении кодированного изображения на под изображения и смещения окна соответствия подизображений кодированного изображения, которые были обновлены.
[0111] Информация о размере и разбиении изображения может включать любое, или любую комбинацию, из следующего: смещения окна соответствия кодированного изображения, информация о разбиении кодированного изображения на прямоугольные тайлы, информация о разбиении кодированного изображения на прямоугольные слайсы, информация о разбиении кодированного изображения на подизображения и смещения окна соответствия подизображений кодированного изображения.
[0112] На фиг. 9 показана блок-схема компьютерной системы (900), подходящей для реализации вариантов осуществления настоящего изобретения.
[0113] Компьютерное программное обеспечение может быть закодировано с использованием любого подходящего машинного кода или языка программирования, который может обрабатываться при помощи ассемблирования, компиляции, линкования или аналогичных механизмов, в результате чего получают код, включающий инструкции, выполняемые непосредственно или при помощи интерпретации, исполнения микрокода и т.п., центральными процессорами компьютера (computer central processing units, CPUs), графическими процессорами (Graphics Processing Units, GPU) и т.п.
[0114] Инструкции могут выполняться на компьютерах, или компьютерных компонентах, различных типов, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.
[0115] Компоненты компьютерной системы (900), показанные на фиг.9, приведены исключительно для примера и не предполагают каких-либо ограничений на область применения или функциональность компьютерного обеспечения, реализующего варианты осуществления настоящего изобретения. Аналогично, показанная конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требования, связанные с любым компонентом, проиллюстрированным в вариантах осуществления компьютерной системы 900, или комбинацией таких компонентов.
[0116] Компьютерная система (900) может включать устройства ввода из состава интерфейса пользователя. Устройства ввода в пользовательском интерфейсе могут реагировать на ввод от одного или более пользователей при помощи, к примеру, тактильного ввода (например, нажатий на клавиши, жестов скольжения пальцем по экрану, движений киберперчатки), аудиоввода (например, голоса, хлопков ладоней), визуального ввода (например, жестов), обонятельного ввода (не показано на чертеже). Устройства пользовательского интерфейса могут также применяться для захвата медиаданных различных типов, не обязательно связанных с сознательным вводом от человека, таких как аудио (например, голос, музыка, звуки окружающей среды), изображения (например, сканированные изображения, фотоизображения, полученные с фотокамеры), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[0117] Устройства пользовательского интерфейса могут включать одно или более из следующего (на чертеже показано только по одному устройству каждого типа): клавиатура (901), мышь (902), трекпад (903), сенсорный экран (910), киберперчатка (не показана на чертеже), джойстик (905), микрофон (906), сканер (907), камера (908).
[0118] Компьютерная система (900) может также иметь в своем составе устройства вывода пользовательского интерфейса. Устройства вывода пользовательского интерфейса могут воздействовать на органы чувств одного или более пользователей, например, при помощи тактильного вывода, звука, света и/или запаха/вкуса. Устройства вывода пользовательского интерфейса могут включать устройства тактильного вывода (например, тактильная обратная связь от сенсорного экрана (910), киберперчатки (не показана на чертеже) или джойстика (905)), однако могут также присутствовать устройства тактильного вывода, не являющиеся при этом устройствами ввода). К примеру, подобными устройствами могут быть устройства аудиовывода (например, громкоговорители (909), наушники (не показаны на чертеже)), устройства визуального вывода (например, экраны (910), включая экраны на катодно-лучевых трубках (cathode ray tube, CRT), экраны на жидких кристаллах (liquid-crystal display, LCD), плазменные экраны, экраны на органических светодиодах (organic light-emitting diode, OLED), как сенсорные, так и без функций сенсорного ввода, как с функциями тактильно обратной связи, так и без них, - при этом некоторые из экранов могут быть способны выводить двумерную визуальную информацию или более чем трехмерную визуальною информацию, при помощи таки средств, как например, стереографический вывод; очки виртуальной реальности (не показаны на чертеже), голографические дисплеи, дым-машины, а также принтеры (не показаны на чертеже). Графический адаптер (950) формирует изображения и выводит их на сенсорный экран (910).
[0119] Компьютерная система (900) может также включать запоминающие устройства, доступные для пользователей, и связанные с ними носители данных, например, оптические носители, включая CD/DVD ROM/RW (920), с носителями (921) CD/DVD или аналогичными им, флэш-привод (922), съемный жесткий диск или твердотельный диск (923), применяемые ранее магнитные носители, например, ленты или гибкие диски (не показаны на чертеже), специализированные устройства на основе ROM/ASIC/PLD, например, аппаратные ключи (не показаны на чертеже), и т.п.
[0120] Специалисты в данной области техники должны при этом понимать, что выражение «машиночитаемый носитель данных», используемое в связи с настоящим изобретением, не включает в себя среды передачи данных, несущие волны или другие энергозависимые сигналы.
[0121] Компьютерная система (900) может также иметь интерфейс (или интерфейсы) с одной или более сетями (955) связи. Сети (955) могут быть, например, беспроводными, проводными или оптическими. Сети (955) также могут быть локальными, глобальными, городскими, размещаемыми на транспортных средствах или промышленных объектах, сетями реального времени, устойчивыми к задержкам и т.п.Примеры сетей (955) включают такие локальные сети, как Ethernet, беспроводные LAN, сотовые сети, включая глобальную систему мобильной связи (global system for mobile communications, GSM), сети третьего поколения (3G), четвертого поколения (4G), пятого поколения (5G), долгосрочной эволюции (Long-Term Evolution, LTE) и т.п., проводные или беспроводные глобальные сети цифрового телевещания, включая кабельное телевидение, спутниковое телевидение и сети эфирного вещания, сети транспортных средств и промышленных объектов, включая CANBus, и т.п.Некоторые сети (955) требуют наличия внешних адаптеров сетевых интерфейсов, подключаемых к портам данных или периферийным шинам (949) общего назначения (например, портам универсальной последовательной шины (universal serial bus, USB) (900). Другие сети могут быть интегрированы во внутреннюю структуру компьютерной системы (900) за счет подключения к системной шине, в соответствии с приведенным ниже описанием (например, интерфейс Ethernet в системе персонального компьютера или интерфейс (954) сети сотовой связи в компьютерной системе на базе смартфона). Применение любых из подобных сетей (955) позволяет компьютерной системе (900) осуществлять связь с другими объектами. Такая связь может быть однонаправленной, только на прием (например, телевещание), однонаправленной, только на передачу (например, сеть CANbus в некоторые устройства CANbus) или двунаправленной, например, в другие компьютерные системы с использованием локальных или глобальных цифровых сетей. В любой из сетей (955) и сетевых интерфейсов (954), описанных выше, могут применяться соответствующие протоколы и стеки протоколов.
[0122] Описанные выше устройства пользовательского интерфейса, доступные пользователям запоминающие устройства и сетевые интерфейсы (954) могут быть подключены к базовой внутренней структуре (940) компьютерной системы (900).
[0123] Базовая внутренняя структура (940) может включать один или более центральных процессоров (Central Processing Unit, CPU) (941), графических процессоров (Graphics Processing Unit, GPU) (942), специализированных программируемых блоков обработки данных в форме электрически программируемых вентильных матриц (Field Programmable Gate Areas, FPGA) (943), аппаратных ускорителей (944) для определенных задач и т.п.Эти устройства, вместе с памятью (945) в режиме «только для чтения» (Readonly memory, ROM), памятью (946) с произвольным доступом (Random-access memory, RAM), внутренней памятью большой емкости, например, внутренними, недоступными пользователю жесткими дисками, твердотельными дисками (solid-state drive, SSD) и аналогичной памятью (947), могут быть объединены системной шиной (948). В некоторых компьютерных системах к системной шине (948) может предоставляться доступ в виде одного или более физических разъемов, позволяющих расширять систему дополнительными CPU, GPU и т.п.Периферийные устройства могут подключаться либо непосредственно к базовой системной шине (948), либо к периферийной шине (949). Примерами архитектур периферийной шины могут служить шины взаимодействия периферийных компонентов (peripheral component interconnect, PCI), USB и т.п.
[0124] CPU (941), GPU (942), FPGA (943) и ускорители (944) могут выполнять инструкции, которые, в совокупности, могут составлять описанный выше компьютерный код. Компьютерный код может храниться в памяти ROM (945) или RAM (946). Временные данные при этом могут храниться в RAM (946), тогда как постоянные данные могут храниться, например, во внутренней памяти (947) большой емкости. Высокая скорость сохранения данных в запоминающие устройства и извлечения данных из них может обеспечиваться за счет применения кэш-памяти, которая может быть тесно связан с одним или более CPU (941), GPU (942), памятью (947) большой емкости, ROM (945), RAM (946) и т.п.
[0125] Машиночитаемые носители данных могут хранить компьютерный код для выполнения различных машиноисполняемых операций. Такие носители и компьютерный код могут быть специально спроектированными и изготовленными для целей вариантов осуществления настоящего изобретения или могут быть широко распространенными и известными специалистам в области компьютерного программного обеспечения.
[0126] В качестве неограничивающего примера, компьютерная система с архитектурой (900), и в частности, базовой структурой (940), может предоставлять требуемую функциональность в результате исполнения, процессором (или процессорами) (включая CPU, GPU, FPGA, ускорители и т.п.), программного обеспечения, реализованного на одном или более материальных машиночитаемых носителях данных. Такие машиночитаемые носители данных могут быть носителями, связанными с описанными выше запоминающими устройствами большой емкости, которые доступны пользователям, или запоминающими устройствами в базовой структуре (940), например, встроенным запоминающим устройством (947) большой емкости или ROM (945). Программное обеспечение, которое реализует различные варианты осуществления настоящего изобретения, может храниться в подобных устройствах и исполняться внутренней структурой (940) компьютерной системы. Машиночитаемый носитель данных, в зависимости от конкретных требований, может включать одно или более запоминающих устройств или микросхем памяти. Программное обеспечение может обеспечивать выполнение, базовой структурой (940), и в частности, процессорами из его состава (включая CPU, GPU, FPGA и т.п.), необходимых процедуры, или частей необходимых процедур, описанных в данном документе, включая создание структур данных, хранимых в RAM (946), и модификацию этих структур данных в соответствии с процедурами, определенными программным обеспечением. В дополнение или альтернативно, компьютерная система может обеспечивать требуемую функциональность в результате работы логики, жестко запрограммированной или иным образом воплощенной в электрической схеме (например, ускорителе (944)), которая может работать вместе с программным обеспечением, или вместо него, для выполнения требуемых процедур или частей требуемых процедур, описанных в данном документе. Упоминание программного обеспечения, там, где это уместно, может подразумевать такую логику и наоборот. Упоминание машиночитаемого носителя, там, где это уместно, может подразумевать электрическую схему (например, интегральную схему), на которой хранится исполняемое программное обеспечение, электрическую схему, реализующую исполняемую логику или оба эти случая одновременно. В объем вариантов осуществления настоящего изобретения входят любые соответствующие комбинации из аппаратного и программного обеспечения.
[0127] В данном документе были описаны несколько вариантов осуществления настоящего изобретения, однако при этом возможны модификации, изменения и эквивалентные замены, которые попадают в объем настоящего изобретения. Соответственно, нужно понимать, что специалисты в данной области техники способны создать множество систем и способов, которые хотя явно здесь и не описаны, реализуют замысел настоящего изобретения и соответственно, находятся в пределах его объема и сущности.