ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ
[1] Эта патентная заявка испрашивает приоритет предварительной патентной заявки США №. 62/905,231, поданной 24 сентября 2019 г. компанией Futurewei Technologies, Inc. и озаглавленной «Deblocking Operation for Subpictures In Video Coding», которая включена сюда посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[2] Раскрытые варианты осуществления относятся к кодированию/декодированию видео в целом и флагам фильтра для устранения блочности субкартинки, в частности.
УРОВЕНЬ ТЕХНИКИ
[3] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть существенным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом сообщаться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются в месте назначения устройством декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими потребностями в видео более высокого качества, желательны улучшенные методики сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[4] Первый аспект относится к способу, реализованному видеодекодером и содержащему: прием видеодекодером битового потока видео, содержащего картинку и loop_filter_across_subpic_enabled_flag, при этом картинка содержит субкартинку; и применение процесса фильтра устранения блочности ко всем краям субблока и краям блока преобразования картинки, за исключением краев, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0.
[5] В первом варианте осуществления, когда две субкартинки являются смежными друг с другом (например, правая граница первой субкартинки также является левой границей второй субкартинки или нижняя граница первой субкартинки также является верхней границей второй субкартинки), а значения loop_filter_across_subpic_enabled_flag[i] этих двух субкартинок являются разными, к устранению блочности границы, которая является общей для этих двух субкартинок, применяются два условия. Во-первых, для субкартинки с loop_filter_across_subpic_enabled_flag[i], равным 0, устранение блочности не применяется к блокам на границе, общей со смежной субкартинкой. Во-вторых, для субкартинки с loop_filter_across_subpic_enabled_flag[i], равным 1, устранение блочности применяется к блокам на границе, общей со смежной субкартинкой. Чтобы реализовать это устранение блочности, определение граничной прочности применяется в соответствии с нормальным процессом устранения блочности, а фильтрация выборок применяется только к дискретным отсчетам (выборкам), принадлежащим субкартинке с loop_filter_across_subpic_enabled_flag[i], равным 1. Во втором варианте осуществления, когда имеется субкартинка со значением subpic_treated_as_pic_flag[i], равным 1, и loop_filter_across_subpic_enabled_flag[i], равным 0, значение loop_filter_across_subpic_enabled_flag[i] всех субкартинок должно быть равно 0. В третьем варианте осуществления вместо сигнализации loop_filter_across_subpic_enabled_flag[i] для каждой субкартинки сигнализируется только один флаг для указания разрешена или нет контурная фильтрация субкартинок. Раскрытые варианты осуществления уменьшают или устраняют артефакты, описанные выше, и приводят к меньшему количеству потерянных битов в закодированном битовом потоке.
[6] В необязательном порядке, в любом из предыдущих аспектов loop_filter_across_subpic_enabled_flag, равный 1, указывает, что операции внутриконтурной фильтрации могут выполняться через границы субкартинки в каждой кодированной картинке в CVS.
[7] В необязательном порядке, в любом из предыдущих аспектов loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS.
[8] Второй аспект относится к способу, реализуемому видеокодером и содержащему: генерацию видеокодером loop_filter_across_subpic_enabled_flag, так что процесс фильтрации для устранения блочности применяется ко всем краям субблока и краям блока преобразования картинки, за исключением краев, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0; кодирование видеокодером loop_filter_across_subpic_enabled_flag в битовый поток видео; и сохранение видеокодером битового потока видео для сообщения к видеодекодеру.
[9] В необязательном порядке, в любом из предыдущих аспектов loop_filter_across_subpic_enabled_flag, равный 1, указывает, что операции внутриконтурной фильтрации могут выполняться через границы субкартинки в каждой кодированной картинке в CVS.
[10] В необязательном порядке, в любом из предыдущих аспектов loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS.
[11] В необязательном порядке, в любом из предыдущих аспектов способ дополнительно содержит генерирование seq_parameter_set_rbsp; включение loop_filter_across_subpic_enabled_flag в seq_parameter_set_rbsp; и дополнительно кодирование loop_filter_across_subpic_enabled_flag в битовый поток видео посредством кодирования seq_parameter_set_rbsp в битовый поток видео.
[12] Третий аспект относится к способу, реализованному видеодекодером и содержащему: прием видеодекодером битового потока видео, содержащего картинку, EDGE_VER и loop_filter_across_subpic_enabled_flag, при этом картинка содержит субкартинку; и установку filterEdgeFlag в 0, если edgeType равен EDGE_VER, левая граница текущего блока кодирования является левой границей субкартинки, а loop_filter_across_subpic_enabled_flag равен 0.
[13] В необязательном порядке, в любом из предыдущих аспектов edgeType представляет собой переменную, указывающую, фильтруется ли вертикальный край или горизонтальный край.
[14] В необязательном порядке, в любом из предыдущих аспектов edgeType, равный 0, указывает, что вертикальный край отфильтрован, и при этом EDGE_VER является вертикальным краем.
[15] В необязательном порядке, в любом из предыдущих аспектов edgeType, равный 1, указывает, что горизонтальный край отфильтрован, и при этом EDGE_HOR является горизонтальным краем.
[16] В необязательном порядке, в любом из предыдущих аспектов loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS.
[17] В необязательном порядке, в любом из предыдущих аспектов способ дополнительно содержит фильтрацию картинки на основе filterEdgeFlag.
[18] Четвертый аспект относится к способу, реализованному видеодекодером и содержащему: прием видеодекодером битового потока видео, содержащего картинку, EDGE_HOR и loop_filter_across_subpic_enabled_flag, при этом картинка содержит субкартинку; и установку filterEdgeFlag в 0, если edgeType равен EDGE_HOR, верхняя граница текущего блока кодирования является верхней границей субкартинки, а loop_filter_across_subpic_enabled_flag равен 0.
[19] В необязательном порядке, в любом из предыдущих аспектов edgeType представляет собой переменную, указывающую, фильтруется ли вертикальный край или горизонтальный край.
[20] В необязательном порядке, в любом из предыдущих аспектов edgeType, равный 0, указывает, что вертикальный край отфильтрован, и при этом EDGE_VER является вертикальным краем.
[21] В необязательном порядке, в любом из предыдущих аспектов edgeType, равный 1, указывает, что горизонтальный край отфильтрован, и при этом EDGE_HOR является горизонтальным краем.
[22] В необязательном порядке, в любом из предыдущих аспектов loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS.
[23] В необязательном порядке, в любом из предыдущих аспектов способ дополнительно содержит фильтрацию картинки на основе filterEdgeFlag.
[24] Пятый аспект относится к способу, реализованному видеодекодером и содержащему: прием видеодекодером битового потока видео, содержащего картинку и loop_filter_across_subpic_enabled_flag, при этом картинка содержит субкартинку; и применение процесса SAO ко всем краям субблока и краям блока преобразования картинки, за исключением краев, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0.
[25] Шестой аспект относится к способу, реализованному видеодекодером и содержащему: прием видеодекодером битового потока видео, содержащего картинку и loop_filter_across_subpic_enabled_flag, при этом картинка содержит субкартинку; и применение процесса ALF ко всем краям субблока и краям блока преобразования картинки, за исключением краев, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0.
[26] Любой из приведенных выше вариантов осуществления может быть объединен с любым из других указанных выше вариантов осуществления для создания нового варианта осуществления. Эти и другие особенности будут более понятны из следующего подробного описания, рассматриваемого вместе с сопроводительными чертежами и формулой изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[27] Для более полного понимания этого раскрытия теперь сделана ссылка на следующее краткое описание, взятое в связи с прилагаемыми чертежами и подробным описанием, в котором одинаковые номера позиций представляют одинаковые части.
[28] Фиг.1 представляет собой блок-схему последовательности операций примерного способа кодирования видеосигнала.
[29] Фиг.2 - принципиальная схема примерной системы кодирования и декодирования (кодека) для кодирования/декодирования видео.
[30] Фиг.3 представляет собой схематичное представление, иллюстрирующее примерный видеокодер.
[31] Фиг.4 представляет собой схематичное представление, иллюстрирующее примерный видеодекодер.
[32] Фиг.5 - принципиальная схема, иллюстрирующая множество видеопотоков субкартинок, извлеченных из видеопотока картинки.
[33] Фиг.6 - принципиальная схема, иллюстрирующая примерный битовый поток, разделенный на битовый субпоток.
[34] Фиг.7 представляет собой блок-схему, иллюстрирующую способ декодирования битового потока согласно первому варианту осуществления.
[35] Фиг.8 представляет собой блок-схему, иллюстрирующую способ кодирования битового потока согласно первому варианту осуществления.
[36] Фиг.9 представляет собой блок-схему, иллюстрирующую способ декодирования битового потока согласно второму варианту осуществления.
[37] Фиг.10 представляет собой блок-схему, иллюстрирующую способ декодирования битового потока согласно третьему варианту осуществления.
[38] Фиг.11 - схематическая диаграмма устройства кодирования/декодирования видео.
[39] Фиг.12 представляет собой схематическое представление варианта осуществления средства для кодирования/декодирования.
ПОДРОБНОЕ ОПИСАНИЕ
[40] Прежде всего следует понимать, что, хотя иллюстративная реализация одного или нескольких вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества методов, известных в настоящее время или уже существующих. Раскрытие никоим образом не должно быть ограничено иллюстративными реализациями, чертежами и методиками, проиллюстрированными ниже, в том числе примерными конструкциями и реализациями, проиллюстрированными и описанными в настоящем документе, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с ее полным объемом эквивалентов.
[41] Применяются следующие сокращения:
ALF: адаптивный контурный фильтр
ASIC: специализированная интегральная схема
AU: единица доступа
AUD: разделитель единицы доступа
BT: бинарное дерево
CABAC: контекстно-адаптивное двоичное арифметическое кодирование
CAVLC: контекстно-адаптивное кодирование переменной длины
Cb: цветоразность по синему
ЦП: центральный процессор
Cr: цветоразность по красному
CTB: блок дерева кодирования
CTU: единица дерева кодирования
CU: единица кодирования
CVS: кодированная видеопоследовательность
DC: постоянный ток
DCT: дискретное косинусное преобразование
DMM: режим моделирования глубины
DPB: буфер декодированных картинок
DSP: цифровой сигнальный процессор
DST: дискретное синусоидальное преобразование
EO: электрический в оптический
FPGA: программируемая вентильная матрица
HEVC: Высокоэффективное кодирование видео
HMD: головной дисплей
I/O: ввод/вывод
NAL: уровень сетевой абстракции
OE: оптический в электрический
PIPE: энтропия разделения вероятностного интервала
POC: счетчик порядка картинок
PPS: набор параметров картинок
PU: единица картинки
QT: дерево квадрантов
RAM: оперативная память
RBSP: необработанная полезная нагрузка последовательности байтов
RDO: оптимизация скорости и искажения
ROM: постоянная память
RPL: список опорных картинок
Rx: блок приемника
SAD: сумма абсолютных разностей
SAO: смещение, адаптивное по выборке
SBAC: арифметическое кодирование на основе синтаксиса
SPS: набор параметров последовательности
SRAM: статическая RAM
SSD: сумма квадратов разностей
TCAM: троичная память с адресацией по содержимому
ТТ: тройное дерево
TU: единица преобразования
Tx: блок передатчика
VR: виртуальная реальность
VVC: Универсальное кодирования/декодирования видео.
[42] Применяются следующие определения, если они не изменены где-либо еще: битовый поток представляет собой последовательность битов, включающих в себя видеоданные, которые сжаты для передачи между кодером и декодером. Кодер - это устройство, использующее процессы кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое использует процессы декодирования для восстановления видеоданных из битового потока для отображения. Картинка (picture) представляет собой массив выборок яркости или выборок цветности, который создает кадр или поле. Картинка, которое кодируется или декодируется, может называться текущей картинкой. Опорная картинка содержит опорные выборки, которые можно использовать при кодировании других картинок по ссылке в соответствии с интер-предсказанием или межуровневым предсказанием. Список опорных картинок представляет собой список опорных картинок, используемых для интер-предсказания или межуровневого предсказания. Флаг - это переменная или однобитовый элемент синтаксиса, который может принимать одно из двух возможных значений: 0 или 1. Некоторые системы видеокодирования используют два списка опорных картинок, которые можно обозначить как первый список опорных картинок и нулевой список опорных картинок. Структура списков опорных картинок представляет собой адресуемую синтаксическую структуру, которая содержит множественные списки опорных картинок. Интер-предсказание - это механизм кодирования выборок текущей картинки посредством ссылки на указанные выборки в опорной картинке, которая отличается от текущей картинки, причем опорная картинка и текущая картинка находятся на одном уровне. Запись структуры списка опорных картинок представляет собой адресуемое место в структуре списка опорных картинок, которое указывает опорную картинку, ассоциированную со списком опорных картинок. Заголовок слайса - это часть кодированного слайса (slice), содержащая элементы данных, относящиеся ко всем видеоданным в плитке (tile), представленной в слайсе. PPS содержит данные, относящиеся ко всей картинке. Более конкретно, PPS - это структура синтаксиса, содержащая элементы синтаксиса, которые применяются к нулю или более целым кодированным картинкам, как определено элементом синтаксиса, найденным в каждом заголовке картинки. SPS содержит данные, относящиеся к последовательности картинок. AU представляет собой набор из одной или более кодированных картинок, ассоциированных с одним и тем же временем отображения (например, с одним и тем же счетчиком порядка картинок) для вывода из DPB (например, для отображения пользователю). AUD указывает начало AU или границу между AU. Декодированная видеопоследовательность - это последовательность картинок, которые были восстановлены декодером при подготовке для отображения пользователю.
[43] Фиг.1 представляет собой блок-схему последовательности операций примерного рабочего способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом ассоциированное с этим потребление ресурсов полосы пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования как правило зеркально отражает процесс кодирования, что позволяет декодеру последовательно восстанавливать видеосигнал.
[44] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может представлять собой несжатый видеофайл, хранящийся в памяти. В качестве другого примера, видеофайл может быть захвачен устройством видеозахвата, таким как видеокамера, и закодирован для поддержки потоковой передачи видео в режиме реального времени. Видеофайл может включать в себя как аудиокомпонент, так и видеокомпонент. Видеокомпонент содержит ряд кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражены в показателях света, называемых в данном документе компонентами яркости (или выборками яркости), и цвета, которые называются компонентами цветности (или выборками цветности). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.
[45] На этапе 103 видео разделяется на блоки. Разделение включает в себя подразделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, в HEVC кадр может быть сначала разделен на CTU, которые представляют собой блоки предопределенного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). CTU содержат выборки как яркости, так и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивного подразделения блоков до тех пор, пока не будут достигнуты конфигурации, которые поддерживают дополнительное кодирование. Например, компоненты яркости кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения освещения. Кроме того, компоненты цветности кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения различаются в зависимости от содержимого видеокадров.
[46] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может быть использовано интер-предсказание (inter-prediction) и/или интра-предсказание (intra-prediction). Интер-предсказание предназначено для получения преимущества от того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, представляющий объект в опорном кадре, не нужно повторно описывать в смежных кадрах. В частности, объект, такой как стол, может оставаться в постоянном положении в течение множественных кадров. Следовательно, стол описывается один раз, и смежные кадры могут ссылаться обратно на опорный кадр. Механизмы сопоставления образов могут использоваться для сопоставления объектов в множественных кадрах. Кроме того, движущиеся объекты могут быть представлены в множественных кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в течение множественных кадров. Векторы движения могут быть использованы для описания такого движения. Вектор движения представляет собой двумерный вектор, который обеспечивает смещение из координат объекта в кадре в координаты объекта в опорном кадре. Таким образом, интер-предсказание может кодировать блок изображения в текущем кадре в качестве набора векторов движения, указывающих смещение от соответствующего блока в опорном кадре.
[47] Интра-предсказание кодирует блоки в общем кадре. Интра-предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию к кластеризации в кадре. Например, фрагмент зеленого в части дерева имеет тенденцию располагаться рядом с аналогичными фрагментами зеленого. Интра-предсказание использует множественные режимы направленного предсказания (например, 33 в HEVC), планарный режим и режим DC. Направленные режимы указывают, что текущий блок аналогичен/такой же как выборки соседнего блока в соответствующем направлении. Планарный режим указывает, что ряд блоков вдоль строки/столбца (например, плоскости) может быть интерполирован на основе соседних блоков на краях строки. Планарный режим, по сути, указывает на плавный переход света/цвета через строку/столбец, используя относительно постоянный наклон при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок аналогичен/такой же как среднее значение, ассоциированное с выборками всех соседних блоков, ассоциированных с угловыми направлениями направленных режимов предсказания. Соответственно, блоки интра-предсказания могут представлять блоки изображения как значения различных реляционных режимов предсказания вместо фактических значений. Кроме того, блоки интер-предсказания могут представлять блоки изображения как значения векторов движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые различия хранятся в остаточных блоках. Преобразования могут быть применены к остаточным блокам для дополнительного сжатия файла.
[48] На этапе 107 могут применяться различные методики фильтрации. В HEVC фильтры применяются по схеме внутриконтурной фильтрации. Основанное на блоках предсказание, рассмотренное выше, может привести к созданию блочных изображений в декодере. Дополнительно, схема основанного на блоках предсказания может кодировать блок, а затем восстановить закодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет к блокам/кадрам фильтры шумоподавления, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO. Эти фильтры смягчают такие артефакты блочности, чтобы можно было точно восстановить закодированный файл. Кроме того, эти фильтры смягчают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе этих восстановленных опорных блоков.
[49] После разделения, сжатия и фильтрации видеосигнала результирующие данные кодируются в битовый поток на этапе 109. Битовый поток включает в себя данные, рассмотренные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные разделения, данные предсказания, остаточные блоки и различные флаги, обеспечивающие инструкции кодирования, для декодера. Битовый поток может быть сохранен в памяти для передачи на декодер по запросу. Битовый поток может также транслироваться и/или многоадресно передаваться к множеству декодеров. Создание битового потока является итеративным процессом. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно в отношении многих кадров и блоков. Порядок, показанный на ФИГ.1, представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса кодирования видео конкретным порядком.
[50] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для конвертирования битового потока в соответствующие синтаксические и видео данные. Декодер использует синтаксические данные из битового потока для определения разделов для кадров на этапе 111. Разделение должно совпадать с результатами разделения блока на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер делает много выборов во время процесса сжатия, например, выбирает схемы разделения блока из нескольких возможных выборов на основе пространственного расположения значений во входном изображении(ях). Для сигнализации точных выборов может использоваться большое число двоичных элементов (бинов). Как используется в данном документе, бин (bin) представляет собой двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может изменяться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбрасывать любые опции, которые явно не подходят для конкретного случая, оставляя набор допустимых опций. Каждой допустимой опции затем назначается кодовое слово. Длина кодовых слов основана на числе допустимых опций (например, один бин для двух опций, два бина для трех-четырех опций и т. д.). Затем кодер кодирует кодовое слово для выбранной опции. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько это необходимо, чтобы однозначно указывать выбор из небольшого поднабора допустимых опций, в отличие от однозначного указания выбора из потенциально большого набора всех возможных опций. Затем декодер декодирует выбор, определяя набор допустимых опций аналогично кодеру. Посредством определения набора допустимых опций, декодер может считывать кодовое слово и определять выбор, сделанный кодером.
[51] На этапе 113 декодер выполняет декодирование блоков. В частности, декодер применяет обратные преобразования для генерирования остаточных блоков. Затем декодер применяет остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения согласно разделению. Блоки предсказания могут включать в себя как блоки интра-предсказания, так и блоки интер-предсказания, генерируемые кодером на этапе 105. Затем восстановленные блоки изображения размещаются в кадры восстанавливаемого видеосигнала согласно данным разделения, определенным на этапе 111. Синтаксис для этапа 113 также может быть просигнализирован в битовом потоке посредством энтропийного кодирования, как описано выше.
[52] На этапе 115 фильтрация выполняется над кадрами восстановленного видеосигнала способом, аналогичным этапу 107 в кодере. Например, фильтры шумоподавления, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут быть применены к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.
[53] Фиг.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. Такие компоненты соединены, как показано. На ФИГ.2 черные линии указывают перемещение данных, подлежащих кодированию/декодированию, а пунктирные линии указывают перемещение управляющих данных, которые управляют работой других компонентов. Все компоненты системы 200 кодека могут присутствовать в кодере. Декодер может включать в себя поднабор компонентов системы 200 кодека. Например, декодер может включать в себя компонент 217 предсказания внутри картинки, компонент 219 компенсации движения, компонент 229 обратного преобразования и масштабирования, компонент 225 внутриконтурных фильтров и компонент 223 буфера декодированных картинок. Эти компоненты описаны далее.
[54] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей деревом кодирования. Дерево кодирования использует различные режимы разбиения для подразделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки могут быть дополнительно подразделены на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы подвергаются фрагментации на более мелкие дочерние узлы. Число раз, которое узел подразделяется, называется глубиной узла/дерева кодирования. В некоторых случаях разделенные блоки могут быть включены в CU. Например, CU может быть суб-частью CTU, которая содержит блок яркости, блок(и) Cr и блок(и) Cb вместе с соответствующими инструкциями синтаксиса для CU. Режимы разбиения могут включать в себя BT, TT и QT, используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от используемых режимов разбиения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 масштабирования и квантования преобразования, компонент 215 оценки внутри картинки, компонент 227 анализа для управления фильтром и компонент 221 оценки движения для сжатия.
[55] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодировании изображений видеопоследовательности в битовый поток в соответствии с ограничениями применения. Например, компонент 211 общего управления кодером администрирует оптимизацию битрейта/размера битового потока в зависимости от качества восстановления. Такие решения могут приниматься на основе доступности пространства хранения/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также администрирует использование буфера с учетом скорости передачи, чтобы смягчить проблемы недостаточного заполнения и переполнения буфера. Чтобы справиться с этими проблемами, компонент 211 общего управления кодером администрирует разделение, предсказание и фильтрацию посредством других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшать сложность сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с учетом битрейта. Компонент 211 общего управления кодером создает управляющие данные, которые управляют работой других компонентов. Управляющие данные также пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.
[56] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для интер-предсказания. Кадр или слайс разделенного видеосигнала 201 может быть разделен на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока относительно одного или нескольких блоков в одном или нескольких опорных кадрах, чтобы обеспечить временное предсказание. Система 200 кодека может выполнять несколько проходов кодирования, например, для выбора надлежащего режима кодирования для каждого блока видеоданных.
[57] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть в высокой степени интегрированы, но показаны отдельно в концептуальных целях. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс генерирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указать смещение кодируемого объекта относительно блока предсказания. Блок предсказания является блоком, который обнаружен как точно соответствующий блоку, который подлежит кодированию, исходя из разности пикселей. Блок предсказания также может именоваться опорным блоком. Такая разница в пикселях может быть определена с помощью SAD, SSD или других показателей различия. HEVC использует несколько кодированных объектов, в том числе CTU, CTB и CU. Например, CTU можно разбить на CTB, которые затем можно разбить на CB для включения в CU. CU может быть закодирована как блок предсказания, содержащий данные предсказания, и/или TU, содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения генерирует векторы движения, единицы предсказания и TU, используя анализ скорость-искажение как часть процесса оптимизации искажения скорости. Например, компонент 221 оценки движения может определять несколько опорных блоков, несколько векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорость-искажение. Наилучшие характеристики скорость-искажение уравновешивают качество восстановления видео (например, объем потерь данных при сжатии) с эффективностью кодирования (например, размер окончательного кодирования).
[58] В некоторых примерах система 200 кодека может вычислять значения для положений субцелочисленных пикселей опорных картинок, сохраненных в компоненте 223 буфера декодированных картинок. Например, система 200 кодека может интерполировать значения положений одной четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорной картинки. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для единицы предсказания видеоблока в интер-кодированном слое путем сравнения положения единицы предсказания с положением блока предсказания опорной картинки. Компонент 221 оценки движения выводит вычисленный вектор движения в качестве данных движения в компонент 231 форматирования заголовка и CABAC для кодирования и движения для компонента 219 компенсации движения.
[59] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы в некоторых примерах. После приема вектора движения для единицы предсказания текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, что формирует значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок пересылаются в компонент 213 преобразования масштабирования и квантования.
[60] Разделенный видеосигнал 201 также отправляется в компонент 215 оценки внутри картинки и компонент 217 предсказания внутри картинки. Как и в случае с компонентом 221 оценки движения и компонентом 219 компенсации движения, компонент 215 оценки внутри картинки и компонент 217 предсказания внутри картинки могут быть в высокой степени интегрированы, но в концептуальных целях проиллюстрированы отдельно. Компонент 215 оценки внутри картинки и компонент 217 предсказания внутри картинки осуществляют интра-предсказание текущего блока относительно блоков в текущем кадре, в качестве альтернативы интер-предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 оценки внутри картинки определяет режим интра-предсказания для использования, чтобы кодировать текущий блок. В некоторых примерах компонент 215 оценки внутри картинки выбирает надлежащий режим интра-предсказания для кодирования текущего блока из множества проверяемых режимов интра-предсказания. Выбранные режимы интра-предсказания затем пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования.
[61] Например, компонент 215 оценки внутри картинки вычисляет значения скорость-искажение, используя анализ скорость-искажение для различных тестируемых режимов интра-предсказания, и выбирает режим интра-предсказания, имеющий лучшие характеристики скорость-искажение среди тестированных режимов. Анализ скорость-искажение обычно определяет степень искажения (или ошибки) между кодированным блоком и исходным некодированным блоком, который был закодирован для создания кодированного блока, а также битрейт (например, количество битов), используемый для создания закодированного блока. Компонент 215 оценки внутри картинки вычисляет отношения по искажениям и скоростям для различных закодированных блоков, чтобы определить, какой режим интра-предсказания демонстрирует наилучшее значение скорость-искажение для блока. Кроме того, компонент 215 оценки внутри картинки может быть сконфигурирован для кодирования блоков глубины для карты глубины с использованием DMM на основе RDO.
[62] Компонент 217 предсказания внутри картинки может генерировать остаточный блок из блока предсказания на основе выбранных режимов интра-предсказания, определенных компонентом 215 оценки внутри картинки, при реализации в кодере, или считывать остаточный блок из битового потока при реализации в декодере. Остаточный блок включает в себя разность значений между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 масштабирования и квантования преобразования. Компонент 215 оценки внутри картинки и компонент 217 предсказания внутри картинки могут работать как над компонентами яркости, так и над компонентами цветности.
[63] Компонент 213 масштабирования и квантования преобразования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 масштабирования и квантования преобразования применяет преобразование, такое как DCT, DST или концептуально подобное преобразование, к остаточному блоку, формируя видеоблок, содержащий значения остаточных коэффициентов преобразования. Также могут быть использованы вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может конвертировать остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает в себя применение коэффициента масштабирования к остаточной информации, так что информация разных частот квантуется с разными степенями детализации, что может повлиять на конечное визуальное качество восстановленного видео. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения битрейта. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством корректировки параметра квантования. В некоторых примерах компонент 213 масштабирования и квантования преобразования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования в битовый поток.
[64] Компонент 229 обратного преобразования и масштабирования применяет обратную операцию компонента 213 масштабирования и квантования преобразования для поддержки оценки движения. Компонент 229 обратного преобразования и масштабирования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в пиксельной области, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения могут вычислять опорный блок путем прибавления остаточного блока обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для смягчения артефактов, создаваемых во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.
[65] Компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 обратного преобразования и масштабирования может быть объединен с соответствующим блоком предсказания из компонента 217 предсказания внутри картинки и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах фильтры могут быть применены к остаточным блокам. Как и в случае с другими компонентами на ФИГ.2, компонент 227 анализа управления фильтром и компонент 225 внутриконтурных фильтров являются в высокой степени интегрируемыми и могут быть реализованы вместе, но представлены в концептуальных целях по-отдельности. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным пространственным областям и включают в себя несколько параметров для корректировки того, как такие фильтры применяются. Компонент 227 анализа управления фильтром анализирует восстановленные опорные блоки для определения того, где такие фильтры должны применяться, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтров. Фильтры могут включать в себя фильтр устранения блочности, шумоподавляющий фильтр, SAO-фильтр и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, к восстановленному блоку пикселей) или в частотной области, в зависимости от примера.
[66] При работе в качестве кодера отфильтрованный восстановленный блок изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных картинок для последующего использования при оценке движения, как описано выше. При работе в качестве декодера компонент 223 буфера декодированных картинок сохраняет и пересылает восстановленные и отфильтрованные блоки на дисплей в ходе вывода видеосигнала. Компонент 223 буфера декодированных картинок может представлять собой любое запоминающее устройство, способное сохранять блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.
[67] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодируемый битовый поток для передачи на декодер. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования управляющих данных, таких как общие управляющие данные и данные управления фильтром. Кроме того, данные предсказания, включающие в себя данные движения и интра-предсказания, а также остаточные данные в форме данных квантованных коэффициентов преобразования, все кодируются в битовом потоке. Окончательный битовый поток включает в себя всю информацию, необходимую декодеру для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режимов интра-предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов интра-предсказания, указание информации разделения и т. д. Такие данные могут быть закодированы с помощью энтропийного кодирования. Например, информация может быть закодирована с использованием кодирования CAVLC, CABAC, SBAC, PIPE или другого метода энтропийного кодирования. После энтропийного кодирования кодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или помещен в архив для последующей передачи или извлечения.
[68] Фиг.3 представляет собой блок-схему, иллюстрирующую примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодека и/или реализации этапов 101, 103, 105, 107 и/или 109 рабочего способа 100. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Затем разделенный видеосигнал 301 сжимается и кодируется в битовый поток компонентами кодера 300.
[69] В частности, разделенный видеосигнал 301 пересылается в компонент 317 предсказания внутри картинки для интра-предсказания. Компонент 317 предсказания внутри картинки может быть по существу аналогичен компоненту 215 оценки внутри картинки и компоненту 217 предсказания внутри картинки. Разделенный видеосигнал 301 также пересылается в компонент 321 компенсации движения для интер-предсказания на основе опорных блоков в компоненте 323 буфера декодированных картинок. Компонент 321 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 предсказания внутри картинки и компонента 321 компенсации движения пересылаются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 масштабирования и квантования преобразования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе с ассоциированными управляющими данными) пересылаются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.
[70] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также пересылаются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 обратного преобразования и масштабирования. внутриконтурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа для управления фильтром и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя несколько фильтров, как описано в отношении компонента 225 внутриконтурных фильтров. Затем отфильтрованные блоки сохраняются в компоненте 323 буфера декодированных картинок для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных картинок может быть по существу аналогичен компоненту 223 буфера декодированных картинок.
[71] Фиг.4 представляет собой блок-схему, иллюстрирующую примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115, и/или 117 рабочего способа 100. Декодер 400 принимает поток битов, например, от кодера 300, и генерирует восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.
[72] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как декодирование CAVLC, CABAC, SBAC, PIPE, или других методик энтропийного декодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка для обеспечения контекста для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую требуемую информацию для декодирования видеосигнала, такую как общие управляющие данные, данные управления фильтром, информация разделения, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования пересылаются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
[73] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 предсказания внутри картинки для восстановления в блоки изображения на основе операций интра-предсказания. Компонент 417 предсказания внутри картинки может быть по существу аналогичен компоненту 215 оценки внутри картинки и компоненту 217 предсказания внутри картинки. В частности, компонент 417 предсказания внутри картинки использует режимы предсказания для нахождения опорного блока в кадре и применяет остаточный блок к результату для восстановления интра-предсказанных блоков изображения. Восстановленные интра-предсказанные блоки изображения и/или остаточные блоки и соответствующие данные интер-предсказания пересылаются в компонент 423 буфера декодированных картинок через компонент 425 внутриконтурных фильтров, которые могут быть по существу аналогичны компоненту 223 буфера декодированных картинок и компоненту 225 внутриконтурных фильтров, соответственно. Компонент 425 внутриконтурных фильтров фильтрует восстановленные блоки изображения, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных картинок. Восстановленные блоки изображения из компонента 423 буфера декодированных картинок пересылаются в компонент 421 компенсации движения для интер-предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для генерирования блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Получаемые в результате восстановленные блоки также можно переслать через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных картинок. Компонент 423 буфера декодированных картинок продолжает сохранять дополнительные восстановленные блоки изображения, которые могут быть восстановлены в кадры посредством информации разделения. Такие кадры также могут быть помещены в последовательность. Последовательность выводится на дисплей в виде восстановленного выходного видеосигнала.
[74] Фиг.5 является принципиальной схемой, иллюстрирующей множество видеопотоков 501, 502 и 503 субкартинок, извлеченных из видеопотока 500 картинок. Например, каждый из видеопотоков 501-503 субкартинок или видеопоток 500 картинок может быть закодирован кодером, таким как система 200 кодека или кодер 300, в соответствии со способом 100. Кроме того, видеопотоки 501-503 субкартинок или видеопоток 500 картинок могут быть декодированы декодером, таким как система 200 кодека или декодер 400.
[75] Видеопоток 500 картинок включает в себя множество картинок, представленных во времени. Видеопоток 500 картинок сконфигурирован для использования в приложениях VR (виртуальной реальности). Виртуальная реальность работает путем кодирования сферы видеоконтента, которая может отображаться так, как будто пользователь находится в центре сферы. Каждая картинка включает в себя всю сферу. При этом пользователю отображается только часть картинки, известная как окно просмотра. Например, пользователь может использовать HMD, который выбирает и отображает область просмотра сферы на основе движения головы пользователя. Это создает впечатление физического присутствия в виртуальном пространстве, которое представлено посредством видео. Для достижения этого результата каждая картинка видеопоследовательности включает в себя всю сферу видеоданных в соответствующий момент времени. Однако пользователю отображается только небольшая часть (например, одно окно просмотра) картинки. Остальная часть картинки отбрасывается в декодере без рендеринга. Вся картинка может передаваться так, чтобы можно было динамически выбирать и отображать другое окно просмотра в ответ на движение головы пользователя.
[76] Каждая из картинок видеопотока 500 может быть подразделена на субкартинки на основе доступных окон просмотра. Соответственно, каждая картинка и соответствующая субкартинка (sub-picture) включает в себя временное положение (например, порядок картинки) как часть временного представления. Видеопотоки 501-503 субкартинок создаются, когда подразделение применяется последовательно во времени. Такое согласованное подразделение создает видеопотоки 501-503 субкартинок, где каждый поток содержит набор субкартинок предварительно определенного размера, формы и пространственного положения относительно соответствующих картинок в видеопотоке 500 картинок. Кроме того, набор субкартинок в видеопотоке 501-503 субкартинок изменяется во временном положении в течение времени представления. Таким образом, субкартинки видеопотоков 501-503 субкартинок могут быть выровнены во временной области на основании временного положения. Затем субкартинки из видеопотоков 501-503 субкартинок в каждом временном положении могут быть объединены в пространственной области на основе предварительно определенного пространственного положения для восстановления видеопотока 500 картинок для отображения. В частности, каждый из видеопотоков 501-503 субкартинок может быть закодирован в отдельные битовые субпотоки. Когда такие битовые субпотоки объединяются вместе, они приводят к битовому потоку, который включает в себя весь набор картинок во времени. Результирующий битовый поток может быть передан в декодер для декодирования и отображения на основе выбранного в данный момент пользователем окна просмотра.
[77] Все видеопотоки 501-503 субкартинок могут быть переданы пользователю с высоким качеством. Это позволяет декодеру динамически выбирать текущее окно просмотра пользователя и отображать субкартинки из соответствующих видеопотоков 501-503 субкартинок в реальном времени. Однако пользователь может просматривать только одно окно просмотра, например, из видеопотока 501 субкартинок, в то время как видеопотоки 502-503 субкартинок отбрасываются. Таким образом, передача видеопотоков 502-503 субкартинок с высоким качеством может привести к потере значительной части полосы пропускания. Чтобы повысить эффективность кодирования, VR-видео может быть закодировано во множество видеопотоков 500, где каждый видеопоток 500 кодируется с разным качеством. Таким образом, декодер может передавать запрос текущего видеопотока 501 субкартинок. В ответ кодер может выбрать видеопоток 501 субкартинок более высокого качества из видеопотока 500 более высокого качества и видеопотоки 502-503 субкартинки более низкого качества из видеопотока 500 более низкого качества. Затем кодер может объединить такие битовые субпотоки вместе в полный кодированный битовый поток для передачи. Таким образом, декодер принимает ряд картинок, где текущее окно просмотра имеет более высокое качество, а другие окна просмотра имеют более низкое качество. Кроме того, субкартинки самого высокого качества обычно отображаются для пользователя, а субкартинки более низкого качества обычно отбрасываются, что уравновешивает функциональность с эффективностью кодирования.
[78] В случае, если пользователь переключается с просмотра видеопотока 501 субкартинок на видеопоток 502 субкартинок, декодер запрашивает передачу нового текущего видеопотока 502 субкартинок с более высоким качеством. Затем кодер может соответствующим образом изменить механизм объединения.
[79] Субкартинки также могут использоваться в системах телеконференций. В таком случае видеопоток каждого пользователя включается в битовый поток субкартинок, такой как видеопоток 501, 502 или 503 субкартинок. Система может принимать такие видеопотоки 501, 502 или 503 субкартинок и комбинировать их в различных позициях или разрешениях для создания полного видеопотока 500 картинок для обратной передачи пользователям. Это позволяет системе телеконференций динамически изменять видеопоток 500 картинок на основе изменения пользовательского ввода, например, путем увеличения или уменьшения размера видеопотока 501, 502 или 503 субкартинок, чтобы выделить пользователей, которые в данный момент говорят, или уменьшить выделение пользователей, которые больше не разговаривают. Соответственно, субкартинки имеют множество применений, которые позволяют динамически изменять видеопоток 500 картинок во время выполнения на основании изменений в поведении пользователя. Эта функциональность может быть реализована путем извлечения или объединения видеопотока 501, 502 или 503 субкартинок из видеопотока 500 картинок или в него.
[80] Фиг.6 представляет собой схематическое представление, иллюстрирующее пример битового потока 600, разбитого на битовый субпоток 601. Битовый поток 600 может содержать видеопоток картинок, такой как видеопоток 500 картинок, а битовый субпоток 601 может содержать видеопоток субкартинок, такой как видеопоток 501, 502 или 503 субкартинок. Например, битовый поток 600 и битовый субпоток 601 могут быть сгенерированы системой кодеков 200 или кодером 300 для декодирования системой кодеков 200 или декодером 400. В качестве другого примера битовый поток 600 и битовый субпоток 601 могут быть сгенерированы кодером на этапе 109 способа 100 для использования декодером на этапе 111.
[81] Битовый поток 600 включает в себя SPS 610, множество PPS 611, множество заголовков 615 слайсов и данные 620 изображения. SPS 610 содержит данные последовательности, общие для всех картинок в видеопоследовательности, содержащихся в битовом потоке 600. Такие данные могут включать в себя размер картинки, битовую глубину, параметры инструмента кодирования или ограничения скорости передачи данных. PPS 611 содержит параметры, которые применяются ко всей картинке. Следовательно, каждая картинка в видеопоследовательности может относиться к PPS 611. Хотя каждая картинка относится к PPS 611, один PPS 611 может содержать данные для множественных картинок. Например, несколько аналогичных картинок могут быть кодированы согласно аналогичным параметрам. В таком случае один PPS 611 может содержать данные для таких аналогичных картинок. PPS 611 может указывать инструменты кодирования, доступные для слайсов в соответствующих картинках, параметры квантования или смещения. Заголовок 615 слайса содержит параметры, которые являются специфичными для каждого слайса в картинке. Следовательно, в видеопоследовательности может быть один заголовок 615 слайса на каждый слайс. Заголовок 615 слайса может содержать информацию о типе слайса, POC, RPL, весовые коэффициенты предсказания, точки входа плитки или параметры устранения блочности. Заголовок 615 слайса также может называться заголовком группы плиток. Битовый поток 600 может также включать в себя заголовок картинки, который представляет собой синтаксическую структуру, содержащую параметры, применимые ко всем слайсам в одной картинке. По этой причине заголовок картинки и заголовок 615 слайса могут использоваться взаимозаменяемо. Например, некоторые параметры могут быть перемещены между заголовком 615 слайса и заголовком картинки в зависимости от того, являются ли такие параметры общими для всех слайсов в картинке.
[82] Данные 620 изображения содержат видеоданные, закодированные согласно интер-предсказанию, интра-предсказанию или межуровневому предсказанию, а также соответствующие преобразованные и квантованные остаточные данные. Например, видеопоследовательность включает в себя множество картинок 621. Картинка 621 представляет собой массив выборок яркости или массив выборок цветности, которые создают кадр или его поле. Кадр - это целостное изображение, предназначенное для полного или частичного отображения пользователю в соответствующий момент в видеопоследовательности. Картинка 621 содержит один или более слайсов. Слайс может быть определен как целое число полных плиток или целое число последовательных полных строк CTU (например, внутри плитки) картинки 621, которые содержатся исключительно в одной единице NAL. Слайсы дополнительно делятся на CTU или CTB. CTU - это группа выборок заранее определенного размера, которые могут быть разделены деревом кодирования. CTB является подмножеством CTU и содержит компоненты яркости или компоненты цветности CTU. CTU/CTB дополнительно разбиваются на блоки кодирования на основе деревьев кодирования. Затем блоки кодирования можно кодировать/декодировать согласно механизмам предсказания.
[83] Картинка 621 может быть разбита на множество субкартинок 623 и 624. Субкартинка 623 или 624 представляет собой прямоугольную область одного или нескольких слайсов внутри картинки 621. Следовательно, каждый из слайсов и их подразделов может быть назначен субкартинке 623 или 624. Это позволяет обрабатывать различные области картинки 621 по-разному с точки зрения кодирования в зависимости от того, какая субкартинка 623 или 624 включает в себя такие области.
[84] Битовый субпоток 601 может быть извлечен из битового потока 600 в соответствии с процессом 605 извлечения битового субпотока. Процесс 605 извлечения битового субпотока представляет собой заданный механизм, который удаляет единицы NAL из битового потока, которые не являются частью целевого набора, что приводит к выходному битовому субпотоку, который включает в себя единицы NAL, включенные в целевой набор. Блок NAL содержит слайс. Таким образом, процесс 605 извлечения битового субпотока сохраняет целевой набор слайсов и удаляет другие слайсы. Целевой набор может быть выбран на основе границ субкартинки. Слайсы в субкартинке 623 включены в целевой набор, а слайсы в субкартинке 624 не включены в целевой набор. Таким образом, процесс 605 извлечения битового субпотока создает битовый субпоток 601, который по существу аналогичен битовому потоку 600, но содержит субкартинку 623, исключая субкартинку 624. Процесс 605 извлечения битового субпотока может выполняться кодером или соответствующим слайсером, сконфигурированным для динамического изменения битового потока 600 на основе поведения/запросов пользователя.
[85] Соответственно, битовый субпоток 601 является извлеченным битовым потоком, который является результатом процесса 605 извлечения битового субпотока, примененного к входному битовому потоку 600. Входной битовый поток 600 содержит набор субкартинок 601. Однако извлеченный битовый поток (например, субпоток 600) содержит только поднабор субкартинок входного битового потока 605 для процесса извлечения битового субпотока. Набор субкартинок во входном битовом потоке 600 включает в себя субкартинки 623 и 624, в то время как поднабор субкартинок в битовом субпотоке 601 включает в себя субкартинку 623, но не субкартинку 624. Может быть использовано любое количество субкартинок 623-624. Например, битовый поток 600 может включать в себя N субкартинок 623-624, а битовый субпоток может содержать N-1 или меньше субкартинок 623, где N - любое целое значение.
[86] Как описано, картинка может быть разделена на множество субкартинок, при этом каждая субкартинка покрывает прямоугольную область и содержит целое число полных слайсов. Разделение на субкартинки сохраняется для всех картинок в CVS, а информация о разделении передается в SPS. Субкартинка может быть закодирована без использования выборочных значений из любой другого субкартинки для компенсации движения.
[87] Для каждой субкартинки флаг loop_filter_across_subpic_enabled_flag[i] указывает, разрешена или нет внутриконтурная фильтрация по фрагментам изображения. Флаг охватывает ALF, SAO и инструменты устранения блочности. Поскольку значение флага для каждого субкартинки может быть разным, два смежных субкартинки могут иметь разные значения флага. Эта разница влияет на операцию устранения блочности больше, чем ALF и SAO, поскольку устранение блочности изменяет значения выборки как на левой, так и на правой стороне границы с устранением блочности. Таким образом, когда две соседних субкартинки имеют разные значения флага, устранение блочности не применяется к выборкам вдоль границы, общей для обеих субкартинок, что приводит к видимым артефактам. Желательно избегать этих артефактов.
[88] Здесь раскрыты варианты осуществления флагов фильтра для устранения блочности субкартинки. В первом варианте осуществления, когда две субкартинки находятся рядом друг с другом (например, правая граница первой субкартинки также является левой границей второй субкартинки или нижняя граница первой субкартинки также является верхней границей второй субкартинки), а значения loop_filter_across_subpic_enabled_flag[i] двух субкартинок различны, к устранению блочности границы, общей для двух субкартинок, применяются два условия. Во-первых, для субкартинки с loop_filter_across_subpic_enabled_flag[i], равным 0, устранение блочности не применяется к блокам на границе, общей со смежной субкартинкой. Во-вторых, для субкартинки с loop_filter_across_subpic_enabled_flag[i], равным 1, устранение блочности применяется к блокам на границе, общей со смежной субкартинкой. Чтобы реализовать это устранение блочности, определение граничной прочности применяется в соответствии с обычным процессом устранения блочности, а фильтрация выборок применяется только к выборкам, принадлежащим субкартинке с loop_filter_across_subpic_enabled_flag[i], равным 1. Во втором варианте осуществления, когда имеется субкартинка со значением subpic_treated_as_pic_flag[i], равным 1, и loop_filter_across_subpic_enabled_flag[i], равным 0, значение loop_filter_across_subpic_enabled_flag[i] всех субкартинок должно быть равно 0. В третьем варианте осуществления вместо сигнализации loop_filter_across_subpic_enabled_flag[i] для каждой субкартинки сигнализируется только один флаг, указывающий, разрешена или нет контурная фильтрация субкартинок. Раскрытые варианты осуществления уменьшают или устраняют артефакты, описанные выше, и приводят к меньшему количеству потерянных битов в закодированном битовом потоке.
[89] SPS имеет следующий синтаксис и семантику для реализации вариантов осуществления.
Синтаксис SPS RBSP
[90] Как показано, вместо сигнализации loop_filter_across_subpic_enabled_flag[i] для каждой субкартинки сигнализируется только один флаг, чтобы указать, разрешена ли контурная фильтрация по субкартинкам, и этот флаг сигнализируется на уровне SPS.
[91] loop_filter_across_subpic_enabled_flag, равный 1, указывает, что операции внутриконтурной фильтрации могут выполняться через границы субкартинок в каждой кодированной картинке в CVS. loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинок в каждой кодированной картинке в CVS. Если он отсутствует, предполагается, что значение loop_filter_across_subpic_enabled_pic_flag равно 1.
Общий процесс фильтра устранения блочности
[92] Фильтр устранения блочности - это процесс фильтрации, который применяется как часть процесса декодирования, чтобы свести к минимуму появление визуальных артефактов на границах между блоками. Входными данными для общего процесса фильтра устранения блочности являются восстановленная картинка до устранения блочности (массив recPictureL), а массивы recPictureCb и recPictureCr являются входами, когда ChromaArrayType не равен 0.
[93] Выходами (входными данными) общего процесса фильтра устранения блочности являются модифицированная восстановленная картинка после устранения блочности (массив recPictureL), а также массивы recPictureCb и recPictureCr, когда ChromaArrayType не равен 0.
[94] Сначала фильтруются вертикальные края картинки. Затем горизонтальные края картинки фильтруются с выборками, модифицированными в процессе фильтрации вертикальных краев в качестве входов. Вертикальные и горизонтальные края в CTB каждой CTU обрабатываются отдельно на основе CU. Вертикальные края блоков кодирования в CU фильтруются, начиная с края на левой стороне блоков кодирования, проходя через края к правой стороне блоков кодирования в их геометрическом порядке. Горизонтальные края блоков кодирования в CU фильтруются, начиная с края наверху блоков кодирования и проходя через края к низу блоков кодирования в их геометрическом порядке. Хотя процесс фильтрации определяется на основе картинки, процесс фильтрации может быть реализован на основе CU с эквивалентным результатом, при условии, что декодер правильно учитывает порядок зависимости обработки, чтобы получить одинаковые выходные значения.
[95] Процесс фильтра устранения блочности применяется ко всем краям субблока кодирования и краям блока преобразования картинки, за исключением следующих типов краев: края, которые находятся на границе картинки, края, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0, края, совпадающие с виртуальными границами картинки, когда pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1, края, совпадающие с границами кирпичей, когда loop_filter_across_bricks_enabled_flag равен 0, края, совпадающие с границами слайсов, когда loop_filter_across_slices_enabled_flag равен 0, края, которые совпадают с верхними или левыми границами слайсов с slice_deblocking_filter_disabled_flag, равным 1, края внутри слайсов с slice_deblocking_filter_disabled_flag, равным 1, края, которые не соответствуют границам сетки 4×4 компонента яркости, края, которые не соответствуют границам сетки 8×8 выборки цветности, края в компоненте яркости, для которых обе стороны края имеют intra_bdpcm_flag, равный 1, и края субблоков цветности, которые не являются краями ассоциированной единицы преобразования. Субблок представляет собой раздел блока или единицы кодирования, например, раздел 64×32 блока 64×64. Единица преобразования представляет собой прямоугольный блок MxN выборок, полученный в результате преобразования в процессе декодирования. Преобразование является частью процесса декодирования, посредством которого блок коэффициентов преобразования преобразуется в блок значений в пространственной области. Пока обсуждается процесс фильтра устранения блочности, одни и те же ограничения могут применяться к процессу SAO и процессу ALF.
Однонаправленный процесс фильтра устранения блочности
[96] Входными данными (входами) для однонаправленного процесса фильтра устранения блочности являются переменная treeType, указывающая, обрабатываются ли в данный момент компоненты яркости (DUAL_TREE_LUMA) или цветности (DUAL_TREE_CHROMA), восстановленная картинка до устранения блочности (например, массив recPictureL), когда treeType равен DUAL_TREE_LUMA, массивы recPictureCb и recPictureCr, когда ChromaArrayType не равен 0, а treeType равен DUAL_TREE_CHROMA, и переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край.
[97] Выходными данными (выходами) однонаправленного процесса фильтра устранения блочности являются модифицированная восстановленная картинка после устранения блочности, в частности, массив recPictureL, когда treeType равен DUAL_TREE_LUMA, и массивы recPictureCb и recPictureCr, когда ChromaArrayType не равен 0, а treeType равен DUAL_TREE_CHROMA.
[98] Переменные firstCompIdx и lastCompIdx выводится следующим образом:
firstCompIdx = ( treeType == DUAL_TREE_CHROMA ) ? 1 : 0
lastCompIdx = ( treeType == DUAL_TREE_LUMA || ChromaArrayType == 0 ) ? 0 : 2
[99] Для каждой CU и каждого блока кодирования на цветовой компонент CU, обозначенный индексом цветового компонента cIdx в диапазоне от firstCompIdx до lastCompIdx включительно, с шириной блока кодирования nCbW, высотой блока кодирования nCbH и расположением верхней левой выборки блока кодирования (xCb, yCb), когда cIdx равен 0, или когда cIdx не равен 0, а edgeType равен EDGE_VER и xCb % 8 равен 0, или когда cIdx не равен 0, а edgeType равен EDGE_HOR и yCb % 8 равно 0, края фильтруются по следующим упорядоченным этапам:
[100] Этап 1: Переменная filterEdgeFlag выводится следующим образом: во-первых, если edgeType равен EDGE_VER и выполняется одно или несколько из следующих условий, filterEdgeFlag устанавливается равным 0: левая граница текущего блока кодирования является левой границей картинки, левая граница текущего блока кодирования – это левая или правая граница субкартинки, а loop_filter_across_subpic_enabled_flag равен 0, левая граница текущего блока кодирования - левая граница блока и loop_filter_across_bricks_enabled_flag равна 0, левая граница текущего блока кодирования – это левая граница слайса и loop_filter_across_slices_enabled_flag равен 0, или левая граница текущего блока кодирования является одной из вертикальных виртуальных границ картинки, а pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1. Во-вторых, в противном случае, если edgeType равен EDGE_HOR и выполняется одно или несколько из следующих условий, переменная filterEdgeFlag устанавливается равной 0: верхняя граница текущего блока кодирования яркости является верхней границей картинки, верхняя граница текущего блока кодирования - это верхняя или нижняя граница субкартинки, а loop_filter_across_subpic_enabled_flag равен 0, верхняя граница текущего блока кодирования - это верхняя граница блока, а loop_filter_across_bricks_enabled_flag равен 0, верхняя граница текущего блока кодирования является верхней границей слайса и loop_filter_across_slices_enabled_flag равен 0, или верхняя граница текущего блока кодирования является одной из горизонтальных виртуальных границ картинки и pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1. В-третьих, в противном случае filterEdgeFlag устанавливается равным 1. filterEdgeFlag - это переменная, указывающая, нужно ли фильтровать ребро блока, используя, например, контурную фильтрацию. Край относится к пикселям вдоль границы блока. Текущий блок кодирования представляет собой блок кодирования, который в данный момент декодируется декодером. Субкартинка - это прямоугольная область одного или нескольких слайсов внутри картинки.
[101] Этап 2: Все элементы двумерного массива (nCbW)x(nCbH) edgeFlags, maxFilterLengthQs и maxFilterlengthPs инициализируются равными нулю.
[102] Этап 3: Процесс вывода границы блока преобразования, указанный в пункте 8.8.3.3 VVC, вызывается с помощью местоположения (xCb, yCb), ширины блока кодирования nCbW, высоты блока кодирования nCbH, переменной cIdx, переменной filterEdgeFlag, массива edgeFlags, массивов максимальной длины фильтра maxFilterLengthPs и maxFilterLengthQs и переменной edgeType в качестве входных данных и измененного массива edgeFlags, массивов модифицированной максимальной длины фильтра maxFilterLengthPs и maxFilterLengthQs в качестве выходных данных.
[103] Этап 4: Когда cIdx равен 0, вызывается процесс получения границы субблока кодирования, указанный в пункте 8.8.3.4 VVC, с местоположением (xCb, yCb), шириной блока кодирования nCbW, высотой блока кодирования nCbH, массивом edgeFlags, массивами максимальной длины фильтра maxFilterLengthPs и maxFilterLengthQs и переменной edgeType в качестве входных данных и модифицированного массива edgeFlags, измененных массивов максимальной длины фильтра maxFilterLengthPs и maxFilterLengthQs в качестве выходных данных.
[104] Этап 5: Массив выборок картинки recPicture получается следующим образом: Если cIdx равен 0, recPicture устанавливается равным восстановленному массиву выборок картинки яркости до устранения блочности recPictureL. В противном случае, если cIdx равен 1, recPicture устанавливается равным восстановленному массиву выборок картинки цветности до устранения блочности recPictureCb. В противном случае (cIdx равно 2) recPicture устанавливается равным восстановленному массиву выборок картинки цветности до устранения блочности recPictureCr.
[105] Этап 6: Процесс получения граничной прочности фильтрации, указанной в пункте 8.8.3.5 VVC, вызывается с помощью массива выборок картинки recPicture, положения яркости (xCb, yCb), ширины блока кодирования nCbW, высоты блока кодирования nCbH, переменной edgeType, переменной cIdx и массива edgeFlags в качестве входных данных и массива (nCbW)x(nCbH) bS в качестве выходных данных.
[106] Этап 7: Процесс фильтрации границ для одного направления вызывается для блока кодирования, как указано в пункте 8.8.3.6 VVC, с переменной edgeType, переменной cIdx, восстановленной картинкой до устранения блочности recPicture, местоположением ( xCb, yCb ), шириной блока кодирования nCbW, высотой блока кодирования nCbH и массивов bS, maxFilterLengthPs и maxFilterLengthQs в качестве входных данных и модифицированной восстановленной картинки recPicture в качестве выходных данных.
[107] Фиг.7 представляет собой блок-схему, иллюстрирующую способ 700 декодирования битового потока согласно первому варианту осуществления. Декодер 400 может реализовать способ 700. На этапе 710 принимается битовый поток видео, содержащий картинку и флаг loop_filter_across_subpic_enabled_flag. Картинка содержит субкартинку. Наконец, на этапе 720 ко всем краям субблока и краям блока преобразования картинки применяется процесс фильтра для устранения блочности, за исключением краев, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0.
[108] Способ 700 может реализовывать дополнительные варианты осуществления. Например, loop_filter_across_subpic_enabled_flag, равный 1, указывает, что операции внутриконтурной фильтрации могут выполняться через границы субкартинки в каждой кодированной картинке в CVS. loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS.
[109] Фиг.8 представляет собой блок-схему, иллюстрирующую способ 800 кодирования битового потока согласно первому варианту осуществления. Кодер 300 может реализовать способ 800. На этапе 810 генерируется loop_filter_across_subpic_enabled_flag, так что процесс фильтра устранения блочности применяется ко всем краям субблока и краям блока преобразования картинки, за исключением краев, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0. На этапе 820 loop_filter_across_subpic_enabled_flag кодируется в битовый поток видео. Наконец, на этапе 830 битовый поток видео сохраняется для передачи видеодекодеру.
[110] Способ 800 может реализовывать дополнительные варианты осуществления. Например, loop_filter_across_subpic_enabled_flag, равный 1, указывает, что операции внутриконтурной фильтрации могут выполняться через границы субкартинки в каждой кодированной картинке в CVS. loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS. Способ 800 дополнительно содержит генерирование seq_parameter_set_rbsp, включая loop_filter_across_subpic_enabled_flag в seq_parameter_set_rbsp, и дополнительное кодирование loop_filter_across_subpic_enabled_flag в битовый поток видео посредством кодирования seq_parameter_set_rbsp в битовый поток видео.
[111] Фиг.9 представляет собой блок-схему, иллюстрирующую способ 900 декодирования битового потока согласно второму варианту осуществления. Декодер 400 может реализовать способ 900.
[112] На этапе 910 принимается битовый поток видео, содержащий картинку, EDGE_VER и loop_filter_across_subpic_enabled_flag. Картинка содержит субкартинку. Наконец, на этапе 920 filterEdgeFlag устанавливается в 0, если edgeType равен EDGE_VER, левая граница текущего блока кодирования является левой границей субкартинки и loop_filter_across_subpic_enabled_flag равен 0. Наличие подчеркивания в элементах синтаксиса указывает, что эти элементы синтаксиса сигнализируются в битовом потоке. Отсутствие подчеркивания в элементах синтаксиса указывает на вывод этих элементов синтаксиса декодером. «Если» также может использоваться взаимозаменяемо с «когда».
[113] Способ 900 может реализовывать дополнительные варианты осуществления. Например, edgeType - это переменная, указывающая, фильтруется ли вертикальный или горизонтальный край. Параметр edgeType, равный 0, указывает, что фильтруется вертикальный край, а EDGE_VER - это вертикальный край. Параметр edgeType, равный 1, указывает, что фильтруется горизонтальный край, а EDGE_HOR - это горизонтальный край. Параметр loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS. Способ 900 дополнительно содержит фильтрацию картинки на основе filterEdgeFlag.
[114] Фиг.10 представляет собой блок-схему, иллюстрирующую способ 1000 декодирования битового потока согласно третьему варианту осуществления. Декодер 400 может реализовать способ 1000. На этапе 1010 принимается битовый поток видео, содержащий картинку, EDGE_HOR и loop_filter_across_subpic_enabled_flag. Наконец, на этапе 1020 filterEdgeFlag устанавливается в 0, если edgeType равен EDGE_HOR, верхняя граница текущего блока кодирования является верхней границей субкартинки и loop_filter_across_subpic_enabled_flag равен 0.
[115] Способ 1000 может реализовывать дополнительные варианты осуществления. Например, edgeType - это переменная, указывающая, фильтруется ли вертикальный или горизонтальный край. Параметр edgeType, равный 0, указывает, что фильтруется вертикальный край, а EDGE_VER - это вертикальный край. Параметр edgeType, равный 1, указывает, что фильтруется горизонтальный край, а EDGE_HOR - это горизонтальный край. Параметр loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в CVS. Например, способ 1000 дополнительно содержит фильтрацию картинки на основе filterEdgeFlag.
[116] Фиг.11 представляет собой схематическое представление устройства 1100 кодирования/декодирования видео (например, видеокодера 300 или видеодекодера 400) в соответствии с вариантом осуществления раскрытия. Устройство 1100 кодирования/декодирования видео подходит для реализации раскрытых вариантов осуществления. Устройство 1100 кодирования/декодирования видео содержит входные порты 1110 и Rx 1120 для приема данных; процессор, логический блок или ЦП 1130 для обработки данных; Tx 1140 и выходные порты 1150 для передачи данных; и память 1160 для хранения данных. Устройство 1100 кодирования/декодирования видео может также содержать компоненты OE и компоненты EO, соединенные с входными портами 1110, приемными блоками 1120, передающими блоками 1140 и выходными портами 1150 для выхода или входа оптических или электрических сигналов.
[117] Процессор 1130 реализуется аппаратным обеспечением и программным обеспечением. Процессор 1130 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 1130 связан с входными портами 1110, Rx 1120, Tx 1140, выходными портами 1150 и памятью 1160. Процессор 1130 содержит модуль 1170 кодирования. Модуль 1170 кодирования реализует раскрытые варианты осуществления. Следовательно, включение модуля 1170 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 1100 кодирования/декодирования видео и обеспечивает трансформацию устройства 1100 кодирования/декодирования видео в другое состояние. В качестве альтернативы модуль 1170 кодирования реализуется как инструкции, хранящиеся в памяти 1160 и исполняемые процессором 1130.
[118] Устройство 1100 кодирования/декодирования видео может также включать в себя устройства 1180 ввода/вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 1180 I/O могут включать в себя устройства вывода, такие как дисплей, для отображения видеоданных, динамики для вывода аудиоданных и т.д. Устройства 1180 ввода/вывода могут также включать в себя устройства ввода, такие как клавиатура, мышь или шаровой манипулятор, или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
[119] Память 1160 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 1160 может быть энергозависимой и/или энергонезависимой и может представлять собой ROM, RAM, TCAM или SRAM.
[120] Фиг.12 - схематическая диаграмма варианта осуществления средства 1200 кодирования/декодирования. В варианте осуществления средство 1200 кодирования/декодирования реализовано в устройстве 1202 кодирования/декодирования (например, видеокодере 300 или видеодекодере 400). Устройство 1202 кодирования/декодирования включает в себя приемное средство 1201. Приемное средство 1201 сконфигурировано для приема картинки для кодирования или для приема битового потока для декодирования. Устройство 1202 кодирования/декодирования видео включает в себя средство 1207 передачи, соединенное с приемным средством 1201. Средство 1207 передачи выполнено с возможностью передачи битового потока в декодер или передачи декодированной картинки на средство отображения (например, одно из устройств 1180 ввода/вывода).
[121] Устройство 1202 кодирования видео включает в себя средство 1203 хранения. Средство 1203 хранения соединено по меньшей мере с одним из приемных средств 1201 или средств 1207 передачи. Средство 1203 хранения сконфигурировано для хранения инструкций. Устройство 1202 кодирования/декодирования видео также включает в себя средство 12305 обработки. Средство 1205 обработки соединено со средством 1203 хранения. Средство 1205 обработки выполнено с возможностью выполнения инструкций, хранящихся в средстве 1203 хранения, для осуществления способов, раскрытых здесь.
[122] В варианте осуществления приемное средство принимает битовый видеопоток, содержащий картинку и флаг loop_filter_across_subpic_enabled_flag. Картинка содержит субкартинку. Средство обработки применяет процесс фильтра устранения блочности ко всем краям субблока и краям блоков преобразования картинки, за исключением краев, которые совпадают с границами субкартинки, когда loop_filter_across_subpic_enabled_flag равен 0.
[123] Термин «приблизительно» означает диапазон, включающий в себя ±10% от последующего числа, если не указано иное. Хотя в настоящем раскрытии обеспечено несколько вариантов осуществления, нужно понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не выходя за рамки сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не ограничительные, и есть намерение не ограничиваться приведенными в данном документе деталями. Например, различные признаки или компоненты могут быть объединены или интегрированы в другую систему, или некоторые признаки могут быть опущены или не реализованы.
[124] Кроме того, методики, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, компонентами, технологиями или способами без отклонения от объема настоящего раскрытия. Другие элементы, показанные или обсуждаемые как связанные, могут быть связаны напрямую или могут быть связаны косвенно или сообщаться через некоторый интерфейс, устройство или промежуточный компонент, будь то электрически, механически или иным образом. Другие примеры изменений, замен и переделок могут быть установлены специалистом в данной области техники и могут быть выполнены без отклонения от сущности и объема, раскрытых в данном документе.
Изобретение относится к кодированию и декодированию видео. Технический результат заключается в уменьшении артефактов блочности на границе, общей для двух смежных субкартинок, когда у этих картинок разные значения флага loop_filter_across_subpic_enabled_flag[i]. Такой результат обеспечивается за счет приема видеодекодером битового потока видео, содержащего картинку и loop_filter_across_subpic_enabled_flag, при этом картинка содержит субкартинку; и установки filterEdgeFlag в 0, если edgeType равен EDGE_VER, левая граница текущего блока кодировки является левой границей субкартинки, а loop_filter_across_subpic_enabled_flag равен 0. 7 н. и 5 з.п. ф-лы, 12 ил.
1. Способ обработки видеосигнала, реализуемый видеодекодером и содержащий этапы, на которых:
принимают посредством видеодекодера битовый поток видео, содержащий картинку и loop_filter_across_subpic_enabled_flag, при этом картинка содержит субкартинку; и
устанавливают filterEdgeFlag в 0, если edgeType равен EDGE_VER, левая граница текущего блока кодирования является левой границей субкартинки, а loop_filter_across_subpic_enabled_flag равен 0, при этом
субкартинка содержит первую субкартинку с loop_filter_across_subpic_enabled_flag, равным 0, и вторую субкартинку с loop_filter_across_subpic_enabled_flag, равным 1, причем правая граница первой субкартинки также является левой границей второй субкартинки, либо нижняя граница первой субкартинки также является верхней границей второй субкартинки, при этом
для первой субкартинки с loop_filter_across_subpic_enabled_flag, равным 0, процесс фильтра с устранением блочности не применяют к блокам на границе, которая является общей для первой субкартинки и второй субкартинки;
для второй субкартинки с loop_filter_across_subpic_enabled_flag, равным 1, процесс фильтра с устранением блочности применяют к блокам на границе, которая является общей для первой субкартинки и второй субкартинки.
2. Способ по п.1, в котором edgeType представляет собой переменную, указывающую, фильтруется ли вертикальный край или горизонтальный край.
3. Способ по п.1 или 2, в котором edgeType, равный 0, указывает, что вертикальный край фильтруется, при этом EDGE_VER является вертикальным краем.
4. Способ по любому одному из пп.1-3, в котором edgeType, равный 1, указывает, что горизонтальный край фильтруется, при этом EDGE_HOR является горизонтальным краем.
5. Способ по любому одному из пп.1-4, в котором loop_filter_across_subpic_enabled_flag, равный 0, указывает, что операции внутриконтурной фильтрации не выполняются через границы субкартинки в каждой кодированной картинке в кодированной видеопоследовательности (CVS).
6. Способ по любому одному из пп.1-5, дополнительно содержащий фильтрацию картинки на основе filterEdgeFlag.
7. Видеодекодер, содержащий:
память, сконфигурированную для хранения инструкций; и
процессор, соединенный с памятью и выполненный с возможностью исполнения инструкций для осуществления способа по любому одному из пп.1-6.
8. Система кодирования/декодирования видео, содержащая:
кодер; и
декодер, сконфигурированный для выполнения способа по любому одному из пп.1-6.
9. Устройство для обработки видеосигнала, содержащее:
приемник, выполненный с возможностью принимать битовый поток для декодирования;
передатчик, подсоединенный к приемнику, причем передатчик выполнен с возможностью передавать декодированное изображение на дисплей;
память, подсоединенную к по меньшей мере одному из приемника и передатчика, причем память выполнена с возможностью хранения инструкций; и
процессор, подсоединенный к памяти, причем процессор выполнен с возможностью исполнения инструкций, хранимых в памяти, для осуществления способа по любому одному из пп.1-6.
10. Средство для обработки видеосигнала, содержащее:
приемное средство, выполненное с возможностью приема битового потока для декодирования;
передающее средство, подсоединенное к приемному средству, причем передающее средство выполнено с возможностью передачи декодированного изображения на средство отображения;
средство хранения, подсоединенное к по меньшей мере одному из приемного средства и передающего средства, причем средство хранения выполнено с возможностью хранения инструкций; и
средство обработки, подсоединенное к средству хранения, причем средство обработки выполнено с возможностью исполнения инструкций, хранимых в средстве хранения, для осуществления способа по любому одному из пп.1-6.
11. Машиночитаемый носитель, на котором сохранена компьютерная программа, которая может исполняться процессором, и когда компьютерная программа исполняется процессором, процессор выполняет способ по любому одному из пп.1-6.
12. Декодер, содержащий схему обработки для выполнения способа по любому из пп.1-6.
A | |||
M | |||
Устройство для электрической сигнализации | 1918 |
|
SU16A1 |
MPEG MEETING; 20191007 - 20191011; GENEVA; (MOTION PICTURE EXPERT GROUP OR ISO/IEC JTC1/SC29/WG11), no | |||
Поддон для бабочного задела | 1935 |
|
SU50034A1 |
Авторы
Даты
2024-08-20—Публикация
2020-09-23—Подача