RU2806278C2 - Устройство и способ кодирования видео - Google Patents

Устройство и способ кодирования видео Download PDF

Info

Publication number
RU2806278C2
RU2806278C2 RU2021120814A RU2021120814A RU2806278C2 RU 2806278 C2 RU2806278 C2 RU 2806278C2 RU 2021120814 A RU2021120814 A RU 2021120814A RU 2021120814 A RU2021120814 A RU 2021120814A RU 2806278 C2 RU2806278 C2 RU 2806278C2
Authority
RU
Russia
Prior art keywords
tile
tile group
tiles
group
image
Prior art date
Application number
RU2021120814A
Other languages
English (en)
Other versions
RU2021120814A (ru
Inventor
Фну Хендри
Е-куй Ван
Original Assignee
Хуавей Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавей Текнолоджиз Ко., Лтд. filed Critical Хуавей Текнолоджиз Ко., Лтд.
Publication of RU2021120814A publication Critical patent/RU2021120814A/ru
Application granted granted Critical
Publication of RU2806278C2 publication Critical patent/RU2806278C2/ru

Links

Images

Abstract

Изобретение относится к кодированию видео и конкретно к механизмам для разделения изображений на группы плиток для поддержки повышенного сжатия при кодировании видео. Технический результат заключается в повышении эффективности кодирования, сокращении объема памяти и ресурсов обработки, используемых при кодировании и декодировании изображений. Согласно изобретению способ кодирования видео включает в себя разделение изображения на множество плиток, причем количество плиток включено в группу плиток. Флаг кодируется в набор параметров битового потока. Флаг устанавливается на первое значение, когда группа плиток является группой плитки растровой развертки, и на второе значение, когда группа плиток является прямоугольной группой плитки. Плитки кодируются в битовый поток на основании группы плиток. Битовой поток хранится для взаимодействия с декодером. 8 н. и 12 з.п. ф-лы, 11 ил.

Description

Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к кодированию видео и, конкретно относится к механизмам для разделения изображений на группы плиток для поддержки повышенного сжатия при кодировании видео.
Уровень техники
Объем видеоданных, необходимых для изображения даже относительно короткого видео, может быть существенным, что может привести к трудностям при передаче данных или иного способа коммуникации в сети связи с ограниченной полосой пропускания. Таким образом, в современных телекоммуникационных сетях до передачи видеоданные обычно сжимаются. Поскольку ресурсы памяти могут быть ограничены необходимо учитывать размер видео при хранении видео в запоминающем устройстве. Устройства сжатия видео часто используют программное обеспечение и/или аппаратное обеспечение на источнике для кодирования видеоданных до передачи или хранения, тем самым, уменьшая объем данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в блоке назначения с помощью устройства для распаковки видео, которое декодирует видеоданные. В связи с ограниченными сетевыми ресурсами и постоянно растущими требованиям к качеству видео, в настоящее время необходимо предложить усовершенствованные способы сжатия и распаковки, которые улучшают коэффициент сжатия с минимальным уровнем снижения качества изображения.
Раскрытие сущности изобретения
В варианте осуществления изобретение включает в себя способ, реализованный в кодере, способ содержащий: разделение процессором кодера изображения на множество плиток; назначение процессором количества плиток в группу плиток; кодирование процессором флага, установленного на первое значение, когда группа плиток представляет собой группу плиток растровой развертки, и второе значение, когда группа плиток представляет собой прямоугольную группу плиток, в котором флаг кодируется в наборе параметра битового потока; кодирование процессором плиток в битовый поток на основании группы плиток; и хранение в памяти кодера битового потока для взаимодействия с декодером. Некоторые системы кодирования видео используют группы плиток, содержащие плитки, назначенные в порядке растровой развертки. Вместо этого другие системы используют прямоугольные группы плиток для поддержки извлечения субизображения в виртуальной реальности (VR), телеконференции и других областях на основании схем кодирования. Еще другие системы позволяют кодеру выбрать тип группы плиток для использования в зависимости от типа приложения кодирования видео. Настоящие аспекты включают в себя флаг, который указывает, является ли соответствующая группа плиток растровой разверткой или прямоугольной. Этот подход предупреждает декодер о надлежащей схеме кодирования группы плиток для поддержки надлежащего декодирования. Следовательно, упомянутый флаг позволяет кодеру/декодеру (кодеку) поддерживать множество схем групп плиток для различных случаев использования, и, следовательно, увеличивает функциональные возможности как кодера, так и декодера. Кроме того, сигнализация упомянутого флага может увеличивать эффективность кодирования и, следовательно, уменьшить использование ресурсов памяти, использование ресурсов обработки и/или использование сетевого ресурса в кодере и/или декодере.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что флаг представляет собой флаг прямоугольной группы плиток.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что набор параметров кодируемого флага является набором параметра последовательности.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что набор параметров кодируемого флага является набором параметра изображения.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает дополнительное кодирование в битовом потоке процессором идентификатора первой плитки группы плиток и идентификатора последней плитки группы плиток для указания плиток, содержащихся в группе плиток.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что идентификатор первой плитки группы плиток и идентификатор последней плитки группы плиток кодируется в заголовке группы плиток в битовом потоке.
В качестве варианта в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что, когда группа плиток представляет собой группу плиток растровой развертки, включение плитки в группу плиток определяется посредством: определения количества плиток между первой плиткой группы плиток и последней плиткой группы плиток как количество плиток в группе плиток; и определение включения плитки на основании количества плиток в группе плиток.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что, когда группа плиток представляет собой прямоугольную группу плиток, включение плитки в группу плиток определяется: определением значения дельты между первой плиткой группы плиток и последней плиткой группы плиток; определением количества строк группы плиток на основании значения дельты и количества столбцов плитки в изображении; определением количества столбцов группы плиток на основании значения дельты и количества столбцов плитки в изображении; и определением включения плитки на основании количества строк группы плиток и количества столбцов группы плиток.
В варианте осуществления изобретение включает в себя способ, реализованный в декодере, способ, содержащий: прием процессором декодера через приемник битового потока, включающий в себя изображение, разделенное на множество плиток, в котором количество плиток включено в группу плиток; получение процессором флага из набора параметров битового потока; определение процессором, что группа плиток представляет собой группу плиток растровой развертки, когда флаг установлен на первое значение; определение процессором, что группа плиток является прямоугольной группой плитки, когда флаг установлен на второе значение; определение процессором включение плитки для группы плиток на основании, является ли группа плиток группой растровой развертки или прямоугольной группой плитки; декодирование процессором плиток для генерирования декодированных плиток на основании группы плиток; и генерирование процессором восстановленной видеопоследовательности для отображения на основании декодированных плиток. Некоторые системы кодирования видео используют группы плиток, содержащие плитки, назначенные в порядке растровой развертки. Вместо этого другие системы используют прямоугольные группы плиток для поддержки извлечения субизображения в VR, телеконференции и других областях схем кодирования. Еще другие системы позволяют кодеру выбирать тип группы плиток для использования в зависимости от типа приложения кодирования видео. Настоящие аспекты включают в себя флаг, который указывает, является ли соответствующая группа плиток растровой разверткой или прямоугольной. Этот подход предупреждает декодер о надлежащей схеме кодирования группы плиток для поддержки надлежащего декодирования. Следовательно, упомянутый флаг позволяет кодеку поддерживать множество схем группы плиток для различных случаев использования и, следовательно, увеличивает функциональные возможности как кодера, так и декодера. Кроме того, сигнализация описанного флага может увеличивать эффективность кодирования и, следовательно, уменьшить использование ресурсов памяти, использование ресурсов обработки и/или использование сетевого ресурса в кодере и/или декодере.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что флаг представляет собой флаг прямоугольной группы плиток.
В качестве варианта в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что набор параметров, включающий в себя флаг, представляет собой набор параметров последовательности.
В качестве варианта в любом из предшествующих аспектов, другая реализация аспекта обеспечивает, что набор параметров, включающий в себя флаг, представляет собой набор параметров изображения.
В качестве варианта в любом из предшествующих аспектов, другая реализация аспекта предусматривает дополнительное получение процессором идентификатора первой плитки группы плиток и идентификатора последней плитки группы плиток для определения плиток, содержащиеся в группе плиток.
В качестве варианта в любом из предшествующих аспектов, другая реализация аспекта обеспечивает, что идентификатор первой плитки группы плиток и идентификатор последней плитки группы плиток получены из заголовка группы плиток в битовом потоке.
В качестве варианта в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что, когда группа плиток является группой плиток растровой развертки, включение плитки в группу плиток определяется: определением количества плиток между первой плиткой группы плиток и последней плиткой группы плиток как количество плиток в группе плиток; и определением включения плитки на основании количества плиток в группе плиток.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что, когда группа плиток представляет собой прямоугольную группу плиток, включение плитки в группу плиток определяется: определением значения дельты между первой плиткой группы плиток и последней плиткой группы плиток; определением количества строк группы плиток на основании значения дельта и количества столбцов плитки в изображении; определение количества столбцов группы плиток на основании значения дельты и количества столбцов плитки в изображении; и определением включения плитки на основании количества строк группы плиток и количества столбцов группы плиток.
В варианте осуществления изобретение включает в себя устройство кодирования видео, содержащее: процессор, приемник, соединенный с процессором, и передатчик, соединенный с процессором, процессор, приемник и передатчик выполнены с возможностью выполнять способ по любому из предшествующих аспектов.
В варианте осуществления изобретение включает в себя постоянный машиночитаемый носитель, содержащий компьютерный программный продукт для использования устройством для кодирования видео, компьютерный программный продукт, содержащий инструкции, выполняемые компьютером, хранящиеся на постоянном машиночитаемом носителе, побуждает устройство для кодирования видео выполнить способ по любому из предшествующих аспектов.
В варианте осуществления изобретение включает в себя кодер, содержащий: средство разделения для разделения изображения на множество плиток; включающее в себя средство для включения количества плиток в группу плиток; средство кодирования для: кодирования флага, установленного на первое значение, когда группа плиток представляет собой группу плиток растровой развертки, и второе значение, когда группа плиток представляет собой прямоугольную группу плиток, в котором флаг кодируется в наборе параметра битового потока; и кодирования плиток в битовый поток на основании включения плитки; и средство хранения для хранения битового потока для связи с декодером.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что кодер дополнительно выполнен с возможностью выполнять способ по любому из предшествующих аспектов.
В варианте осуществления изобретение включает в себя декодер, содержащий: средство приема для приема битового потока, включающего в себя изображение, разделенное на множество плиток, в котором количество плиток входит в группу плиток; средство получения для получения флага из набора параметров битового потока; средство определения для: определения, что группа плиток представляет собой группу плиток растровой развертки, когда флаг установлен на первое значение; определение, что группа плиток является прямоугольной группой плитки, когда флаг установлен на второе значение; и определение включения плитки в группу плиток на основании, является ли группа плиток группой плитки растровой разверстки или прямоугольной группой плитки; средство декодирования для декодирования плиток для генерирования декодированных плиток на основании группы плиток; и средство генерирования для генерирования восстановленной видеопоследовательности для отображения на основании декодированных плиток.
В качестве варианта, в любом из предшествующих аспектов, другая реализация аспекта предусматривает, что декодер дополнительно выполнен с возможностью выполнять способ по любому из предшествующих аспектов.
Очевидно, что любой из вышеупомянутых вариантов осуществления может быть объединен с любыми или несколькими другими вышеупомянутыми вариантами осуществления для получения нового варианта осуществления в рамках объема настоящего изобретения.
Эти и другие признаки будут более четко изложены в нижеследующем подробном описании, со ссылкой на прилагаемые чертежи, и формуле изобретения.
Краткое описание чертежей
Для более полного понимания настоящего изобретения может быть сделана ссылка на следующее краткое описание с прилагаемыми чертежами, в котором опорные позиции относятся к аналогичным деталям.
Фиг. 1 является блок-схемой алгоритма примерного способа кодирования видеосигнала.
Фиг. 2 является схемой примера системы кодирования и декодирования (Codec) для кодирования видео.
Фиг. 3 является схемой, иллюстрирующей пример видеокодера.
Фиг. 4 является схемой, иллюстрирующей пример видеодекодера.
Фиг. 5 является схемой, иллюстрирующей пример битового потока, содержащего кодированную видеопоследовательность.
Фиг. 6 является схемой, иллюстрирующей пример изображения, разделенного на группы плиток растровой развертки.
Фиг. 7 является схемой, иллюстрирующей пример изображения, разделенного на прямоугольные группы плиток.
Фиг. 8 является схемой примера устройства для кодирования видео.
Фиг. 9 является блок-схемой последовательности операций примерного способа кодирования изображения в битовый поток.
Фиг. 10 является блок-схемой последовательности операций примера способа декодирования изображения из битового потока.
Фиг. 11 представляет собой схему примерной системы для кодирования видеопоследовательности изображений в битовом потоке.
Осуществление изобретения
Во-первых, следует понимать, что, хотя ниже представлены иллюстративная реализация одного или нескольких вариантов осуществления, раскрытые системы и/или способы могут быть реализованы с использованием любого количества используемых в настоящее время способов. Изобретение никоим образом не должно быть ограничено иллюстративными реализациями, чертежами и способами, показанными ниже, включающие в себя примерные структуры и реализации, показанные и описанные в данном документе, но могут быть изменены в рамках прилагаемой формулы изобретения наряду с их полным объемом эквивалентов.
В данном документе используются различные аббревиатуры, такие как блок дерева кодирования (CTB), блок дерева кодирования (CTU), блок кодирования (CU), кодированная видеопоследовательность (CVS), совместная команда экспертов обработки видео (JVET), набор плиток с ограничением движения (MCTS), максимальный блок передачи (MTU), сетевой абстрактный уровень (NAL), счетчик очередности изображения (POC), полезная нагрузка необработанной байтовой последовательности (RBSP), набор параметров последовательности (SPS), универсальное кодирование видео (VVC) и рабочая версия проекта (WD).
Для уменьшения размера видеофайлов с минимальными потерями данных могут быть использованы многие способы сжатия видео. Например, для уменьшения или устранения избыточности данных в видеопоследовательности способы сжатия видео могут включать в себя выполнение пространственного (внутреннего) предсказания и/или временного (например, внешнего) предсказания. Для кодирования видео на блочной основе, сегмент видео (например, видеоизображение или часть видеоизображения) может быть разделен на видеоблоки, которые также могут быть упомянуты как древовидные блоки, блоки дерева кодирования (CTBs), блоки дерева кодирования (CTUs), блоки кодирования (CUs) и/или узлы кодирования. Видеоблоки во внутренне кодированном сегменте (I) изображения кодируются с использованием пространственного предсказания в отношении опорных выборок в соседних блоках на одном изображении. Видеоблоки во внешне кодированном однонаправленном предсказании (P) или двунаправленном предсказании (B) сегмента изображения могут быть закодированы путем использования пространственного предсказания в отношении опорных выборок в соседних блоках в том же изображении или временного предсказания в отношении опорных выборок в других опорных изображениях. Изображения могут быть упомянуты как кадры и/или изображения, и опорные изображения могут быть упоминаются как опорные кадры и/или опорные изображения. В результате выполнения пространственного или временного предсказания получают блок предсказания, представляющий блок изображения. Остаточные данные представляют собой разность пикселей между исходным блоком изображения и блоком предсказания. Соответственно, внешне кодируемый блок кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, образующие блок предсказания, и остаточными данными, указывающие разность между кодированным блоком и блоком предсказания. Внутри кодируемый блок закодирован в соответствии с режимом внутреннего кодирования и остаточными данными. Для дополнительного сжатия остаточные данные могут быть преобразованы из домена пикселей в домен преобразования. Где получают остаточные коэффициенты преобразования, которые могут быть квантованы. Квантованные коэффициенты преобразования могут изначально быть расположены в двухмерном массиве. Квантованные коэффициенты преобразования могут быть отсканированы для получения одномерного вектора коэффициентов преобразования. Для дополнительного сжатия может быть использовано энтропийное кодирование. Далее приведено подробное описание упомянутого способа сжатия видео.
Для обеспечения точного декодирования кодированного видео, видео кодируется и декодируется в соответствии с соответствующими стандартами кодирования видео. Стандарты кодирования видео включают в себя H.261 сектор стандартизации (ITU-T) международного союза телекоммуникаций (ITU), группа экспертов по движущемуся изображению (MPEG)-1 часть 2 международная организация по стандартизации/международная электротехническая комиссия (ISO/IEC), ITU-T H.262 или ISO/IEC MPEG-2 Часть 2, ITU-T H.263, ISO IEC MPEG-4 Часть 2, усовершенствованное кодирование видео (AVC), также известно как ITU-T H.264 или ISO/IEC MPEG-4 Часть 10 и высокоэффективное кодирование видео (HEVC), также известно как ITU-T H.265 или MPEG-H Часть 2. AVC включает в себя расширения, такие как масштабируемое кодирование видео (SVC), многовидовое кодирование видео (MVC) и многовидовое кодирование видео плюс глубина (MVC + D) и трехмерные (3D) AVC (3D-AVC). HEVC включает в себя расширения, такие как масштабируемое HEVC (SHVC), многовидовое HEVC (MV-HEVC) и 3D HEVC (3D-HEVC). Объединенная команда видео экспертов (JVET) ITU-T и ISO/IEC начали разработку стандарта кодирования видео, упомянутого как универсальное кодирование видео (VVC). VVC содержится в рабочей версии проекта (WD), который включает в себя JVET-L1001-v5.
Для кодирования видеоизображения, изображение сначала разделяется и разделы кодируются в битовой поток. Доступны различные схемы разделения изображений. Например, изображение может быть разделено на равномерные сегменты, зависимые сегменты, плитки и/или в соответствии с параллельной обработкой волновых фронтов (WPP). Для простоты для кодирования видео HEVC ограничивает кодеры, так что только равномерные сегменты, зависимые сегменты, плитки, WPP и их комбинации могут быть использованы при разделении сегмента в группы CTBs. Такое разделение может быть применено для поддержки сопоставления максимального размера блока передачи (MTU), параллельной обработки и снижения сквозной задержки. MTU обозначает максимальный объем данных, который может передаваться в одном пакете. Если полезная нагрузка пакета превышает MTU, эта полезная нагрузка разбита на два пакета процессом, называемым фрагментацией.
Равномерный сегмент, также называемый просто сегментом, представляет собой разделенный участок изображения, который можно восстановить независимо от других равномерных сегментов в том же изображении, несмотря на некоторые взаимозависимости из-за операций контурной фильтрации. Каждый равномерный сегмент инкапсулируется в собственный блок сетевого абстрактного уровня (NAL) для передачи. Кроме того, предсказание изображений (внутреннее предсказание, предсказание информации движения, предсказание режима кодирования) и зависимость энтропийного кодирования на границах сегмента может быть отключено для поддержки независимого восстановления. Такое независимое восстановление поддерживает параллелизацию. Например, равномерный сегмент на основе параллелизации использует минимальный процессор внешнего кодирования или межъядерную коммуникацию. Однако, поскольку каждый равномерный сегмент является независимым, каждый сегмент ассоциирован с отдельным заголовком сегмента. Использование равномерных сегментов может вызвать существенное увеличение накладных расходов при кодировании из-за битовой стоимости заголовка сегмента для каждого сегмента и из-за отсутствия предсказания на границах сегмента. Кроме того, равномерные сегменты могут быть использованы для поддержки соответствия требованиям MTU размера. В частности, поскольку равномерный сегмент инкапсулируется в отдельном NAL блоке и может быть независимо закодирован, то каждый равномерный сегмент должен быть меньше, чем MTU в MTU схемах, чтобы избежать нарушения сегмента во множестве пакетов. Таким образом, операции параллелизации и сопоставления MTU размера могут вызывать противоречия в расположении сегмента в изображении.
Зависимые сегменты аналогичны равномерным сегментам, но имеют укороченные заголовки сегмента и позволяют разделить границы дерева изображений, не нарушая предсказание в изображении. Соответственно, зависимые сегменты позволяют фрагментировать равномерный сегмент на несколько NAL блоков, что обеспечивает снижение сквозной задержки, предоставляя часть равномерного сегмента, подлежащего отправке, до завершения кодирования всего равномерного сегмента.
Плитка представляет собой разделенную часть изображения, сформированную горизонтальными и вертикальными границами, которые образовывают столбцы и строки плиток. Плитки могут быть закодированы в порядке растровой развертки (справа налево и сверху вниз). Порядок сканирования CTBs является локальным в пределах плитки. Соответственно, CTBs в первой плитке закодированы в порядке растровой развертки, прежде чем перейти к обработке CTBs в следующей плитке. Подобно равномерным сегментам, плитки нарушают зависимости предсказания в изображении, а также зависимости энтропийного декодирования. Однако плитки не могут быть включены в отдельные NAL блоки и, следовательно, плитки не могут использоваться для сопоставления MTU размера. Каждая плитка может быть обработана одним процессором/ядром, и межпроцессор/межъядерная связь, используемая для предсказания в изображении между блоками обработки, декодирующий соседние плитки, может быть ограничена передачей совместно используемого заголовка сегмента (когда соседние плитки находятся в одном сегменте) и выполнением контурной фильтрации, ассоциированной с совместно используемыми восстановленными выборками и метаданными. Когда в сегмент включена более чем одна плитка, смещение байта точки входа для каждой плитки, отличной от первого смещения точки входа в сегменте, может быть передано в заголовке сегмента. Для каждого сегмента и плитки следует выполнить, по меньшей мере, одно из следующих условий: 1) все закодированные блоки дерева кодирования в сегменте принадлежат одной и той же плитке; и 2) все закодированные блоки дерева кодирования в плитке принадлежат одному и тому же сегменту.
В WPP изображение разделено на отдельные строки CTBs. Механизмы энтропийного декодирования и предсказания могут использовать данные из CTBs в других строках. Параллельная обработка производится благодаря параллельному декодированию строк CTB. Например, текущая строка может быть декодирована параллельно с предшествующей строкой. Однако декодирование текущей строки задерживается из процесса декодирования предшествующих строк двумя CTBs. Эта задержка гарантирует, что данные, ассоциированные с CTB выше и CTB выше и справа от текущего CTB в текущей строке, доступны до того, как текущий CTB кодируется. Этот подход на графике представлен в виде волнового фронта. Поочередный запуск позволяет распараллеливаться многим процессорам/ядрам, поскольку изображение содержит строки CTB. Поскольку предсказание в изображении между соседними строками дерева кодирования в рамках изображения разрешено, межпроцессор/межъядерная связь для выполнения предсказания в изображении может быть существенным. Разделение WPP учитывает размеры NAL блока. Следовательно, WPP не поддерживает сопоставление MTU размера. Однако, при необходимости, равномерные сегменты могут быть использованы в сочетании с WPP с определенным накладными расходами кодирования для реализации сопоставления MTU размера.
Плитки также могут включать в себя наборы плиток с ограничением движения. Набор плиток с ограничением движения (MCTS) является набором плитки, разработанным так, что ассоциированные векторы движения ограничены для указания местоположений целочисленных выборок внутри MCTS и местоположений дробных выборок, которые требуют только местоположений целочисленных выборок внутри MCTS для интерполяции. Кроме того, использование кандидатов вектора движения для временного предсказания вектора движения, полученного из блоков за пределами MCTS, запрещено. Таким образом, каждый MCTS может быть независимо декодирован без наличия плиток, не включенных в MCTS. Сообщения дополнительной расширяющейся информации (SEI) временных MCTSs могут быть использованы для указания наличия MCTSs в битовом потоке и сигнализируют MCTSs. MCTSs SEI сообщение предоставляет дополнительную информацию, которая может быть использована в MCTS получении суббитового потока (указана как часть семантики SEI сообщения) для генерирования соответствия битового потока для MCTS. Информация включает в себя некоторое количество наборов информации извлечения, каждый из которых определяет количество MCTSs и содержат байты полезной нагрузки необработанной байтовой последовательности (RBSP) наборов параметров замены видео (VPSs), наборы параметров последовательности (SPSs) и наборы параметров изображения (РPSs) для использования в процессе извлечения MCTS суббитового потока. При извлечении суббитового потока в соответствии с процессом извлечения MCTS суббитового потока наборы параметров (VPSs, SPSs и PPSs) могут быть переписаны или заменены, и заголовки сегмента могут обновляться, поскольку один или все элементы синтаксиса соответствующих адресов сегмента (включающие в себя first_slice_segment_in_pic_flag и slice_segment_address) могут использовать разные значения в извлеченном суббитовом потоке.
Настоящее изобретение ассоциировано с различными схемами разделения на плитки. В частности, когда изображение разделено на плитки, такие плитки могут быть назначены в группы плиток. Группа плиток является набором связанных плиток, которые могут быть отдельно извлечены и закодированы, например, для поддержки отображения области интереса и/или для поддержки параллельной обработки. Плитки могут быть назначены группами плиток для обеспечения широкого применения соответствующих параметров, функций, инструментов кодирования и т.д. Например, группа плиток может содержать MCTS. В качестве другого примера группы плиток могут быть обработаны и/или извлечены отдельно. Некоторые системы используют механизм растровой развертки для формирования соответствующих групп плиток. Используемый здесь термин группа плиток растровой развертки представляет собой группу плиток, которая формируется назначением плиток в порядке растровой развертки. Порядок растровый развертки реализуется непрерывно справа налево и сверху вниз между первой плиткой и последней плиткой. Группы плиток растровой развертки могут быть полезны для некоторых приложений, например, для поддержки параллельной обработки.
Однако в некоторых случаях группы плиток растровой развертки не могут быть эффективными. Например, в приложениях виртуальной реальности (VR) среда записывается как сфера, закодированная в изображении. Затем пользователь может просматривать выбранное субизображение изображения. Выбранное субизображение пользователем может быть упоминается как область интереса. Предоставление пользователю возможности выборочно воспринимать участки изображения, формирует ощущение присутствия пользователя в этой среде. Такие невыбранные участки изображения не могут быть просмотрены и, следовательно, отбрасываются. Соответственно, выбранное пользователем субизображение можно обрабатывать по-разному от невыбранного субизображения (например, невыбранное субизображение может быть передано при более низком разрешении, может быть обработано с использованием более простых механизмов во время визуализации и т.д.). Группы плиток позволяют выполнить такую дифференциальную обработку между субизображениями. Тем не менее, выбранное пользователем субизображение, как правило, является прямоугольником и/или квадратной областью. Соответственно, группы плиток растровой развертки не могут быть полезны для таких случаев использования.
Для решения таковой задачи некоторые системы используют прямоугольные группы плиток. Прямоугольная группа плиток представляет собой группу плиток, содержащую набор плиток, которые при их рассмотрении вместе, который имеет прямоугольную форму. Прямоугольная форма, как используется в данном документе, является формой с ровно четырьмя сторонами, соединенными таким образом, что каждая сторона соединена с двумя другими сторонами, каждая из которых находится на под углом девяносто градусов. Оба подхода к формированию группы плиток (например, группа плиток растровой развертки и прямоугольная группа плиток) может иметь преимущества и недостатки. Соответственно, системы кодирования видео могут поддерживать оба подхода. Тем не менее, системы кодирования видео не могут эффективно сигнализировать об использовании группы плиток при доступности обоих подходов. Например, простое объединение сигнализации этих подходов может привести к сложной синтаксической структуре, которая неэффективна и/или к высокой нагрузке процессора в кодере и/или декодере. Настоящее изобретение представляет механизмы для решения этих и других технических задач в области кодирования видео.
Представленное в данном документе описание раскрывает различные механизмы для гармонизации использования групп плиток растровой развертки и прямоугольных групп плиток, используя простую и компактную сигнализацию. Такая сигнализация повышает эффективность кодирования и, следовательно, снижает степень использования ресурсов памяти, использование ресурсов обработки и/или использование сетевого ресурса в кодере и/или декодере. Для гармонизации этих подходов кодер может сигнализировать флаг, указывающий используемый тип группы плиток. Например, флаг может представлять собой флаг прямоугольной группы плиток, который может быть сигнализироваться в наборе параметров, таких как SPS и/или PPS. Флаг может указывать, использует ли кодер группы плиток растровой развертки или прямоугольные группы плиток. Затем кодер может указывать на членство группы плиток, просто сигнализируя первую и последнюю плитку в группе плиток. Исходя из первой плитки, последней плитки и указания типа группы плиток, декодер может определить, какие плитки включены в группу плиток. Соответственно, полный список всех плиток в каждой группе плиток может быть опущен из битового потока, что повышает эффективность кодирования. Например, если группа плиток представляет собой группу плиток растровой развертки, плитки, назначенные в группу плиток, могут быть определены путем определения количества плиток между первой плиткой и последней плиткой группы плиток и добавлением многих плиток с идентификаторами между первой плиткой и последней плиткой в группу плиток. Если группа плиток представляет собой прямоугольную группу плиток, то можно использовать другой подход. Например, значение дельты может быть определено между первой плиткой и последней плиткой группы плиток. Количество строк группы плиток и количество столбцов группы плиток могут быть определены на основании значения дельты и количества столбцов плитки в изображении. Плитки в группе плиток могут быть определены на основании количества строк группы плиток и количества столбцов группы плиток. Далее подробно описаны эти и другие примеры.
Фиг. 1 является блок-схемой последовательности операций примера способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется на кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видео файл пользователю при одновременном сокращении ширины полосы пропускания для ассоциированной служебной сигнализации. Затем декодер декодирует сжатый видеофайл для восстановления оригинального видеосигнала для отображения для конечного пользователя. Процесс декодирования обычно отражает процесс кодирования декодером, который последовательно восстанавливает видеосигнал.
На этапе 101 в кодер подается видеосигнал. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера видеофайл может быть захвачен устройством захвата видео, таким как видеокамера, и закодирован для поддержки текущей потоковой передачи видео. Видеофайл может включать в себя как компонент аудио, так и компонент видео. Компонент видео содержит последовательность кадров изображений, которые, когда просматриваются в последовательности, предоставляют визуальное впечатление движения. Кадры содержат пиксели, которые выражены в терминах света, упомянутые здесь как компоненты яркости (или выборки яркости) и цвета, которые называется компонентами цветности (или выборки цвета). В некоторых примерах кадры также могут содержать значения глубины для поддержки трехмерного изображения.
На этапе 103 видео разделяется на блоки. Разделение включает в себя подразделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, в стандарте высокоэффективное кодирование видео (HEVC) (также известный как H.265 и MPEG-H часть 2) кадр можно сначала можно разделить на блоки дерева кодирования (CTUs), которые являются блоками заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). CTUs содержат как выборки яркости, так и выборки цветности. Для разделения CTU на блоки могут использоваться деревья кодирования и затем рекурсивно подразделяют блоки до достижения конфигураций, которые поддерживают дополнительно кодирование. Например, компоненты яркости кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения освещения. Кроме того, компоненты цветности кадра могут быть подразделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цветности. Соответственно, механизмы разделения варьируются в зависимости от контента видеокадров.
На этапе 105 для сжатия блоков изображений, разбитых на этапе 103, используются различные механизмы сжатия. Например, можно использовать внешнее предсказание и/или внутреннее предсказание. Внешнее предсказание предназначено для использования факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, изображающий объект в опорном кадре, не должен быть неоднократно описан в соседних кадрах. В частности, объект, такой как таблица, может оставаться на постоянной позиции по множеству кадров. Следовательно, таблица описана однажды и соседние кадры могут обратиться к опорному кадру. Могут быть использованы механизмы сопоставления с шаблоном для сопоставления объектов во множестве кадров. Кроме того, движущиеся объекты могут быть представлены во множестве кадров, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может отображаться автомобиль, который перемещается при визуализации через экран во множестве кадров. Для описания такого движения могут быть использованы векторы движения. Вектор движения представляет собой двумерный вектор, который обеспечивает смещение от координат объекта в кадре к координатам объекта в опорном кадре. Таким образом, внешнее кодирование может кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение из соответствующего блока в опорном кадре.
Внутреннее предсказание кодирует блоки в общем кадре. Внутреннее предсказания используют тот факт, что компоненты яркости и цветности имеют тенденцию объединяться в группу в кадре. Например, патч зеленого цвета на участке дерева имеет тенденцию располагаться рядом с аналогичными патчами зеленого цвета. Внутреннее предсказание использует множество направленных режимов предсказания (например, тридцать три в HEVC), планарный режим и режим постоянного тока (DC). Направленные режимы указывают на то, что текущий блок аналогичен/тот же, что выборки соседнего блока в соответствующем направлении. Планарный режим указывает, что последовательность блоков вдоль строки/столбца (например, плоскость) может быть интерполирована на основании соседних блоков по краям строки. Планарный режим, по существу, указывает на сглаженный переход света/цвета по строке/столбцу, используя относительно постоянный фронт сигнала в изменяющихся значениях. DC режим используется для граничного сглаживания и указывает, что блок аналогичен/тот же, что и среднее значение, ассоциированное с выборками всех соседних блоков, ассоциированных с угловыми направлениями направленных режимов предсказания. Соответственно, блоки с внутренним предсказанием могут представлять блоки изображения в виде различных значений режима реляционного предсказания вместо фактических значений. Кроме того, блоки с внешним предсказанием могут представлять блоки изображения как значения вектора движения вместо фактических значений. В любом случае, блоки предсказания могут не совсем представлять блоки изображения в некоторых случаях. Любые различия хранятся в остаточных блоках. Для дополнительного сжатия файла могут быть выполнены преобразования на остаточных блоках.
На этапе 107 могут применяться различные способы фильтрации. В HEVC фильтры применяются в соответствии с схемой контурной фильтрации. Описанное выше предсказание на основании блоков может привести к появлению артефактов блочности изображений в декодере. Кроме того, схема предсказания на основании блоков может кодировать блок, и затем восстанавливать закодированный блок для последующего использования в качестве опорного блока. Схема контурной фильтрации итеративно применяет фильтры для подавления шума, фильтры деблокинга, адаптивные контурные фильтры и фильтры адаптивного смещения выборки (SAO) к блокам/кадрам. Эти фильтры смягчают такие артефакты блочности, так что закодированный файл может быть точно восстановлен. Кроме того, эти фильтры смягчают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью вызывают дополнительные артефакты в последующих блоках, которые кодируются на основании восстановленных опорных блоков.
На этапе 109 после разделения, сжатия и фильтрации видеосигнала, полученные данные кодируются в битовом потоке. Битовой поток включает в себя данные, описанные выше, и любые данные сигнализации, предназначенные для поддержки соответствующего восстановленного видеосигнала на декодере. Например, такие данные могут включать в себя данные разделения, данные предсказания, остаточные блоки и различные флаги, обеспечивающие инструкции по кодированию для декодера. Битовой поток может храниться в памяти для передачи в направлении декодера по запросу. Битовой поток также может транслироваться и/или может быть передан посредством многоадресной передачи во множество декодеров. Формирование битового потока является итеративным процессом. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно во множестве кадров и блоков. Показанный на фиг. 1 порядок представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса кодирования видео для определенного порядка.
На этапе 111 декодер принимает битовый поток и начинает процесс декодирования. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разделов для кадров на этапе 111. Разделение должно соответствовать результатам разделения блоков на этапе 103. Теперь описывается энтропия, кодирование/декодирование, используемое на этапе 111. Кодер осуществляет многочисленные операции выбора во время процесса сжатия, например, выбирать схемы разделения блока из нескольких возможных вариантов на основании пространственного позиционирования значений во входном изображении (изображениях). Сигнализация точного выбора может использовать большое количество бинов. Используемый здесь термин бин означает двоичное значение, которое рассматривается как переменная (например, значение бита, которое может варьироваться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отказаться от любых опций, которые явно непригодны для конкретного случая, оставляя набор допустимых опций. Затем каждой допустимой опции присваивается кодовое слово. Длина кодовых слов основана на количестве допустимых опций (например, один бин для двух опций, два бина для трех-четырех опций и т.д.). Кодер кодирует кодовое слово для выбранной опции. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова такие же большие для уникального указания выбора из небольшого подмножества допустимых опций, а не для однозначного указания выбора из потенциально большого набора всех возможных опций. Затем декодер декодирует выбор, определяющий набор допустимых опций аналогичным образом аналогичным образом кодера. Определив набор допустимых опций, декодер может прочитать кодовое слово и определить выбор кодера.
На этапе 113 декодер выполняет декодирование блока. В частности, декодер использует обратные преобразования для генерирования остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разделением. Блоки предсказания могут включать в себя как блоки с внутренним предсказанием, так и блоки с внешним предсказанием, сгенерированные в кодере на этапе 105. Затем восстановленные блоки изображения разделены на кадры восстановленного видеосигнала в соответствии с данными разделения, определенными на этапе 111. Синтаксис для этапа 113 также может быть передан в битовой поток посредством энтропийного кодирования, как обсуждалось выше.
На этапе 115 выполняется фильтрация на кадрах восстановленного видеосигнала способом, аналогичным этапу 107 в кодере. Например, для удаления артефактов блочности к кадрам могут быть применены фильтры для удаления шума, фильтры деблокинга, адаптивные контурные фильтры и SAO фильтры. На этапе 117, после фильтрации видеосигнал может быть выведен на дисплей для просмотра конечным пользователем.
Фиг. 2 является схемой примерной системы 200 кодирования и декодирования (Codec) для кодирования видео. В частности, система 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 буфера декодированного изображения. Далее приведено описание упомянутых компонентов.
Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей посредством дерева кодирования. Древо кодирования использует различные режимы разделения для подразделения блока пикселей на более мелкие блоки пикселей. Эти блоки могут быть дополнительно подразделены на более мелкие блоки. Блоки могут быть упомянуты как узлы на дереве кодирования. Большие родительские узлы разделены на более мелкие дочерние узлы. Количество раз, когда узел подразделяется, называется глубиной дерева/узла кодирования. Разделенные блоки могут быть включены в блоки кодирования (CUs) в некоторых случаях. Например, CU может представлять собой субчасть CTU, которую содержит блок яркости, блок (блоки) цветности в результате вычитания из «красного» (Cr) и блок (блоки) цветности в результате вычитания из «синего» (Cb) а также соответствующие инструкции синтаксиса для CU. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и дерево квадрантов (QТ), используемое для раздела узла на два, три или четырех дочерних узлов, соответственно, различных форм в зависимости от режимов разделения. Разделенный видеосигнал 201 направляется в компонент 211 общего управления кодером, компонент 213 преобразования масштабирования и квантования, компонент 215 оценки изображения с внутренним предсказанием, компонент 227 анализа управления фильтрацией и компонент 221 оценки движения и компонент 221 оценки движения для сжатия.
Компонент 211 общего управления кодером выполнен с возможностью принимать решения, относящиеся к кодированию изображений видеопоследовательности в битовом потоке в соответствии с ограничениями приложения. Например, компонент 211 общего управления кодером управляет оптимизацией размера битового потока/битовой скоростью по отношению к качеству восстановления. Такие решения могут быть приняты на основании наличия объема памяти/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет буфером относительно скорости передачи для смягчения переполнения буфера. Для решения таковых технических задач компонент 211 общего управления кодером управляет разделением, предсказанием и фильтрацией другими компонентами. Например, компонент 211 общего управления кодера может динамически увеличить сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшить сложность сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодера управляет другими компонентами системы 200 кодека для балансировки качества восстановления видеосигнала с битовой скоростью. Компонент 211 общего управления кодером генерирует данные управления, которые управляют работой других компонентов. Данные управления также пересылаются в компонент 231 форматирования заголовка и CABAC, который будет закодирован в битовый поток для сигнализации параметров для декодирования в декодере.
Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для внешнего предсказания. Кадр или сегмент разделенного видеосигнала 201 может быть разделен на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняет кодирование с внешним предсказанием принятого видеоблока относительно одного или нескольких блоков в одной или нескольких опорных кадрах для обеспечения временного предсказания. Система 200 кодек может выполнять несколько проходов кодирования, например, выбирать подходящий режим кодирования для каждого блока видеоданных.
Компонент 221 оценки движения и компонент 219 компенсации движения могут быть высоко интегрированы, но иллюстрируется отдельно для концептуальных целей. Оценка движения, выполненная компонентом 221 оценки движения, является процессом генерирования векторов движения, которые оценивают движение для видеоблоков. Например, вектор движения может указывать на смещение кодированного объекта относительно блока предсказания. Блок предсказания является блоком, который найден для более точного соответствия блоку, подлежащего кодированию, с точки зрения разницы пикселей. Блок предсказания также может быть называется опорным блоком. Такая разница пикселей может быть определена путем суммы абсолютной разницы (SAD), суммы квадратной разницы (SSD) или других разностных метрик. HEVC использует несколько кодированных объектов, включающих в себя CTU, блоки дерева кодирования (CTBs) и CUs. Например, CTU можно разделить на CTBs, которые затем можно разделить на CBs для включения в CUs. CU может быть закодирован как блок предсказания (PU), содержащий данные предсказания, и/или блок преобразования (TU), содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения генерирует векторы движения, PUs и TUs с использованием анализа скорости и искажения в составе процесса оптимизации скорости искажения. Например, компонент 221 оценки движения может определять множество опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбрать опорные блоки, векторы движения и т.д., имеющие лучшие характеристики скорости искажений. Лучшие характеристики скорости искажений балансируют как с качеством восстановления видео (например, количество потери данных по сжатию), так и с эффективностью кодирования (например, размер окончательного кодирования).
В некоторых примерах система 200 кодека может рассчитывать значения для позиций субцелочисленных пикселей опорных изображений, хранящихся в компоненте 223 буфера декодированного изображения. Например, система 200 кодека может интерполировать значения позиции одну четверть пикселя, позиции одну восьмую пикселя или другие позиции дробных пикселей опорного изображения. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно позиций целочисленных пикселей и позиций дробных пикселей и выводить вектор движения с дробной точностью пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в сегменте с внешним кодированием, сравнивая позицию PU с позицией блока предсказания опорного изображения. Компонент 221 оценки движения выводит вычисленный вектор движения как данные движения в компонент 231 форматирования заголовка и CABAC для кодирования и движения в компонент 219 компенсации движения.
Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя получение или генерирование блока предсказания на основании вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. При приеме вектора движения для PU текущего видеоблока компонент 219 компенсации движения может локализовать блок предсказания, на который указывает вектор движения. Затем остаточный видеоблок, сформированный путем вычитания значений пикселей блока предсказания из значений пикселей текущего видеоблока, образует значения разности пикселей. В целом компонент 221 оценки движения осуществляет оценку движения относительно компонентов яркости, и компонент 219 компенсации движения использует векторы движения, рассчитанные на основании компонентов яркости для компонентов цветности и компонентов яркости. Блок предсказания и остаточный блок пересылаются в компонент 213 преобразования масштабирования и квантования.
Разделенный видеосигнал 201 также отправляется в компонент 215 оценки изображения с внутренним предсказанием и компонент 217 внутреннего предсказания изображения. Как и компонент 221 оценки движения и компонент 219 компенсации движения, компонент 215 оценки изображения с внутренним предсказанием и компонент 217 внутреннего предсказания изображения могут быть высоко интегрированы, но иллюстрируются отдельно для концептуальных целей. Компонент 215 оценки изображения с внутренним предсказанием и компонент 217 внутреннего предсказания изображения предсказывают текущий блок относительно блоков в текущем кадре, в качестве альтернативы компоненту 221 оценки движения и компоненту 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 оценки изображения с внутренним предсказанием определяет режим внутреннего предсказания для использования для кодирования текущего блока. В некоторых примерах компонент 215 оценки изображения с внутренним предсказанием выбирает соответствующий режим внутреннего предсказания для кодирования текущего блока из множества проверенных режимов внутреннего предсказания. Выбранные режимы внутреннего предсказания затем пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования.
Например, компонент 215 оценки изображения с внутренним предсказанием вычисляет значения скорости и искажения с использованием анализа искажения скорости для различных проверенных внутренних режимов предсказания и выбирает режим внутреннего предсказания, имеющий лучшие характеристики искажения скорости между тестируемыми режимами. Анализ скорости и искажения обычно определяет количество искажений (или ошибок) между закодированным блоком и исходным незакодированным блоком, который был закодирован для получения кодированного блока, а также битовой скорости (например, количество битов), используемой для получения кодированного блока. Компонент 215 оценки изображения с внутренним предсказанием рассчитывает отношения искажений и скоростей для различных кодированных блоков для определения режима внутреннего предсказания с наилучшим значением искажения скорости для блока. Дополнительно, компонент 215 оценки изображения с внутренним предсказанием может быть выполнен с возможностью кодировать блоки глубины карты глубины с использованием режима моделирования глубины (DMM) на основании оптимизации скорости и искажения (RDO).
Компонент 217 внутреннего предсказания изображения может генерировать остаточный блок из блока предсказания на основании выбранных режимов внутреннего предсказания, определенных компонентом 215 оценки изображения с внутренним предсказанием при реализации на кодере, или читать остаточный блок из битового потока при реализации на декодере. Остаточный блок включает в себя разницу в значениях между блоком предсказания и исходным блоком, представленную в виде матрицы. Затем остаточный блок пересылается в компонент 213 преобразования масштабирования и квантования. Компонент 215 оценки изображения с внутренним предсказанием и компонент 217 внутреннего предсказания изображения может работать на обоих компонентах яркости и цветности.
Компонент 213 преобразования масштабирования и квантования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 преобразования масштабирования и квантования применяет преобразование, такое как косинусное дискретное преобразование (DCT), синусное дискретное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, формируя видеоблоки, содержащие значения коэффициента остаточного преобразования. Могут быть использованы вейвлетные преобразования, целочисленные преобразования, преобразования поддиапазона или другие типы преобразований. Преобразование может преобразовать остаточную информацию из домена значения пикселей в домен преобразования, такой как частотная область. Компонент 213 преобразования масштабирования и квантования также выполнен с возможностью масштабировать преобразованную остаточную информацию, например, на основании частоты. Такое масштабирование включает в себя применение коэффициента масштабирования к остаточной информации, так что различная частотная информация квантуется при разной гранулярности, что может повлиять на окончательное визуальное качество восстановленного видео. Компонент 213 преобразования масштабирования и квантования также выполнен с возможностью квантовать коэффициенты преобразования для дополнительного снижения битовой скорости. Процесс квантования может уменьшить глубину битов, ассоциированную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена путем регулировки параметра квантования. В некоторых примерах компонент 213 преобразования масштабирования и квантования может выполнять сканирование матрицы, включающую в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования пересылаются в компонент 231 форматирования заголовка и CABAC, которые должны быть закодированы в битовом потоке.
Компонент 229 масштабирования и обратного преобразования применяется к обратной операции компонента 213 преобразования масштабирования и квантования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в домене пикселей, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсация движения может рассчитать опорный блок, добавив остаточный блок обратно к соответствующему блоку предсказания для использования в оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для смягчения артефактов, возникающих во время масштабирования, квантования и преобразования. Такие артефакты могут вызвать неточное предсказание (и образовать дополнительные артефакты) при предсказании последующих блоков.
Компонент 227 управления фильтрацией и компонент 225 контурных фильтров применяют фильтры к остаточным блокам и/или восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 внутреннего предсказания изображения и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах фильтры могут применяться к остаточным блокам. Как и с другими компонентами на фиг. 2, компонент 227 анализа управления фильтрами и компонент 225 контурных фильтров являются высоко интегрированными и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к определенным пространственным областям и включают в себя множество параметров для корректировки при использовании таких фильтров. Компонент 227 анализа управления фильтрами анализирует восстановленные опорные блоки для определения, где такие фильтры должны применяться и устанавливать соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 контурных фильтров применяет такие фильтры на основании данных управления фильтрами. Фильтры могут включать в себя фильтр деблокинга, фильтр для подавления шума, SAO фильтр и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственном/пиксельном домене (например, на восстановленном пиксельном блоке) или в частотной области, в зависимости от примера.
При работе в качестве кодера отфильтрованный восстановленный блок изображения, остаточный блок и/или блок предсказания хранятся в компоненте 223 буфера декодированного изображения для последующего использования в оценке движения, как обсуждалось выше. При работе в качестве декодера компонент 223 буфера декодированного изображения хранит и пересылает восстановленные и отфильтрованные блоки в дисплей, как часть выходного видеосигнала. Компонент 223 буфера декодированного изображения может быть любым устройством памяти, выполненным с возможностью хранить блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.
Компонент 231 форматирования заголовка и CABAC принимает данные из различных компонентов системы 200 кодека и кодирует такие данные в кодированном битовом потоке для передачи в направлении декодера. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования данных управления, такие как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включающие в себя данные внутреннего предсказания движения, а также остаточные данные в виде данных квантованного преобразования, все кодированы в битовом потоке. Последний битовой поток включает в себя всю необходимую информацию для восстановления исходного разделенного видеосигнала 201. Такая информация также может включать в себя таблицы индекса в режиме внутреннего предсказания (также называемые таблицами сопоставления кодового слова), определения контекста кодирования для различных блоков, указаний наиболее вероятного режима внутреннего предсказания, указание информации раздела и т.д. Такие данные могут быть закодированы, используя энтропийное кодирование. Например, информация может быть кодирована с использованием контекстно-адаптивной кодирования с переменной длиной (CAVLC), САВАС, синтаксического контекстно-адаптивного бинарного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого способа энтропийного кодирования. После энтропийного кодирования кодированный битовый поток может быть передан в другое устройство (например, видеодекодер) или заархивировано для последующей передачи или извлечения.
Фиг. 3 представляет собой блок-схему, иллюстрирующую пример видеокодера 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 и/или этапов 101, 103, 105, 107 и/или 109, 103, 105, 107 и/или 109 способа 100 функционирования. Кодер 300 разделяет входной видеосигнал для получения разделенного видеосигнала 301, что, по существу, аналогично разделенному видеосигналу 201. Разделенный видеосигнал 301 затем сжимается и кодируется в битовой поток компонентами кодера 300.
В частности, разделенный видеосигнал 301 передается в компонент 317 внутреннего предсказания изображения для внутреннего предсказания. Компонент 317 внутреннего предсказания изображения может быть, по существу, аналогичен компоненту 215 оценки изображения с внутренним предсказанием и компоненту 217 внутреннего предсказания изображения. Разделенный видеосигнал 301 также переадресован в компонент 321 компенсации движения для внешнего предсказания на основании опорных блоков в компоненте 323 буфера декодированного изображения. Компонент 321 компенсации движения может быть, по существу, аналогичен компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 внутреннего предсказания изображения и компонента 321 компенсации движения пересылаются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть, по существу, аналогичен компоненту 213 преобразования масштабирования и квантования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (наряду с ассоциированными данными управления) пересылаются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть, по существу, аналогичен компоненту 231 форматирования заголовка и САВАС.
Преобразованные и квантовые остаточные блоки и/или соответствующие блоки предсказания также пересылаются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 преобразования и квантования может быть, по существу, аналогичен компоненту 229 масштабирования и обратного преобразования. Контурные фильтры в компоненте 325 контурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 контурных фильтров может быть, по существу, аналогичен компоненту 227 анализа управления фильтрами и компоненту 225 контурных фильтров. Компонент 325 контурных фильтров может включать в себя несколько фильтров, как обсуждается в отношении компонента 225 контурных фильтров. Затем отфильтрованные блоки хранятся в компоненте 323 буфера декодированного изображения для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированного изображения может быть, по существу, аналогичен компоненту 223 буфера декодированного изображения.
Фиг. 4 является блок-схемой, иллюстрирующей пример видеодекодера 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115 и/или 117 способа 100 эксплуатации. Декодер 400 принимает битовый поток, например, из кодера 300 и генерирует восстановленный выходной видеосигнал на основании битового потока для отображения для конечного пользователя.
Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как CAVLC, CABAC, SBAC, PIPE кодирование или других способов энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка для предоставления контекста для интерпретации дополнительных данных, закодированных в виде кодовых слов в битовом потоке. Декодированная информация включает в себя любую желаемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтрами, информация о разделах, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 внутреннего предсказания изображения для восстановления в блоки изображений на основании операций внутреннего предсказания. Компонент 417 внутреннего предсказания изображения может быть аналогичен компоненту 215 оценки изображения с внутренним предсказания и компоненту 217 внутреннего предсказания изображения. В частности, компонент 417 внутреннего предсказания изображения использует режимы предсказания для локализации опорного блока в кадре и применяет остаточный блок для восстановления блоков изображения с внутренним предсказанием. Восстановленные блоки изображения с внутренним предсказанием и/или остаточные блоки и соответствующие данные с внутренним предсказанием пересылаются в компонент 422 буфера декодированного изображения через компонент 425 контурных фильтров, которые могут быть, по существу, аналогичными компоненту 223 буфера декодированного изображения и компоненту 225 контурных фильтров, соответственно. Компонент 425 контурных фильтров фильтрует восстановленные блоки изображения, остаточные блоки и/или блоки предсказания, и такая информация хранится в компоненте 423 буфера декодированного изображения. Восстановленные блоки изображений из компонента 423 буфера декодированного изображения пересылаются в компонент 421 компенсации движения для внешнего предсказания. Компонент 421 компенсации движения может быть, по существу, аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для генерирования блока предсказания и применяет остаточный блок для восстановления блока изображения. Полученные восстановленные блоки также могут быть переадресованы с помощью компонента 425 контурных фильтров в компонент 422 буфера декодированного изображения. Компонент 423 буфера декодированного изображения продолжает хранить дополнительные восстановленные блоки изображения, которые могут быть восстановлены в кадры через информацию раздела. Такие кадры также могут быть помещены в последовательность. Последовательность выводится в дисплей в качестве восстановленного выходного видеосигнала.
Фиг. 5 является схемой, иллюстрирующей пример битового потока 500, содержащий кодированную видеопоследовательность. Например, битовой поток 500 может быть генерирован системой 200 кодека и/или кодером 300 для декодирования с помощью системы 200 кодека и/или декодера 400. В качестве другого примера битовый поток 500 может быть сгенерирован кодером на этапе 109 способа 100 для использования декодером на этапе 111.
Битовый поток 500 включает в себя набор 510 параметров последовательности (SPS), множество наборов 512 параметров изображений (PPSs), заголовки 514 группы плиток и данные 520 изображения. SPS 510 содержит данные последовательности, общие для всех изображений в видеопоследовательности, содержащейся в битовом потоке 500. Такие данные могут включать в себя размеры изображения, битовую глубину, параметры инструмента кодирования, ограничения битовой скорости и т.д., PPS 512 содержит параметры, которые являются специфическими для одного или нескольких соответствующих изображений. Следовательно, каждое изображение в видеопоследовательности может относиться к одному PPS 512. PPS 512 может указывать инструменты кодирования, доступные для плитки в соответствующих изображениях, параметры квантования, смещения, параметры инструмента кодирования для конкретного изображения (например, элементы управления фильтрами) и т.д. Заголовок 514 группы плиток содержит параметры, которые являются специфическими для каждой группы плиток в изображении. Следовательно, может быть один заголовок 514 группы плиток в группе плиток в видеопоследовательности. Заголовок 514 группы плиток может содержать информацию о группе плиток, счетчики очередности изображения (POCs), списки опорных изображений, веса предсказания, точки входа плитки, параметры деблокинга и т.д. Следует отметить, что некоторые системы относятся к заголовку 514 группы плиток как заголовку сегмента и такую информацию используют для поддержки сегментов вместо групп плиток.
Данные 520 изображения содержат видеоданные, кодируемые в соответствии с внешним предсказанием и/или внутренним предсказанием, а также соответствующие преобразованные и квантованные остаточные данные. Такие данные 520 изображения отсортированы в соответствии с разделением, используемыми для раздела изображения до кодирования. Например, изображение в данных 520 изображения разделено на одну или несколько групп 521 плиток. Каждая группа 521 плитки содержит одну или несколько плиток 523. Плитки 523 дополнительно разделены на блоки дерева кодирования (CTUs). CTUs дополнительно разделены на блоки кодирования на основании кодирования деревьев. Затем блоки кодирования могут быть закодированы/декодированы в соответствии с механизмами предсказания. Изображение/кадр может содержать одну или несколько групп 521 плитки и одну или несколько плиток 523.
Группа 521 плитки представляет собой набор смежных плиток 523, которые могут быть отдельно извлечены и кодироваться, например, для поддержки отображения области интереса и/или для поддержки параллельной обработки. Изображение может содержать одну или несколько групп 521 плитки. Каждая группа 521 плитки ссылается на инструменты кодирования в соответствующем заголовке 514 групп плиток. Соответственно, текущая группа 521 плитки может быть закодирована с использованием различных инструментов кодирования из других групп 521 плитки путем изменения данных в соответствующем заголовке 514 группы плиток. Группа 521 плитки может быть описана в терминах механизма, используемого для присвоения плитки 523 к группе 521. Группа 521 плитки, которая содержит плитки 523, присвоенные в порядке растровой развертки, может быть называется группой плитки растровой развертки. Группа 521 плитки, которая содержит плитки 523, назначенные для формирования прямоугольника (или квадрата), может быть называется прямоугольной группой плитки. Фиг. 6-7 включают в себя примеры групп плиток растровой развертки и прямоугольные группы плиток, соответственно, как обсуждалось более подробно ниже.
Плитка 523 представляет собой разделенную часть изображения, сформированную горизонтальными и вертикальными границами. Плитка 523 может быть прямоугольной и/или квадратной. Изображение может быть разделено на строки и столбцы плитки 523. Строка плитки 523 представляет собой набор плиток 523, расположенный смежно горизонтально для формирования непрерывной линии от левой границы до правой границы изображения (или наоборот). Столбец плитки 523 представляет собой набор плиток 523, расположенный смежно вертикально для формирования непрерывной линии от верхней границы до нижней границы изображения (или наоборот). Плитка 523 может или не может разрешить предсказание на основании других плиток 523, в зависимости от примера. Например, группа 521 плитки может содержать набор плиток 523, обозначенный как MCTS. Плитка 523 в MCTS может быть закодирована предсказанием из других плиток 523 в MCTS, но не плитками 523 вне MCTS. Плитка 523 может быть дополнительно разделена на CTUs. Кодирование деревьев может быть использовано для раздела CTUs в блоки кодирования, которые могут быть закодированы в соответствии с внутренним предсказанием или внешним предсказанием.
Каждая плитка 523 может иметь уникальный индекс 524 плитки в изображении. Индекс 524 плитки представляет собой процедурный выбранный численный идентификатор, который можно использовать для различения одной плитки 523 от другой. Например, индексы 524 плитки могут увеличить численно в порядке растровой развертки. Порядок растровой развертки является порядком слева направо и сверху вниз. Следует отметить, что в некоторых примерах плитки 523 также могут быть назначены идентификаторами плитки (IDs). Идентификатор плитки является назначенным идентификатором, который можно использовать для различения одной плитки 523 от другой. Вычисления могут использовать идентификаторы плитки вместо индексов 524 плитки в некоторых примерах. Далее идентификаторы плитки могут быть назначены одинаковыми значениями, что и индексы 524 плитки в некоторых примерах. В некоторых примерах могут сигнализироваться индексы 524 плитки и/или идентификаторы для указания границ групп 521 плитки, содержащие плитки 523. Кроме того, индексы 524 плитки и идентификаторы могут быть использованы для отображения данных 520 изображения, ассоциированные с плиткой 523, на надлежащую позицию для отображения.
Как отмечено выше, группа 521 плитки может представлять собой группу плиток растровой развертки или прямоугольную группу плиток. Настоящее изобретение включает в себя механизмы сигнализации для обеспечения кодека для поддержки обеих типов группы 521 плитки способом, который поддерживает повышенную эффективность кодирования и снижает сложность. Флаг 531 группы плиток является блоком данных, который может быть использован для сигнализации, является ли соответствующая группа 521 плитки группой растровой развертки или прямоугольной. Флаг 531 группы плиток может быть сигнализирован в SPS 510 или PPS 512, в зависимости от примера. Плитки 523, назначенные в группу 521 плитки, могут сигнализироваться указанием первой плитки 532 и последней плитки 533 в битовом потоке 500. Например, первая плитка 532 может содержать индекс 524 плитки или идентификатор плитки 523 на первой позиции в группе 521 плитки. Первая позиция представляет собой верхний левый угол для прямоугольной группы плиток и наименьший индекс/идентификатор в группе плиток растровой развертки. Кроме того, последняя плитка 533 может содержать индекс 524 плитки или идентификатор плитки 523 на последней позиции в группе 521 плитки. Последняя позиция является правым нижним углом для прямоугольной группы плиток и наибольшим индексом/идентификатором в группе плиток растровой развертки.
Флаг 531 группы плиток, первая плитка 532 и последняя плитка 533 обеспечивает достаточную информацию, позволяющую декодеру определить плитки 523 в группе 521 плитки. Например, механизм растровой развертки может определить плитки 523 группы плиток растровой развертки на основании первой плитки 532 и последней плитки 533. Кроме того, прямоугольный механизм может определять плитки 523 в прямоугольной группе плиток на основании первой плитки 532 и последней плитки 533. Это позволяет не использовать индексы 524 для других плиток 523 в соответствующей группе 521 плитки в битовом потоке 500, что уменьшает размер битового потока 500 и, следовательно, увеличивает эффективность кодирования. Таким образом, флаг 531 группы плиток обеспечивает достаточную информацию, позволяющую декодеру определить, какой механизм используется для определения, какие плитки 523 назначаются в группу 521 плитки.
Соответственно, кодер может определить, следует ли использовать группы растровой развертки или прямоугольные группы плиток для их битового потока 500 или субразделов. Затем кодер может установить флаг 531 группы плиток. Кроме того, кодер может назначить плитки 523 в группу 521 плитки и определять первую плитку 532 и последнюю плитку 533 в битовом потоке 500. Гипотетический опорный декодер (HRD) кодера может определять назначение плитки 523 в группу 521 плитки на основании флага 531 группы плиток, первой плитки 532 и последней плитки 533. HRD представляет собой набор боковых модулей кодера, который предсказывает результаты декодирования в декодере, как часть выбора оптимального подхода кодирования во время RDO. Кроме того, декодер может принимать битовый поток 500 и определяет назначение группы 521 плитки на основании флага 531 группы плиток, первой плитки 532 и последней плитки 533. В частности, как HRD в кодере, так и декодере, может выбрать механизм растровой развертки или прямоугольный механизм на основании флага 531 группы плиток. HRD и декодер затем могут использовать выбранный механизм для определения присвоения плитки 523 к группе 521 плитки на основании первой плитки 532 и последней плитки 533.
Ниже приведен конкретный пример вышеупомянутых механизмов.
firstTileIdx = TileIdToIdx[ first_tile_id ]
lastTileIdx = TileIdToIdx[ last_tile_id ]
if( rectangular_tile_group_flag ) {
deltaTileIdx = lastTileIdx - firstTileIdx
numTileRows = ( deltaTileIdx / ( num_tile_columns_minus1 + 1 ) ) + 1
numTileColumns = ( deltaTileIdx % ( num_tile_columns_minus1 + 1 ) ) + 1
NumTilesInTileGroup = numTileRows * numTileColumns
tileIdx = firstTileIdx
for( j = 0, tIdx = 0; j < numTileRows; j++, tileIdx += num_tile_columns_minus1 + 1 ) {
for( i = 0, currTileIdx = tileIdx; i < numTileColumn; i++, currTileIdx++, tIdx++ ) {
TgTileIdx[ tIdx ] = currTileIdx
} else {
NumTilesInTileGroup = lastTileIdx - firstTileIdx + 1
TgTileIdx[ 0 ] = firstTileIdx
for( i = 1, i < NumTilesInTileGroup, i++)
TgTileIdx[ i ] = TgTileIdx[ i - 1 ] + 1
}
В этом примере флаг 531 группы 531 плитки, обозначенный как rectangular_tile_group_flag, может быть использован для выбора прямоугольного механизма (например, оператор «если») или механизм растровой развертки (оператор «else»). Прямоугольный механизм определяет значение дельта между первой плиткой группы и последней плиткой группы. Количество строк группы плиток определяется путем деления значения дельты на количество столбцов плитки в изображении плюс один. Количество столбцов группы плиток определяется по модулю значения дельта количества столбцов плитки в изображении плюс один. Назначение плитки затем можно определить на основании количества строк плитки и количества столбцов группы плиток (например, циклов для циклов в операторе «если»). Между тем, механизм растровой развертки определяет количество плиток между первой плиткой группы и последней плиткой группы плиток. Поскольку плитки индексируются в порядке растровой развертки, механизм растровой развертки может затем добавить определенное количество плиток в группу плиток в порядке растровой развертки (например, для цикла в операторе «else»).
Фиг. 6 является схемой, иллюстрирующей примерное изображение 600, разделенное на группы 621 плитки растровой развертки. Например, изображение 600 может быть закодировано в и декодировано из битового потока 500, например, системой 200 кодека, кодером 300 и/или декодером 400. Кроме того, изображение 600 может быть разделено для поддержки кодирования и декодирования в соответствии со способом 100.
Изображение 600 включает в себя плитки 623, назначенные в группы 621, 624 и 625 плиток растровой развертки, которые могут быть, по существу, аналогичным плиткам 523 и плиткам 521, соответственно. Плитки 623 назначаются группам 621, 624 и 625 плиток растровой развертки в порядке растровой развертки на плитке 623 на основании плитки 623. Для четкого указания границ между группами 621, 624 и 625 плитки растровой развертки, каждая группа плиток окружена жирным шрифтом. Кроме того, группа 621 плитки изображена путем затенения, чтобы дополнительно различить границы группы плиток. Следует также отметить, что изображение 600 может быть разделено на любое количество групп 621, 624, и 625 плиток растровой развертки. Для ясности обсуждения следующее описание относится к группе 621 плитки растровой развертки. Тем не менее, плитки 623 назначены группам 624 и 625 растровой развертки способом, аналогично группе 621 плитки растровой развертки.
Как показано, первая плитка 623a, последняя плитка 623b и все затененные плитки между первой плиткой 623a и последней плиткой 623b присваиваются в группу 621 плитки в порядке растровой развертки. Как показано, механизм (например, способ, работающий на процессоре) порядка растровой развертки назначает первую плитку 623a в группу 621 плитки и затем продолжается, чтобы назначить каждую плитку 623 в группу 621 плитки (слева направо) пока не будет достигнута правая граница изображения 600 (если не достигнута последняя плитка 623b). Порядок растровой развертки затем переходит к следующей строке плитки 623 (например, от верхней строки (строкам) к нижней строке (строкам)). В настоящем случае первая плитка 623a находится на первой строке и, следовательно, следующая строка является второй строкой. В частности, порядок растровой развертки переходит к первой плитке во второй строке на левой границе изображения 600, и затем переходит слева направо через вторую строку, пока не будет достигнута правая граница изображения 600. Затем растровая развертка перемещается на следующую строку, которая является третьей строкой в этом случае и продолжается с назначением из первой плитки на третьей строке на левой границе изображения 600. Затем растровая развертка движется вправо через третью строку. Этот порядок продолжается до тех пор, пока не будет достигнута последняя плитка 623b. На данный момент группа 621 плитки сформирована. Дополнительные плитки 623 ниже и/или справа от группы 621 плитки могут быть назначены в группу 625 плитки в порядке растровой развертки аналогичным образом. Плитка 623 выше и/или слева от группы плиток 621 присваивается в группу 624 плитки аналогичным образом.
Фиг. 7 является схемой, иллюстрирующая примерное изображение 700, разделяемое в прямоугольные группы 721 плитки. Например, изображение 700 может быть закодировано в и декодировано из битового потока 500, например, с помощью системы 200 кодека, кодером 300 и/или декодером 400. Кроме того, изображение 700 может быть разделено для поддержки кодирования и декодирования в соответствии со способом 100.
Изображение 700 включает в себя плитки 723, назначенные в прямоугольную группу 721 плитки, которые могут быть, по существу, аналогичны плиткам 523 и группе 521 плитки, соответственно. Плитки 723, назначенные прямоугольной группе 721 плитки, изображены на фиг. 7, как окруженные жирным шрифтом. Кроме того, выбранные прямоугольные группы 721 плитки затенены для четкого различия между прямоугольными группами 721 плитки. Как показано, прямоугольная группа 721 плитки включает в себя набор плиток 723, которые образовывают прямоугольную форму. Следует отметить, что прямоугольные группы 721 плитки также могут быть квадратными, поскольку квадрат является определенным случаем прямоугольника. Как показано, прямоугольник имеет четыре стороны, где каждая сторона соединена с двумя другими сторонам под прямым углом (например, под углом девяносто градусов). Прямоугольная группа 721а плитки содержит первую плитку 723a и последнюю плитку 723b. Первая плитка 723а находится в верхнем левом углу прямоугольной группы 721a плитки и последняя плитка находится в правом нижнем углу прямоугольной группы 721a плитки. Плитки 723, расположенные в или между строками и столицами, содержащие первую плитку 723a и последнюю плитку 723b, также назначаются в прямоугольную группу 721a плитки как плитка к плитке. Как показано, эта схема отличается от растровой развертки. Например, плитка 723c находится между первой плиткой 723a и последней плиткой 723b в порядке растровой развертки, но не включена в ту же прямоугольную группу 721a плитки. Прямоугольные группы 721 плитки могут быть более вычислительно сложными, чем группы 621 плитки растровой развертки из-за используемых геометрий. Однако прямоугольные группы 721 плитки являются более гибкими. Например, прямоугольная группа 721a плитки может содержать плитки 723 из разных строк, не содержащую каждую плитку между первой плиткой 723 и правой границей изображения 700 (например, такая как плитка 723с). Прямоугольная группа 721а плитки также может исключать выбранные плитки между левой границей изображения и последней плиткой 723b. Например, плитка 723d исключена из группы 721a плитки.
Соответственно, прямоугольные группы 721 плитки и группы 621 плитки растровой развертки имеют разные преимущества и, следовательно, каждая может быть более оптимальной для разных случаев использования. Например, группы 621 растровой развертки могут быть более выгодными, когда будет отображаться все изображения 600 и прямоугольные группы 721 плитки могут быть более полезными, когда будет отображаться только субизображение. Однако, как отмечено выше, могут быть использованы разные механизмы для определения, какие плитки назначаются в группу плиток, когда в битовом потоке сигнализируется только индекс первой плитки и индекс последней плитки. Как таковой флаг, указывающий, какой тип группы плиток используется, может использоваться декодером или HRD для выбора соответствующего механизма растровой развертки или прямоугольного. Назначение плитки к группе плиток можно определить, используя первую плитку и последнюю плитку в группе плиток.
Используя вышеизложенное, системы кодирования видео могут быть усовершенствованы. Таким образом, настоящее изобретение описывает различные улучшения для группировки плитки в кодировании видео. Более конкретно, настоящее изобретение описывает процессы сигнализации и получения для поддержки двух различных концепций группы плиток, групп плиток на основании растровой развертки и прямоугольных групп плиток. В одном примере флаг используется в наборе параметров, который относится непосредственно или косвенно к соответствующей группе плиток. Флаг указывает, какой подход используется для группировки плиток. Флаг может содержаться в наборе параметров, таком как набор параметров последовательности, набор параметров изображения или набор другого типа параметров, который относится непосредственно или косвенно к группам плитки. В качестве конкретного примера флаг может быть rectangular_Tile_Group_flag. В некоторых примерах указание с двумя или более битами может быть определена и сигнализируется в наборе параметров, который относятся непосредственно или косвенно к соответствующим группам плитки. Указание может указывать, какой подход используется для группировки плитки. Использование такого указания, может поддерживать два или более подходов к группировке плитки. Количество битов для сигнализации указания зависит от количества подходов к группировке плитки. В некоторых примерах флаг или указание могут быть сигнализированы в заголовке группы плиток.
Для указания, какие плитки содержаться в группе плиток растровой развертки или прямоугольной группе плиток может быть достаточно информации сигнализации, указывающей на первую плитку и последнюю плитку, которые содержатся в группе плиток. Получение плиток, которые содержаться в группе плиток, может зависеть от используемого подхода к группировке плитки (который может быть указан флагом или указанием), информации о первой плитке в группе плиток, а также информации о последней плитке в группе плиток. Информация для идентификации конкретной плитки может представлять собой любую из следующего: индекс плитки, идентификатор плитки (если отличается от индекса плитки), CTU, включенный в плитку (например, первый CTU, включенный в плитку) или выборка яркости, включенная в плитку (например, первая выборка яркости, включенная в плитку).
Ниже приводится конкретный вариант осуществления вышеупомянутых механизмов. Синтаксис набора параметров изображения RBSP может быть следующим.
pic_parameter_set_rbsp( ) { Дескриптор
tile_id_len_minus1 ue(v)
rectangular_tile_group_flag u(1)
}
tile_id_len_minus1 plus 1 указывает количество битов, используемых для представления элемента синтаксиса tile_id_val[ i ][ j ], при наличии в PPS, и элемента синтаксиса first_tile_id and last_tile_id в заголовках группы плиток, относящиеся к PPS. Значение tile_id_len_minus1 может быть в диапазоне Ceil( Log2( NumTilesInPic ) до 15, включительно. Rectangular_tile_Group_flag, при установке, равный одному, может указывать, что группы плиток, относящиеся к PPS, включают в себя одну или несколько плиток, которые образуют прямоугольные области изображения. rectangular_tile_group_flag, при установленном равном нуле, может указать, что группы плиток, относящиеся к PPS, включают в себя одну или несколько плиток, которые следуют друг за другом в порядке растровой развертки изображения.
Синтаксис заголовка группы плиток может быть следующим.
tile_group_header( ) { Дескриптор
single_tile_in_tile_group_flag // Same as single_tile_in_slice_flag in IDF #86002675 u(1)
first_tile_id // Same as top_left_tile_id in IDF #86002675 u(v)
if( !single_tile_in_tile_group_flag ) {
last_tile_id // Same as bottom_right_tile_id in IDF #86002675 u(v)
}
Single_tile_in_tile_group_flag, при установке, равный одному, может указать, что в группе плиток есть только одна плитка. Single_tile_in_tile_group_flag, при установке равной нулю, может указать, что в группе плиток больше одной плитки. First_tile_id может указывать идентификатор плитки первой плитки группы плиток. Длина first_tile_id может быть Tile_id_len_minus1 + 1 bits. Значение first_tile_id не может быть равно значению first_tile_id любой другой кодированной группы плиток одного и того же кодированного изображения. Когда в изображении находится более одной плитки, порядок декодирования групп плиток в изображении может находиться в увеличении значения First_tile_id. Last_tile_id может указывать идентификатор плитки последней плитки группы плиток. Длина last_tile_id может быть Tile_id_len_minus1 + 1 бита. Если нет, значение last_tile_id может быть выведено равным first_tile_id.
Переменная NumTilesInTileGroup, которая определяет количество плиток в группе плиток, и TgTileIdx[ i ] указывает индекс плитки i-ой плитки в группе плиток, может быть получен следующим образом:
firstTileIdx = TileIdToIdx[ first_tile_id ]
lastTileIdx = TileIdToIdx[ last_tile_id ]
if( rectangular_tile_group_flag ) {
deltaTileIdx = lastTileIdx - firstTileIdx
numTileRows = ( deltaTileIdx / ( num_tile_columns_minus1 + 1 ) ) + 1
numTileColumns = ( deltaTileIdx % ( num_tile_columns_minus1 + 1 ) ) + 1
NumTilesInTileGroup = numTileRows * numTileColumns
tileIdx = firstTileIdx
for( j = 0, tIdx = 0; j < numTileRows; j++, tileIdx += num_tile_columns_minus1 + 1 ) {
for( i = 0, currTileIdx = tileIdx; i < numTileColumn; i++, currTileIdx++, tIdx++ ) {
TgTileIdx[ tIdx ] = currTileIdx
} else {
NumTilesInTileGroup = lastTileIdx - firstTileIdx + 1
TgTileIdx[ 0 ] = firstTileIdx
for( i = 1, i < NumTilesInTileGroup, i++)
TgTileIdx[ i ] = TgTileIdx[ i - 1 ] + 1
}
Общий синтаксис данных группы плиток может быть следующим.
tile_group_data( ) { Дескриптор
for( i = 0; i < NumTilesInTileGroup; i++ ) {
ctbAddrInTs = FirstCtbAddrTs[ TgTileIdx[ i ] ]
for( j = 0; j < NumCtusInTile[ TgTileIdx[ i ] ]; j++, ctbAddrInTs++ ) {
CtbAddrInRs = CtbAddrTsToRs[ ctbAddrInTs ]
coding_tree_unit( )
}
end_of_tile_one_bit /* equal to 1 */ ae(v)
if( i < NumTilesInTileGroup - 1 )
byte_alignment( )
}
}
Фиг. 8 представляет собой схему примерного устройства 800 для кодирования видео. Устройство 800 для кодирования видео выполнено с возможностью реализации раскрытых примеров/вариантов осуществления, как описано в настоящем документе. Устройство 800 для кодирования видео содержит нисходящие порты 820, восходящие порты 850 и/или блоки 810 приемопередатчика (TX/RX), включающие в себя передатчики и/или приемники для передачи данных восходящей линии связи и/или нисходящей линии связи. Устройство 800 для кодирования видео также включает в себя процессор 830, включающий в себя логический блок и/или центральный блок обработки (CPU) для обработки данных, и память 832 для хранения данных. Устройство 800 для кодирования видео также может содержать электрические, оптоэлектрические (OE) компоненты, электрооптические (EO) компоненты и/или компоненты беспроводной связи, соединенные с восходящими портами 850 и/или нисходящими портами 820 для передачи данных через электрические, оптические или беспроводные сети связи. Устройство 800 для кодирования видео также может включать в себя устройства 860 ввода и/или вывода (I/O) данных для передачи данных в и от пользователя. Устройства 860 ввода/вывода могут включать в себя выходные устройства, такие как дисплей для отображения видеоданных, динамики для вывода аудиоданных и т.д. Устройства 860 ввода/вывода могут также включать в себя устройства ввода, такие как клавиатура, мышь, трекбол и т.д. и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
Процессор 830 реализуется аппаратным и программным обеспечением. Процессор 830 может быть реализован как один или несколько CPU микросхем, ядер (например, в качестве многоядерного процессора), программируемые пользователем матрицы (FPGAs), специализированные интегральные схемы (ASICs) и процессоры цифровых сигналов (DSP). Процессор 830 взаимодействует с нисходящими портами 820, TX / RX 810, восходящими портами 850 и памятью 832. Процессор 830 содержит модуль 814 кодирования. Модуль 814 кодирования реализует раскрытые варианты осуществления, описанные в данном документе, такие как способы 100, 900 и 1000, которые могут использовать битовой поток 500, изображение 600 и/или изображение 700. Модуль 814 кодирования может также реализовать любой другой способ/механизм, описанный в настоящем документе. Кроме того, модуль 814 кодирования может реализовывать систему 200 кодека, кодер 300 и/или декодер 400. Например, модуль 814 кодирования может разделить изображение на группы плиток и/или плитки, плитки в CTUs, CTUs на блоки и кодировать блоки в случае кодера. Кроме того, модуль 814 кодирования может выбрать группы плиток растровой развертки или прямоугольные группы плиток и сигнализировать такой выбор в битовом потоке. Модуль 814 кодирования также может сигнализировать первую плитку и последнюю плитку для поддержки определения назначения плитки для групп плиток. Действуя в качестве декодера или HRD, модуль 814 кодирования может определить тип используемой группы плиток, и определяет плитки, назначенные в группу плиток на основании первой плитки и последней плитки. Следовательно, модуль 814 кодирования побуждает устройство 800 для кодирования видео обеспечивать дополнительную функциональность и/или эффективность кодирования при разделении и кодировании видеоданных. Таким образом, модуль 814 кодирования улучшает функциональные возможности устройства 800 для кодирования видео и решает технические задачи, специфические для кодирования видео. Кроме того, модуль 814 кодирования влияет на преобразование устройства 800 для кодирования видео в другое состояние. Альтернативно, модуль 814 кодирования может быть реализован в качестве инструкций, хранящихся в памяти 832, и выполняемые процессором 830 (например, в качестве компьютерного программного продукта, хранящегося на постоянном носителе).
Память 832 содержит одну или несколько типов памяти, такие как диски, ленточные накопители, твердотельные накопители, память только для чтения (ROM), память произвольного доступа (RAM), флэш-память, тройная контентно-адресуемая память (TCAM), статическая память произвольного доступа (SRAM) и т.д. Память 832 может использоваться в качестве устройства для хранения данных при переполнении хранилища, для хранения программ, когда такие программы выбираются для выполнения, и для хранения инструкций и данных, которые читаются во время выполнения программы.
Фиг. 9 является блок-схемой последовательности операций примерного способа 900 кодирования изображения, такого как изображение 600 и/или 700, в битовой поток, например, битовый поток 500. Способ 900 может использоваться кодером, таком как система 200 кодека, кодер 300 и/или устройство 800 для кодирования видео при выполнении способа 100.
Способ 900 может начинаться, когда кодер принимает видеопоследовательность, включающую в себя множество изображений, и определяет кодировать эту видеопоследовательность в битовой поток, например, на основании ввода пользователя. Видеопоследовательность разделена на изображения/кадры для дополнительного разделения до кодирования. На этапе 901 изображение разделено на множество плиток. Кроме того, плитки назначаются во множество групп плиток и, следовательно, подмножество плитки присваивается в группу плиток. В некоторых примерах группа плиток представляет собой группу плиток растровой развертки. В других примерах группа плиток представляет собой прямоугольную группу плиток.
На этапе 903 в битовой поток кодируется флаг. Флаг может быть установлен на первое значение, когда группа плиток представляет собой группу плиток растровой развертки, и второе значение, когда группа плиток представляет собой прямоугольную группу плиток. Флаг может быть закодирован в набор параметров битового потока. Например, набор параметров, в который закодирован флаг, может быть набором параметра последовательности или набором параметров изображения. В некоторых примерах флаг представляет собой флаг прямоугольной группы плиток.
На этапе 905 идентификатор первой плитки группы плиток и идентификатор последней плитки группы плиток кодируется в битовом потоке. Первая плитка группы плиток и последняя плитка группы плиток могут быть использованы для указания плиток, назначенных в группу плиток. В некоторых примерах идентификатор первой плитки группы плиток и идентификатор последней плитки группы плиток кодируется в заголовке групп плиток в битовом потоке.
Флаг, первая плитка группы плиток и последняя плитка группы плиток может использоваться декодером и/или HRD в кодере для определения назначения плитки для группы плиток. Когда группа плиток является группой плитки растровой развертки, как указано флагом, назначение плитки для группы плиток может быть определено следующим образом. Количество плиток между первой плиткой группы плиток и последней плиткой группы плиток можно определить как количество плиток в группе плиток. Затем назначение плитки можно определить на основании количества плиток в группе плиток. Когда группа плиток является прямоугольной группой плитки, как указано флагом, назначение плитки для группы плиток может быть определено следующим образом. Можно определить значение дельта между первой плиткой группы плиток и последней плиткой группы плиток. Количество строк группы плиток может быть определено на основании значения дельты и количества столбцов плитки в изображении. Количество столбцов группы плиток также могут быть определено на основании значения дельты и количества столбцов плитки в изображении. Назначение плитки затем можно определить на основании количества строк группы плиток и количества столбцов группы плиток.
На этапе 907 плитки кодируются в битовый поток на основании назначения плитки. Битовой бит также может быть сохранен для связи с декодером на этапе 909.
Фиг. 10 является блок-схемой последовательности операций примера способа 1000 декодирования изображения, такого как изображение 600 и/или 700, из битового потока, такого как битовый поток 500. Способ 1000 может использоваться декодером, таким как система 200 кодека, декодером 400 и/или устройством 800 для кодирования видео при выполнении способа 100. Например, способ 1000 может использоваться в ответ на способ 900.
Способ 1000 может начаться, когда декодер начинает битовый поток кодированных данных, представляющих видеопоследовательность, например, в результате способа 900. На этапе 1001 битовой поток принимается в декодере. Битовый поток включает в себя изображение, разделенное в множество плиток. Плитка назначаются во множество групп плиток и, следовательно, подмножество плиток присваивается в группу плиток. В некоторых примерах группа плиток представляет собой группу плиток растровой развертки. В других примерах группа плиток представляет собой прямоугольную группу плиток.
На этапе 1003 из набора параметров битового потока получают флаг. Группа плиток определяется как группа плиток растровой развертки, когда флаг установлен на первое значение. Группа плиток определяется как прямоугольная группа плиток, когда флаг установлен на второе значение. Например, параметр, включающий в себя флаг, может представлять собой набор параметров последовательности или набор параметров изображения. В некоторых примерах флаг представляет собой флаг прямоугольной группы плиток.
На этапе 1005 для поддержки определения плитки, назначенных в группу плиток, получают идентификатор первой плитки группы плиток и идентификатор последней плитки группы плиток. В некоторых примерах идентификатор первой плитки группы и идентификатор последней плитки группы получен из заголовка группы плиток в битовом потоке.
На этапе 1007 назначение плитки для группы плиток определяется на основании того, является ли группа плиток группой плитки растровой развертки или прямоугольной группой плитки. Например, флаг, первая плитка группы плиток и последняя плитка группы плиток может использоваться для определения присвоения плитки для группы плиток. Когда группа плиток является группой плитки растровой развертки, как указано флагом, назначение плитки для группы плиток может быть определено следующим образом. Количество плиток между первой плиткой группы плиток и последней плиткой группы плиток можно определить как количество плиток в группе плиток. Затем назначение плитки можно определить на основании количества плиток в группе плиток. Когда группа плиток является прямоугольной группой плитки, как указано флагом, назначение плитки для группы плиток может быть определено следующим образом. Можно определить значение дельта между первой плиткой группы плиток и последней плиткой группы плиток. Количество строк группы плиток могут быть определены на основании значения дельта и количества столбцов плитки в изображении. Количество столбцов группы плиток также могут быть определены на основании значения дельты и количества столбцов плитки в изображении. Назначение плитки затем можно определить на основании количества строк группы плиток и количества столбцов группы плиток.
На этапе 1009 для генерирования декодированной плитки на основании назначения плитки для группы плиток декодируются. Восстановленная видеопоследовательность также может быть сгенерирована для отображения на основании декодированной плитки.
Фиг. 11 представляет собой схему примерной системы 1100 для кодирования видеопоследовательности изображений, таких как изображение 600 и/или 700, в битовом потоке, таком как битовый поток 500. Система 1100 может быть реализована кодером и декодером, таким как система 200 кодека, кодер 300, декодер 400 и/или устройство 800 для кодирования видео. Кроме того, система 1100 может использоваться при реализации способа 100, 900 и/или 1000.
Система 1100 включает в себя видеокодер 1102. Видеокодер 1102 содержит модуль 1101 разделения для разделения изображения на множество плиток. Видеокодер 1102 дополнительно содержит модуль 1103 добавления для включения количества плиток в группу плиток. Видеокодер 1102 дополнительно содержит модуль 1105 кодирования для кодирования флага, установленного на первое значение, когда группа плиток представляет собой группу плиток растровой развертки, и второе значение, когда группа плиток представляет собой прямоугольную группу плиток, в котором флаг кодируется в набор параметров битового потока и кодировать плитки в битовый поток на основании группы плиток. Видеокодер 1102 дополнительно содержит модуль 1107 хранения для хранения битового потока для взаимодействия с декодером. Видеокодер 1102 дополнительно содержит модуль 1109 передачи для передачи битового потока для поддержки определения типа используемой типа группы (групп) плитки и плиток, включенных в группу плиток. Видеокодер 1102 может быть дополнительно выполнен с возможностью выполнять любые этапы способа 900.
Система 1100 также включает в себя видеодекодер 1110. Видеодекодер 1110 содержит модуль 1111 приема для приема битового потока, включающего в себя изображение, разделенное на множество плиток, в котором множество плиток включены в группу плиток. Видеодекодер 1110 дополнительно содержит модуль 1113 получения для получения флага из набора параметров битового потока. Видеодекодер 1110 дополнительно содержит модуль 1115 определения для определения группы плиток, которая представляет собой группу плиток растровой развертки, когда флаг установлен на первое значение, определение группы плиток, которая представляет собой прямоугольную группу плиток, когда флаг установлен на второе значение, и определение включения плитки в группы плиток на основании, является ли группа плиток группой плитки растровой развертки или прямоугольной группой плитки. Видеодекодер 1110 дополнительно содержит модуль 1117 декодирования для декодирования плиток для генерирования декодированной плитки на основании группы плиток. Видеодекодер 1110 дополнительно содержит модуль 1119 генерирования для генерирования восстановленной видеопоследовательности для отображения на основании декодированной плитки. Видеодекодер 1110 может быть дополнительно выполнен с возможностью выполнять любые этапы способа 1000.
Первый компонент напрямую соединен со вторым компонентом, когда отсутствуют промежуточные компоненты, за исключением линии связи, трассировки или другого носителя между первым компонентом и вторым компонентом. Первый компонент косвенно соединен со вторым компонентом при наличии промежуточных компонентов, отличные от линии связи, трассировки или другого носителя между первым компонентом и вторым компонентом. Термин «соединен» и его варианты включают в себя как непосредственно соединенные, так и косвенно соединенные. Использование термина «около» означает диапазон, включающий в себя ± 10% от последующего числа, если не указано иное.
Следует также понимать, что этапы примерных способов, изложенных в данном документе, не обязательно должны быть выполнены в описанном порядке, и порядок выполнения этапов таких способов следует понимать просто примерным. Аналогичным образом, в такие способы могут быть включены дополнительные этапы, и некоторые этапы могут быть опущены или объединены в способах, соответствующих различным вариантам осуществления настоящего изобретения.
Несмотря на то, что в настоящем документе описаны только несколько вариантов осуществления, следует понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не отходя от сущности или объема настоящего изобретения. Настоящие примеры должны рассматриваться как иллюстративные, а не ограничительные, и содержание не ограничивается деталями, приведенными в данном документе. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему или определенные признаки могут быть опущены или не реализованы.
Дополнительно, способы, системы, подсистемы и способы, описанные и показанные в различных вариантах осуществления, в качестве дискретных или отдельных могут быть объединены или интегрированы с другими системами, компонентами, способами, не выходя за рамки объема настоящего изобретения. Другие примеры изменений, замены и модификации могут быть предложены специалистами в данной области техники и могут быть реализованы в рамках сущности и объема настоящего изобретения.

Claims (41)

1. Способ кодирования изображений, реализуемый кодером, содержащий этапы, на которых:
разделяют с помощью кодера изображение на множество плиток;
включают с помощью кодера количество плиток в группу плиток;
кодируют с помощью кодера флаг, установленный в первое значение, когда группа плиток представляет собой группу плиток растровой развертки, и во второе значение, когда группа плиток представляет собой прямоугольную группу плиток, при этом флаг кодируется в наборе параметров битового потока;
кодируют с помощью кодера в битовом потоке идентификатор первой плитки группы плиток для указания плиток, включенных в группу плиток; и
кодируют с помощью кодера плитки в битовый поток на основании группы плиток.
2. Способ по п. 1, дополнительно содержащий этап, на котором:
сохраняют с помощью кодера битовый поток для взаимодействия с декодером.
3. Способ по п. 1 или 2, в котором набор параметров, в котором закодирован флаг, представляет собой набор параметров последовательности.
4. Способ по п. 1 или 2, в котором набор параметров, в котором закодирован флаг, является набором параметров изображения.
5. Способ по любому из пп. 1-4, дополнительно содержащий этап, на котором кодируют в битовом потоке с помощью кодера идентификатор последней плитки группы плиток для указания плиток, включенных в группу плиток.
6. Способ по любому из пп. 1-5, в котором идентификатор первой плитки группы плиток и идентификатор последней плитки группы плиток кодируется в заголовке группы плиток в битовом потоке.
7. Способ декодирования изображения, реализуемый декодером, содержащий этапы, на которых:
принимают с помощью декодера посредством приемника битовый поток, включающий в себя изображение, разделенное на множество плиток, причем количество плиток включено в группу плиток;
получают с помощью декодера флаг из набора параметров битового потока; причем
группа плиток является группой плиток растровой развертки, когда флаг установлен в первое значение;
группа плиток является прямоугольной группой плиток, когда флаг установлен во второе значение;
получают с помощью декодера идентификатор первой плитки группы плиток для определения плиток, включенных в группу плиток; и
декодируют с помощью декодера плитки для группы плиток на основании является ли группа плиток группой плиток растровой развертки или прямоугольной группой плиток.
8. Способ по п. 7, дополнительно содержащий этап, на котором:
генерируют с помощью декодера восстановленную видеопоследовательность для отображения на основании декодированных плиток.
9. Способ по п. 7 или 8, в котором набор параметров, включающий в себя флаг, является набором параметров последовательности.
10. Способ по любому из пп. 7, 8, в котором набор параметров, включающий в себя флаг, представляет собой набор параметров изображения.
11. Способ по любому из пп. 7-10, дополнительно содержащий этап, на котором получают с помощью декодера идентификатор последней плитки группы плиток для определения плиток, включенных в группу плиток.
12. Способ по любому из пп. 7-10, в котором идентификатор первой плитки группы плиток и идентификатор последней плитки группы плиток получен из заголовка группы плиток в битовом потоке.
13. Способ по любому из пп. 7-12, в котором, когда группа плиток представляет собой группу плиток растровой развертки, этап декодирования плиток содержит подэтапы, на которых:
определяют количество плиток между первой плиткой группы плиток и последней плиткой группы плиток в виде количества плиток в группе плиток; и
декодируют плитки на основании количества плиток в группе плиток.
14. Способ по любому из пп. 7-12, в котором, когда группа плиток является прямоугольной группой плитки, этап декодирование плиток содержит подэтапы, на которых:
определяют значение дельты между первой плиткой группы плиток и последней плиткой группы плиток;
определяют количество строк группы плиток на основании значения дельты и количества столбцов плиток в изображении;
определяют количество столбцов группы плиток на основании значения дельты и количества столбцов плитки в изображении; и
декодируют плитки на основании количества строк группы плиток и количества столбцов группы плиток.
15. Устройство кодирования видео, содержащее:
процессор, приемник, соединенный с процессором, и передатчик, соединенный с процессором, причем процессор, приемник и передатчик выполнены с возможностью реализации способа кодирования по любому из пп. 1-6.
16. Устройство декодирования видео, содержащее:
процессор, приемник, соединенный с процессором, и передатчик, соединенный с процессором, причем процессор, приемник и передатчик выполнены с возможностью реализации способа декодирования по любому из пп. 7-14.
17. Устройство кодирования видео, содержащее схему обработки для выполнения способа кодирования по любому из пп. 1-6.
18. Устройство декодирования видео, содержащее схему обработки для выполнения способа декодирования по любому из пп. 7-14.
19. Постоянный машиночитаемый носитель, хранящий программный код, вызывающий при исполнении устройством компьютера выполнение устройством компьютера способа кодирования по любому из пп. 1-6.
20. Постоянный машиночитаемый носитель, хранящий программный код, вызывающий при исполнении устройством компьютера выполнение устройством компьютера способа декодирования по любому из пп. 7-14.
RU2021120814A 2018-12-17 2019-12-17 Устройство и способ кодирования видео RU2806278C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/780,771 2018-12-17
US62/848,149 2019-05-15

Publications (2)

Publication Number Publication Date
RU2021120814A RU2021120814A (ru) 2023-01-19
RU2806278C2 true RU2806278C2 (ru) 2023-10-30

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130016786A1 (en) * 2011-07-11 2013-01-17 Sharp Laboratories Of America, Inc. Video decoder for tiles
US20130101035A1 (en) * 2011-10-24 2013-04-25 Qualcomm Incorporated Grouping of tiles for video coding
RU2607246C2 (ru) * 2011-06-13 2017-01-10 Сан Пэтент Траст Способ декодирования изображений, способ кодирования изображений, устройство декодирования изображений, устройство кодирования изображений и устройство кодирования и декодирования изображений
US20170289556A1 (en) * 2016-03-30 2017-10-05 Qualcomm Incorporated Tile grouping in hevc and l-hevc file formats
US20170318288A1 (en) * 2013-04-08 2017-11-02 Microsoft Technology Licensing, Llc Control data for motion-constrained tile set

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2607246C2 (ru) * 2011-06-13 2017-01-10 Сан Пэтент Траст Способ декодирования изображений, способ кодирования изображений, устройство декодирования изображений, устройство кодирования изображений и устройство кодирования и декодирования изображений
US20130016786A1 (en) * 2011-07-11 2013-01-17 Sharp Laboratories Of America, Inc. Video decoder for tiles
US20130101035A1 (en) * 2011-10-24 2013-04-25 Qualcomm Incorporated Grouping of tiles for video coding
US20170318288A1 (en) * 2013-04-08 2017-11-02 Microsoft Technology Licensing, Llc Control data for motion-constrained tile set
US20170289556A1 (en) * 2016-03-30 2017-10-05 Qualcomm Incorporated Tile grouping in hevc and l-hevc file formats

Similar Documents

Publication Publication Date Title
CN112690004B (zh) 一种视频译码中的基于分块的寻址方法,译码器以及视频译码设备
US11553191B2 (en) Tile group assignment for raster scan and rectangular tile groups in video coding
US11425377B2 (en) Arbitrary and wrap-around tile grouping
WO2019201232A1 (en) Intra-prediction using cross-component linear model
US20230344999A1 (en) Explicit Address Signaling In Video Coding
WO2020142175A1 (en) Tile group signaling in video coding
CN114430908A (zh) 基于子图像的视频译码中每子图像单一条带的指示
CN115567713B (zh) 基于子图像的解码方法、解码设备和存储码流的设备
RU2806278C2 (ru) Устройство и способ кодирования видео
RU2792176C2 (ru) Кодер видео, декодер видео и соответствующие способы