ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Настоящая заявка на патент испрашивает приоритет предварительной заявки на патент США №. 62/871,493, поданной 8 июля 2019 г., Jianle Chen и др., и озаглавленной «Обработка множественного размеров изображения и окна соответствия для передискретизации опорного изображения при кодировании видео», которая полностью включена в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В общем, настоящее изобретение описывает методы для поддержки множества размеров изображения и окон соответствия (conformance window) при кодировании видео. Более конкретно, настоящее изобретение обеспечивает, что наборы параметров изображения, которые имеют одинаковый размер изображения, также имеют одинаковое окно соответствия.
УРОВЕНЬ ТЕХНИКИ
[0003] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методы сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями в качестве изображения или вообще без них.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] Первый аспект относится к способу декодирования кодированного битового потока видео, осуществляемомуосуществляемому видеодекодером. Способ включает в себя прием видеодекодером первого набора параметров изображения и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности, при этом, когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения ширины изображения и высоты изображения, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения окна соответствия; и применение видеодекодером окна соответствия к текущему изображению, соответствующему первому набору параметров изображения или второму набору параметров изображения.
[0005] Способ обеспечивает методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда разрешена передискретизация опорного изображения (RPR, reference picture resampling). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0006] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает, что окно соответствия содержит смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
[0007] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает декодирование текущего изображения, соответствующего первому набору параметров изображения или второму набору параметров изображения, с использованием межкадрового предсказания после применения окна соответствия, при этом межкадровое предсказание основано на передискретизированном опорном изображении.
[0008] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает передискретизацию опорного изображения, связанного с текущим изображением, соответствующим первому набору параметров изображения или второму набору параметров изображения, с использованием передискретизации опорного изображения (RPS).
[0009] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает, что передискретизация опорного изображения изменяет разрешение опорного изображения, используемого для межкадрового предсказания текущего изображения, соответствующего первому набору параметров изображения или второму набору параметров изображения.
[0010] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает, что ширина изображения и высота изображения измеряются в выборках яркости.
[0011] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает определение, включен ли двунаправленный оптический поток (BDOF, bi-direction optical flow) для декодирования изображения на основе ширины изображения, высоты изображения и окна соответствия текущего изображения и опорного изображения для текущего изображения.
[0012] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает определение, включено ли уточнение вектора движения на стороне декодера (DMVR, decoder-side motion vector refinement) для декодирования изображения на основе ширины изображения, высоты изображения и окна соответствия текущего изображения и опорного изображения для текущего изображения.
[0013] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает отображение на дисплее электронного устройства изображения, сформированного с использованием текущего блока.
[0014] Второй аспект относится к способу кодирования битового потока видео, осуществляемому видеокодером. Способ включает в себя создание посредством видеокодера первого набора параметров изображения и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности, при этом, когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения ширины изображения и высоту изображения, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения окна соответствия; кодирование посредством видеокодера первого набора параметров изображения и второго набора параметров изображения в битовый поток видео; и сохранение посредством видеокодера битового потока видео для передачи в видеодекодер.
[0015] Способ обеспечивает методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда разрешена передискретизация опорного изображения (RPR). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0016] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает, что окно соответствия содержит смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
[0017] Возможно, в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает, что ширина изображения и высота изображения измеряются в выборках яркости.
[0018] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает передачу битового потока видео, содержащего первый набор параметров изображения и второй набор параметров изображения, в видеодекодер.
[0019] Третий аспект относится к устройству декодирования. Устройство декодирования включает в себя приемник, выполненный с возможностью приема кодированного битового потока видео; память, соединенную с приемником, хранящую инструкции; и процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций для инициирования устройства декодирования для: приема первого набора параметров изображения и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности, при этом когда первый набор параметров изображения и второй набор параметров изображения имеет одинаковые значения ширины изображения и высоты изображения, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения окна соответствия; и применения окна соответствия к текущему изображению, соответствующему первому набору параметров изображения или второму набору параметров изображения.
[0020] Устройство декодирования обеспечивает методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда включена передискретизация опорного изображения (RPR). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0021] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает окно соответствия, содержащее смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
[0022] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает декодирование текущего изображения, соответствующего первому набору параметров изображения или второму набору параметров изображения, с использованием межкадрового предсказания после применения окна соответствия, при этом межкадровое предсказание основано на передискретизированном опорном изображении.
[0023] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает отображение, выполненное с возможностью отображения изображения, созданного на основе текущего изображения.
[0024] Четвертый аспект относится к устройству кодирования. Устройство кодирования включает в себя память, содержащую инструкции; процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций, для инициирования устройства кодирования для: формирования первого набора параметров изображения и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности, при этом когда первый набор параметров изображения и второй набор параметров изображения имеет одинаковые значения ширины изображения и высоты изображения, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения окна соответствия; и кодирование первого набора параметров изображения и второго набора параметров изображения в битовый поток видео; и передатчик, соединенный с процессором, при этом передатчик выполнен с возможностью передачи битового потока видео, содержащего первый набор параметров изображения и второй набор параметров изображения, в видеодекодер.
[0025] Устройство кодирования обеспечивает методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда разрешена передискретизация опорного изображения (RPR). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0026] Возможно, в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает окно соответствия, содержащее смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
[0027] Возможно, в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает, что ширина и высота изображения измеряются в выборках яркости.
[0028] Пятый аспект относится к оборудованию кодирования. Оборудование кодирования включает в себя приемник, выполненный с возможностью приема изображения для кодирования или для приема битового потока для декодирования; передатчик, соединенный с приемником, при этом передатчик выполнен с возможностью передачи битового потока на декодер или для передачи декодированного изображения на дисплей; память, соединенную по меньшей мере с одним из приемника или передатчика, при этом память выполнена с возможностью хранения инструкций; и процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций, хранящихся в памяти, для выполнения любого из способов, раскрытых в данном документе.
[0029] Оборудование кодирования обеспечивает методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда разрешена передискретизация опорного изображения (RPR). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0030] Возможно в любом из предшествующих аспектов, другое осуществление аспекта обеспечивает дисплей, выполненный с возможностью отображения изображения.
[0031] Шестой аспект относится к системе. Система включает в себя кодер; и декодер, соединенный с кодером, при этом кодер или декодер включает в себя устройство декодирования, устройство кодирования или оборудование кодирования, раскрытые в данном документе.
[0032] Система обеспечивает методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда разрешена передискретизация опорного изображения (RPR). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0033] Седьмой аспект относится к средству кодирования. Средство кодирования включает в себя средство приема, выполненное с возможностью приема изображения для кодирования или для приема битового потока для декодирования; средство передачи, соединенное со средством приема, средство передачи, выполненное с возможностью передачи битового потока на средство декодирования или передачи декодированного изображения на средство отображения; средство хранения, соединенное по меньшей мере с одним из средства приема или средства передачи, средство хранения выполнено с возможностью хранения инструкций; и средство обработки, соединенное со средством хранения, средство обработки, выполненное с возможностью выполнения инструкций, хранящихся в средстве хранения, для выполнения любого из способов, раскрытых в данном документе.
[0034] Средство кодирования обеспечивает методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда разрешена передискретизация опорного изображения (RPR). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0035] Для ясности любой из вышеупомянутых вариантов осуществления изобретения может быть объединен с любым одним или более другими вышеупомянутыми вариантами осуществления изобретения, чтобы создать новый вариант осуществления в пределах объема настоящего изобретения.
[0036] Эти и другие особенности будут более понятны из следующего подробного описания, рассматриваемого вместе с сопроводительными чертежами и формулой изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0037] Для более полного понимания настоящего изобретения дана ссылка на следующее краткое описание, взятое в связи с сопроводительными чертежами и подробным описанием, в котором одинаковые номера позиций представляют одинаковые части.
[0038] Фиг. 1 - блок-схема примерного способа кодирования видеосигнала.
[0039] Фиг. 2 - схематическая диаграмма примерной системы кодирования и декодирования (кодека) для видеокодирования.
[0040] Фиг. 3 - схематическая диаграмма, иллюстрирующая пример видеокодера.
[0041] Фиг. 4 - схематическая диаграмма, иллюстрирующая пример видеодекодера.
[0042] Фиг. 5 - кодированная видеопоследовательность, изображающая взаимосвязь между изображением внутренней точки произвольного доступа (IRAP, intra random access point) относительно начальных и конечных изображений в порядке декодирования и порядке представления.
[0043] Фиг. 6 иллюстрирует пример многоуровневого кодирования для пространственной масштабируемости.
[0044] Фиг. 7 - схематическая диаграмма, иллюстрирующая пример однонаправленного межкадрового предсказания.
[0045] Фиг. 8 - схематическая диаграмма, иллюстрирующая пример двунаправленного межкадрового предсказания.
[0046] Фиг. 9 иллюстрирует битовый поток видео.
[0047] Фиг. 10 иллюстрирует метод разделения изображения.
[0048] Фиг. 11 - вариант осуществления способа декодирования кодированного битового потока видео.
[0049] Фиг. 12 - вариант осуществления способа кодирования битового потока кодированного видео.
[0050] Фиг. 13 - схематическая диаграмма устройства видеокодирования.
[0051] Фиг. 14 - схематическая диаграмма варианта осуществления средства кодирования.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ
[0052] Вначале следует понимать, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества методов, известных в настоящее время или существующих. Изобретение ни в коем случае не должно ограничиваться иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включая иллюстративные конструкции и реализации, проиллюстрированные и описанные здесь, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом их эквивалентов.
[0053] Следующие ниже термины определены следующим образом, если они не используются в данном документе в противоположном контексте. В частности, следующие определения предназначены для дополнительной ясности настоящего изобретения. Однако в разных контекстах термины могут описываться по-разному. Соответственно, следующие определения следует рассматривать как дополнение и не следует рассматривать как ограничение каких-либо других определений описаний, обеспеченных для таких терминов в данном документе.
[0054] Битовый поток - это последовательность битов, включающая видеоданные, которые сжимаются для передачи между кодером и декодером. Кодер - это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока для отображения. Изображение - это массив выборок яркости и/или массив выборок цветности, которые создают кадр или его поле. Изображение, которое кодируется или декодируется, может называться текущим изображением для ясности обсуждения.
[0055] Опорное изображение - это изображение, которое содержит опорные выборки, которые могут использоваться при кодировании других изображений по ссылке в соответствии с межкадровым предсказанием и/или межуровневым предсказанием. Список опорных изображений - это список опорных изображений, используемых для межкадрового предсказания и/или межуровневого предсказания. Некоторые системы кодирования видео используют два списка опорных изображений, которые могут быть обозначены как первый список опорных изображений и нулевой список опорных изображений. Структура списка опорных изображений - это адресуемая структура синтаксиса, которая содержит множество списков опорных изображений. Межкадровое предсказание - это механизм кодирования выборок текущего изображения посредством ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся на одном уровне. Элемент структуры списка опорных изображений - это адресуемое место в структуре списка опорных изображений, которое указывает опорное изображение, связанное со списком опорных изображений.
[0056] Заголовок слайса - это часть кодированного слайса, содержащая элементы данных, относящиеся ко всем видеоданным в мозаике, представленной в слайсе. Набор параметров изображения (PPS, picture parameter set) - это набор параметров, который содержит данные, относящиеся ко всему изображению. Более конкретно, PPS - это структура синтаксиса, содержащая синтаксические элементы, которые применяются к нулю или более целым кодированным изображениям, как определено синтаксическим элементом, найденным в каждом заголовке изображения. Набор параметров последовательности (SPS, sequence parameter set) - это набор параметров, который содержит данные, относящиеся к последовательности изображений. Блок доступа (AU, access unit) - это набор из одного или более кодированных изображений, связанных с одним и тем же временем отображения (например, с одним и тем же счетчиком порядка изображений) для вывода из буфера декодированных изображений (DPB, decoded picture buffer) (например, для отображения пользователю). Декодированная видеопоследовательность - это последовательность изображений, которые были восстановлены декодером при подготовке к отображению пользователю.
[0057] Окно обрезки соответствия (или просто окно соответствия) относится к окну выборок изображения в кодированной видеопоследовательности, выводимой в результате процесса кодирования. Битовый поток может обеспечивать параметры обрезки окна соответствия, чтобы указать область вывода кодированного изображения. Ширина изображения - это ширина изображения, измеренная в выборках яркости. Высота изображения - это высота изображения, измеренная в выборках яркости. Смещения окна соответствия (например, conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset) определяют выборки изображений, ссылающихся на PPS, которые выводятся из процесса декодирования, в терминах прямоугольной области, указанной в координатах изображения для вывода.
[0058] Уточнение вектора движения на стороне декодера (DMVR, Decoder-Side Motion Vector Refinement) - это процесс, алгоритм или инструмент кодирования, используемый для уточнения вектора движения или векторов движения для предсказанного блока. DMVR позволяет найти вектор движения на основе двух векторов движения, найденных для двунаправленного предсказания, с использованием процесса двустороннего сопоставления шаблонов. В DMVR может быть найдена взвешенная комбинация блоков кодирования предсказания, сформированная с каждым из двух векторов движения, и два вектора движения могут быть уточнены путем замены их новыми векторами движения, которые наилучшим образом указывают на объединенный блок кодирования предсказания. Двунаправленный оптический поток (BDOF, Bi-Direction Optical Flow) - это процесс, алгоритм или инструмент кодирования, используемый для уточнения движения или векторов движения для предсказанного блока. BDOF позволяет находить векторы движения для блоков субкодирования на основе градиента разницы между двумя опорными изображениями.
[0059] Передискретизация опорного изображения (RPR, Reference Picture Resampling) - это способность изменять пространственное разрешение кодированных изображений в середине битового потока без необходимости внутреннего кодирования изображения в месте изменения разрешения. Используемое здесь разрешение описывает количество пикселей в видеофайле. То есть разрешение - это ширина и высота проецируемого изображения, измеряемая в пикселях. Например, видео может иметь разрешение 1280 (пикселей по горизонтали) × 720 (пикселей по вертикали). Обычно это записывается просто как 1280 × 720 или сокращенно до 720 пикс.
[0060] Уточнение вектора движения на стороне декодера (DMVR, Decoder-side motion vector refinement) - это процесс, алгоритм или инструмент кодирования, используемый для уточнения вектора движения или векторов движения для предсказанного блока. Двунаправленный оптический поток (BDOF, bi-directional optical flow), который также известен как двунаправленный оптический поток (BIO), представляет собой процесс, алгоритм или инструмент кодирования, используемый для уточнения движения или векторов движения для предсказанного блока. Функция передискретизации опорного изображения (RPR, reference picture resampling) - это способность изменять пространственное разрешение кодированных изображений в середине битового потока без необходимости внутреннего кодирования изображения в месте изменения разрешения.
[0061] В данном документе используются следующие сокращения: блок дерева кодирования (CTB, Coding Tree Block), блок дерева кодирования (CTU, Coding Tree Unit), блок кодирования (CU, Coding Unit), закодированная видеопоследовательность (CVS, Coded Video Sequence), объединенная группа экспертов по видео (JVET, Joint Video Experts Team), набор плиток с ограничением движения (MCTS, Motion-Constrained Tile Set), максимальный блок передачи (MTU, Maximum Transfer Unit), уровень сетевой абстракции (NAL, Network Abstraction Layer), счетчик порядка изображений (POC, Picture Order Count), полезная нагрузка необработанной байтовой последовательности (RBSP, Raw Byte Sequence Payload), набор параметров последовательности (SPS, Sequence Parameter Set), универсальное кодирование видео (VVC, Versatile Video Coding) и рабочий черновик (WD, Working Draft).
[0062] Фиг. 1 является блок-схемой примерного рабочего способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом накладные расходы на полосу пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования обычно отражает процесс кодирования, чтобы декодер мог последовательно восстанавливать видеосигнал.
[0063] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера видеофайл может быть захвачен устройством видеозахвата, например, видеокамерой, и закодирован для поддержки потоковой передачи видео в реальном времени. Видеофайл может включать в себя как аудиокомпонент, так и видеокомпонент. Компонент видео содержит серию кадров изображения, которые при просмотре в последовательности создают визуальное впечатление движения. Кадры содержат пиксели, которые выражаются в единицах света, называемых здесь компонентами яркости (или выборками яркости), и цветом, который упоминается как компоненты цветности (или выборки цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.
[0064] На этапе 103 видео разбивается на блоки. Разделение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при высокоэффективном кодировании видео (HEVC, High Efficiency Video Coding) (также известном как H.265 и MPEG-H, часть 2) кадр сначала можно разделить на блоки дерева кодирования (CTU), которые представляют собой блоки заранее определенного размера (например, шестьдесят-четыре пикселя на шестьдесят четыре пикселя). Блоки CTU содержат выборки яркости и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивно разделять блоки до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения освещения. Кроме того, компоненты цветности кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения меняются в зависимости от содержимого видеокадров.
[0065] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться межкадровое предсказание и/или внутреннее предсказание. Межкадровое предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как таблица, может оставаться в постоянной позиции на протяжении нескольких кадров. Следовательно, таблица описывается один раз, и соседние кадры могут относиться к опорному кадру. Механизмы сопоставления с могут использоваться для сопоставления объектов во множестве кадров. Кроме того, движущиеся объекты могут быть представлены во множестве кадров, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану во множестве кадров. Векторы движения могут использоваться для описания такого движения. Вектор движения - это двумерный вектор, который обеспечивает смещение от координат объекта в кадре до координат объекта в опорном кадре. По существу, межкадровое предсказание может кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.
[0066] Внутреннее предсказание кодирует блоки в общем кадре. Внутреннее предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию группироваться в кадре. Например, участок зеленого цвета на части дерева имеет тенденцию располагаться рядом с аналогичными участками зеленого цвета. Внутреннее предсказание использует несколько режимов направленного предсказания (например, тридцать три в HEVC), планарный режим и режим постоянного тока (DC, direct current). Направленные режимы указывают, что текущий блок подобен/совпадает с выборками соседнего блока в соответствующем направлении. Планарный режим указывает, что последовательность блоков вдоль строки/столбца (например, плоскости) может быть интерполирована на основе соседних блоков на краях строки. Фактически планарный режим указывает на плавный переход света/цвета по строке/столбцу за счет использования относительно постоянного наклона при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок подобен/совпадает со средним значением, связанным с выборками всех соседних блоков, связанных с угловыми направлениями режимов направленного предсказания. Соответственно, блоки внутреннего предсказания могут представлять блоки изображения как различные значения режима реляционного предсказания вместо фактических значений. Кроме того, блоки межкадрового предсказания могут представлять блоки изображения как значения вектора движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые отличия хранятся в остаточных блоках. К остаточным блокам могут применяться преобразования для дальнейшего сжатия файла.
[0067] На этапе 107 могут применяться различные методы фильтрации. В HEVC фильтры применяются в соответствии со схемой внутриконтурной фильтрации. Обсуждаемое выше предсказание на основе блоков может привести к созданию блочных изображений в декодере. Кроме того, схема предсказания на основе блоков может кодировать блок, а затем восстанавливать кодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет фильтры подавления шума, деблокирующие фильтры, адаптивные контурные фильтры и фильтры с адаптивным смещением выборки (SAO, sample adaptive offset) к блокам/кадрам. Эти фильтры уменьшают такие артефакты блокировки, чтобы можно было точно восстановить закодированный файл. Кроме того, эти фильтры уменьшают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе восстановленных опорных блоков.
[0068] После того, как видеосигнал разделен, сжат и отфильтрован, полученные данные кодируются в битовом потоке на этапе 109. Битовый поток включает в себя данные, описанные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные раздела, данные предсказания, остаточные блоки и различные флаги, обеспечивающие инструкции кодирования для декодера. Битовый поток может храниться в памяти для передачи декодеру по запросу. Битовый поток также может быть широковещательным и/или многоадресным для множества декодеров. Создание битового потока - это итеративный процесс. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно во многих кадрах и блоках. Порядок, показанный на фиг. 1 представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса видеокодирования конкретным порядком.
[0069] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует данные синтаксиса из битового потока для определения разделов для кадров на этапе 111. Разделение должно соответствовать результатам разделения блока на шаге 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер делает множество вариантов в процессе сжатия, таких как выбор схем разбиения на блоки из нескольких возможных вариантов на основе пространственного позиционирования значений во входном изображении (-ях). Для передачи сигналов о точном выборе может использоваться большое количество интервалов. В данном контексте бин - это двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может варьироваться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбросить любые параметры, которые явно не подходят для конкретного случая, оставив набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов основана на количестве допустимых опций (например, одна ячейка для двух вариантов, две ячейки для трех-четырех вариантов и т.д.). Затем кодер кодирует кодовое слово для выбранной опции. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько желательно, чтобы однозначно указать выбор из небольшого подмножества допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбор, определяя набор допустимых опций аналогично кодеру. Определив набор допустимых опций, декодер может прочитать кодовое слово и определить выбор, сделанный кодером.
[0070] На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратное преобразование для формирования остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разделением. Блоки предсказания могут включать в себя как блоки внутреннего предсказания, так и блоки межкадрового предсказания, сформированные в кодере на этапе 105. Блоки восстановленного изображения затем размещаются в кадрах восстановленного видеосигнала в соответствии с данными разделения, определенными на этапе 111. Синтаксис для этапа 113 также может передаваться в битовом потоке посредством энтропийного кодирования, как описано выше.
[0071] На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала аналогично этапу 107 в кодере. Например, фильтры подавления шума, фильтры деблокирования, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блокировки. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.
[0072] Фиг. 2 является схематической диаграммой примерной системы 200 кодирования и декодирования (кодека) для видеокодирования. В частности, система 200 кодеков обеспечивает функциональные возможности для поддержки реализации способа 100 работы. Система 200 кодека обобщена для изображения компонентов, используемых как в кодере, так и в декодере. Система 200 кодека принимает и разделяет видеосигнал, как описано в отношении шагов 101 и 103 в способе 100 работы , что приводит к разделенному видеосигналу 201. Система 200 кодека затем сжимает разделенный видеосигнал 201 в кодированный битовый поток, действуя в качестве кодера, как описано в отношении этапов 105, 107 и 109 в способе 100. Действуя в качестве декодера, система 200 кодека формирует выходной видеосигнал из битового потока, как описано в отношении этапов 111, 113, 115 и 117 в способе 100 работы . Система 200 кодека включает в себя компонент 211 общего управления кодером, компонент 213 масштабирования преобразования и квантования, компонент 215 оценки внутри изображения, компонент 217 предсказания внутри изображения, компонент 219 компенсации движения, компонент 221 оценки движения, компонент 229 масштабирования и обратного преобразования, компонент 227 анализа управления фильтром, компонент 225 внутриконтурных фильтров, компонент 223 буфера декодированных изображений и компонент 231 форматирования заголовка и контекстно-адаптивного двоичного арифметического кодирования (CABAC, context adaptive binary arithmetic coding). Такие компоненты соединяются, как показано. На фиг. 2 черные линии указывают перемещение данных, которые должны быть закодированы/декодированы, а пунктирные линии указывают перемещение данных управления, которые управляют работой других компонентов. Все компоненты системы 200 кодека могут присутствовать в кодере. Декодер может включать в себя подмножество компонентов системы 200 кодеков. Например, декодер может включать в себя компонент 217 предсказания внутри изображения, компонент 219 компенсации движения, компонент 229 масштабирования и обратного преобразования, компонент 225 внутриконтурных фильтров и компонент 223 буфера декодированных изображений. Эти компоненты теперь описаны.
[0073] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей посредством дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел делится на подразделения, называется глубиной дерева узлов/кодирования. В некоторых случаях разделенные блоки могут быть включены в блоки кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) цветности красного (Cr) и блок(-и) синего сигнала цветности (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разделения могут включать в себя двоичное дерево (BT, binary tree), троичное дерево (TT, triple tree) и квадратичное дерево (QT, quad tree), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от используемых режимов разделения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 масштабирования и квантования преобразования, компонент 215 оценки внутри изображения, компонент 227 анализа управления фильтром и компонент 221 оценки движения для сжатия.
[0074] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями приложения. Например, компонент 211 общего управления кодером управляет оптимизацией скорости передачи/размера битового потока по сравнению с качеством восстановления. Такие решения могут быть приняты на основе доступности дискового пространства/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы уменьшить проблемы опустошения и переполнения буфера. Чтобы управлять этими проблемами, компонент 211 общего управления кодером управляет разделением, предсказанием и фильтрацией посредством других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшения сложности сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи данных. Компонент 211 общего управления кодером создает данные управления, которые управляют работой других компонентов. Управляющие данные также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.
[0075] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для межкадрового предсказания. Кадр или слайс разделенного видеосигнала 201 может быть разделен на множество видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование с межкадровым предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодека может выполнять множество проходов кодирования, например, чтобы выбрать соответствующий режим кодирования для каждого блока видеоданных.
[0076] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания - это блок, который, как установлено, близко соответствует блоку, который должен быть кодирован, с точки зрения разности пикселей. Блок предсказания также может называться опорным блоком. Такая разность пикселей может определяться суммой абсолютной разности (SAD, sum of absolute difference), суммой квадратов разности (SSD, sum of square difference) или другими показателями разности. HEVC использует несколько закодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть закодирован как блок предсказания (PU, prediction unit), содержащий данные предсказания, и/или блок преобразования (TU, transform unit), содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения формирует векторы движения, PU и TU, используя анализ искажения скорости как часть процесса оптимизации искажения скорости. Например, компонент 221 оценки движения может определять множество опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорость-искажение. Наилучшие характеристики соотношение "скорость-искажение" уравновешивают как качество восстановления видео (например, количество потерь данных при сжатии), так и эффективность кодирования (например, размер окончательного кодирования).
[0077] В некоторых примерах система 200 кодека может вычислять значения для положений субцелочисленных пикселей опорных изображений, сохраненных в компоненте 223 буфера декодированных изображений. Например, система 200 видеокодека может интерполировать значения положений четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного изображения. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в межкадровом кодированном слайсе путем сравнения положения PU с положением блока предсказания опорного изображения. Компонент 221 оценки движения выводит вычисленный вектор движения как данные движения для компонента 231 форматирования заголовка и CABAC для кодирования и движения в компонент 219 компенсации движения.
[0078] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя выборку или формирование блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 масштабирования и квантования преобразования.
[0079] Разделенный видеосигнал 201 также отправляется компоненту 215 оценки внутри изображения и компоненту 217 предсказания внутри изображения. Как и в случае компонента 221 оценки движения и компонента 219 компенсации движения, компонент 215 оценки внутри изображения и компонент 217 предсказания внутри изображения могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Компонент 215 оценки внутри изображения и компонент 217 предсказания внутри изображения предсказывают текущий блок относительно блоков в текущем кадре в качестве альтернативы межкадровому предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 оценки внутри изображения определяет режим внутреннего предсказания для использования для кодирования текущего блока. В некоторых примерах компонент 215 оценки внутри изображения выбирает соответствующий режим внутреннего предсказания для кодирования текущего блока из множества проверенных режимов внутреннего предсказания. Выбранные режимы внутреннего предсказания затем направляются в компонент 231 форматирования заголовка и CABAC для кодирования.
[0080] Например, компонент 215 оценки внутри изображения вычисляет значения скоростного искажения, используя анализ скоростного искажения для различных тестируемых режимов внутреннего предсказания, и выбирает режим внутреннего предсказания, имеющий лучшие характеристики скоростного искажения среди тестированных режимов. Анализ искажения скорости обычно определяет величину искажения (или ошибки) между закодированным блоком и исходным некодированным блоком, который был закодирован для создания закодированного блока, а также скорость передачи данных (например, количество битов), используемую для создания закодированного блока. Компонент 215 оценки внутри изображения вычисляет отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим внутреннего предсказания показывает наилучшее значение искажения скорости для блока. Кроме того, компонент 215 оценки внутри изображения может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM, depth modeling mode) на основе оптимизации скорости-искажения (RDO, rate-distortion optimization ).
[0081] Компонент 217 предсказания внутри изображения может формировать остаточный блок из блока предсказания на основе выбранных режимов внутреннего предсказания, определенных компонентом 215 оценки внутри изображения, когда он реализован на кодере, или считывать остаточный блок из битового потока, когда реализован на декодере. Остаточный блок включает в себя разницу в значениях между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 масштабирования и квантования преобразования. Компонент 215 оценки внутри изображения и компонент 217 предсказания внутри изображения могут работать как с компонентами яркости, так и с компонентами цветности.
[0082] Компонент 213 масштабирования и квантования преобразования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 масштабирования и квантования преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT, discrete cosine transform), дискретное синусоидальное преобразование (DST, discrete sine transform) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий значения коэффициентов остаточного преобразования. Также можно использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает в себя применение масштабного коэффициента к остаточной информации, так что разная частотная информация квантуется с разной степенью детализации, что может повлиять на окончательное визуальное качество восстановленного видео. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения скорости передачи битов. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена путем регулировки параметра квантования. В некоторых примерах компонент 213 масштабирования и квантования преобразования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке.
[0083] Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 масштабирования и квантования преобразования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в области пикселей, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения может вычислять опорный блок, добавляя остаточный блок обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для уменьшения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.
[0084] Компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 предсказания внутри изображения и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами на фиг. 2, компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров сильно интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным пространственным областям и включают несколько параметров для настройки того, как такие фильтры применяются. Компонент 227 анализа управления фильтрами анализирует восстановленные опорные блоки, чтобы определить, где такие фильтры должны быть применены, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр удаления блочности, фильтр подавления шума, фильтр SAO и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, в восстановленном блоке пикселей) или в частотной области, в зависимости от примера.
[0085] При работе в качестве кодера отфильтрованный восстановленный блок изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных изображений для последующего использования при оценке движения, как описано выше. При работе в качестве декодера компонент 223 буфера декодированных изображений сохраняет и пересылает восстановленные и отфильтрованные блоки на дисплей как часть выходного видеосигнала. Компонент 223 буфера декодированных изображений может быть любым устройством памяти, способным хранить блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.
[0086] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодеков и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC формирует различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные внутреннего предсказания и движения, а также остаточные данные в форме данных квантованных коэффициентов преобразования, все кодируются в битовом потоке. Конечный битовый поток включает в себя всю информацию, требуемую декодером для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режима внутреннего предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов внутреннего предсказания, указание информации о разделах и т.д. Такие данные могут быть закодированы с использованием энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC, context adaptive variable length coding), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC, yntax-based context-adaptive binary arithmetic coding), энтропийного кодирования с вероятностным интервалом разделения (PIPE, probability interval partitioning entropy) или другого метода энтропийного кодирования. После энтропийного кодирования закодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или заархивирован для последующей передачи или поиска.
[0087] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодека и/или реализации этапов 101, 103, 105, 107 и/или 109 способа 100 работы. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Разделенный видеосигнал 301 затем сжимается и кодируется в битовый поток компонентами кодера 300.
[0088] В частности, разделенный видеосигнал 301 пересылается в компонент 317 предсказания внутри изображения для внутреннего предсказания. Компонент 317 предсказания внутри изображения может быть по существу аналогичным компоненту 215 оценки внутри изображения и компоненту 217 предсказания внутри изображения. Разделенный видеосигнал 301 также пересылается в компонент 321 компенсации движения для межкадрового предсказания на основе опорных блоков в компоненте 323 буфера декодированных изображений. Компонент 321 компенсации движения может быть по существу аналогичным компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 предсказания внутри изображения и компонента 321 компенсации движения направляются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 масштабирования и квантования преобразования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе со связанными данными управления) направляются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.
[0089] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также направляются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 масштабирования и обратного преобразования. Внутриконтурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа управления фильтром и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя множество фильтров, как обсуждалось в отношении компонента 225 внутриконтурных фильтров. Отфильтрованные блоки затем сохраняются в компоненте 323 буфера декодированных изображений для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных изображений может быть по существу аналогичен компоненту 223 буфера декодированных изображений.
[0090] Фиг. 4 - это блок-схема, иллюстрирующая примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115 и/или 117 способа 100 работы.. Декодер 400 принимает битовый поток, например, от кодера 300 , и формирует восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.
[0091] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как CAVLC, CABAC, SBAC, PIPE-кодирование или другие методы энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка, чтобы обеспечить контекст для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую желаемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию о разделах, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
[0092] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 предсказания внутри изображения для восстановления в блоки изображения на основе операций внутреннего предсказания. Компонент 417 предсказания внутри изображения может быть аналогичен компоненту 215 оценки внутри изображения и компоненту 217 предсказания внутри изображения. В частности, компонент 417 предсказания внутри изображения использует режимы предсказания, чтобы найти опорный блок в кадре, и применяет остаточный блок к результату для восстановления блоков изображения, предсказанных внутри изображения. Восстановленные блоки изображения с внутренним предсказанием и/или остаточные блоки и соответствующие данные межкадрового предсказания пересылаются в компонент 423 буфера декодированных изображений через компонент 425 внутриконтурных фильтров, который может быть по существу аналогичен компоненту 223 буфера декодированных изображений и компоненту 225 внутриконтурных фильтров соответственно. Компонент 425 внутриконтурных фильтров фильтрует восстановленные блоки изображений, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных изображений. Восстановленные блоки изображения из компонента 423 буфера декодированных изображений пересылаются в компонент 421 компенсации движения для межкадрового предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для формирования блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Результирующие восстановленные блоки также могут быть отправлены через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных изображений. Компонент 423 буфера декодированных изображений продолжает хранить дополнительные восстановленные блоки изображения, которые могут быть преобразованы в кадры через информацию о разделах. Такие кадры также можно размещать последовательно. Последовательность выводится на дисплей как восстановленный выходной видеосигнал.
[0093] Имея в виду вышеизложенное, методы сжатия видео выполняют пространственное (внутри изображения) предсказание и/или временное (межкадровое) предсказание для уменьшения или удаления избыточности, присущей видеопоследовательностям. Для блочного кодирования видео слайс видео (то есть видеоизображение или часть видеоизображения) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками дерева кодирования (CTB), блоками дерева кодирования (CTU), блоками кодирования (CU) и/или узлами кодирования. Видеоблоки в внутрикодироавнном (I) слайсе изображения кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках в одном и том же изображении. Видеоблоки в межкодированном (P или B) слайсе изображения могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в одном и том же изображении или временное предсказание относительно опорных выборок в других опорных изображениях. Изображения могут называться кадрами, а опорные изображения могут называться опорными кадрами.
[0094] Пространственное или временное предсказание приводит к блоку предсказания для блока, который должен быть кодирован. Остаточные данные представляют собой пиксельные различия между исходным блоком, который должен быть кодирован, и блоком предсказания. Межкодированный блок кодируется согласно вектору движения, который указывает на блок опорных выборок, образующих блок предсказания, и остаточным данным, указывающим разницу между кодированным блоком и блоком предсказания. Блок с внутренним кодированием кодируется в соответствии с режимом внутреннего кодирования и остаточными данными. Для дальнейшего сжатия остаточные данные могут быть преобразованы из области пикселей в область преобразования, в результате чего будут получены остаточные коэффициенты преобразования, которые затем могут быть квантованы. Квантованные коэффициенты преобразования, изначально расположенные в двумерном массиве, могут сканироваться для создания одномерного вектора коэффициентов преобразования, и может применяться энтропийное кодирование для достижения еще большего сжатия.
[0095] Сжатие изображений и видео быстро растет, что привело к появлению различных стандартов кодирования. К таким стандартам кодирования видео относятся ITU-T H.261, International Organization for Standardization/International Electrotechnical Commission (ISO/IEC) MPEG-1 Part 2, ITU-T H.262 или ISO/IEC MPEG-2 Part 2, ITU-T H.263, ISO/IEC MPEG-4 Part 2, Advanced Video Coding (AVC), также известный как ITU-T H.264 или ISO/IEC MPEG-4 Part 10, и High Efficiency Video Coding (HEVC), также известный как ITU-T H.265 или MPEG-H Part 2. AVC включает такие расширения, как масштабируемое кодирование видео (SVC, Scalable Video Coding), кодирование видео с множественными ракурсами (MVC, Multiview Video Coding) и кодирование видео с множественными ракурсами плюс глубина (MVC+D, Multiview Video Coding plus Depth) и 3D AVC (3D-AVC). HEVC включает в себя такие расширения, как Scalable HEVC (SHVC), Multiview HEVC (MV-HEVC) и 3D HEVC (3D-HEVC).
[0096] Существует также новый стандарт кодирования видео, названный Универсальное кодирование видео (VVC, Versatile Video Coding), который разрабатывается совместной группой экспертов по видео (JVET) ITU-T и ISO/IEC. Хотя стандарт VVC имеет несколько рабочих проектов, в частности, один рабочий проект (WD) VVC, а именно B. Bross, J. Chen, and S. Liu, "Versatile Video Coding (Draft 5)," JVET-N1001-v3, 13th JVET Meeting, 27 марта 2019 г. (VVC Draft 5). Каждая из ссылок в этом параграфе и в предыдущем параграфе полностью включена посредством ссылки.
[0097] Описание методов, раскрытых в данном документе, основано на разрабатываемом стандарте кодирования видео Versatile Video Coding (VVC) объединенной группой экспертов по видео (JVET) ITU-T и ISO/IEC. Однако эти методы также применимы к другим спецификациям видеокодеков.
[0098] Фиг. 5 является представлением 500 взаимосвязи между изображением 502 внутренней точки произвольного доступа (IRAP, intra random access point) относительно начальных изображений 504 и замыкающих изображений 506 в порядке 508 декодирования и порядке 510 представления. В варианте осуществления изображение 502 IRAP упоминается как изображение чистого произвольного доступа (CRA, clean random access) или как изображение мгновенного обновления декодера (IDR, instantaneous decoder refresh) с изображением, декодируемым произвольным доступом (RADL, random access decodable). В HEVC изображения IDR, изображения CRA и изображения с нарушенным доступом соединения (BLA, Broken Link Access) считаются изображениями 502 IRAP. Что касается VVC, во время 12-го заседания JVET в октябре 2018 года было решено использовать изображения IDR и CRA в качестве изображений IRAP. В варианте осуществления изображения с нарушенным доступом соединения (BLA) и постепенного обновления декодера (GDR, Gradual Decoder Refresh) также могут рассматриваться как изображения IRAP. Процесс декодирования кодированной видеопоследовательности всегда начинается с IRAP.
[0099] Как показано на фиг. 5, ведущие изображения 504 (например, изображения 2 и 3) следуют за изображением 502 IRAP в порядке 508 декодирования, но предшествуют изображению 502 IRAP в порядке 510 представления. Конечное изображение 506 следует за изображением 502 IRAP как в порядке 508 декодирования, так и в порядке 510 представления. Хотя два ведущих изображения 504 и одно замыкающее изображение 506 изображены на фиг. 5, специалисты в данной области техники поймут, что больше или меньше начальных изображений 504 и/или замыкающих изображений 506 может присутствовать в порядке 508 декодирования и порядке 510 представления в практических приложениях.
[0100] Ведущие изображения 504 на фиг. 5 были разделены на два типа, а именно: произвольный доступ с пропущенным ведущим (RASL) и RADL. Когда декодирование начинается с изображения 502 IRAP (например, изображения 1), изображение RADL (например, изображение 3) может быть правильно декодировано; однако изображение RASL (например, изображение 2) не может быть правильно декодировано. Таким образом, изображение RASL отбрасывается. В свете различия между изображениями RADL и RASL тип ведущего изображения 504, связанного с изображением 502 IRAP, должен быть идентифицирован как RADL или RASL для эффективного и правильного кодирования. В HEVC, когда присутствуют изображения RASL и RADL, ограничено, что для изображений RASL и RADL, которые связаны с одним и тем же изображением 502 IRAP, изображения RASL должны предшествовать изображениям RADL в порядке 510 представления.
[0101] Изображение 502 IRAP обеспечивает следующие две важные функции/преимущества. Во-первых, наличие изображения 502 IRAP указывает, что процесс декодирования может начинаться с этого изображения. Эта функциональность позволяет использовать функцию произвольного доступа, в которой процесс декодирования начинается в этой позиции в битовом потоке, не обязательно в начале битового потока, пока изображение 502 IRAP присутствует в этой позиции. Во-вторых, наличие изображения 502 IRAP обновляет процесс декодирования, так что кодированное изображение, начинающееся с изображения 502 IRAP, исключая изображения RASL, кодируется без какой-либо ссылки на предыдущие изображения. Наличие изображения 502 IRAP, присутствующего в битовом потоке, следовательно, остановит любую ошибку, которая может произойти во время декодирования кодированных изображений до изображения 502 IRAP для распространения на изображение 502 IRAP и те изображения, которые следуют за изображением 502 IRAP в порядке 508 декодирования.
[0102] Хотя изображения 502 IRAP обеспечивают важные функциональные возможности, они снижают эффективность сжатия. Присутствие изображения 502 IRAP вызывает скачок скорости передачи данных. Это снижение эффективности сжатия вызвано двумя причинами. Во-первых, поскольку изображение 502 IRAP является изображением с внутренним предсказанием, само изображение потребует относительно большего количества битов для представления по сравнению с другими изображениями (например, ведущими изображениями 504, замыкающими изображениями 506), которые являются изображениями с межкадровым предсказанием. Во-вторых, поскольку наличие изображения 502 IRAP нарушает временное предсказание (это потому, что декодер обновляет процесс декодирования, в котором одним из действий процесса декодирования является удаление предыдущих опорных изображений в буфере декодированных изображений (DPB )) изображение 502 IRAP приводит к тому, что кодирование изображений, следующих за изображением 502 IRAP в порядке 508 декодирования, становится менее эффективным (то есть для представления требуется больше битов), потому что они имеют меньше опорных изображений для их кодирования с межкадровым предсказанием.
[0103] Среди типов изображения, которые считаются изображениями 502 IRAP, изображение IDR в HEVC имеет другую сигнализацию и происхождение по сравнению с другими типами изображений. Некоторые отличия заключаются в следующем.
[0104] Для сигнализации и вывода значения счетчика порядка изображений (POC, picture order count) IDR-изображения часть старшего бита (MSB, most significant bit) POC не выводится из предыдущего ключевого изображения, а просто устанавливается равной 0.
[0105] Что касается сигнальной информации, необходимой для управления опорным изображением, заголовок слайса IDR-изображения не содержит информации, необходимой для передачи сигналов для помощи в управлении опорным изображением. Для других типов изображений (например, CRA, трейлинг, доступ к временному подуровню (TSA, temporal sub-layer access) и т.д.) Информация, такая как набор опорных изображений (RPS, reference picture set), описанная ниже, или другие формы аналогичной информации (например, списки опорных изображений) являются необходим для процесса маркировки опорных изображений (т.е. процесса определения статуса опорных изображений в буфере декодированных изображений (DPB, decoded picture buffer), которые используются для справки или не используются для справки). Однако для изображения IDR такую информацию не нужно сообщать, потому что наличие IDR указывает, что процесс декодирования должен просто пометить все опорные изображения в DPB как неиспользуемые для справки.
[0106] Помимо концепции изображений IRAP, есть также ведущие изображения, которые, если они есть, связаны с изображением IRAP. Ведущие изображения - это изображения, которые следуют за связанным с ним изображением IRAP в порядке декодирования, но предшествуют изображению IRAP в порядке вывода. В зависимости от конфигурации кодирования и структуры ссылок на изображения ведущие изображения далее идентифицируются по двум типам. Первый тип - это начальные изображения, которые могут быть некорректно декодированы, если процесс декодирования начинается с связанного с ним изображения IRAP. Это может происходить из-за того, что эти ведущие изображения кодируются со ссылкой на изображения, которые предшествуют изображению IRAP в порядке декодирования. Такие начальные изображения называются начальными кадрами с произвольным доступом с пропуском (RASL, random access skipped leading). Второй тип - это начальные изображения, которые должны быть правильно декодированы, даже если процесс декодирования начинается с связанного с ним изображения IRAP. Это возможно, потому что эти ведущие изображения кодируются без ссылки прямо или косвенно на изображения, которые предшествуют изображению IRAP в порядке декодирования. Такие ведущие изображения называются ведущими изображениями, декодируемыми с произвольным доступом (RADL, called random access decodable leading). В HEVC, когда присутствуют изображения RASL и RADL, ограничено, что для изображений RASL и RADL, которые связаны с одним и тем же изображением IRAP, изображения RASL должны предшествовать изображениям RADL в порядке вывода.
[0107] В HEVC и VVC изображения 502 IRAP и начальные изображения 504 могут каждое содержаться в одном блоке уровня абстракции сети (NAL, network abstraction layer). Набор блоков NAL может называться блоком доступа. Изображениям 502 IRAP и начальным изображениям 504 присваиваются разные типы блоков NAL, чтобы их можно было легко идентифицировать приложениями системного уровня. Например, монтажному устройству видео необходимо понимать типы кодированных изображений без необходимости понимать слишком много деталей синтаксического элемента в кодированном битовом потоке, в частности, чтобы идентифицировать изображения 502 IRAP из изображений, не относящихся к IRAP, и идентифицировать ведущие изображения 504, включая определение RASL и Изображения RADL из замыкающих изображений 506. Конечные изображения 506 - это те изображения, которые связаны с изображением 502 IRAP и следуют за изображением 502 IRAP в порядке 510 представления. Изображение может следовать за конкретным изображением 502 IRAP в порядке 508 декодирования и предшествовать любому другому изображению 502 IRAP в порядке 508 декодирования. Для этого обеспечение изображений 502 IRAP и первых изображений 504 их собственного типа блока NAL помогает таким приложениям.
[0108] Для HEVC типы блоков NAL для изображений IRAP включают следующее:
BLA с ведущим изображением (BLA_W_LP): Блок NAL изображения доступа к нарушенному соединению (BLA, Broken Link Access), за которым может следовать одно или более ведущих изображений в порядке декодирования.
BLA с RADL (BLA_W_RADL): Блок NAL изображения BLA, за которым может следовать одно или более изображений RADL, но не изображение RASL в порядке декодирования.
BLA без ведущего изображения (BLA_N_LP): Блок NAL изображения BLA, за которым не следует ведущее изображение в порядке декодирования.
IDR с RADL (IDR_W_RADL): Блок NAL изображения IDR, за которым может следовать одно или более изображений RADL, но не изображение RASL в порядке декодирования.
IDR без ведущего изображения (IDR_N_LP): Блок NAL изображения IDR, за которым не следует ведущее изображение в порядке декодирования.
CRA: Блок NAL изображения с чистым произвольным доступом (CRA, Clean Random Access), за которым могут следовать начальные изображения (т.е. либо изображения RASL, либо изображения RADL, либо и то, и другое).
RADL: Блок NAL изображения RADL.
RASL: Блок NAL изображения RASL.
[0109] Для VVC тип блока NAL для изображений 502 IRAP и ведущих изображений 504 следующий:
IDR с RADL (IDR_W_RADL): Блок NAL изображения IDR, за которым может следовать одно или более изображений RADL, но не изображение RASL в порядке декодирования.
IDR без ведущего изображения (IDR_N_LP): Блок NAL изображения IDR, за которым не следует ведущее изображение в порядке декодирования.
CRA: Блок NAL изображения с чистым произвольным доступом (CRA, Clean Random Access), за которым могут следовать начальные изображения (т.е. Либо изображения RASL, либо изображения RADL, либо и то, и другое).
RADL: Блок NAL изображения RADL.
RASL: Блок NAL изображения RASL.
[0110] Функция передискретизации опорного изображения (RPR, reference picture resampling) - это способность изменять пространственное разрешение кодированных изображений в середине битового потока без необходимости внутреннего кодирования изображения в месте изменения разрешения. Чтобы сделать это возможным, изображение должно иметь возможность ссылаться для целей межкадрового предсказания на одно или более опорных изображений, для которых пространственное разрешение отличается от разрешения текущего изображения. Следовательно, передискретизация такого опорного изображения или его части необходима для кодирования и декодирования текущего изображения. Таким образом, название RPR. Эта функция также может называться адаптивным изменением разрешения (ARC) или другими названиями. Существуют сценарии использования или сценарии приложений, для которых функция RPR может быть полезна, в том числе следующие.
[0111] Адаптация скорости в видеотелефонии и конференц-связи. Это необходимо для адаптации закодированного видео к изменяющимся условиям сети. Когда состояние сети ухудшается, и доступная пропускная способность становится ниже, кодер может адаптироваться к этому, кодируя изображения с меньшим разрешением.
[0112] Смена активного выступающего в многосторонней видеоконференцсвязи. Для многосторонней видеоконференцсвязи обычно размер видео для активного выступающего больше или больше, чем размер видео для остальных участников конференции. При смене активного выступающего может также потребоваться настройка разрешения изображения для каждого участника. Необходимость иметь функции ARC становится более важной, когда смена активного динамика происходит часто.
[0113] Быстрый старт в потоковой передаче. Для потокового приложения обычно выполняется буферизация декодированных изображений до определенной длины перед тем, как начать отображение изображений. Запуск битового потока с меньшим разрешением позволит приложению иметь достаточно изображений в буфере для более быстрого отображения.
[0114] Адаптивное переключение потоков в потоковой передаче. Спецификация динамической адаптивной потоковой передачи через HTTP (DASH) включает функцию с именем @mediaStreamStructureId. Эта функция позволяет переключаться между различными представлениями в точках произвольного доступа открытой группы изображений (GOP, open-group of picture) с не декодируемыми ведущими изображениями, например, изображения CRA со связанными изображениями RASL в HEVC. Когда два разных представления одного и того же видео имеют разные битрейты, но одинаковое пространственное разрешение и одинаковое значение @mediaStreamStructureId, может выполняться переключение между двумя представлениями в изображении CRA со связанными изображениями RASL, а изображения RASL, связанные с переключающиеся изображения CRA могут быть декодированы с приемлемым качеством, что обеспечивает плавное переключение. С ARC функция @mediaStreamStructureId также может использоваться для переключения между представлениями DASH с различным пространственным разрешением.
[0115] Различные методы упрощают базовые методы поддержки RPR/ARC, такие как сигнализация списков разрешений изображений, некоторые ограничения передискретизации опорных изображений в DPB и т.д.
[0116] Одним из компонентов метода, необходимого для поддержки RPR, является метод передачи сигналов разрешения изображения, которое может присутствовать в битовом потоке. В некоторых примерах это решается путем изменения текущей сигнализации разрешения изображения со списком разрешений изображения в SPS, как показано ниже.
[0117] num_pic_size_in_luma_samples_minus1 плюс 1 определяет количество размеров изображения (ширины и высоты) в единицах выборок яркости, которые могут присутствовать в кодированной видеопоследовательности.
[0118] pic_width_in_luma_samples [i] определяет i-ю ширину декодированных изображений в единицах выборок яркости, которые могут присутствовать в кодированной видеопоследовательности. pic_width_in_luma_samples [i] не должно быть равно 0 и должно быть целым кратным MinCbSizeY.
[0119] pic_height_in_luma_samples [i] определяет i-ю высоту декодированных изображений в единицах выборок яркости, которые могут присутствовать в кодированной видеопоследовательности. pic_height_in_luma_samples [i] не должно быть равно 0 и должно быть целым кратным MinCbSizeY.
[0120] Во время 15-й встречи JVET был обсужден другой вариант сигнального размера изображения и окон соответствия для поддержки RPR. Сигнализация следующая.
[0121] - Укажите максимальный размер изображения (т.е. ширину и высоту изображения) в SPS
[0122] - Размер изображения сигнала в наборе параметров изображения (PPS, picture parameter set).
[0123] - Переместить текущую сигнализацию окон соответствия с SPS на PPS. Информация окна соответствия используется для обрезки восстановленных/декодированных изображений в процессе подготовки изображения к выводу. Размер кадрированного изображения - это размер изображения после кадрирования изображения с использованием связанного с ним окна соответствия.
[0124] Сигнализация размеров изображения и окон соответствия выглядит следующим образом.
[0125] max_width_in_luma_samples определяет, что требование соответствия битового потока, чтобы pic_width_in_luma_samples для любого изображения, для которого этот SPS активен, было меньше или равно max_width_in_luma_samples.
[0126] max_height_in_luma_samples определяет, что требование соответствия битового потока, чтобы pic_height_in_luma_samples для любого изображения, для которого этот SPS активен, было меньше или равно max_height_in_luma_samples.
[0127] pic_width_in_luma_samples определяет ширину каждого декодированного изображения со ссылкой на PPS в единицах выборок яркости. pic_width_in_luma_samples не должно быть равно 0 и должно быть целым числом, кратным MinCbSizeY.
[0128] pic_height_in_luma_samples определяет высоту каждого декодированного изображения со ссылкой на PPS в единицах выборок яркости. pic_height_in_luma_samples не должно быть равно 0 и должно быть целым кратным MinCbSizeY.
[0129] Требование соответствия битового потока состоит в том, чтобы выполнялись все следующие условия для каждого активного опорного изображения, ширина и высота которого равны reference_pic_width_in_luma_samples и reference_pic_height_in_luma_samples:
2 * pic_width_in_luma_samples>=reference_pic_width_in_luma_samples
2 * pic_height_in_luma_samples>=reference_pic_height_in_luma_samples
pic_width_in_luma_samples <= 8 * reference_pic_width_in_luma_samples
pic_height_in_luma_samples <= 8 * reference_pic_height_in_luma_samples
[0130] Переменные PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC и PicHeightInSamplesC выводятся следующим образом:
PicWidthInCtbsY=Ceil (pic_width_in_luma_samples ÷ CtbSizeY) (1)
PicHeightInCtbsY=Ceil (pic_height_in_luma_samples ÷ CtbSizeY) (2)
PicSizeInCtbsY=PicWidthInCtbsY * PicHeightInCtbsY (3)
PicWidthInMinCbsY=pic_width_in_luma_samples/MinCbSizeY (4)
PicHeightInMinCbsY=pic_height_in_luma_samples/MinCbSizeY (5)
PicSizeInMinCbsY=PicWidthInMinCbsY * PicHeightInMinCbsY (6)
PicSizeInSamplesY=pic_width_in_luma_samples * pic_height_in_luma_samples (7)
PicWidthInSamplesC=pic_width_in_luma_samples/SubWidthC (8)
PicHeightInSamplesC=pic_height_in_luma_samples/SubHeightC (9)
[0131] conformance_window_flag, равное 1, указывает, что параметры смещения окна обрезки соответствия следуют далее в PPS. conformance_window_flag, равное 0, указывает, что параметры смещения окна обрезки соответствия отсутствуют.
[0132] conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset определяют выборки изображений, ссылающихся на PPS, которые выводятся из процесса декодирования, в терминах прямоугольной области, указанной в координатах изображения для вывода. Когда conformance_window_flag равно 0, значения conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset считаются равными 0.
[0133] Окно обрезки соответствия содержит выборки яркости с горизонтальными координатами изображения от SubWidthC * conf_win_left_offset до pic_width_in_luma_samples - (SubWidthC * conf_win_right_offset+1) и вертикальными координатами изображения от SubHeightC * conf_win_top_offset до pic_height_in_luma_samples − ( SubHeightC * conf_win_bottom_offset + 1 ) включительно.
[0134] Значение SubWidthC * (conf_win_left_offset+conf_win_right_offset) должно быть меньше pic_width_in_luma_samples, а значение SubHeightC * (conf_win_top_offset+conf_win_bottom_offset) должно быть меньше pic_height_in_luma_samples.
[0135] Переменные PicOutputWidthL и PicOutputHeightL выводятся следующим образом:
PicOutputWidthL=pic_width_in_luma_samples - (10) SubWidthC * (conf_win_right_offset+conf_win_left_offset)
PicOutputHeightL=pic_height_in_pic_size_units - (11) SubHeightC * (conf_win_bottom_offset+conf_win_top_offset)
[0136] Когда ChromaArrayType не равно 0, соответствующие определенные выборки двух массивов цветности являются выборками, имеющими координаты изображения (x/SubWidthC, y/SubHeightC), где (x, y) - координаты изображения определенных выборок яркости.
[0137] ПРИМЕЧАНИЕ - Параметры смещения окна обрезки соответствия применяются только на выходе. Все внутренние процессы декодирования применяются к размеру необрезанного изображения.
[0138] Сигнализация размера изображения и окна соответствия в PPS создает следующие проблемы.
[0139] - Поскольку множество PPS могут присутствовать в кодированной видеопоследовательности (CVS), возможно, что два PPS могут содержать сигнализацию одного и того же размера изображения, но разные окна соответствия. Это приведет к ситуации, когда два изображения, относящиеся к разным PPS, будут иметь одинаковый размер изображения, но разный размер обрезки.
[0140] - Для поддержки RPR было предложено отключить несколько инструментов кодирования для кодирования блока, когда текущее изображение и опорное изображение блока имеют разные размеры изображения. Однако, поскольку теперь возможно, что размер обрезки также может отличаться, даже если два изображения имеют одинаковый размер изображения, необходимо иметь дополнительную проверку на основе размера обрезки.
[0141] В данном документе раскрыты методы, которые ограничивают наборы параметров изображения, которые имеют одинаковый размер изображения, чтобы они также имели одинаковый размер окна соответствия (например, размер окна обрезки). Сохраняя окно соответствия одного и того же размера для наборов параметров изображения, имеющих одинаковый размер изображения, можно избежать чрезмерно сложной обработки, когда разрешена передискретизация опорного изображения (RPR, reference picture resampling). Таким образом, использование процессора, памяти и/или сетевых ресурсов может быть уменьшено как в кодере, так и в декодере. Таким образом, кодер/декодер (также известный как «кодек») при кодировании видео улучшен по сравнению с текущими кодеками. На практике улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.
[0142] Масштабируемость при кодировании видео обычно поддерживается за счет использования методов многоуровневого кодирования. Многоуровневый битовый поток содержит базовый уровень (BL, base layer) и один или более уровней расширения (EL, enhancement layers). Примеры масштабируемости включают в себя пространственную масштабируемость, масштабируемость качества/отношения сигнал/шум (SNR, signal-to-noise), масштабируемость с множеством представлений и т.д. Когда используется метод многоуровневого кодирования, изображение или его часть могут кодироваться (1) без использования опорного изображения, то есть с использованием внутреннего предсказания; (2) путем ссылки на опорные изображения, которые находятся на одном уровне, т.е. С использованием межкадрового предсказания; или (3) путем ссылки на опорные изображения, которые находятся на другом уровне (ах), т.е. с использованием межуровневого предсказания. Опорное изображение, используемое для межуровневого предсказания текущего изображения, называется межуровневым опорным изображением (ILRP, inter-layer reference picture ).
[0143] Фиг. 6 является схематической диаграммой, иллюстрирующей пример предсказания 600 на основе уровней, например, выполняемого для определения MV на этапе 105 сжатия блока, этапе 113 декодирования блока, компоненте 221 оценки движения, компоненте 219 компенсации движения, компоненте 321 компенсации движения и/или Компонент компенсации движения 421. Предсказание 600 на основе уровней совместимо с однонаправленным межкадровым предсказанием и/или двунаправленным межкадровым предсказанием, но также выполняется между изображениями на разных уровнях.
[0144] Предсказание 600 на основе уровней применяется между изображениями 611, 612, 613 и 614 и изображениями 615, 616, 617 и 618 на разных уровнях. В показанном примере изображения 611, 612, 613 и 614 являются частью уровеня N+1 632, а изображения 615, 616, 617 и 618 являются частью уровень N 631. Уровень, такой как уровень N 631 и/или уровень N+1 632, представляет собой группу изображений, которые все связаны с аналогичным значением характеристики, например, аналогичным размером, качеством, разрешением, отношением сигнал/шум, возможностями, и т.д. В показанном примере уровень N+1 632 связан с большим размером изображения, чем уровень N 631. Соответственно, изображения 611, 612, 613 и 614 в уровне N+1 632 имеют больший размер изображения (например, большую высоту и ширину и, следовательно, больше выборок), чем изображения 615, 616, 617 и 618 в уровне N 631 в этом пример. Однако такие изображения могут быть разделены между уровнем N+1 632 и уровнем N 631 другими характеристиками. Хотя показаны только два уровня, уровень N+1 632 и уровень N 631, набор изображений может быть разделен на любое количество уровней на основе связанных характеристик. Уровень N+1 632 и уровень N 631 также могут обозначаться идентификатором уровня. Идентификатор уровня - это элемент данных, который связан с изображением и обозначает, что изображение является частью указанного уровня. Соответственно, каждое изображение 611-618 может быть связано с соответствующим идентификатором уровня, чтобы указать, какой уровень N+1 632 или уровень N 631 включает в себя соответствующее изображение.
[0145] Изображения 611-618 на разных уровнях 631-632 конфигурируются для отображения в альтернативе. По существу, изображения 611-618 на разных уровнях 631-632 могут совместно использовать один и тот же временной идентификатор (ID) и могут быть включены в один и тот же AU. Как здесь используется, AU - это набор из одного или более кодированных изображений, связанных с одним и тем же временем отображения для вывода из DPB. Например, декодер может декодировать и отображать изображение 615 в текущее время отображения, если требуется меньшее изображение, или декодер может декодировать и отображать изображение 611 в текущее время отображения, если требуется большее изображение. По существу, изображения 611-614 на более высоком уровне N+1 632 содержат по существу те же данные изображения, что и соответствующие изображения 615-618 на нижнем уровне N 631 (несмотря на разницу в размере изображения). В частности, изображение 611 содержит по существу те же данные изображения, что и изображение 615, изображение 612 содержит по существу те же данные изображения, что и изображение 616, и т.д.
[0146] Изображения 611-618 могут быть закодированы посредством ссылки на другие изображения 611-618 на том же уровне N 631 или N+1 632. Кодирование изображения по отношению к другому изображению на том же уровне приводит к межкадровому предсказанию 623, которое является совместимым с однонаправленным межкадровым предсказанием и/или двунаправленным межкадровым предсказанием. Межкадровое предсказание 623 показано стрелками, сплошными линиями. Например, изображение 613 может быть закодировано с использованием межкадрового предсказания 623 с использованием одного или двух изображений 611, 612 и/или 614 на уровне N+1 632 в качестве эталона, где на одно изображение ссылаются для однонаправленного межкадрового предсказания и/или два изображения являются опорными для двунаправленного межкадрового предсказания. Кроме того, изображение 617 может быть закодировано с использованием межкадрового предсказания 623 с использованием одного или двух изображений 615, 616 и/или 618 на уровне N 631 в качестве эталона, где на одно изображение ссылаются для однонаправленного межкадрового предсказания и/или два изображения являются опорными для двунаправленного межкадрового предсказания. Когда изображение используется в качестве эталона для другого изображения на том же уровне при выполнении 623 межкадрового предсказания, изображение может называться опорным изображением. Например, изображение 612 может быть опорным изображением, используемым для кодирования изображения 613 согласно межкадровому предсказанию 623. Межкадровое предсказание 623 также может называться внутриуровневым предсказанием в многоуровневом контексте. Таким образом, межкадровое предсказание 623 представляет собой механизм кодирования выборок текущего изображения посредством ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся на одном уровне.
[0147] Изображения 611-618 также можно кодировать со ссылкой на другие изображения 611-618 на разных уровнях. Этот процесс известен как межуровневое предсказание 621 и обозначен пунктирными стрелками. Межуровневое предсказание 621 - это механизм кодирования выборок текущего изображения со ссылкой на указанные выборки в опорном изображении, где текущее изображение и опорное изображение находятся на разных уровнях и, следовательно, имеют разные идентификаторы уровня. Например, изображение на нижнем уровне N 631 может использоваться в качестве опорного изображения для кодирования соответствующего изображения на более высоком уровне N+1 632. В качестве конкретного примера изображение 611 может быть закодировано со ссылкой на изображение 615 согласно межуровневому предсказанию 621. В таком случае изображение 615 используется в качестве межуровневого опорного изображения. Межуровневое опорное изображение - это опорное изображение, используемое для межуровневого предсказания 621. В большинстве случаев межуровневое предсказание 621 ограничено таким образом, что текущее изображение, такое как изображение 611, может использовать только межуровневое опорное(-ые) изображение(-я), которые включены в один и тот же AU и находятся на более низком уровне, например изображение 615. Когда доступно множество уровней (например, более двух), межуровневое предсказание 621 может кодировать/декодировать текущее изображение на основе множестве межуровневых опорных изображений на более низких уровнях, чем текущее изображение.
[0148] Видеокодер может использовать предсказание 600 на основе уровней для кодирования изображений 611-618 посредством множества различных комбинаций и/или перестановок межкадрового предсказания 623 и межуровневого предсказания 621. Например, изображение 615 может быть закодировано согласно внутреннему предсказанию. Изображения 616-618 затем могут быть кодированы согласно межкадровому предсказанию 623 с использованием изображения 615 в качестве опорного изображения. Кроме того, изображение 611 может быть закодировано согласно межуровневому предсказанию 621 с использованием изображения 615 в качестве межуровневого опорного изображения. Изображения 612-614 затем могут быть кодированы согласно межкадровому предсказанию 623 с использованием изображения 611 в качестве опорного изображения. По существу, опорное изображение может служить как одноуровневым опорным изображением, так и межуровневым опорным изображением для различных механизмов кодирования. Посредством кодирования N+1 632 изображений более высокого уровня на основе изображений N 631 нижнего уровня, N+1 632 более высокого уровня может избежать использования внутреннего предсказания, которое имеет гораздо более низкую эффективность кодирования, чем межкадровое предсказание 623 и межуровневое предсказание 621. По существу, низкая эффективность кодирования внутреннего предсказания может быть ограничена изображениями наименьшего/самого низкого качества и, следовательно, ограничена кодированием наименьшего объема видеоданных. Изображения, используемые в качестве опорных изображений и/или межуровневых опорных изображений, могут быть указаны в записях списка (-ов) опорных изображений, содержащихся в структуре списка опорных изображений.
[0149] Предыдущие семейства кодирования видео H.26x обеспечивали поддержку масштабируемости в профиле (-ях), отличном от профиля (-ей) для одноуровневого кодирования. Масштабируемое кодирование видео (SVC) - это масштабируемое расширение AVC/H.264, которое обеспечивает поддержку пространственной, временной масштабируемости и масштабируемости качества. Для SVC в каждом макроблоке (MB, macroblock) в изображениях EL сигнализируется флаг, чтобы указать, предсказывается ли MB EL с использованием совместно размещенного блока с нижнего уровня. Предсказание из совместно размещенного блока может включать в себя текстуру, векторы движения и/или режимы кодирования. Реализации SVC не могут напрямую повторно использовать немодифицированные реализации H.264/AVC в своих проектах. Синтаксис и процесс декодирования макроблока SVC EL отличается от синтаксиса и процесса декодирования H.264/AVC.
[0150] Масштабируемый HEVC (SHVC) - это расширение стандарта HEVC/H.265, которое обеспечивает поддержку пространственной масштабируемости и качества, многоракурсный HEVC (MV-HEVC) - это расширение HEVC/H.265, которое обеспечивает поддержку многовидового масштабирования, а 3D HEVC (3D-HEVC) - это расширение HEVC/H.264, которое обеспечивает поддержку трехмерного (3D) кодирования видео, которое является более продвинутым и более эффективным, чем MV-HEVC. Обратите внимание, что временная масштабируемость включена как неотъемлемая часть одноуровневый кодека HEVC. В конструкции многоуровневого расширения HEVC используется идея, согласно которой декодированные изображения, используемые для межуровневого предсказания, поступают только из одного и того же блока доступа (AU, access unit) и обрабатываются как долгосрочные опорные изображения (LTRP, long-term reference picture), и им назначаются опорные индексы в списке (-ах) опорных изображений вместе с другими временными опорными изображениями в текущем уровне. Межуровневое предсказание (ILP) достигается на уровне блока предсказания (PU, prediction unit) путем установки значения опорного индекса для ссылки на межуровневое опорное изображение(-я) в списке(-ах) опорных изображений.
[0151] Примечательно, что функции передискретизации опорного изображения и пространственной масштабируемости требуют передискретизации опорного изображения или его части. Передискретизация опорного изображения может быть реализована либо на уровне изображения, либо на уровне блока кодирования. Однако, когда RPR упоминается как функция кодирования, это функция для одноуровневого кодирования. Даже в этом случае возможно или даже предпочтительно с точки зрения разработки кодека использовать один и тот же фильтр передискретизации как для функции RPR одноуровневого кодирования, так и для функции пространственной масштабируемости для многоуровневого кодирования.
[0152] Фиг. 7 - схематическая диаграмма, иллюстрирующая пример однонаправленного межкадрового предсказания 700. Однонаправленное межкадровое предсказание может использоваться для определения векторов движения для кодированных и/или декодированных блоков, созданных при разделении изображения.
[0153] Однонаправленное межкадровое предсказание 700 использует опорный кадр 730 с опорным блоком 731 для предсказания текущего блока 711 в текущем кадре 710. Опорный кадр 730 может быть размещен во времени после текущего кадра 710, как показано (например, как последующий опорный кадр), но также может быть временно расположен перед текущим кадром 710 (например, как предыдущий опорный кадр) в некоторых примерах. Текущий кадр 710 является примером кадра/изображения, кодируемого/декодируемого в конкретное время. Текущий кадр 710 содержит объект в текущем блоке 711, который соответствует объекту в опорном блоке 731 опорного кадра 730. Опорный кадр 730 - это кадр, который используется в качестве опорного для кодирования текущего кадра 710, а опорный блок 731 - это блок в опорном кадре 730, который содержит объект, также содержащийся в текущем блоке 711 текущего кадра 710.
[0154] Текущий блок 711 - это любая единица кодирования, которая кодируется/декодируется в определенной точке процесса кодирования. Текущий блок 711 может быть целым разделенным блоком или может быть субблоком при использовании режима аффинного межкадрового предсказания. Текущий кадр 710 отделен от опорного кадра 730 некоторым временным расстоянием (TD, temporal distance) 733. TD 733 указывает количество времени между текущим кадром 710 и опорным кадром 730 в видеопоследовательности и может измеряться в единицах кадров. Информация предсказания для текущего блока 711 может ссылаться на опорный кадр 730 и/или опорный блок 731 посредством опорного индекса, указывающего направление и временное расстояние между кадрами. В течение периода времени, представленного TD 733, объект в текущем блоке 711 перемещается из позиции в текущем кадре 710 в другую позицию в опорном кадре 730 (например, в позицию опорного блока 731). Например, объект может двигаться по траектории 713 движения, которая является направлением движения объекта во времени. Вектор 735 движения описывает направление и величину движения объекта по траектории 713 движения над TD 733. Соответственно, кодированный вектор 735 движения, опорный блок 731 и остаток, включающий разницу между текущим блоком 711 и опорным блоком 731, обеспечивают информацию, достаточную для восстановления текущего блока 711 и размещения текущего блока 711 в текущем кадре 710.
[0155] Фиг. 8 - схематическая диаграмма, иллюстрирующая пример двунаправленного межкадрового предсказания 800. Двунаправленное межкадровое предсказание может использоваться для определения векторов движения для кодированных и/или декодированных блоков, созданных при разделении изображения.
[0156] Двунаправленное межкадровое предсказание 800 аналогично однонаправленному межкадровому предсказанию 700, но использует пару опорных кадров для предсказания текущего блока 811 в текущем кадре 810. Следовательно, текущий кадр 810 и текущий блок 811 по существу аналогичны текущему кадру 710 и текущему блоку 711 соответственно. Текущий кадр 810 позиционируется во времени между предыдущим опорным кадром 820, который возникает перед текущим кадром 810 в видеопоследовательности, и последующим опорным кадром 830, который происходит после текущего кадра 810 в видеопоследовательности. Предыдущий опорный кадр 820 и последующий опорный кадр 830 в остальном по существу аналогичны опорному кадру 730.
[0157] Текущий блок 811 соответствует предыдущему опорному блоку 821 в предыдущем опорном кадре 820 и последующему опорному блоку 831 в последующем опорном кадре 830. Такое совпадение указывает, что в ходе видеопоследовательности объект перемещается из позиции в предыдущем опорном блоке 821 в позицию в последующем опорном блоке 831 по траектории 813 движения и через текущий блок 811. Текущий кадр 810 отделен от предыдущего опорного кадра 820 некоторым предыдущим временным расстоянием (TD0) 823 и отделен от последующего опорного кадра 830 некоторым последующим временным расстоянием (TD1) 833. TD0 823 указывает количество времени между предыдущим опорным кадром 820 и текущим кадром 810 в видеопоследовательности в единицах кадров. TD1 833 указывает количество времени между текущим кадром 810 и последующим опорным кадром 830 в видеопоследовательности в единицах кадра. Следовательно, объект перемещается от предыдущего опорного блока 821 к текущему блоку 811 по траектории 813 движения в течение периода времени, указанного TD0 823. Объект также перемещается от текущего блока 811 к последующему опорному блоку 831 по траектории 813 движения в течение периода времени, указанного TD1 833. Информация предсказания для текущего блока 811 может ссылаться на предыдущий опорный кадр 820 и/или предшествующий опорный блок 821 и последующий опорный кадр 830 и/или последующий опорный блок 831 посредством пары опорных индексов, указывающих направление и временное расстояние между кадрами.
[0158] Предыдущий вектор движения (MV0) 825 описывает направление и величину движения объекта по траектории 813 движения по TD0 823 (например, между предыдущим опорным кадром 820 и текущим кадром 810). Последующий вектор движения (MV1) 835 описывает направление и величину движения объекта по траектории 813 движения по TD1 833 (например, между текущим кадром 810 и последующим опорным кадром 830). По существу, при двунаправленном межкадровом предсказании 800 текущий блок 811 может быть закодирован и восстановлен с использованием предыдущего опорного блока 821 и/или последующего опорного блока 831, MV0 825 и MV1 835.
[0159] В варианте осуществления межкадровое предсказание и/или двунаправленное межкадровое предсказание может выполняться на основе выборки за выборкой (например, пиксель за пикселем), а не на поблочной основе. То есть вектор движения, указывающий на каждую выборку в предыдущем опорном блоке 821 и/или последующем опорном блоке 831, может быть определен для каждой выборки в текущем блоке 811. В таких вариантах осуществления вектор 825 движения и вектор 835 движения, показанные на фиг. 8 представляют множество векторов движения, соответствующих множеству выборок в текущем блоке 811, предыдущем опорном блоке 821 и последующем опорном блоке 831.
[0160] Как в режиме слияния, так и в режиме расширенного предсказания вектора движения (AMVP, advanced motion vector prediction) список кандидатов формируется путем добавления векторов движения кандидатов в список кандидатов в порядке, определенном шаблоном определения списка кандидатов. Такие векторы движения-кандидаты могут включать в себя векторы движения согласно однонаправленному межкадровому предсказанию 700, двунаправленному межкадровому предсказанию 800 или их комбинациям. В частности, векторы движения формируются для соседних блоков, когда такие блоки кодируются. Такие векторы движения добавляются в список кандидатов для текущего блока, и вектор движения для текущего блока выбирается из списка кандидатов. Затем вектор движения может быть передан как индекс выбранного вектора движения в списке кандидатов. Декодер может создать список кандидатов, используя тот же процесс, что и кодер, и может определить выбранный вектор движения из списка кандидатов на основе переданного индекса. Следовательно, векторы движения-кандидаты включают в себя векторы движения, сформированные согласно однонаправленному межкадровому предсказанию 700 и/или двунаправленному межкадровому предсказанию 800, в зависимости от того, какой подход используется при кодировании таких соседних блоков.
[00161] Фиг. 9 иллюстрирует битовый поток 900 видео. В данном контексте битовый поток 900 видео также может называться кодированным битовым потоком видео, битовым потоком или. Как показано на фиг. 9, битовый поток 900 содержит набор 902 параметров последовательности (SPS, sequence parameter set), набор 904 параметров изображения (PPS, picture parameter set), заголовок 906 слайса и данные 908 изображения.
[00162] SPS 902 содержит данные, общие для всех изображений в последовательности изображений (SOP, sequence of pictures). Напротив, PPS 904 содержит данные, общие для всего изображения. Заголовок 906 слайса содержит информацию о текущем слайсе, такую как, например, тип слайса, какое из опорных изображений будет использоваться, и так далее. SPS 902 и PPS 904 в общем могут называться набором параметров. SPS 902, PPS 904 и заголовок 906 слайса являются типами блоков уровня абстракции сети (NAL, Network Abstraction Layer). Блок NAL - это синтаксическая структура, содержащая указание типа данных, которым следует следовать (например, кодированные видеоданные). Блоки NAL подразделяются на блоки уровня кодирования видео (VCL) и блоки NAL, не относящиеся к VCL. Блоки VCL NAL содержат данные, которые представляют значения выборок в видеоизображениях, а блоки NAL, не относящиеся к VCL, содержат любую связанную дополнительную информацию, такую как наборы параметров (важные данные заголовка, которые могут применяться к большому количеству блоков NAL VCL) и дополнительная улучшающая информация (информация о синхронизации и другие дополнительные данные, которые могут повысить удобство использования декодированного видеосигнала, но не являются необходимыми для декодирования значений выборок в видеоизображениях). Специалисты в данной области техники поймут, что битовый поток 900 может содержать другие параметры и информацию в практических приложениях.
[00163] Данные 908 изображения по фиг. 9 содержат данные, связанные с изображениями или видео, которые кодируются или декодируются. Данные 908 изображения могут называться просто полезной нагрузкой или данными, переносимыми в битовом потоке 900. В варианте осуществления данные 908 изображения содержат CVS 914 (или CLVS), содержащие множество изображений 910. CVS 914 представляет собой кодированную видеопоследовательность для каждой видеопоследовательности кодированного уровня (CLVS, coded layer video sequence) в битовом потоке 900 видео. Примечательно, что CVS и CLVS одинаковы, когда битовый поток видео включает в себя один уровень. CVS и CLVS отличаются только тогда, когда битовый поток 900 видео включает в себя множество уровней.
[00164] Как показано на фиг. 9, слайс каждого изображения 910 может содержаться в его собственном блоке 912VCL NAL. Набор блоков 912 VCL NAL в CVS 914 может называться блоком доступа.
[00165] Фиг. 10 иллюстрирует метод 1000 разделения для изображения 1010. Изображение 1010 может быть аналогично любому из изображений 910 на фиг. 9. Как показано, изображение 1010 может быть разделено на множество слайсов 1012. Слайс - это пространственно отличная область кадра (например, изображения), которая кодируется отдельно от любой другой области в том же кадре. Хотя на фиг. 10 изображены три слайса 1012, в практических приложениях можно использовать больше или меньше слайсов. Каждый слайс 1012 может быть разделен на множество блоков 1014. Блоки 1014 на фиг. 10 могут быть аналогичным текущему блоку 811, предыдущему опорному блоку 821 и последующему опорному блоку 831 на фиг. 8. Блок 1014 может представлять CU. Хотя четыре блока 1014 изображены на фиг. 10, в практических приложениях можно использовать больше или меньше блоков.
[00166] Каждый блок 1014 может быть разделен на множество выборок 1016 (например, пикселей). В варианте осуществления размер каждого блока 1014 измеряется в выборках яркости. Хотя шестнадцать выборок 1016 изображены на фиг. 10, в практических приложениях можно использовать больше или меньше выборок.
[00167] В варианте осуществления к изображению 1010 применяется окно 1060 соответствия. Как отмечено выше, окно 1060 соответствия используется для обрезки, уменьшения или иного изменения размера изображения 1010 (например, восстановленного/декодированного изображения) в процессе подготовки изображения к выводу. Например, декодер может применить окно соответствия 1060 к изображению 1010, чтобы обрезать, корректировать, сжимать или иным образом изменять размер изображения 1010 изображения до того, как изображение будет выведено для отображения пользователю. Размер окна соответствия 1060 определяется путем применения смещения 1062 вверх окна соответствия, смещения 1064 вниз окна соответствия, смещения 1066 влево окна соответствия и смещения 1068 вправо окна соответствия к изображению 1010 для уменьшения размера изображения 1010 перед выводом. То есть выводится только часть изображения 1010, которая существует в окне 1060 соответствия. Таким образом, изображение 1010 обрезается по размеру перед выводом. В варианте осуществления, каждый первый набор параметров изображения и второй набор параметров изображения относятся к одному и тому же набору параметров последовательности и имеют одинаковые значения ширины изображения и высоты изображения. По существу, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения для окна соответствия.
[00168] Фиг. 11 - вариант осуществления способа 1100 декодирования, реализованного видеодекодером (например, видеодекодером 400). Способ 1100 может выполняться после того, как декодированный битовый поток был прямо или косвенно принят от видеокодера (например, видеокодера 300). Способ 1100 улучшает процесс декодирования, поддерживая одинаковый размер окна соответствия для наборов параметров изображения, имеющих одинаковый размер изображения. Таким образом, передискретизация опорного изображения (RPR, reference picture resampling) может оставаться включенной или включенной для всей CVS. Путем поддержания согласованного размера окна соответствия для наборов параметров изображения, имеющих одинаковый размер изображения, эффективность кодирования может быть повышена. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.
[00169] В блоке 1102 видеодекодер принимает первый набор параметров изображения (например, ppsA) и второй набор параметров изображения (например, ppsB), каждый из которых относится к одному и тому же набору параметров последовательности. Когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения ширины и высоты изображения, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения окна соответствия. В варианте осуществления ширина изображения и высота изображения измеряются в выборках яркости.
[00170] В варианте осуществления ширина изображения обозначается как pic_width_in_luma_samples. В варианте осуществления высота изображения обозначается как pic_height_in_luma_samples. В варианте осуществления pic_width_in_luma_samples определяет ширину каждого декодированного изображения, относящегося к PPS, в единицах выборок яркости. В варианте осуществления pic_height_in_luma_samples определяет высоту каждого декодированного изображения со ссылкой на PPS в единицах выборок яркости.
[00171] В варианте осуществления окно соответствия содержит смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия, которые в совокупности представляют размер окна соответствия. В варианте осуществления смещение влево окна соответствия обозначается как pps_conf_win_left_offset. В варианте осуществления смещение вправо окна соответствия обозначается как pps_conf_win_right_offset. В варианте осуществления смещение вверх окна соответствия обозначается как pps_conf_win_top_offset. В варианте осуществления смещение вниз окна соответствия обозначается как pps_conf_win_bottom_offset. В варианте осуществления размер или значения окна соответствия сообщаются в PPS.
[00172] В блоке 1104 видеодекодер применяет окно соответствия к текущему изображению, соответствующему первому набору параметров изображения или второму набору параметров изображения. Таким образом, видеокодер обрезает текущее изображение до размера окна соответствия.
[00173] В варианте осуществления способ дополнительно содержит использование межкадрового предсказания для декодирования текущего изображения на основе передискретизированного опорного изображения. В варианте осуществления способ дополнительно содержит передискретизацию опорного изображения, соответствующего текущему изображению, с использованием передискретизации опорного изображения (RPS, reference picture resampling). В варианте осуществления передискретизация опорного изображения изменяет разрешение опорного изображения.
[00174] В варианте осуществления способ дополнительно содержит определение, включен ли двунаправленный оптический поток (BDOF, bi-direction optical flow) для декодирования изображения на основе ширины изображения, высоты изображения и окна соответствия текущего изображения и опорного изображения для текущего изображения. В варианте осуществления способ дополнительно содержит определение, разрешено ли уточнение вектора движения на стороне декодера (DMVR, decoder-side motion vector refinement) для декодирования изображения на основе ширины изображения, высоты изображения и окна соответствия текущего изображения и опорного изображения для текущего изображения.
[00175] В варианте осуществления способ дополнительно содержит отображение на дисплее электронного устройства (например, смартфона, планшета, ноутбука, персонального компьютера и т.д.) Изображения, созданного с использованием текущего блока.
[00176] Фиг. 12 - вариант осуществления способа 1200 кодирования битового потока видео, реализованного видеокодером (например, видеокодером 300). Способ 1200 может выполняться, когда изображение (например, из видео) должно быть закодировано в битовый поток видео и затем передано в видеодекодер (например, видеодекодер 400). Способ 1200 улучшает процесс кодирования, поддерживая одинаковый размер окна соответствия для наборов параметров изображения, имеющих одинаковый размер изображения. Таким образом, передискретизация опорного изображения (RPR, reference picture resampling) может оставаться включенной или активированной для всей CVS. Путем поддержания согласованного размера окна соответствия для наборов параметров изображения, имеющих одинаковый размер изображения, эффективность кодирования может быть повышена. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.
[00177] На этапе 1202 видеокодер формирует первый набор параметров изображения и второй набор параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности. Когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения ширины и высоты изображения, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения окна соответствия. В варианте осуществления ширина изображения и высота изображения измеряются в выборках яркости.
[00178] В варианте осуществления ширина изображения обозначается как pic_width_in_luma_samples. В варианте осуществления высота изображения обозначается как pic_height_in_luma_samples. В варианте осуществления pic_width_in_luma_samples определяет ширину каждого декодированного изображения, относящегося к PPS, в единицах выборок яркости. В варианте осуществления pic_height_in_luma_samples определеляет высоту каждого декодированного изображения со ссылкой на PPS в единицах выборок яркости.
[00179] В варианте осуществления окно соответствия содержит смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия, которые в совокупности представляют размер окна соответствия. В варианте осуществления смещение влево окна соответствия обозначается как pps_conf_win_left_offset. В варианте осуществления смещение вправо окна соответствия обозначается как pps_conf_win_right_offset. В варианте осуществления смещение вверх окна соответствия обозначается как pps_conf_win_top_offset. В варианте осуществления смещение вниз окна соответствия обозначается как pps_conf_win_bottom_offset. В варианте осуществления размер или значения окна соответствия сообщаются в PPS.
[00180] На этапе 1204 видеокодер кодирует первый набор параметров изображения и второй набор параметров изображения в битовый поток видео. На этапе 1206 видеокодер сохраняет битовый поток видео для передачи в видеодекодер. В варианте осуществления видеокодер передает битовый поток видео, содержащий первый набор параметров изображения и второй набор параметров изображения, в видеодекодер.
[00181] В варианте осуществления обеспечивается способ кодирования битового потока видео. Битовый поток содержит множество наборов параметров и множество изображений. Каждое изображение из множества изображений содержит множество слайсов. Каждый слайс из множества слайсов содержит множество блоков кодирования. Способ содержит формирование и запись набора параметров parameterSetA в битовый поток, содержащий информацию, которая включает в себя размер изображения picSizeA и окно соответствия confWinA. Параметр может быть набором параметров изображения (PPS, picture parameter set). Способ дополнительно включает в себя создание и запись другого набора параметров parameterSetB в битовый поток, содержащий информацию, которая включает в себя размер изображения picSizeB и окно соответствия confWinB. Параметр может быть набором параметров изображения (PPS, picture parameter set). Способ дополнительно включает в себя ограничение значений для окна соответствия confWinA в parameterSetA и confWinB в parameterSetB, чтобы они были одинаковыми, когда значения picSizeA в parameterSetA и picSizeB в parameterSetB одинаковы, и ограничение значений размера изображения picSizeA в parameterSetA и picSizeB в parameterSetB быть одинаковым, если значения confWinA в parameterSetA и confWinB в parameterSetB совпадают. Способ дополнительно включает в себя кодирование битового потока.
[00182] В варианте осуществления обеспечивается способ декодирования битового потока видео. Битовый поток содержит множество наборов параметров и множество изображений. Каждое изображение из множества изображений содержит множество слайсов. Каждый слайс из множества слайсов содержит множество блоков кодирования. Способ содержит синтаксический анализ набора параметров для получения размера изображения и размера окна соответствия, связанного с текущим изображением currPic. Полученная информация используется для определения размера изображения и размера кадрирования текущего изображения. Способ дополнительно включает в себя синтаксический анализ другого набора параметров для получения размера изображения и размера окна соответствия, связанных с опорным изображением refPic. Полученная информация используется для определения размера изображения и размера кадрирования опорного изображения. Способ дополнительно включает в себя определение refPic в качестве опорного изображения для декодирования текущего блока curBlock, который находится в текущем изображении currPic, определение того, используется ли двунаправленный оптический поток (BDOF, bi-direction optical flow) или разрешен ли он для декодирования текущего блока кодирования на основе размера изображения и окна соответствия текущего изображения и опорного изображения и декодирование текущего блока.
[00183] В варианте осуществления BDOF не используется или отключен для декодирования текущего блока кодирования, когда размер изображения и окно соответствия текущего изображения и опорного изображения различаются.
[00184] В варианте осуществления обеспечивается способ декодирования битового потока видео. Битовый поток содержит множество наборов параметров и множество изображений. Каждое изображение из множества изображений содержит множество слайсов. Каждый слайс из множества слайсов содержит множество блоков кодирования. Способ содержит синтаксический анализ набора параметров для получения размера изображения и размера окна соответствия, связанного с текущим изображением currPic. Полученная информация используется для определения размера изображения и размера кадрирования текущего изображения. Способ дополнительно включает в себя синтаксический анализ другого набора параметров для получения размера изображения и размера окна соответствия, связанных с опорным изображением refPic. Полученная информация используется для определения размера изображения и размера кадрирования опорного изображения. Способ дополнительно включает в себя определение refPic в качестве опорного изображения для декодирования текущего блока curBlock, который находится в текущем изображении currPic, определение того, используется ли уточнение вектора движения (DMVR, decoder-side motion vector refinement) на стороне декодера для декодирования текущего блока кодирования на основе размер изображения и окно соответствия текущего изображения и опорного изображения, а также декодирование текущего блока.
[00185] В варианте осуществления DMVR не используется или отключается для декодирования текущего блока кодирования, когда размер изображения и окно соответствия текущего изображения и опорного изображения различаются.
[00186] В варианте осуществления обеспечивается способ кодирования битового потока видео. В варианте осуществления битовый поток содержит множество наборов параметров и множество изображений. Каждое изображение из множества изображений содержит множество слайсов. Каждый слайс из множества слайсов содержит множество блоков кодирования. Способ включает в себя создание набора параметров, содержащего размер изображения и размер окна соответствия, ассоциированного с текущим изображением currPic. Информация используется для получения размера изображения и размера кадрирования текущего изображения. Способ дополнительно содержит создание другого набора параметров, содержащего размер изображения и размер окна соответствия, связанного с опорным изображением refPic. Полученная информация используется для определения размера изображения и размера кадрирования опорного изображения. Способ дополнительно включает в себя ограничение того, что опорное изображение refPic не должно использоваться в качестве совмещенного опорного изображения для временного предсказания вектора движения (TMVP, temporal motion vector prediction) всех слайсов, которые принадлежат текущему изображению currPic, когда размер изображения и окно соответствия текущего изображения и опорное изображение отличается. То есть ограничение, что если опорное изображение refPic является совмещенным опорным изображением для кодирования блоков в текущем изображении currPic для TMVP, размер изображения и окно соответствия текущего изображения и опорного изображения должны быть одинаковыми. Способ дополнительно включает в себя декодирование битового потока.
[00187] В варианте осуществления обеспечивается способ декодирования битового потока видео. Битовый поток содержит множество наборов параметров и множество изображений. Каждое изображение из множества изображений содержит множество слайсов. Каждый слайс из множества слайсов содержит множество блоков кодирования. Способ содержит синтаксический анализ набора параметров для получения размера изображения и размера окна соответствия, связанного с текущим изображением currPic. Полученная информация используется для определения размера изображения и размера кадрирования текущего изображения. Способ дополнительно включает в себя синтаксический анализ другого набора параметров для получения размера изображения и размера окна соответствия, связанных с опорным изображением refPic. Полученная информация используется для определения размера изображения и размера кадрирования опорного изображения. Способ дополнительно включает в себя определение refPic в качестве опорного изображения для декодирования текущего блока curBlock, который находится в текущем изображении currPic, синтаксический анализ синтаксического элемента (slice_DVMR_BDOF_enable_flag), чтобы определить, требуется ли уточнение вектора движения (DMVR, decoder-side motion vector refinement) на стороне декодера и/или двунаправленное оптический поток (BDOF, bi-direction optical flow) используется или разрешается для декодирования текущего кодирующего изображения и/слайса. Способ дополнительно включает в себя ограничение значений для синтаксического элемента (slice_DVMR_BDOF_enable_flag) равным нулю, когда окно соответствия confWinA в parameterSetA и confWinB в parameterSetB не одинаковы или когда значения picSizeA в parameterSetA и picSizeB в parameterSetB не совпадают.
[00188] Приведенное ниже описание относится к основному тексту, который является рабочим проектом VVC. То есть описывается только дельта, в то время как тексты в основном тексте, которые не упомянуты ниже, применяются как есть. Удаленный текст выделяется курсивом, а добавленный текст - жирным шрифтом.
[00189] Обеспечены синтаксис и семантика набора параметров последовательности.
[00190] max_width_in_luma_samples определяет, что требование соответствия битового потока, чтобы pic_width_in_luma_samples для любого изображения, для которого этот SPS активен, было меньше или равно max_width_in_luma_samples.
[00191] max_height_in_luma_samples определяет, что требование соответствия битового потока, чтобы pic_height_in_luma_samples для любого изображения, для которого этот SPS активен, было меньше или равно max_height_in_luma_samples.
[00192] Обеспечены синтаксис и семантика набора параметров изображения.
[00193] pic_width_in_luma_samples определяет ширину каждого декодированного изображения со ссылкой на PPS в единицах выборок яркости. pic_width_in_luma_samples не должно быть равно 0 и должно быть целым числом, кратным MinCbSizeY.
[00194] pic_height_in_luma_samples определяет высоту каждого декодированного изображения со ссылкой на PPS в единицах выборок яркости. pic_height_in_luma_samples не должно быть равно 0 и должно быть целым кратным MinCbSizeY.
[00195] Требование соответствия битового потока состоит в том, чтобы выполнялись все следующие условия для каждого активного опорного изображения, ширина и высота которого равны reference_pic_width_in_luma_samples и reference_pic_height_in_luma_samples:
[00196] - 2 * pic_width_in_luma_samples>=reference_pic_width_in_luma_samples
[00197] - 2 * pic_height_in_luma_samples>=reference_pic_height_in_luma_samples
[00198] - pic_width_in_luma_samples <= 8 * reference_pic_width_in_luma_samples
[00199] - pic_height_in_luma_samples <= 8 * reference_pic_height_in_luma_samples
[00200] Переменные PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC и PicHeightInSamplesC выводятся следующим образом.
[00201] PicWidthInCtbsY=Ceil (pic_width_in_luma_samples ÷ CtbSizeY) (1)
[00202] PicHeightInCtbsY=Ceil (pic_height_in_luma_samples ÷ CtbSizeY) (2)
[00203] PicSizeInCtbsY=PicWidthInCtbsY * PicHeightInCtbsY (3)
[00204] PicWidthInMinCbsY=pic_width_in_luma_samples/MinCbSizeY (4)
[00205] PicHeightInMinCbsY=pic_height_in_luma_samples/MinCbSizeY (5)
[00206] PicSizeInMinCbsY=PicWidthInMinCbsY * PicHeightInMinCbsY (6)
[00207] PicSizeInSamplesY=pic_width_in_luma_samples * pic_height_in_luma_samples (7)
[00208] PicWidthInSamplesC=pic_width_in_luma_samples/SubWidthC (8)
[00209] PicHeightInSamplesC=pic_height_in_luma_samples/SubHeightC (9)
[00210] conformance_window_flag, равное 1, указывает, что параметры смещения окна обрезки соответствия следуют далее в PPS. conformance_window_flag, равное 0, указывает, что параметры смещения окна обрезки соответствия отсутствуют.
[00211] conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset определяют выборки изображений, ссылающихся на PPS, которые выводятся из процесса декодирования, в терминах прямоугольной области, указанной в координатах изображения для вывода. Когда conformance_window_flag равно 0, значения conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset считаются равными 0.
[00212] Окно обрезки соответствия содержит выборки яркости с горизонтальными координатами изображения от SubWidthC * conf_win_left_offset до pic_width_in_luma_samples - (SubWidthC * conf_win_right_offset+1) и вертикальные координаты изображения от SubHeightC * conf_win_top_offset до pic_height_in_luma_samples − ( SubHeightC * conf_win_bottom_offset + 1 ) включительно.
[00213] Значение SubWidthC * (conf_win_left_offset+conf_win_right_offset) должно быть меньше pic_width_in_luma_samples, а значение SubHeightC * (conf_win_top_offset+conf_win_bottom_offset) должно быть меньше pic_height_in_luma_samples.
[00214] Переменные PicOutputWidthL и PicOutputHeightL выводятся следующим образом:
[00215] PicOutputWidthL=pic_width_in_luma_samples - (10)
[00216] SubWidthC * (conf_win_right_offset+conf_win_left_offset)
[00217] PicOutputHeightL=pic_height_in_pic_size_units - (11)
[00218] SubHeightC * (conf_win_bottom_offset+conf_win_top_offset)
[00219] Когда ChromaArrayType не равно 0, соответствующие определенные выборки двух массивов цветности являются выборками, имеющими координаты изображения (x/SubWidthC, y/SubHeightC), где (x, y) - координаты изображения определенных выборок яркости.
[00220] ПРИМЕЧАНИЕ. Параметры смещения окна обрезки соответствия применяются только при выводе. Все внутренние процессы декодирования применяются к размеру необрезанного изображения.
[00221] Пусть PPS_A и PPS_B будут наборами параметров изображения, относящимися к одному и тому же набору параметров последовательности, для соответствия битового потока требуется выполнение всех следующих условий, если значения pic_width_in_luma_samples в PPS_A и PPS_B одинаковы, а значения pic_height_in_luma_samples в PPS_A и PPS_B одинаковы:
Значения conf_win_left_offset в PPS_A и PPS_B одинаковы
Значения conf_win_right_offset в PPS_A и PPS_B одинаковы
Значения conf_win_top_offset в PPS_A и PPS_B одинаковы
Значения conf_win_bottom_offset в PPS_A и PPS_B одинаковы
[00222] Следующая константа добавляется к семантике collocated_ref_idx
[00223] collocated_ref_idx определяет опорный индекс совместно размещенного изображения, используемого для временного предсказания вектора движения.
[00224] Когда slice_type равен P или когда slice_type равен B и collocated_from_l0_flag равен 1, collocated_ref_idx относится к изображению в списке 0, а значение collocated_ref_idx должно быть в диапазоне от 0 до NumRefIdxActive [0] - 1 включительно. .
[00225] Когда slice_type равен B и collocated_from_l0_flag равен 0, collocated_ref_idx относится к изображению в списке 1, а значение collocated_ref_idx должно быть в диапазоне от 0 до NumRefIdxActive [1] - 1 включительно.
[00226] Когда collocated_ref_idx отсутствует, предполагается, что значение collocated_ref_idx равно 0.
[00227] Требование соответствия битового потока состоит в том, чтобы изображение, на которое ссылается collocated_ref_idx, было одинаковым для всех слайсов кодированного изображения.
[00228] Для соответствия битового потока требуется, чтобы разрешения опорного изображения, на которое ссылается collocated_ref_idx, и текущего изображения были одинаковыми.
[00229] Требование соответствия битового потока состоит в том, чтобы размеры изображения и окна соответствия опорного изображения, на которое ссылается collocated_ref_idx, и текущего изображения были одинаковыми.
[00230] Изменены следующие условия для установки dmvrFlag в 1.
[00231] - Когда выполняются все следующие условия, dmvrFlag устанавливается равным 1:
[00232] - sps_dmvr_enabled_flag равен 1
[00233] - general_merge_flag [xCb] [yCb] равно 1
[00234] - оба predFlagL0 [0] [0] и predFlagL1 [0] [0] равны 1
[00235] - mmvd_merge_flag [xCb] [yCb] равен 0
[00236] - DiffPicOrderCnt (currPic, RefPicList [0] [refIdxL0]) равно DiffPicOrderCnt (RefPicList [1] [refIdxL1], currPic)
[00237] - BcwIdx [xCb] [yCb] равно 0
[00238] - Оба luma_weight_l0_flag [refIdxL0] и luma_weight_l1_flag [refIdxL1] равны 0
[00239] - cbWidth больше или равно 8
[00240] - cbHeight больше или равно 8
[00241] - cbHeight * cbWidth больше или равно 128
[00242] - - Для X равного 0 и 1, pic_width_in_luma_samples и pic_height_in_luma_samples опорного изображения refPicLX, связанные с refIdxLX, равны pic_width_in_luma_samples и pic_height_in_luma_samples текущего изображения, соответственно.
[00243] - - Для X равного 0 и 1, pic_width_in_luma_samples, pic_height_in_luma_samples, conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset опорного изображения refPicLX, связанные с refIdxLX равны pic_width_in_luma_samples, pic_height_in_luma_samples, conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offset текущего изображения соответственно.
[00244] Изменены следующие условия для установки dmvrFlag в 1.
[00245] - Если все следующие условия верны, bdofFlag устанавливается равным TRUE.
[00246] - sps_bdof_enabled_flag равен 1.
[00247] - predFlagL0 [xSbIdx] [ySbIdx] и predFlagL1 [xSbIdx] [ySbIdx] оба равны 1.
[00248] - DiffPicOrderCnt (currPic, RefPicList [0] [refIdxL0]) * DiffPicOrderCnt (currPic, RefPicList [1] [refIdxL1]) меньше 0.
[00249] - MotionModelIdc [xCb] [yCb] равен 0.
[00250] - merge_subblock_flag [xCb] [yCb] равен 0.
[00251] - sym_mvd_flag [xCb] [yCb] равно 0.
[00252] - BcwIdx [xCb] [yCb] равен 0.
[00253] - luma_weight_l0_flag [refIdxL0] и luma_weight_l1_flag [refIdxL1] оба равны 0.
[00254] - cbHeight больше или равно 8
[00255] - - Для X равного 0 и 1, pic_width_in_luma_samples и pic_height_in_luma_samples опорного изображения refPicLX, связанные с refIdxLX, равны pic_width_in_luma_samples и pic_height_in_luma_samples текущего изображения, соответственно.
[00256] - - Для X равного из 0 и 1, pic_width_in_luma_samples, pic_height_in_luma_samples, conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offse опорного изображения refPicLX, связанные с refIdxLX равны pic_width_in_luma_samples, pic_height_in_luma_samples, conf_win_left_offset, conf_win_right_offset, conf_win_top_offset и conf_win_bottom_offse текущего изображения соответственно.
[00257] - cIdx равен 0.
[00258] Фиг. 13 является схематической диаграммой устройства 1300 видеокодирования (например, видеокодера 20 или видеодекодера 30) согласно варианту осуществления изобретения. Устройство 1300 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. Устройство 1300 видеокодирования содержит входные порты 1310 и приемные блоки (Rx) 1320 для приема данных; процессор, логический блок или центральный процессор (CPU, central processing unit) 1330 для обработки данных; блоки 1340 передатчика (Tx) и выходные порты 1350 для передачи данных; и память 1360 для хранения данных. Устройство 1300 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE, optical-to-electrical) и компоненты преобразования электрических сигналов в оптические (EO, electrical-to-optical), подключенные к входным портам 1310, блокам 1320 приемника, блокам 1340 передатчика и выходным портам 1350 для обеспечения входа или выхода оптических или электрических сигналов.
[00259] Процессор 1330 реализуется аппаратным обеспечением и программным обеспечением. Процессор 1330 может быть реализован как одна или более микросхем ЦП, ядер (например, как многоядерный процессор), программируемых вентильных матриц (FPGA, field-programmable gate arrays), специализированных интегральных схем (ASIC, application specific integrated circuit) и процессоров цифровых сигналов (DSP, digital signal processor). Процессор 1330 поддерживает связь с входными портами 1310, блоками 1320 приемника, блоками 1340 передатчика, выходными портами 1350 и памятью 1360. Процессор 1330 содержит модуль 1370 кодирования. Модуль 1370 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 1370 кодирования. Следовательно, включение модуля 1370 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 1300 видеокодирования и обеспечивает трансформацию устройства 1300 видеокодирования в другое состояние. В качестве альтернативы модуль 1370 кодирования реализуется как инструкции, хранящиеся в памяти 1360 и исполняемые процессором 1330.
[00260] Устройство 1300 видеокодирования может также включать в себя устройства 1380 ввода и/или вывода (I/O, input/output) для передачи данных пользователю и от пользователя. Устройства 1380 ввода-вывода могут включать в себя устройства вывода, такие как дисплей для отображения видеоданных, динамики для вывода аудиоданных и т.д. Устройства 1380 ввода-вывода могут также включать в себя устройства ввода, такие как клавиатура, мышь, трекбол и т.д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
[00261] Память 1360 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 1360 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (ROM, read-only memory), оперативную память (RAM, random access memory), троичную память с адресацией по содержимому (TCAM, ternary content-addressable memory) и/или статическую память с произвольным доступом (SRAM, static random-access memory).
[00262] Фиг. 14 - схематическая диаграмма варианта осуществления средства 1400 кодирования. В варианте осуществления средства кодирования 1400 реализованы в устройстве 1402 видеокодирования (например, видеокодере 20 или видеодекодере 30). Устройство 1402 видеокодирования включает в себя средство 1401 приема. Средство 1401 приема выполнено с возможностью приема изображения для кодирования или приема битового потока для декодирования. Устройство 1402 видеокодирования включает в себя средство 1407 передачи, соединенное со средством 1401 приема. Средство 1407 передачи выполнено с возможностью передачи битового потока в декодер или передачи декодированного изображения на средство отображения (например, одно из устройств 1380 ввода/вывода).
[00263] Устройство 1402 видеокодирования включает в себя средство 1403 хранения. Средство 1403 хранения соединено по меньшей мере с одним из средств 1401 приема или средства 1407 передачи. Средство 1403 хранения выполнено с возможностью хранения инструкций. Устройство 1402 видеокодирования также включает в себя средство 1405 обработки. Средство 1405 обработки соединено со средством 1403 хранения. Средство 1405 обработки выполнено с возможностью выполнения инструкций, хранящихся в средстве 1403 хранения, для осуществления способов.
[00264] Также следует понимать, что этапы примерных способов, изложенных в данном документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует понимать как просто примерный. Аналогичным образом, в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть опущены или объединены в способах, согласующихся с различными вариантами осуществления настоящего раскрытия.
[00265] Хотя в настоящем раскрытии представлено несколько вариантов осуществления, следует понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах без отклонения от сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не как ограничительные, и цель не ограничиваться приведенными здесь деталями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы.
[00266] Кроме того, методы, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как отдельные или отдельные, могут быть объединены или интегрированы с другими системами, модулями, технологиями или способами без отклонения от объема настоящего изобретения. Другие элементы, показанные или обсуждаемые как связанные или непосредственно связанные или взаимодействующие друг с другом, могут быть косвенно связаны или взаимодействовать через некоторый интерфейс, устройство или промежуточный компонент, электрически, механически или иным образом. Другие примеры изменений, замен и переделок могут быть установлены специалистом в данной области техники и могут быть выполнены без отклонения от сущности и объема, раскрытых в данном документе.
Изобретение относится к технологиям кодирования изображений. Техническим результатом является повышение эффективности кодирования изображений. Результат достигается тем, что способ декодирования включает в себя прием первого набора параметров изображения и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности, при этом, когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения ширины изображения и высоты изображения, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения окна соответствия; и применение окна соответствия к текущему изображению, соответствующему первому набору параметров изображения или второму набору параметров изображения. 7 н. и 14 з.п. ф-лы, 14 ил.
1. Способ декодирования, реализуемый видеодекодером, содержащий:
прием видеодекодером первого набора параметров изображения (PPS) и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности (SPS), при этом каждый из первого набора параметров изображения и второго набора параметров изображения содержит pic_width_in_luma_samples, pic_height_in_luma_samples и параметры окна соответствия, при этом pic_width_in_luma_samples указывает ширину каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости, а pic_height_in_luma_samples указывает высоту каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости; при этом, когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения pic_width_in_luma_samples и pic_height_in_luma_samples соответственно, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения параметров окна соответствия; и
применение видеодекодером окна соответствия к текущему изображению, соответствующему первому набору параметров изображения или второму набору параметров изображения.
2. Способ по п. 1, в котором параметры окна соответствия содержат смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
3. Способ по любому из пп. 1, 2, дополнительно содержащий декодирование текущего изображения, соответствующего первому набору параметров изображения или второму набору параметров изображения, с использованием межкадрового предсказания после применения окна соответствия, при этом межкадровое предсказание основано на передискретизованном опорном изображении.
4. Способ по любому из пп. 1-3, дополнительно содержащий передискретизацию опорного изображения, связанного с текущим изображением, соответствующим первому набору параметров изображения или второму набору параметров изображения, с использованием передискретизации опорного изображения (RPS).
5. Способ по любому из п. 4, в котором передискретизация опорного изображения изменяет разрешение опорного изображения, используемого для межкадрового предсказания текущего изображения, соответствующего первому набору параметров изображения или второму набору параметров изображения.
6. Способ по любому из пп. 1-5, дополнительно содержащий определение, включен ли двунаправленный оптический поток (BDOF) для декодирования текущего изображения на основе pic_width_in_luma_samples, pic_height_in_luma_samples и параметров окна соответствия текущего изображения и опорного изображения для текущего изображения.
7. Способ по любому из пп. 1-5, дополнительно содержащий определение, включено ли уточнение вектора движения (DMVR) на стороне декодера для декодирования текущего изображения на основе ширины изображения, высоты изображения и окна соответствия текущего изображения и опорного изображения для текущего изображения.
8. Способ по любому из пп. 1-5, дополнительно содержащий отображение на дисплее электронного устройства изображения, сформированного с использованием текущего изображения.
9. Способ кодирования, реализуемый видеокодером, содержащий:
формирование посредством видеокодера первого набора параметров изображения (PPS) и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности (SPS), при этом каждый из первого набора параметров изображения и второго набора параметров изображения содержит pic_width_in_luma_samples, pic_height_in_luma_samples и параметры окна соответствия, при этом pic_width_in_luma_samples указывает ширину каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости, а pic_height_in_luma_samples указывает высоту каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости; при этом, когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения pic_width_in_luma_samples и pic_height_in_luma_samples соответственно, первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения параметров окна соответствия;
кодирование посредством видеокодера первого набора параметров изображения и второго набора параметров изображения в битовый поток видео; и
сохранение посредством видеокодера битового потока видео для передачи в видеодекодер.
10. Способ по п. 9, в котором окно соответствия содержит смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
11. Способ по п. 9 или 10, дополнительно содержащий передачу битового потока видео, содержащего первый набор параметров изображения и второй набор параметров изображения, в видеодекодер.
12. Устройство декодирования, содержащее:
приемник, выполненный с возможностью приема кодированного битового потока видео;
память, соединенную с приемником, хранящую инструкции; и
процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций для инициирования устройства декодирования для:
приема первого набора параметров изображения (PPS) и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности (SPS), при этом каждый из первого набора параметров изображения и второго набора параметров изображения содержит pic_width_in_luma_samples, pic_height_in_luma_samples и параметры окна соответствия, при этом pic_width_in_luma_samples указывает ширину каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости, а pic_height_in_luma_samples указывает высоту каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости; при этом, когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения pic_width_in_luma_samples и pic_height_in_luma_samples соответственно, первый набор параметров изображения и второй набор параметров изображения имеет те же значения параметров окна соответствия; и
применения окна соответствия к текущему изображению, соответствующему первому набору параметров изображения или второму набору параметров изображения.
13. Устройство декодирования по п. 12, в котором параметры окна соответствия содержат смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
14. Устройство декодирования п. 12 или 13, в котором процессор дополнительно выполнен с возможностью выполнения инструкций для предписания устройству декодирования декодировать текущее изображение, соответствующее первому набору параметров изображения или второму набору параметров изображения, с использованием межкадрового предсказания после применения окна соответствия, при этом межкадровое предсказание основано на передискретизации опорного изображения.
15. Устройство декодирования по п. 13 или 14, дополнительно содержащее дисплей, выполненный с возможностью отображения изображения, сформированного на основе текущего изображения.
16. Устройство кодирования, содержащее:
память, содержащую инструкции;
процессор, соединенный с памятью, процессор выполнен с возможностью выполнения инструкций для инициирования устройства кодирования для:
формирования первого набора параметров изображения и второго набора параметров изображения, каждый из которых относится к одному и тому же набору параметров последовательности, при этом каждый из первого набора параметров изображения и второго набора параметров изображения содержит pic_width_in_luma_samples, pic_height_in_luma_samples и параметры окна соответствия, при этом pic_width_in_luma_samples указывает ширину каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости, а pic_height_in_luma_samples указывает высоту каждого декодированного изображения, ссылающегося на соответствующий набор параметров изображения, в единицах выборок яркости; при этом, когда первый набор параметров изображения и второй набор параметров изображения имеют одинаковые значения pic_width_in_luma_samples и pic_height_in_luma_samples соответственно, первый набор параметров изображения и второй набор параметров изображения имеет те же значения параметров окна соответствия; и
кодирования первого набора параметров изображения и второго набора параметров изображения в битовый поток видео; и
сохранения битового потока видео для передачи видеодекодеру;
при этом передатчик соединен с процессором, при этом передатчик выполнен с возможностью передачи битового потока видео, содержащего первый набор параметров изображения и второй набор параметров изображения, в видеодекодер.
17. Устройство кодирования по п. 16, в котором окно соответствия содержит смещение влево окна соответствия, смещение вправо окна соответствия, смещение вверх окна соответствия и смещение вниз окна соответствия.
18. Оборудование кодирования/декодирования, содержащее:
приемник, выполненный с возможностью приема изображения для кодирования или для приема битового потока для декодирования;
передатчик, соединенный с приемником, при этом передатчик выполнен с возможностью передачи битового потока на декодер или для передачи декодированного изображения на дисплей;
память, соединенную по меньшей мере с одним из приемника или передатчика, при этом память выполнена с возможностью хранения инструкций; а также
процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций, хранящихся в памяти, для осуществления способа по любому из пп. 1-8 и любому из пп. 9-11.
19. Оборудование кодирования/декодирования по п. 18, дополнительно содержащее дисплей, выполненный с возможностью отображения изображения.
20. Система для кодирования/декодирования, содержащая:
кодер; и
декодер, соединенный с кодером, при этом декодер включает в себя устройство декодирования по любому из пп. 12-15, а кодер включает в себя устройство кодирования по любому из пп. 16-17.
21. Средство кодирования/декодирования, содержащее:
средство приема, выполненное с возможностью приема изображения для кодирования или для приема битового потока для декодирования;
средство передачи, соединенное со средством приема, при этом средство передачи выполнено с возможностью передачи битового потока на средство декодирования или передачи декодированного изображения на средство отображения;
средство хранения, соединенное по меньшей мере с одним из средства приема или средства передачи, при этом средство хранения выполнено с возможностью хранения инструкций; и
средство обработки, соединенное со средством хранения, при этом средство обработки выполнено с возможностью выполнения инструкций, хранящихся в средстве хранения, для осуществления способа по любому из пп. 1-8 и любому из пп. 9-11.
US 2019174144 A1, 2019.06.06 | |||
US 2015304666 A1, 2015.10.22 | |||
US 8358701 B2, 2013.01.22 | |||
US 2019075323 A1, 2019.03.07 | |||
US 9420307 B2, 2016.08.16 | |||
US 2014198857 A1, 2014.07.17 | |||
US 2015010051 A1, 2015.01.08 | |||
US 2019058895 A1, 2019.02.21 | |||
Устройство, способ и компьютерная программа для кодирования и декодирования видеоинформации | 2014 |
|
RU2639958C2 |
US 2018115787 A1, 2018.04.26. |
Авторы
Даты
2024-04-17—Публикация
2020-07-07—Подача