Область техники, к которой относится изобретение
Настоящее изобретение в целом относится к способам кодирования, декодирования и разделения изображения.
Уровень техники
Объем видеоданных, необходимых для изображения даже относительно короткого видео, может быть значительным, что может привести к потерям данных при передаче в потоковом режиме или иным образом передаваемых по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные обычно сжимаются перед передачей по современным телекоммуникационным сетям. Размер видео также может оказывать значительное влияние на объем хранения данных в запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео перед передачей или хранением часто используют программное обеспечение и/или оборудование в источнике для кодирования видеоданных, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Затем сжатые данные принимаются в месте назначения устройством распаковки видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательно использовать улучшенные способы сжатия и распаковки, которые повысят степень сжатия с минимальными потерями в качестве изображения.
Обычно существует множество элементов ограничения разделения, каждый элемент ограничивает разделение изображений (например, видео) по отношению к различным типам способов разделения. Эти различные типы способов разделения включают в себя, в частности, разделение двоичного дерева, разделение дерева квадрантов и разделение троичного дерева. Элементы ограничения разделения обычно сигнализируются в битовом потоке, включающем в себя кодированные изображения. Далее описаны некоторые важные элементы ограничения разделения.
Может быть определен минимальный размер (MinCbSizeY) блока кодирования. Например, MinCbSizeY может быть равен 8, что означает, что родительский блок размером 8×8 не может быть разделен с помощью любого из способов разделения (splitting), поскольку результирующий дочерний блок гарантированно будет меньше, чем MinCbSizeY (либо по ширине, либо по высоте). Согласно второму примеру, если MinCbSizeY равно 8, родительский блок размером 8×16 не может быть разделен с использованием, например, разделения дерева квадрантов (partitioning), поскольку результирующие четыре дочерних блока будут иметь размер 4×8 (ширина равна 4, а высота равна 8) и ширина результирующих дочерних блоков будет меньше, чем MinCbSizeY. Во втором примере предполагалось, что MinCbSizeY применяется как к ширине, так и к высоте блока, хотя могут использоваться два разных элемента синтаксиса независимо для ограничения ширины и высоты.
Максимальный размер (CtbSizeY) блока дерева кодирования может указывать размер максимального блока кодирования в терминах количества выборок яркости.
Максимальный размер (MaxBtSizeY) двоичного дерева может быть определен как максимальный размер яркости (ширина или высота) с точки зрения количества выборок блока кодирования, который может быть разделен с использованием способа двоичного разделения. Например, если MaxBtSizeY равен 64, блок кодирования, который больше по размеру, либо по ширине, либо по высоте, не может быть разделен с использованием двоичного разделения. Это означает, что блок размером 128×128 нельзя разделить с помощью двоичного разделения, тогда как блок размером 64×64 можно разделить с помощью двоичного разделения.
Минимальный размер (MinBtSizeY) двоичного дерева может быть определен как минимальный размер яркости (ширина или высота) с точки зрения количества выборок блока кодирования, который может быть разделен с использованием способа двоичного разделения. Например, если MinBtSizeY равен 16, блок кодирования, который меньше или равен по размеру, либо по ширине, либо по высоте, не может быть разделен с использованием двоичного разделения. Это означает, что блок размером 8×8 нельзя разделить с помощью двоичного разделения, тогда как блок размером 32×32 можно разделить с помощью двоичного разделения.
Минимальный размер (MinQtSizeY) дерева квадрантов может быть определен как минимальный размер яркости листового блока, полученный в результате разделения дерева квадрантов блока дерева кодирования (CTU). Размер может указывать ширину или высоту блока в количестве выборок. Он также может указывать вместе ширину и высоту в случае квадратных блоков. Например, если MinQtSizeY равен 16, блок кодирования, имеющий размер меньше или равный 16, не может быть разделен на дочерние блоки с использованием способа разделения дерева квадрантов. Обычно MinQtSizeY (и его сигнализируемые элементы «log2_min_qt_size_intra_slices_minus2» и «log2_min_qt_size_inter_slices_minus2» синтаксиса используются для обозначения минимального размера блока дерева квадрантов. В частности, элемент синтаксиса размера может быть косвенным элементом синтаксиса, что означает «log2_min_qt_size_intra_slices_minus2» может быть двоичным логарифмом (с основанием 2) количества выборок яркости минимального блока дерева квадрантов.
Минимальный размер (MinTbSizeY) блока преобразования может быть определен как минимальный размер блока преобразования в терминах количества выборок блока кодирования, который может быть разделен с использованием способа троичного разделения. Например, если MinTbSizeY равен 16, блок кодирования, который меньше или равен по размеру либо по ширине, либо по высоте, не может быть разделен с использованием троичного разделения. Это означает, что блок размером 8×8 нельзя разделить с помощью троичного разделения, тогда как блок размером 32×32 можно разделить с помощью троичного разделения.
Максимальная глубина (MaxMttDepth) многотипного дерева может быть определена как максимальная глубина иерархии для блоков кодирования, полученных в результате разделения многотипного дерева листового дерева квадрантов или CTU. CTU или блок дерева кодирования (CTB) описывает максимальный размер блока, который используется для разделения кадра изображения. MaxMttDepth описывает верхний предел количества последовательных двоичных или троичных разделений, которые могут применяться для получения дочернего блока. В качестве примера, предполагая, что размер CTU равен 128×128 (ширина равна 128 и высота равна 128), и что MaxMttDepth равен 1, каждый родительский блок (размером 128×128) может сначала быть разделен на два дочерних блока 128×64 с использованием двоичного разделения. Однако дочерние блоки не могут применять какое-либо последовательное двоичное разделение (чтобы получить дочерние блоки 128×32 или 64×64), поскольку достигнуто максимальное количество доступных двоичных разделений. Следует отметить, что MaxMttDepth может контролировать максимальную глубину двоичного разделения или максимальную троичную глубину разделения, или и то, и другое одновременно. Если управляется глубины двоичного и троичного разделения одновременно, то одно двоичное разделение, за которым следует одно троичное разделение, может считаться двумя иерархическими разделениями. Обычно MaxMttDepth (и его элементы синтаксиса «max_mtt_hierarchy_depth_inter_slices» и «max_mtt_hierarchy_depth_intra_slices») используются для обозначения максимальной глубины иерархии для блоков кодирования, получаемых из многотипного дерева.
Кроме того, «pic_width_in_luma_samples» является элементом синтаксиса, определяющим элемент размера изображения, а именно, ширину каждого декодированного изображения в блоках выборок яркости. Pic_width_in_luma_samples обычно не должно быть равно 0 и должно быть целым кратным MinCbSizeY.
Аналогично, «pic_height_in_luma_samples» является элементом синтаксиса, определяющий элемент размера изображения, а именно, высоту каждого декодированного изображения в блоках выборок яркости. Pic_height_in_luma_samples обычно не должно быть равно 0 и должно быть целым числом, кратным MinCbSizeY.
Одной из задач кодирования видео является обеспечение возможного высокого качества с возможно низкой скоростью. Одним из факторов, способствующих решению данной технической задачи, является повышение эффективности структуры битового потока.
Раскрытие сущности изобретения
Ввиду вышеупомянутой технической задачи варианты осуществления изобретения направлены на улучшение текущей реализации разделения изображения. В частности, техническая задача состоит в том, чтобы повысить доступность и гибкость различных способов разделения изображения, то есть способов разделения двоичного дерева, дерева квадрантов и троичного дерева. Техническая задача заключается в обеспечении возможности кодирования и декодирования изображений больших размеров.
Варианты осуществления изобретения представлены в прилагаемых независимых пунктах формулы изобретения. Преимущественные реализации изобретения дополнительно определены в зависимых пунктах формулы изобретения.
Вышеупомянутые и другие технические задачи решаются предметом независимых пунктов формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и чертежей.
Конкретные варианты осуществления изложены в прилагаемых независимых пунктах формулы изобретения и другие варианты осуществления описаны в зависимых пунктах формулы изобретения.
В вариантах осуществления изобретения устанавливаются новые правила разделения, в частности, путем установки отношений между элементами ограничения разделения и передачи их в битовом потоке вместе с кодированными изображениями. Они могут использоваться для кодирования видеоданных в битовый поток и декодирования битового потока в декодированные видеоданные.
Согласно первому аспекту изобретение относится к устройству для декодирования или обработки битового потока, включающий в себя кодированные изображения. Устройство включает в себя схему, выполненную с возможностью получать из битового потока (101) элемент синтаксиса; получать информацию минимального размера в выборках яркости листового блока яркости, полученного в результате разделения дерева квадрантов, MinQtSizeY (105); определять, может ли максимальный размер в выборках яркости корневого блока яркости быть разделен с использованием разделения двоичного дерева, MaxBtSizeY (102), на основании информации для MinQtSizeY (105) и полученного элемента синтаксиса.
Путем определения новых правил разделения посредством установки отношений между этими элементами ограничения разделения устройство для декодирования выполнено с возможностью увеличивать доступность и гибкость различных способов разделения изображения, в частности, разделения дерева квадрантов и двоичного дерева.
В возможной форме реализации способа согласно первому аспекту схема выполнена с возможностью определять MaxBtSizeY с учетом того, что ее нижним пределом является MinQtSizeY.
В возможной форме реализации способа согласно первому аспекту или вышеупомянутой реализации элемент синтаксиса является элементом (301) синтаксиса разницы между логарифмом по основанию 2 MinQtSizeY (105) и логарифмом по основанию 2 MaxBtSizeY (102).
Таким образом, можно легко вывести соответствующие элементы ограничения разделения, например, на стороне декодера, с одновременным уменьшением информационных накладных расходов в битовом потоке. Разница является примером отношения. Однако отношение также может быть коэффициентом пропорциональности, схемой вычисления и т.п., что позволяет получить MaxBtSizeY из MinQtSizeY.
В возможной форме реализации способа согласно первому аспекту или вышеупомянутой реализации элемент синтаксиса является элементом (301) синтаксиса разницы между MinQtSizeY (105) и MaxBtSizeY (102), элементом синтаксиса разницы может быть, то есть, log2_diff_max_bt_size_min_qt_size, сигнализирующим упомянутую разницу в логарифмическом масштабе с основанием 2. Такой элемент синтаксиса разницы обеспечивает компактный способ сигнализации разницы.
В возможной форме реализации способа согласно первому аспекту или вышеупомянутой реализации схема выполнена с возможностью получать элемент синтаксиса из битового потока в зависимости от максимальной глубины иерархии для блоков кодирования, полученных в результате разделения многотипного дерева листового блока дерева квадрантов (MaxMttDepth) Таким образом, могут быть получены соответствующие элементы ограничения разделения, например на стороне декодера, с одновременным уменьшением информационных накладных расходов в битовом потоке.
В дополнение или альтернативно, схема может быть выполнена с возможностью не получать какой-либо элемент синтаксиса MaxBtSizeY из битового потока, если MaxMttDepth равно нулю.
В дополнение или альтернативно, схема может быть выполнена с возможностью не получать элемент синтаксиса из битового потока (101), если MaxMttDepth (103) не равно нулю.
Согласно второму аспекту изобретение относится к устройству для генерирования или обработки битового потока, включающего в себя закодированные изображения, устройству (которое выполнено с возможностью: определять минимальный размер яркости листового блока, полученного в результате разделения дерева квадрантов, MinQtSizeY, определять максимальный размер яркости блока кодирования, который должен быть разделен с использованием разделения двоичного дерева, MaxBtSizeY на основании MinQtSizeY, и включать в битовый поток информацию определенного MinQtSizeY.
Этот способ обеспечивает эффективную реализацию кодера, в котором сгенерированный поток имеет компактный синтаксис и позволяет декодеру эффективно вывести параметры ограничения. Вышеупомянутые преимущества для стороны декодера также применимы к стороне кодера, на котором генерируется битовый поток.
В возможной форме реализации способа согласно второму аспекту или вышеупомянутой реализации, устройство (его схема обработки) выполнено с возможностью определять MaxBtSizeY с учетом того, что его нижним пределом является MinQtSizeY.
В возможной форме реализации способа согласно второму аспекту или вышеупомянутой реализации, устройство для генерирования или обработки битового потока может быть дополнительно выполнено с возможностью включать в битовый поток (101) элемент синтаксиса разницы между логарифмом по основанию 2 MinQtSizeY ( 105) и логарифмом с основанием 2 MaxBtSizeY (102)в битовом потоке.
В возможной форме реализации способа согласно второму аспекту или вышеупомянутой реализации элемент синтаксиса является элементом (301) синтаксиса разницы между MinQtSizeY (105) и MaxBtSizeY (102), элемент синтаксиса разницы сигнализирует упомянутую разницу в логарифмическом масштабе с основанием 2.
В возможной форме реализации способа согласно второму аспекту или вышеупомянутой реализации устройство выполнено с возможностью включать в битовый поток элемент MaxBtSizeY синтаксиса, зависящий от максимальной глубины иерархии для блоков кодирования, полученные в результате разделения многотипного дерева, MaxMttDepth.
В дополнение или в качестве альтернативы устройство выполнено с возможностью не включать в битовый поток какой-либо элемент MaxBtSizeY синтаксиса, если MaxMttDepth равно нулю.
В дополнение или альтернативно, устройство выполнено с возможностью включать в битовый поток любой элемент MaxBtSizeY синтаксиса, если MaxMttDepth не равно нулю.
Согласно третьему аспекту изобретение относится к способу, предоставленному для генерирования или обработки битового потока (включающий в себя кодированные изображения), включающий в себя этапы: определение минимального размера яркости листового блока, полученного в результате разделения дерева квадрантов, MinQtSizeY, определение максимального размера яркости блока кодирования, который должен быть разделен с использованием разделения двоичного дерева, MaxBtSizeY, на основании MinQtSizeY, и включение в битовый поток информации определенного MinQtSizeY (105).
Согласно четвертому аспекту изобретение относится к способу, предусмотренному для декодирования или обработки битового потока, включающего в себя закодированные изображения, содержащий этапы: получение из битового потока (101) элемента синтаксиса; получение информации минимального размера в выборках яркости листового блока яркости, полученного в результате разделения дерева квадрантов, MinQtSizeY (105); определение, может ли максимальный размер в выборках яркости корневого блока яркости быть разделен с использованием разделения двоичного дерева, MaxBtSizeY (102) на основании информации MinQtSizeY (105) и полученного элемента синтаксиса.
В котором способ может дополнительно содержать определение, разрешено ли применение двоичного разделения к блоку изображения, на основании MaxBtSizeY; получение блока кодирования блока изображения на основании результата определения; и получение восстановленных значений выборок блока кодирования.
В котором блок изображения может быть блоком яркости кодированных изображений.
В котором элемент синтаксиса может указывать разницу между логарифмом с основанием 2 для MaxBtSizeY (102) и логарифмом с основанием 2 для MinQtSizeY (105); или элемент синтаксиса может указывать разницу между MaxBtSizeY и MinQtSizeY.
В котором элемент синтаксиса может быть из заголовка сегмента битового потока.
Способ согласно третьему аспекту изобретения может выполняться устройством согласно первому аспекту изобретения. Дополнительные признаки и формы реализации способа согласно первому аспекту изобретения соответствуют признакам и формам реализации устройства согласно третьему аспекту изобретения.
Способ согласно четвертому аспекту изобретения может выполняться устройством согласно второму аспекту изобретения. Дополнительные признаки и формы реализации способа согласно второму аспекту изобретения соответствуют признакам и формам реализации устройства согласно четвертому аспекту изобретения.
Способ согласно второму аспекту может быть расширен до форм реализации, соответствующих форм реализации первого устройства согласно первому аспекту. Следовательно, форма реализации способа содержит признак (признаки) соответствующей формы реализации первого устройства.
Преимущества способов согласно четвертому аспекту являются такими же, как и преимущества соответствующих форм реализации способа согласно третьему аспекту.
Согласно пятому аспекту изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые побуждают процессор выполнять способ согласно третьему аспекту.
Согласно шестому аспекту изобретение относится к устройству для кодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые побуждают процессор выполнять способ согласно четвертому аспекту.
Согласно седьмому аспекту предлагается машиночитаемый носитель данных, на котором хранятся инструкции, которые при исполнении побуждают один или более процессоров кодировать видеоданные. Инструкции побуждают один или более процессоров выполнять способ согласно третьему или четвертому аспекту или любому возможному варианту осуществления третьего или четвертого аспекта.
Согласно восьмому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно третьему или четвертому аспекту или любому возможному варианту осуществления третьего или четвертого аспекта при выполнении на компьютере.
На прилагаемых чертежах и в описании ниже изложены подробности одного или более вариантов осуществления. Другие признаки, объекты и преимущества будут очевидны из описания, чертежей и формулы изобретения.
Согласно варианту осуществления предоставляется компьютерный программный продукт, содержащий программный код для управления устройством для выполнения любого из вышеупомянутых способов, когда программный код выполняется одним или более процессорами устройства.
Для ясности любого из раскрытых в настоящем документе вариантов осуществления, вариант осуществления может быть объединен с любым одним или более другими вариантами осуществления для получения нового варианта осуществления в пределах объема настоящего изобретения.
Эти и другие признаки будут более понятны из следующего подробного описания, рассмотренного вместе с прилагаемыми чертежами и формулой изобретения.
Следует отметить, что все устройства, элементы, блоки и средства, описанные в настоящем изобретении, могут быть реализованы в программных или аппаратных элементах или любой их комбинации. Все этапы, которые выполняются различными объектами, описанными в настоящем изобретении, а также функциональные возможности, описанные для выполнения различными объектами, предназначены для обозначения, что соответствующий объект адаптирован или выполнен с возможностью выполнять соответствующие этапы и функции. Даже, если в нижеследующем описании конкретных вариантов осуществления конкретная функциональность или этап, который должен выполняться внешними объектами, не отражается в описании конкретного подробного элемента этого объекта, который выполняет этот конкретный этап или функциональность, квалифицированному специалисту должно быть понятно, что эти способы и функциональные возможности могут быть реализованы в соответствующих программных или аппаратных элементах или в любой их комбинации.
Краткое описание чертежей
Вышеописанные аспекты и формы реализации будут объяснены в следующем описании конкретных вариантов реализации со ссылкой на прилагаемые чертежи, на которых
Фиг.1 показывает устройство согласно варианту осуществления изобретения.
Фиг.2 показывает синтаксис SPS RBSP для устройства согласно второму конкретному варианту осуществления изобретения.
Фиг.3 показывает синтаксис заголовка сегмента для устройства согласно второму конкретному варианту осуществления изобретения.
Фиг.4 показывает синтаксис SPS RBSP для устройства согласно третьему конкретному варианту осуществления изобретения.
Фиг.5 показывает синтаксис заголовка сегмента для устройства согласно четвертому конкретному варианту осуществления изобретения.
Фиг.6 показывает синтаксис заголовка сегмента для устройства согласно четвертому конкретному варианту осуществления изобретения.
Фиг.7 показывает способ согласно варианту осуществления изобретения.
Фиг.8 показывает обычный синтаксис SPS RBSP.
Фиг.9 показывает обычный синтаксис заголовка сегмента.
Фиг.10 показывает устройство согласно варианту осуществления изобретения.
Фиг.11A является блок-схемой, иллюстрирующей примерную систему кодирования, которая может реализовывать варианты осуществления изобретения.
Фиг.11В является блок-схемой, иллюстрирующей другой пример системы кодирования, которая может реализовывать варианты осуществления изобретения.
Фиг.12 является блок-схемой, иллюстрирующей пример видеокодера, который может реализовывать варианты осуществления изобретения.
Фиг.13 является блок-схемой, иллюстрирующей пример видеодекодера, который может реализовывать варианты осуществления изобретения.
Фиг.14 является схемой сетевого устройства согласно варианту осуществления изобретения.
Фиг.15 является упрощенной блок-схемой устройства, которое может использоваться в качестве одного или обоих из устройства 12 источника и устройства 14 назначения по фиг. 11A согласно примерному варианту осуществления.
Фиг.16 A-F показывают различные режимы разделения CU в VVC.
Фиг.17A показывает принудительное разделение QT нижней границы CTU (128×128) HD (1920×1080).
Фиг.17B показывает принудительное разделение BT (128×128) нижней границы CTU (128×128) HD (1920×1080) согласно варианту осуществления изобретения.
Фиг.18 показывает пример определения границы.
Фиг.19A показывает пример принудительное разделение QTBT углового случая согласно варианту осуществления изобретения.
Фиг.19B показывает пример принудительного разделения QTBT для блока, расположенного в углу, согласно варианту осуществления изобретения.
Фиг.20 показывает вариант определения границы.
Фиг.21 является иллюстративной схемой примера разделения на блоки с использованием структуры двоичного дерева квадрантов (QTBT).
Фиг.22 является иллюстративной схемой примера древовидной структуры, соответствующей разделению блоков с использованием структуры QTBT по фиг.6.
Фиг.23 является иллюстративной схемой примера типов горизонтального разделения троичного дерева.
Фиг.24 является иллюстративной схемой примера типов вертикального разделения троичного дерева.
Фиг.25 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг.26 является блок-схемой, показывающей примерную структуру видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;
Фиг.27 является блок-схемой, показывающей примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента.
Фиг.28 является блок-схемой, показывающей структуру примера оконечного устройства.
Подробное описание вариантов осуществления
Прежде всего, необходимо отметить, что хотя далее представлена иллюстративная реализация одного или более вариантов осуществления, раскрытые системы и/или способы могут быть реализованы с использованием любого количества способов, известных или используемых в настоящее время. Изобретение никоим образом не должно ограничиваться иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включающие в себя иллюстративные компоновки и реализации, проиллюстрированные и описанные в настоящем документе, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом их эквивалентов.
В нижеследующем описании приведена ссылка на сопроводительные чертежи, которые составляют часть настоящего изобретения и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых могут использоваться варианты осуществления настоящего изобретения. Очевидно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на чертежах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, очевидно, что настоящее изобретение в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнять способ, и наоборот. Например, если описан один или более конкретных этапов способа, соответствующее устройство может включать в себя один или более блоков, например, функциональные блоки, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов) даже, если такой один или более блоков не описаны и не проиллюстрированы явно на чертежах. С другой стороны, например, если конкретное устройство описано на основании одного или множества блоков, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множество блоков) даже, если такой один или множество этапов явно не описаны или не проиллюстрированы на чертежах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» можно использовать термин «кадр» или «изображение» как синонимы в области кодирования видео. Кодирование видео, используемое в настоящем изобретении (или настоящем раскрытии), указывает либо кодирование видео, либо декодирование видео. Кодирование видео выполняется на стороне источника, обычно, содержащее обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, необходимых для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом, как будет объяснено позже), следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеопоследовательности. Комбинация части кодирования и части декодирования также называется CODEC (Coding and Decoding).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, то есть, восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, посредством квантования, для уменьшения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, то есть качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео, начиная с H.261, принадлежат к группе «гибридных видеокодеков с потерями» (т.е. объединяют пространственное и временное предсказания в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутреннее изображение) предсказания и временного (внешнее изображение) предсказания для генерирования блока предсказания, вычитание блока предсказания из текущего блока (блока, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжаты), тогда как в декодере частично выполняется обратная обработка по сравнению с кодером к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказание) и/или повторно восстанавливать для обработки, то есть, кодировать, последующие блоки.
Используемый в настоящем описании термин «блок» может быть частью изображения или кадра. Для удобства описания варианты осуществления изобретения описаны в данном документе со ссылкой на высокоэффективное кодирование видео (HEVC) или эталонное программное обеспечение универсальное кодирование видео (VVC), разработанное объединенной группой сотрудничества по кодированию видео (JCT-VC) Группа экспертов ITU-T по кодированию видео (VCEG) и Группа экспертов ISO/IEC по движущимся изображениям (MPEG). Обычный специалист в данной области техники поймет, что варианты осуществления изобретения не ограничиваются HEVC или VVC. Может относиться к CU (блокам кодирования), PU (блокам предсказания) и TU (блокам преобразования). В HEVC CTU (блок дерева кодирования) разделяется на CUs с использованием структуры квадратичного дерева, обозначаемой как дерево кодирования. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, принимается на уровне CU. Каждый CU может быть дополнительно разделен на один, два или четыре PUs в соответствии с типом разделения PU. Внутри одного PU применяется тот же процесс предсказания, и соответствующая информация передается в декодер на основании PU. После получения остаточного блока путем применения процесса предсказания на основании типа разделения PU, CU может быть разделен на блоки преобразования (TUs) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU. В новейшей разработке технологии сжатия видео для разделения блока кодирования используется кадр разделения дерева квадрантов и двоичного дерева (QTBT). В QTBT блочной структуре CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала разделяется структурой дерева квадрантов. Листовые узлы дерева квадрантов дополнительно разделяются структурой двоичного дерева. Листовые узлы двоичного дерева называются блоками кодирования (CUs), и используется эта сегментация для предсказания и обработки преобразования без какого-либо дополнительного разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в QTBT структуре блока кодирования. Параллельно с QTBT блочной структурой было предложено использовать множественность разделов, например, раздел троичного дерева (TT), термин «устройство» может также означать «устройство», «декодер» или «кодер».
В следующих вариантах осуществления со ссылкой на фиг.11-13 приведено описание кодера 20, декодера 30 и системы 10 кодирования.
В нижеследующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть изобретения и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых могут использоваться варианты осуществления настоящего изобретения. Очевидно, что варианты осуществления изобретения могут использоваться в других аспектах и содержать структурные или логические изменения, не изображенные на чертежах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, понятно, что изобретение в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнять способ, и наоборот. Например, если описан один или более конкретных этапов способа, соответствующее устройство может включать в себя один или более блоков, например, функциональные блоки для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов) даже, если такой один или более блоков не описаны и не проиллюстрированы явно на чертежах. С другой стороны, например, если конкретное устройство описано на основании одного или множества блоков, например, функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множество блоков) даже, если такой один или множество этапов явно не описаны или не проиллюстрированы на чертежах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Вместо термина «изображение» можно использовать термин «кадр» или «изображение» как синонимы в области кодирования видео. Кодирование видео, используемое в настоящем изобретении (или настоящем раскрытии), указывает либо кодирование видео, либо декодирование видео. Кодирование видео выполняется на стороне источника, обычно, содержащее обработку (например, путем сжатия) исходных видеоизображений для уменьшения объема данных, необходимых для представления видеоизображений (для более эффективного хранения и/или передачи). Декодирование видео выполняется на стороне назначения и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к «кодированию» видеоизображений (или изображений в целом, как будет объяснено позже), следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеопоследовательности. Комбинация части кодирования и части декодирования также называется CODEC (Coding and Decoding).
В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены, то есть, восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, посредством квантования, для уменьшения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены в декодере, то есть качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений.
Несколько стандартов кодирования видео, начиная с H.261, принадлежат к группе «гибридных видеокодеков с потерями» (т.е. объединяют пространственное и временное предсказания в области выборки и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть, кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутреннее изображение) предсказания и временного (внешнее изображение) предсказания для генерирования блока предсказания, вычитание блока предсказания из текущего блока (блока, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжаты), тогда как в декодере частично выполняется обратная обработка по сравнению с кодером к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказание) и/или повторно восстанавливать для обработки, то есть, кодировать, последующие блоки.
Используемый в настоящем описании термин «блок» может быть частью изображения или кадра. Для удобства описания варианты осуществления изобретения описаны в данном документе со ссылкой на высокоэффективное кодирование видео (HEVC) или эталонное программное обеспечение универсальное кодирование видео (VVC), разработанное объединенной группой сотрудничества по кодированию видео (JCT-VC) Группа экспертов ITU-T по кодированию видео (VCEG) и Группа экспертов ISO/IEC по движущимся изображениям (MPEG). Обычный специалист в данной области техники поймет, что варианты осуществления изобретения не ограничиваются HEVC или VVC. Может относиться к CU (блокам кодирования), PU (блокам предсказания) и TU (блокам преобразования). В HEVC CTU (блок дерева кодирования) разделяется на CUs с использованием структуры квадратичного дерева, обозначаемой как дерево кодирования. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, принимается на уровне CU. Каждый CU может быть дополнительно разделен на один, два или четыре PUs в соответствии с типом разделения PU. Внутри одного PU применяется тот же процесс предсказания, и соответствующая информация передается в декодер на основании PU. После получения остаточного блока путем применения процесса предсказания на основании типа разделения PU, CU может быть разделен на блоки преобразования (TUs) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU. В новейшей разработке технологии сжатия видео для разделения блока кодирования используется кадр разделения дерева квадрантов и двоичного дерева (QTBT). В QTBT блочной структуре CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала разделяется структурой дерева квадрантов. Листовые узлы дерева квадрантов дополнительно разделяются структурой двоичного дерева. Листовые узлы двоичного дерева называются блоками кодирования (CUs), и используется эта сегментация для предсказания и обработки преобразования без какого-либо дополнительного разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в QTBT структуре блока кодирования. Параллельно с QTBT блочной структурой было предложено использовать множественность разделов, например, раздел троичного дерева (TT), термин «устройство» может также означать «устройство», «декодер» или «кодер».
В следующих вариантах осуществления со ссылкой на фиг.11-13 приведено описание кодера 20, декодера 30 и системы 10 кодирования.
Фиг.11A представляет собой концептуальную или схематическую блок-схему, иллюстрирующую пример системы 10 кодирования, например, система 10 кодирования видео, которая может использовать способы настоящего изобретения (настоящее раскрытие). Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнять способы в соответствии с различными примерами, описанными в настоящем изобретении. Как показано на фиг.11A, система 10 кодирования содержит устройство 12 источника, выполненное с возможностью предоставлять закодированные данные 13, например, закодированное изображение 13, например, в устройство 14 назначения для декодирования закодированных данных 13.
Устройство 12 источника содержит кодер 20 и может дополнительно, т.е. в качестве варианта, содержать источник 16 изображения, блок 18 предварительной обработки, например, блок 18 предварительной обработки изображения и интерфейс связи или блок 22 связи.
Источник 16 изображения может содержать или быть устройством захвата изображения любого типа, например, для захвата реального изображения и/или любого вида изображения или комментария (для кодирования содержимого экрана некоторые тексты на экране также считаются часть изображения или изображения, которое должно быть закодировано), устройство генерирования, например процессор компьютерной графики для генерирования компьютерного анимированного изображения, или любое устройство для получения и/или предоставления реального изображения, компьютерного анимированного изображения (например, содержимое экрана, изображение виртуальной реальности (VR)) и/или любую их комбинацию (например, изображение дополненной реальности (AR)). Источником изображения может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых изображений.
(Цифровое) изображение представляет собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или пикселем. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть изображение может быть представлено или содержать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости/цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или короткости, яркость) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или коротко, цветность) Cb и Cr представляют компоненты цветности или информация о цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости значений выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы или преобразованы в формат YCbCr, и наоборот, этот процесс также известен как преобразование цвета или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости.
Источник 16 изображения (например, источник 16 видео) может быть, например, камерой для захвата изображения, памятью, например, память изображений, содержащая или хранящая ранее захваченное или сгенерированное изображение, и/или интерфейс любого типа (внутренний или внешний) для получения или приема изображения. Камера может быть, например, локальной или интегрированной камерой, интегрированной в устройство источника, память может быть локальной или интегрированной памятью, например, интегрировано в устройство источника. Интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео, например, внешнего устройства захвата изображения, такого как камера, внешней памяти или внешнего устройства формирования изображения, например, внешнего компьютерного графического процессора, компьютер или сервер. Интерфейс может быть любым, например, проводной или беспроводной интерфейс, оптический интерфейс в соответствии с любым проприетарным или стандартизованным протоколом интерфейса. Интерфейс для получения данных 17 изображения может быть тем же интерфейсом, что и интерфейс 22 связи, или его частью.
В отличие от блока 18 предварительной обработки и обработки, выполняемой блоком 18 предварительной обработки, изображение или данные 17 изображения (например, видеоданные 16) также могут называться необработанным изображением или данными 17 исходного изображения.
Блок 18 предварительной обработки выполнен с возможностью принимать (необработанные) данные 17 изображения и выполнять предварительную обработку данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка выполняется блоком 18 предварительной обработки, например, содержит обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или устранение шумов. Можно понять, что блок 18 предварительной обработки может быть возможным компонентом.
Кодер 20 (например, видеокодер 20) выполнен с возможностью принимать предварительно обработанные данные 19 изображения и предоставлять данные 21 закодированного изображения (дополнительные подробности будут описаны ниже, например, со ссылкой на фиг.12 или фиг.14).
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью принимать данные 21 закодированного изображения и передавать данные 21 закодированного изображения (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например, устройство 14 назначения или любое другое устройство для хранения или прямого восстановления.
Интерфейс 22 связи устройства 12 источника может быть выполнен с возможностью принимать данные 21 закодированного изображения и передавать другому устройству, например, в устройство 14 назначения или любое другое устройство для хранения или прямого восстановления или для обработки данных 21 закодированного изображения, соответственно, перед сохранением кодированных данных 13 и/или передачей закодированных данных 13 в другое устройство, например, устройство 14 назначения или любое другое устройство для декодирования или хранения.
Устройство 14 назначения содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. в качестве варианта, содержит интерфейс связи или блок 28 связи, блок 32 постобработки и устройство 34 отображения.
Интерфейс 28 связи устройства 14 назначения выполнен с возможностью принимать данные 21 закодированного изображения (или любой их дополнительно обработанной версии), например, непосредственно из устройства 12 источника или из любого другого источника, например, запоминающее устройство, например, устройство хранения данных закодированного изображения, и предоставить данные 21 закодированного изображения в декодер 30.
Интерфейс 28 связи устройства 14 назначения выполнен с возможностью принимать данные 21 кодированного изображения или кодированных данных 13, например, непосредственно из устройства 12 источника или из любого другого источника, например, запоминающее устройство, например, устройство хранения данных закодированного изображения.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передавать или принимать данные 21 кодированного изображения или закодированных данных 13 через прямую линию связи между устройством 12 источника и устройством 14 назначения, например, прямое проводное или беспроводное соединение или через любую сеть, например, проводная или беспроводная сеть или любая их комбинация, или любая частная и общественная сеть, или любая их комбинация.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковывать данные 21 закодированного изображения в соответствующий формат, например, пакеты и/или обрабатывать данные закодированного изображения с использованием любого вида кодирования передачи или обработки для передачи по каналу связи или сети связи.
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью распаковки закодированных данных 13 для получения данных 21 закодированного изображения.
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью принимать переданные данные и обрабатывать передаваемые данные с использованием любого вида соответствующего декодирования передачи или обработки и/или распаковки для получения данных 21 закодированного изображения.
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, как показано стрелкой для данных 13 закодированного изображения на фиг.11A, указывающей от устройства 12 источника к устройству 14 назначения или, как интерфейсы двунаправленной связи, и может быть выполнен с возможностью, например, отправлять и получать сообщения, например, для установки соединения, подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, передача данных закодированного изображения.
Декодер 30 выполнен с возможностью принимать данные 21 кодированного изображения и предоставления данных 31 декодированного изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основании фиг.13 или фиг.15).
Постпроцессор 32 устройства 14 назначения выполнен с возможностью пост-обработки данных 31 декодированного изображения (также называемых данными восстановленного изображения), например, декодированное изображение 31, чтобы получить данные 33 изображения после обработки, например, пост-обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекция, обрезка или повторная выборка, или любая другая обработка, например, для подготовки данных 31 декодированного изображения для отображения, например, с помощью устройства 34 отображения.
Устройство 34 отображения устройства 14 назначения выполнено с возможностью принимать данные 33 изображения с постобработкой для отображения изображения, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного изображения, например, встроенный или внешний дисплей или монитор. Дисплеи могут, например, состоят из жидкокристаллических дисплеев (LCD), дисплеев на органических светодиодах (OLED), плазменных дисплеев, проекторов, микросветодиодных дисплеев, жидких кристаллов на кремнии (LCoS), цифрового светового процессора (DLP) или любого другого дисплея.
Хотя фиг.11A изображает устройство 12 источника и устройство 14 назначения как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или соответствующие функциональные возможности и устройство 14 назначения или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.
Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функций в устройстве 12 источника и/или устройстве 14 назначения, как показано на фиг.11A, может варьироваться в зависимости от фактического устройства и реализации.
Кодер 20 (например, видеокодер 20) и декодер 30 (например, видеодекодер 30), каждый может быть реализован как любая из множества подходящих схем, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSP), прикладных программ, специальные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, оборудование или любые их комбинации. Если способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем постоянном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров, чтобы выполнять способы настоящего изобретения. Любое из вышеперечисленного (включающее в себя оборудование, программное обеспечение, комбинацию аппаратного и программного обеспечения и т.д.) может рассматриваться как один или более процессоров. Каждый из видеокодера 20 и видеодекодера 30 может быть включен в один или более кодеров или декодеров, каждый из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в соответствующем устройстве.
Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 на фиг.12 и/или любой другой кодирующей системе или подсистеме, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 на фиг.13 и/или любую другую систему или подсистему декодера, описанную в данном документе. Схема обработки может быть выполнена с возможностью выполнять различные операции, как описано ниже. Как показано на фиг.15, если способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем постоянном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения способов этого настоящего изобретения. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть комбинированного кодера/декодера (CODEC) в одном устройстве, например, как показано на фиг.11B.
Устройство 12 источника может называться устройством для кодирования видео или приспособлением для кодирования видео. Устройство 14 назначения может называться устройством для декодирования видео или приспособлением для декодирования видео. Устройство 12 источника и устройство 14 назначения могут быть примерами устройств для кодирования видео или приспособления кодирования видео.
Устройство 12 источника и устройство 14 назначения могут содержать любое из широкого диапазона устройств, включающие в себя любые виды портативных или стационарных устройств, например, ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потокового видео (например, серверы служб контента или контент серверы доставки), широковещательное приемное устройство, широковещательное передающее устройство и т.п. и могут использовать или не использовать любой тип операционной системы.
В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть оборудованы для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи.
В некоторых случаях система 10 кодирования видео, проиллюстрированная на фиг. 11A, является просто примером, и способы настоящего изобретения могут применяться к настройкам кодирования видео (например, кодирование видео или декодирование видео), которые не обязательно включают в себя какой-либо обмен данными между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются по сети и т.п. Устройство для кодирования видео может кодировать и сохранять данные в памяти, и/или устройство для декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в памяти и/или извлекают и декодируют данные из памяти.
Для удобства описания в настоящем документе описаны варианты осуществления изобретения, например, со ссылкой на высокоэффективное кодирование видео (HEVC) или на эталонное программное обеспечение универсального кодирования видео (VVC), стандарта кодирования видео следующего поколения, разработанного группой сотрудничества по кодированию видео (JCT-VC) группы экспертов ITU-T по кодированию видео (VCEG) и ISO/IEC группой экспертов по движущимся изображениям (MPEG). Для специалиста в данной области техники очевидно, что варианты осуществления изобретения не ограничиваются HEVC или VVC. Следует понимать, что для каждого из вышеупомянутых примеров, описанных со ссылкой на видеокодер 20, видеодекодер 30 может быть выполнен с возможностью выполнять взаимный процесс. Что касается элементов синтаксиса сигнализации, видеодекодер 30 может быть выполнен с возможностью принимать и анализировать такой элемент синтаксиса и выполнять соответствующее декодирование видеоданных. В некоторых примерах видеокодер 20 может энтропийно кодировать один или более элементов синтаксиса в кодированный битовый поток видео. В таких примерах видеодекодер 30 может анализировать такой элемент синтаксиса и соответственно декодировать ассоциированные видеоданные.
Фиг.11B представляет собой иллюстративную схему другого примера системы 40 кодирования видео, включающую в себя кодер 20 по фиг.12 и/или декодер 30 по фиг.13 согласно примерному варианту осуществления. Система 40 может реализовывать способы в соответствии с различными примерами, описанными в настоящем изобретении. В проиллюстрированной реализации система 40 кодирования видео может содержать в себя устройство (устройства) 41 формирования изображения, видеокодер 100, видеодекодер 30 (и/или видеокодер, реализованный посредством логической схемы 47 блока (блоков) 46 обработки), антенну 42, один или более процессоров 43, одно или более хранилищ 44 памяти и/или устройство 45 отображения.
Как показано, устройство (устройства) 41 формирования изображения, антенна 42, блок (блоки) 46 обработки, логическая схема 47, видеокодер 20, видеодекодер 30, процессор (процессоры) 43, хранилище (хранилища) 44 памяти и/или устройство 45 отображения могут взаимодействовать друг с другом. Как обсуждалось, хотя и проиллюстрировано как с видеокодером 20, так и с видеодекодером 30, в различных примерах система 40 кодирования видео может содержать в себя только видеокодер 20 или только видеодекодер 30.
Как показано, в некоторых примерах система 40 кодирования видео может включать в себя антенну 42. Антенна 42 может быть, например, выполнена с возможностью передавать или принимать закодированный битовый поток видеоданных. Кроме того, в некоторых примерах система 40 кодирования видео может содержать устройство 45 отображения. Устройство 45 отображения может быть выполнено с возможностью представлять видеоданные. Как показано, в некоторых примерах, логическая схема 47 может быть реализована посредством блока (блоков) 46 обработки. Блок (блоки) 46 обработки может включать в себя логику интегральной схемы (ASIC) для конкретного приложения, графический процессор (процессоры), процессор (процессоры) общего назначения или т.п. Система 40 кодирования видео также может содержать в себя дополнительный процессор (процессоры) 43, который аналогичным образом может содержать в себя логику специализированной интегральной схемы (ASIC), графический процессор (процессоры), процессор (процессоры) общего назначения и т.п. В некоторых примерах логическая схема 47 может быть реализована с помощью аппаратного обеспечения, специализированного оборудования для кодирования видео и т.п., и процессор (процессоры) 43 может реализовывать программное обеспечение общего назначения, операционные системы и т.п. Кроме того, хранилище (хранилища) 44 памяти может быть любым типом памяти, например энергозависимой памятью (например, статической памятью с произвольным доступом (SRAM), динамической памятью с произвольным доступом (DRAM) и т.д.) или энергонезависимой памятью (например, флэш-памятью), память и т.д.) и т.д. В неограничивающем примере хранилище (хранилища) 44 памяти может быть реализовано с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к хранилищу (хранилищам) 44 памяти (например, для реализации буфера изображения). В других примерах логическая схема 47 и/или блок (блоки) 46 обработки могут содержать в себя хранилища памяти (например, кэш и т.п.) для реализации буфера изображений и т.п.
В некоторых примерах видеокодер 100, реализованный с помощью логической схемы, может содержать в себя буфер изображения (например, посредством блока (блоков) 46 обработки или хранилища (хранилищ) 44 памяти) и графического процессора (например, блок (блоки) 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Графический процессор может содержать в себя видеокодер 100, реализованный посредством логической схемы 47, для воплощения различных модулей, как обсуждалось со ссылкой на фиг. 2 и/или любой другой кодирующей системе или подсистеме, описанной в данном документе. Логическая схема может быть выполнена с возможностью выполнять различные операций, как описано в данном документе.
Видеодекодер 30 может быть реализован аналогично тому, как реализован с помощью логической схемы 47, для воплощения различных модулей, как обсуждалось в отношении декодера 30 на фиг.3 и/или любую другую систему или подсистему декодера, описанную в данном документе. В некоторых примерах видеодекодер 30 может быть реализован с помощью логической схемы, может содержать буфер изображения (например, посредством блока (блоков) 420 обработки или хранилища (хранилищ) 44 памяти)) и графического процессора (например, блоком (блоками) 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Графический процессор может содержать видеодекодер 30, реализованный посредством логической схемы 47, для воплощения различных модулей, как обсуждалось со ссылкой на фиг. 13 и/или любую другую систему или подсистему декодера, описанную в данном документе.
В некоторых примерах антенна 42 системы 40 кодирования видео может быть выполнена с возможностью принимать закодированный битовый поток видеоданных. Как обсуждалось, кодированный битовый поток может содержать данные, индикаторы, значения индексов, данные выбора режима и т.п., связанные с кодированием видеокадра, как обсуждалось в данном документе, такие как данные, связанные с кодированием посредством деления (например, коэффициенты преобразования или квантованные коэффициенты преобразования, возможные индикаторы (как обсуждалось) и/или данные, определяющие раздел кодирования). Система 40 кодирования видео также может содержать в себя видеодекодер 30, подключенный к антенне 42 и выполненный с возможностью декодировать кодированный битовый поток. Устройство 45 отображения выполнено с возможностью представлять видеокадры.
Фиг.12 показывает схематическую/концептуальную блок-схему примерного видеокодера 20, который выполнен с возможностью реализации способов настоящего изобретения. В примере на фиг.12, видеокодер 20 содержит блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, блок 220 контурного фильтра, буфер 230 декодированных изображений (DPB), блок 260 обработки предсказания и блок 270 энтропийного кодирования. Блок 260 обработки предсказания может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 выбора режима. Блок 244 может содержать блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.12, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой путь сигнала кодера 20, тогда как, например, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 260 обработки предсказания образуют обратный путь сигнала кодера, в котором обратный путь сигнала кодера соответствует тракту сигнала декодера (см. декодер 30 на фиг. 13).
Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Кодер 20 выполнен с возможностью принимать, например, при вводе 202 изображение 201 или блок 203 изображения 201, например, изображение последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения также может упоминаться как текущий блок изображения или блок изображения, подлежащий кодированию, и изображение 201 как текущее изображение или изображение, которое должно быть кодировано (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например, ранее закодированных и/или декодированные изображения одной и той же видеопоследовательности, то есть, видеопоследовательности, которая также содержит текущее изображение).
(Цифровое) изображение представляет собой или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может называться пикселем (сокращенная форма элемента изображения) или пикселем. Количество выборок в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, то есть изображение может быть представлено или содержать три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или кратко, яркость) представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), в то время как два компонента цветности (или кратко, цветность) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости значений выборок яркости (Y) и два массива выборок цветности значений цветности (Cb и Cr). Изображения в формате RGB могут быть преобразованы в формат YCbCr и наоборот, этот процесс также известен как преобразование цвета. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в 4:2:0, 4:2:2 и 4:4:4 цветовой формат.
РАЗДЕЛЕНИЕ
Варианты осуществления кодера 20 могут содержать блок разделения (не показан на фиг.12), выполненный с возможностью разделять изображение 201 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или блоками дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разделения может быть выполнен с возможностью использовать один и тот же размер блока для всех изображений видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменять размер блока между изображениями, подмножествами или группами изображений и разделять каждое изображение на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью принимать непосредственно блок 203 изображения 201, например один, несколько или все блоки, образующие изображение 201. Блок 203 изображения также может упоминаться как текущий блок изображения или блок изображения, который должен быть кодирован. В одном примере блок 260 обработки предсказания видеокодера 20 может быть выполнен с возможностью выполнять любую комбинацию способов разделения, описанных выше.
Подобно изображению 201, блок 203 снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 201. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 201) или три массива выборок (например, массив яркости и два массива цветности в случае цветного изображения 201) или любое другое количество и/или видов массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, представлять собой массив выборок M×N (M-столбец на N-строку) или M×N массив коэффициентов преобразования.
Кодер 20, показанный на фиг.12, выполнен с возможностью кодировать изображения 201 блок за блоком, например, кодирование и предсказания выполняется для каждого блока 203.
Варианты осуществления видеокодера 20, как показано на фиг.12, могут быть дополнительно выполнены с возможностью разделять и/или кодировать изображения с использованием сегментов (также называемых сегментами видео), в котором изображение может быть разделено на или закодировано с использованием одного или более сегментов (обычно без перекрытия), и каждый сегмент может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, плитки (H.265/HEVC и VVC) или блоки (VVC)).
Варианты осуществления видеокодера 20, показанные на фиг.12, могут быть дополнительно выполнены с возможностью разделять и/или кодировать изображения с использованием групп сегментов/плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), в котором изображение может быть разделено или закодировано с использованием одной или более групп сегментов/ плиток (обычно не перекрывающихся), и каждая группа сегментов/плиток может содержать, например, один или более блоков (например, CTU) или одну или более плиток, в котором каждая плитка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например целые или дробные блоки.
ВЫЧИСЛЕНИЕ ОСТАТКА
Блок 204 вычисления остатка выполнен с возможностью вычислять остаточный блок 205 на основании блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем) для получения остаточного блока 205 в области выборки.
ПРЕОБРАЗОВАНИЕ
Блок 206 обработки преобразования выполнен с возможностью применять преобразования, например, дискретное косинусное преобразование (DCT) или дискретное синусоидальное преобразование (DST) на выборочных значениях остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования также могут называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Блок 206 обработки преобразования может быть выполнен с возможностью применять целочисленные аппроксимации DCT/DST, такие как преобразования, указанные для HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные приближения обычно масштабируются с определенным коэффициентом. Для сохранения нормы остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования обычно выбираются на основании определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью два для операции сдвига, разрядности коэффициентов преобразования, компромисса между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, блоком 212 обработки обратного преобразования в декодере 30 (и соответствующим обратным преобразованием, например, блоком 212 обработки обратного преобразования в кодере 20) и может быть определены соответствующие масштабные коэффициенты для прямого преобразования, например, блоком 206 обработки преобразования в кодере 20, соответственно.
Варианты осуществления видеокодера 20 (соответственно блока 206 обработки преобразования) могут быть выполнены с возможностью выводить параметры преобразования, например, тип преобразования, например, непосредственно или закодированные или сжатые блоком 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.
КВАНТОВАНИЕ
Блок 208 квантования выполнен с возможностью квантовать коэффициенты 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 преобразования также могут упоминаться как квантованные остаточные коэффициенты 209. Процесс квантования может уменьшить глубину в битах, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена путем регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры этапов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры этапов квантования), и большие параметры квантования могут соответствовать грубому квантованию (большие размеры шага квантования) или наоборот. Квантование может содержать в себя деление по размеру шага квантования и соответствующее или обратное деквантование, например, посредством блока 210 обратного квантования, может содержать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например HEVC может быть выполнен с возможностью использовать параметр квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основании параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования для восстановления нормы остаточного блока, который может быть изменен из-за масштабирования, используемого при аппроксимации с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантования могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования и сигнализироваться от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шага квантования.
Варианты осуществления видеокодера 20 (соответственно, блок 208 квантования) могут быть выполнены с возможностью выводить параметры квантования (QP), например, непосредственно или закодированы блоком 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Блок 210 обратного квантования выполнен с возможностью применять обратное квантование блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основании или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут называться деквантованными остаточными коэффициентами 211 и соответствовать, хотя обычно не идентичны коэффициентам преобразования из-за потерь при квантовании, коэффициентам 207 преобразования.
Блок 212 обработки обратного преобразования выполнен с возможностью применять обратное преобразование, применяемое блоком 206 обработки преобразования, например, обратное дискретное косинусное преобразование (DCT) или обратное дискретное синусоидальное преобразование (DST) для получения блока 213 обратного преобразования в области выборки. Блок 213 обратного преобразования также может называться деквантованным блоком 213 обратного преобразования или остаточным блоком 213 обратного преобразования.
Блок 214 восстановления (например, сумматор 214) выполнен с возможностью добавлять блок 213 обратного преобразования (то есть, восстановленный остаточный блок 213) к блоку 265 предсказания для получения восстановленного блока 215 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания.
В качестве варианта, буферный блок 216 (или коротко, «буфер» 216), например, линейный буфер 216 выполнен с возможностью буферизации или хранения восстановленного блока 215 и соответствующих значений выборок, например, для внутреннего предсказания. В дополнительных вариантах осуществления кодер может быть выполнен с возможностью использовать нефильтрованные восстановленные блоки и/или соответствующие значения выборок, хранящиеся в блоке 216 буфера, для любого вида оценки и/или предсказания, например, внутреннего предсказания.
Варианты осуществления кодера 20 могут быть выполнены с возможностью, в которых, например, блок 216 буфера используется не только для хранения восстановленных блоков 215 для внутреннего предсказания 254, но также для блока 220 контурного фильтра (не показан на фиг.12) и/или, что, например, блок 216 буфера и блок 230 буфера декодированного изображения образуют один буфер. Дополнительные варианты осуществления могут быть выполнены с возможностью использовать фильтрованные блоки 221 и/или блоки или выборки из буфера 230 декодированных изображений (оба не показаны на фиг.12) в качестве входных данных или основы для внутреннего предсказания 254.
Блок 220 контурного фильтра (или коротко, «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215 для получения отфильтрованного блока 221, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра предназначен для представления одного или более контурных фильтров, таких как фильтр деблокинга, фильтр с адаптивным смещением (SAO) или другие фильтры, например двусторонний фильтр или адаптивный контурный фильтр (ALF), или фильтры повышения резкости или сглаживания, или коллаборативные фильтры. Хотя блок 220 контурного фильтра показан на фиг.12 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221. Буфер 230 декодированного изображения может хранить восстановленные блоки кодирования после того, как блок 220 контурного фильтра выполняет операции фильтрации на восстановленных блоках кодирования.
Блок 220 контурного фильтра (или коротко «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215 для получения фильтрованного блока 221 или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных значений выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр деблокинга, фильтр с адаптивным смещением (SAO) или один или более других фильтров, например адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любую их комбинацию. В одном примере блок 220 контурного фильтра может содержать фильтр деблокинга, SAO фильтр и ALF фильтр. Порядок процесса фильтрации может быть фильтром деблокинга, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивным внутриконтурным формирователем). Этот процесс выполняется перед деблокингом. В другом примере процесс фильтрации деблокинга может также применяться к внутренним краям субблока, например, края аффинных субблоков, края субблоков ATMVP, края субблочного преобразования (SBT) и края внутреннего суб-раздела (ISP). Хотя блок 220 контурного фильтра показан на фиг.12 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может упоминаться как фильтрованный восстановленный блок 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью выводить параметры контурного фильтра (такие как параметры фильтра SAO или параметры фильтра ALF или параметры LMCS), например, непосредственно или закодированы посредством блока 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.
Варианты осуществления кодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью выводить параметры контурного фильтра (такие как информация адаптивного смещения выборки), например, кодируется непосредственно или блоком 270 энтропийного кодирования или любым другим блоком энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра для декодирования.
Буфер 230 декодированных изображений (DPB) может быть памятью опорных изображений, в которой хранятся данные опорных изображений для использования при кодировании видеоданных видеокодером 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память произвольного доступа (DRAM), включающая в себя синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы запоминающих устройств. DPB 230 и буфер 216 могут быть предоставлены одним и тем же запоминающим устройством или отдельными запоминающими устройствами. В некотором примере буфер 230 декодированных изображений (DPB) выполнен с возможностью хранить фильтрованный блок 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью хранить другие ранее отфильтрованные блоки, например, ранее восстановленные и отфильтрованные блоки 221 одного и того же текущего изображения или разных изображений, например, ранее восстановленные изображения и могут предоставлять полные ранее реконструированные, то есть декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. В некотором примере, если восстановленный блок 215 восстанавливается, но без внутриконтурной фильтрации, буфер 230 декодированного изображения (DPB) выполнен с возможностью хранить один или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованные восстановленные выборки, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра или любой другой дополнительно обработанной версией восстановленных блоков или выборок.
Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, выполнен с возможностью принимать или получать блок 203 (текущий блок 203 текущего изображения 201) и данные восстановленного изображения, например, опорные выборки того же (текущего) изображения из буфера 216 и/или данные 231 опорного изображения из одного или множества ранее декодированных изображений из буфера 230 декодированных изображений, и для обработки таких данных для предсказания, то есть для обеспечения блока 265 предсказания, который может быть блоком 245 внешнего предсказания или блоком 255 внутреннего предсказания.
Блок 262 выбора режима может быть выполнен с возможностью выбирать режим предсказания (например, режим внутреннего или внешнего предсказания) и/или соответствующего блока 245 или 255 предсказания, который будет использоваться в качестве блока 265 предсказания для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 262 выбора режима могут быть выполнены с возможностью выбирать режима предсказания (например, из тех, которые поддерживаются блоком 260 обработки предсказания), который обеспечивает наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения) или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает оба. Блок 262 выбора режима может быть выполнен с возможностью определять режим предсказания на основании оптимизации искажения скорости (RDO), то есть выбирать режим предсказания, который обеспечивает оптимизацию искажения с минимальной скоростью или которое связанное искажение скорости, по меньшей мере, удовлетворяет критерию выбора режима предсказания.
Далее будет приведено подробное описание процесса обработки предсказания (например, блока 260 обработки предсказания и выбор режима (например, блоком 262 выбора режима)), выполняемая примерным кодером 20.
В дополнение или альтернативно вышеупомянутым вариантам осуществления в других вариантах осуществления согласно фиг.25, блок 260 выбора режима содержит блок 262 разделения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и выполнен с возможностью принимать или получать исходные данные изображения, например, исходный блок 203 (текущий блок 203 текущего изображения 17) и восстановленные данные изображения, например, фильтрованные и/или нефильтрованные восстановленные выборки или блоки одного и того же (текущего) изображения и/или из одного или множества ранее декодированных изображений, например, из буфера 230 декодированного изображения или другие буферы (например, линейный буфер, не показан). Данные восстановленное изображение используется в качестве данных опорного изображения для предсказания, например, внешнее предсказание или внутреннее предсказание, чтобы получить блок 265 предсказания или предиктор 265.
Блок 260 выбора режима может быть выполнен с возможностью определять или выбирать разделение для режима предсказания текущего блока (включающее в себя отсутствие разделения) и режима предсказания (например, режим внутреннего или внешнего предсказания) и генерировать соответствующий блок 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбирать разделение и режим предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает оба. Блок 260 выбора режима может быть выполнен с возможностью определять режим разделения и предсказания на основании оптимизации искажения скорости (RDO), то есть выбирать режим предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимум», «оптимальный» и т.д. в этом контексте не обязательно относятся к общему «лучшему», «минимуму», «оптимальному» и т.д., но также могут относиться к выполнению прекращения или критерий выбора, такой как значение, превышающее или падающее ниже порогового значения, или другие ограничения, потенциально ведущие к «неоптимальному выбору», но уменьшающие сложность и время обработки.
Другими словами, блок 262 разделения может быть выполнен с возможностью разделять изображение из видеопоследовательности на последовательность блоков дерева кодирования (CTUs), CTU 203 может быть дополнительно разделен на более мелкие блочные разделы или субблоки (которые снова образуют блоки), например, итеративно с использованием разделения дерева квадрантов (QT), двоичного разделения (BT) или троичного дерева (TT) или любой их комбинации и для выполнения, например, предсказания для каждого из разделов блоков или субблоков, в котором выбор режима содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделов или субблоков блока.
Далее более подробно поясняется процесс разделения (например, блоком 260 разделения) и обработка предсказания (блоком 244 внешнего предсказания и блоком 254 внутреннего предсказания), выполняемые примерным видеокодером 20.
Разделение
Блок 262 разделения может быть выполнен с возможностью разделять изображение из видеопоследовательности на последовательность блоков дерева кодирования (CTUs) и блок 262 разделения может разделять (или разбивать) блок 203 дерева кодирования (CTU) на меньшие разделы, например, блоки меньшего размера квадратного или прямоугольного размера. Для изображения, которое имеет три массива выборок, CTU состоит из блока N×N выборок яркости вместе с двумя соответствующими блоками выборок цветности. Максимально допустимый размер блока яркости в CTU определен равным 128×128 в развивающемся универсальном кодировании видео (VVC), но в будущем может быть указано значение, отличное от 128×128, например 256×256. CTUs изображения могут быть сгруппированы как группы сегментов/плиток, плитки или элементы. Плитка покрывает прямоугольную область изображения, и плитку можно разделить на один или более прямоугольных элементов. Прямоугольный элемент состоит из ряда CTU строк в пределах плитки. Плитку, не разделенную на несколько прямоугольных элементов, можно назвать кирпичом. Однако кирпич является истинным подмножеством плитки и не упоминается как плитка. В VVC поддерживаются два режима групп плиток, а именно, режим группы сегментов/плиток с растровым сканированием и режим прямоугольного сегмента. В режиме группы плитки с растровым сканированием группа сегментов/плиток содержит последовательность плиток с растровым сканированием изображения. В режиме прямоугольного сегмента сегмент содержит несколько кирпичей изображения, которые вместе образуют прямоугольную область изображения. Кирпичи в пределах прямоугольного сегмента находятся в порядке растрового сканирования сегмента. Эти меньшие блоки (которые также могут называться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например, на корневом уровне 0 дерева (уровень 0 иерархии, глубина 0) может быть рекурсивно разделен, например, разделен на два или более блока следующего более низкого уровня дерева, например, узлы на уровне 1 дерева (уровень 1 иерархии, глубина 1), в котором эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень 2 дерева (уровень 2 иерархии, глубина 2) и т.д., пока не будет завершено разделение, например, при выполнении критерия прекращения, например, достигается максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT) и дерево, использующее разделение на четыре раздела, называется деревом квадрантов (QT).
Например, блок дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTBs выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть блоком N×N выборок для некоторого значения N, так что разделение компонента на CTBs является разделением. Блок кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемые для кодирования выборок. Соответственно, блок кодирования (CB) может быть блоком M×N выборок для некоторых значений M и N, так что разделение CTB на блоки кодирования является разделением.
В вариантах осуществления, например, в соответствии с HEVC, блок дерева кодирования (CTU) может быть разделен на CUs с использованием структуры дерева квадратов, обозначенной как дерево кодирования. Решение о том, кодировать ли область изображения с использованием внешнего (временного) или внутреннего (пространственного) предсказания, принимается на уровне листового CU. Каждый листовой CU может быть дополнительно разделен на один, два или четыре PUs в соответствии с типом разделения PU. Внутри одного PU применяется тот же процесс предсказания, и соответствующая информация передается в декодер на основании PU. После получения остаточного блока путем применения процесса предсказания на основании типа разделения PU, листовой CU может быть разделен на блоки преобразования (TUs) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU.
В вариантах осуществления, например, в соответствии с последним разрабатываемым в настоящее время стандартом кодирования видео, который называется универсальным кодированием видео (VVC), объединенное дерево с множеством типов вложенного дерева квадратов с использованием двоичной и троичной структуры разделения, например, используемой для разделения блока дерева кодирования. В структуре дерева кодирования в пределах блока дерева кодирования CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (CTU) сначала разделяется деревом квадрантов. Затем листовые узлы дерева квадрантов могут быть дополнительно разделены с помощью многотипной древовидной структуры. Существует четыре типа разделения в многотипной древовидной структуре: вертикальное двоичное разделение (SPLIT_BT_VER), горизонтальное двоичное разделение (SPLIT_BT_HOR), вертикальное троичное разделение (SPLIT_TT_VER) и горизонтальное троичное разделение (SPLIT_TT_HOR). Листовые узлы многотипного дерева называются блоками кодирования (CUs) и, если CU не слишком велик для максимальной длины преобразования, эта сегментация, используемая для предсказания и обработки преобразования без какого-либо дополнительного разделения. Это означает, что в большинстве случаев CU, PU и TU имеют одинаковый размер блока в дереве квадрантов с вложенной структурой блока кодирования многотипного дерева. Исключение возникает, когда максимальная поддерживаемая длина преобразования меньше, чем ширина или высота цветового компонента CU. VVC разрабатывает уникальный механизм сигнализации информации о разделении разделов в дереве квадрантов с вложенной древовидной структурой кодирования многотипного дерева. В механизме сигнализации блок дерева кодирования (CTU) рассматривается как корень дерева квадрантов и сначала разделяется структурой дерева квадрантов. Каждый листовой узел дерева квадрантов (если он достаточно большой, чтобы его можно было использовать) затем дополнительно разделяется многотипной древовидной структурой. В многотипной древовидной структуре сигнализируется первый флаг (mtt_split_cu_flag) для указания, следует ли дополнительно разделять узел; когда узел дополнительно разбивается на разделы, сигнализируется второй флаг (mtt_split_cu_vertical_flag) для указания направления разделения, и затем сигнализируется третий флаг (mtt_split_cu_binary_flag) для указания, является ли разделение двоичным разделением или троичным разделением. На основании значений mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag, режим разделения многотипного дерева (MttSplitMode) CU может быть получен декодером на основании заданного правила или таблицы. Следует отметить, что для определенной структуры, например, для блока 64×64 яркости и конвейерной обработки 32×32 цветности в аппаратных декодерах VVC, разделение TT запрещено, если ширина или высота блока кодирования яркости больше 64, так как показано на фиг.6. Разделение TT также запрещено, если ширина или высота блока кодирования цветности больше 32. Структура конвейерной обработки разделит изображение на блоки данных виртуального конвейера (VPDUs), которые определены как неперекрывающиеся блоки в изображении. В аппаратных декодерах последовательные блоки (VPDUs) обрабатываются несколькими этапами конвейера одновременно. Размер VPDU примерно пропорционален размеру буфера на большинстве этапов конвейера, поэтому важно, чтобы размер VPDU был небольшим. В большинстве аппаратных декодеров размер VPDU может быть установлен равным максимальному размеру блока преобразования (ТВ). Однако в VVC разделение троичного дерева (TT) и двоичного дерева (BT) может привести к увеличению размера VPDUs.
Дополнительно, следует отметить, что, когда часть блока узла дерева превышает нижнюю или правую границу изображения, блок узла дерева принудительно разделяется до тех пор, пока все выборки каждого кодированного CU не окажутся внутри границ изображения.
В качестве примера, инструмент внутренних суб-разделов (ISP) может разделять блоки яркости с внутренним предсказанием по вертикали или горизонтали на 2 или 4 суб-раздела в зависимости от размера блока.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнять любую комбинацию способов разделения, описанных в данном документе. Как описано выше, кодер 20 выполнен с возможностью определять или выбирать наилучший или оптимальный режима предсказания из набора (предопределенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или усреднение) и планарный режим, или направленные режимы, например, как определено в H.265, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как DC режим (или усредненный) и планарный режим, или направленные режимы, например, как определено для VVC. Например, несколько обычных режимов углового внутреннего предсказания адаптивно заменяются режимами широкоугольного внутреннего предсказания для неквадратных блоков, например как определено в VVC. В качестве другого примера, чтобы избежать операций деления для предсказания DC, только длинная сторона используется для вычисления среднего для неквадратных блоков. И результаты внутреннего предсказания планарного режима могут быть дополнительно модифицированы с помощью способа комбинации позиционно-зависимого внутреннего предсказания (PDPC).
Блок 254 внутреннего предсказания выполнен с возможностью использовать восстановленные выборки соседних блоков одного и того же текущего изображения для генерирования блока 265 внутреннего предсказания согласно режиму внутреннего предсказания набора режимов внутреннего предсказания.
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью выводить параметры внутреннего предсказания (или, в общем, информацию, указывающую выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 кодированного изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Набор (или возможные) режимов внешнего предсказания зависит от доступных опорных изображений (то есть, предшествующих, по меньшей мере, частично декодированных изображений, например, сохраненных в DBP 230) и других параметров внешнего предсказания, например будь то опорное изображение целиком или только его часть, например, окно поиска области вокруг области текущего блока, опорного кадра используется для поиска наилучшего соответствия опорного блока и/или, например, применяется ли интерполяция пикселей, например, интерполяция пол/полупикселя, четверти пикселя и/или 1/16 пикселя или нет.
В дополнение к вышеупомянутым режимам предсказания может применяться режим пропуска, прямой режим и/или другой режим внешнего предсказания.
Например, при расширенном предсказании слияния составляется список кандидатов на слияние для такого режима путем использования следующих пяти типов кандидатов по порядку: пространственный MVP из пространственных соседних CUs, временный MVP из совместно размещенных CUs, MVP на основании истории из таблицы FIFO, попарный средний MVP и нулевые MVs. И может применяться уточнение вектора движения на стороне декодера (DMVR) на основании двустороннего сопоставления для повышения точности MVs режима слияния. Режим слияния с MVD (MMVD), который получают из режима слияния с различиями векторов движения. Непосредственно после отправки флага пропуска и флага слияния сигнализируется флаг MMVD для указания, используется ли режим MMVD для CU. И может применяться схема адаптивного разрешения вектора движения (AMVR) на уровне CU. AMVR позволяет кодировать MVD CU с разной точностью. В зависимости от режима предсказания для текущего CU, могут адаптивно выбираться MVDs текущего CU. Когда CU кодируется в режиме слияния, к текущему CU может применяться комбинированный режим внутреннего/внутреннего предсказания (CIIP). Для получения предсказания CIIP выполняется взвешенное усреднение сигналов внутреннего и внутреннего предсказания. Предсказания с компенсацией аффинного движения, поле аффинного движения блока описывается информацией о движении двух контрольных точек (4 параметра) или трех векторов движения контрольных точек (6 параметров). Временное предсказание вектора движения на основании субблоков (SbTMVP), которое аналогично временному предсказанию вектора движения (TMVP) в HEVC, но предсказывает векторы движения суб-CUs в текущем CU. Двунаправленный оптический поток (BDOF), ранее называвшийся BIO, является более простой версией, требующей гораздо меньших вычислений, особенно с точки зрения количества умножений и размера умножителя. Режим треугольного разделения, в таком режиме CU делится равномерно на два треугольных раздела с использованием либо диагонального разделения, либо анти диагонального разделения. Кроме того, режим двунаправленного предсказания выходит за рамки простого усреднения для обеспечения взвешенного усреднения двух сигналов предсказания.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.
Блок 260 обработки предсказания может быть дополнительно выполнен с возможностью разделять блок 203 на более мелкие части или подблоки, например итеративно с использованием разделения дерева квадрантов (QT), двоичного разделения (BT) или разделения троичного дерева (TT) или любой их комбинации, и для выполнения, например, предсказания для каждого из разделов или подблоков блока, в котором выбор режима содержит выбор древовидной структуры разделенного блока 203 и режимов предсказания, применяемых к каждому из разделов или субблоков блока.
Блок 244 внешнего предсказания может содержать в себя блок оценки движения (ME) (не показан на фиг.2) и блок компенсации движения (MC) (не показан на фиг.2). Блок оценки движения выполнен с возможностью принимать или получать блок 203 изображения (блока 203 текущего изображения текущего изображения 201) и декодированного изображения 231 или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленные блоки одного или множества других/различных ранее декодированных изображений 231 для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбирать опорный блок из множества опорных блоков одинаковых или различных изображений из множества других изображений и предоставляет опорное изображение (или индекс опорного кадра, ...) и/или смещение (пространственное смещение) между положением (X, Y) координатами опорного блока и положением текущего блока в качестве взаимосвязанных параметров предсказания в блок оценки движения (не показан на фиг.2). Это смещение также называется вектором движения (MV).
Блок компенсации движения выполнен с возможностью получать, например, принимать параметр внешнего предсказания и выполнять внешнее предсказание на основании или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может содержать выборку или генерирование блока предсказания на основании вектора движения/блока, определяемого оценкой движения, возможно выполнение интерполяции до субпиксельной точности. Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей, таким образом потенциально увеличивая количество кандидатов блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений.
Блок 254 внутреннего предсказания выполнен с возможностью получать, например, принимать, блок 203 изображения (текущий блок изображения) и один или множество ранее восстановленных блоков, например восстановленные соседние блоки одного и того же изображения для внутренней оценки. Кодер 20 может, например, быть выполнен с возможностью выбирать режим внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.
Варианты осуществления кодера 20 могут быть выполнены с возможностью выбирать режим внутреннего предсказания на основании критерия оптимизации, например, минимальный остаток (например, режим внутреннего предсказания, обеспечивающий блок 255 предсказания, наиболее похожий на текущий блок 203 изображения) или искажение с минимальной скоростью.
Блок 254 внутреннего предсказания дополнительно выполнен с возможностью определять на основании параметра внутреннего предсказания, например, выбранный режим внутреннего предсказания, блок 255 внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания для блока, блок 254 внутреннего предсказания также выполнен с возможностью предоставлять параметр внутреннего предсказания, то есть, информацию, указывающую выбранный режим внутреннего предсказания для блока в блок 270 энтропийного кодирования. В одном примере блок 254 внутреннего предсказания может быть выполнен с возможностью выполнять любую комбинацию описанных ниже способов внутреннего предсказания.
Блок 270 энтропийного кодирования выполнен с возможностью применять алгоритм или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CALVC), схемы арифметического кодирования, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанное на синтаксисе контекстно-адаптивное двоичное арифметическое кодирование (SBAC), энтропийное кодирование с интервалом вероятности (PIPE) или другие технологии или способы энтропийного кодирования) на квантованных остаточных коэффициентах 209, параметрах внешнего предсказания, параметре внутреннего предсказания и/или параметрах контурного фильтра, индивидуально или совместно (или не полностью) для получения данных 21 закодированного изображения, которые могут выводиться выходом 272, например, в форме кодированного битового потока 21. Закодированный битовый поток 21 может быть передан в видеодекодер 30 или заархивирован для последующей передачи или извлечения видеодекодером 30. Блок 270 энтропийного кодирования может быть дополнительно выполнен с возможностью энтропийного кодирования других элементов синтаксиса для кодируемого текущего сегмента видео.
Для кодирования видеопотока могут использоваться другие структурные вариации видеокодера 20. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для определенных блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
На фиг.13 показан пример видеодекодера 30, который выполнен с возможностью реализации способов настоящего изобретения. Видеодекодер 30 выполнен с возможностью принимать данные 21 кодированного изображения (например, кодированного битового потока), например, кодируемые кодером 100, для получения декодированного изображения 131. Во время процесса декодирования видеодекодер 30 принимает из видеокодера 100 видеоданные, например, кодированный битовый поток видео, который представляет блоки изображения кодированного сегмента видео и ассоциированные элементы синтаксиса.
В примере на фиг.13, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированных изображений и блок 360 обработки предсказания. Блок 360 обработки предсказания может содержать в себя блок 344 внешнего предсказания, блок 354 внутреннего предсказания и блок 362 выбора режима. Видеодекодер 30 может, в некоторых примерах, выполнять процесс декодирования, в целом, обратный этапу кодирования, описанный применительно к видеокодеру 100 на фиг. 12.
Как объяснялось в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 декодированных изображений (DPB), блок 344 внешнего предсказания и блок 354 внутреннего предсказания также называется формированием «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичным по функциям блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функциям блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функциям контурному фильтру 220 и буфер 330 декодированных изображений может быть идентичен по функциям буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применяются соответственно к соответствующим блокам и функциям видеодекодера 30.
Блок 304 энтропийного декодирования выполнен с возможностью выполнять энтропийное декодирование данных 21 закодированного изображения для получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на фиг.13), например, (декодированный) любой или все параметры внешнего предсказания, параметр внутреннего предсказания, параметры контурного фильтра и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования дополнительно выполнен с возможностью пересылать параметры внешнего предсказания, параметр внутреннего предсказания и/или другие элементы синтаксиса в блок 360 обработки предсказания. Видеодекодер 30 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне видеоблока.
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, данных 21 закодированного изображения) и выполнять, например, энтропийное декодирование для данных 21 кодированного изображения для получения, например, квантованных коэффициентов 309 и/или параметров декодированного кодирования (не показано на фиг.13), например, любой или все из параметров внешнего предсказания (например, опорный индекс изображения и вектор движения), параметров внутреннего предсказания (например, режим внутреннего предсказания или индекс), параметров преобразования, параметров квантования, параметров контурного фильтра и/или других элементов синтаксиса. Блок 304 энтропийного декодирования может быть выполнен с возможностью применять алгоритмы или схемы декодирования, соответствующие схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставлять параметры внешнего предсказания, параметр внутреннего предсказания и/или другие элементы синтаксиса в блока 360 режима и другие параметры для других блоков декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне сегмента видео и/или уровне видеоблока. В дополнение или в качестве альтернативы могут приниматься и/или использоваться в качестве сегментов и соответствующих синтаксических элементов, групп плиток и/или плитки и соответствующие элементы синтаксиса.
Блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичным по функциям блоку 112 обработки обратного преобразования, блок 314 восстановления может быть идентичным по функциям блоку 114 восстановления, буфер 316 может быть идентичен по функциям буферу 116, контурный фильтр 320 может быть идентичен по функции контурному фильтру 120 и буфер 330 декодированного изображения может быть идентичен по функциям буферу 130 декодированного изображения.
Варианты осуществления декодера 30 могут содержать блок разделения (не показан на фиг.13). В одном примере блок 360 обработки предсказания видеодекодера 30 может быть выполнен с возможностью выполнять любую описанную выше комбинацию способов разделения.
Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания и блок 354 внутреннего предсказания, в котором блок 344 внешнего предсказания может напоминать блок 144 внешнего предсказания по функциям и блок 354 внутреннего предсказания может напоминать блок 154 внутреннего предсказания по функциям. Блок 360 обработки предсказания обычно выполнен с возможностью выполнять предсказания блока и/или получать блок 365 предсказания из закодированных данных 21, а также принимать или получать (явно или неявно) относящиеся к предсказанию параметры и/или информацию о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.
Когда сегмент видео кодируется, как сегмент с внутренним кодированием (I), блок 354 внутреннего предсказания блока 360 обработки предсказания выполнен с возможностью генерировать блок 365 предсказания для блока изображения текущего сегмента видео на основании сигнализируемого режима внутреннего предсказания и данных из ранее декодированных блоков текущего кадра или изображения. Когда видеокадр кодируется как внешне кодируемый (то есть B или P) сегмент, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 обработки предсказания выполнен с возможностью формировать блоки 365 предсказания для видеоблока текущего сегмента видео на основании векторов движения и других элементов синтаксиса, принятых из блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть получены из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может составлять списки опорных кадров, список 0 и список 1, используя способы построения по умолчанию на основании опорных изображений, хранящихся в DPB 330.
Блок 360 обработки предсказания выполнен с возможностью определять информацию предсказания для видеоблока текущего сегмента видео путем анализа векторов движения и других элементов синтаксиса и использовать информацию предсказания для получения блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 обработки предсказания использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков сегмента видео, типа сегмента внешнего предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информацию о построении для одного или более списков опорных изображений для сегмента, векторы движения для каждого внешне кодированного видеоблока сегмента, статус внешнего предсказания для каждого внешне кодированного видеоблока сегмента и другую информацию для декодирования видеоблоков в текущем сегменте видео.
Блок 310 обратного квантования выполнен с возможностью обратного квантования, т.е. деквантования квантованных коэффициентов преобразования, предоставленных в битовом потоке и декодированных блоком 304 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного видеокодером 100 для каждого видеоблока в сегменте видео для определения степени квантования и, аналогичным образом, степени обратного квантования, которое должно быть применено.
Блок 310 обратного квантования может быть выполнен с возможностью принимать параметры квантования (QP) (или, в общем, информацию, относящуюся к обратному квантованию) и квантованные коэффициенты из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применять на основании параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования.
Блок 312 обработки обратного преобразования выполнен с возможностью применять обратное преобразование, например, обратное DCT, обратное целочисленное преобразование или концептуально аналогичный процесс обратного преобразования, к коэффициентам преобразования для получения остаточных блоков в области пикселей.
Блок 312 обработки обратного преобразования может быть выполнен с возможностью принимать деквантованные коэффициенты 311, также называемые коэффициентами 311 преобразования и применять преобразования к деквантованным коэффициентам 311 для получения восстановленных остаточных блоков 213 в области выборки. Восстановленные остаточные блоки 213 также могут называться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью принимать параметры преобразования или соответствующую информацию из данных 21 закодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) для определения преобразования, которое должно применяться к деквантованным коэффициентам 311.
Блок 314 восстановления (например, сумматор 314) выполнен с возможностью добавлять блок 313 обратного преобразования (т.е. восстановленный остаточный блок 313) к блоку 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания.
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр деблокинга, фильтр с адаптивным смещением (SAO) или один или более других фильтров, например, адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любую их комбинацию. В одном примере блок 220 контурного фильтра может содержать фильтр деблокинга, фильтр SAO и фильтр ALF. Порядок процесса фильтрации может быть фильтром деблокинга, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивным внутриконтурным формирователем). Этот процесс выполняется до деблокинга. В другом примере процесс фильтра деблокинга может также применяться к внутренним краям субблока, например, края аффинных субблоков, края субблоков ATMVP, края субблочного преобразования (SBT) и края внутреннего суб-раздела (ISP). Хотя на фиг. 13 показан блок 320 контурного фильтра как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.
Затем декодированные видеоблоки 321 в данном кадре или изображении сохраняются в буфере 330 декодированных изображений, в котором хранятся опорные изображения, используемые для последующей компенсации движения.
Затем декодированные видеоблоки 321 изображения сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или для вывода, соответственно, для отображения.
Декодер 30 выполнен с возможностью выводить декодированное изображение 331, например, через выход 332 для представления или просмотра пользователю.
Для декодирования сжатого битового потока могут использоваться другие варианты видеодекодера 30. Например, декодер 30 может формировать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30 без преобразования может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
В дополнение или альтернативно вышеупомянутым вариантам осуществления в других вариантах осуществления согласно фиг.26, блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения) и блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функциям и выполняет решения о разделении или разбиении и предсказания на основании параметров разделения и/или предсказания или соответствующей информации, полученной из данных 21 закодированного изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 приложения режима может быть выполнен с возможностью выполнения предсказания (внутреннее или внешнее предсказание) для каждого блока на основании восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда сегмент видео кодируется как внутри кодированный (I) сегмент, блок 354 внутреннего предсказания блока 360 приложения режима выполнен с возможностью генерировать блок 365 предсказания для блока изображения текущего сегмента видео на основании сигнализируемого режима внутреннего предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как внешне кодируемый (то есть, B или P) сегмент, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 приложения режима выполнен с возможностью формирования блоков 365 предсказания для видеоблока текущего сегмента видео на основании векторов движения и других элементов синтаксиса, принятых из блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть сформированы из одного из опорных изображений в одном из списков опорных изображений. Видеодекодер 30 может составлять списки опорных кадров, список 0 и список 1, используя способы построения по умолчанию на основании опорных изображений, хранящихся в DPB 330. То же самое или подобное может применяться для вариантов осуществления с использованием групп плиток (например, групп плиток видео) и/или плиток (например, плитки видео) в дополнение или в качестве альтернативы сегментам (например сегменты видео), например, видео может быть закодировано с использованием групп плиток I, P или B и/или плиток.
Блок 360 приложения режима выполнен с возможностью определять информацию предсказания для видеоблока текущего сегмента видео путем анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для формирования блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 приложения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков сегмента видео, типа сегмента внешнего предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информации о построении для одного или более списков опорных изображений для сегмента, векторов движения для каждого внешне кодированного видеоблока сегмента, статус внешнего предсказания для каждого внешне кодированного видеоблока сегмента и другую информацию для декодирования видеоблоков в текущем сегменте видео. То же самое или подобное может применяться для вариантов осуществления или посредством вариантов с использованием групп плиток (например, групп плиток видео) и/или плиток (например, плитки видео) в дополнение или альтернативно к сегментам (например, сегментам видео), например, видео может быть закодировано с использованием групп плиток I, P или B и/или плиток.
Варианты осуществления видеодекодера 30, как показано на фиг.13, могут быть выполнены с возможностью разделять и/или декодировать изображения с использованием сегментов (также называемых сегментами видео), в котором изображение может быть разделено на или декодировано с использованием одного или более сегментов (обычно без перекрытия), и каждый сегмент может содержать один или более блоков (например, CTUs) или одну или более групп блоков (например, плитки (H.265/HEVC и VVC) или блоки (VVC)).
Варианты осуществления видеодекодера 30, как показано на фиг.13, могут быть выполнены с возможностью разделять и/или декодировать изображения с использованием групп сегментов/плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), в котором изображение может быть разделено на или декодировано с использованием одного или более групп сегментов/плиток (обычно не перекрывающихся) и каждая группа сегментов/плиток может содержать, например, один или более блоков (например, CTUs) или одну или более плиток, в котором каждая плитка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTUs), например, полные или дробные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 закодированного изображения. Например, декодер 30 может формировать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное преобразование квантования остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
Следует понимать, что в кодере 20 и декодере 30 результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после интерполяционной фильтрации, вывода вектора движения или контурной фильтрации может выполняться дополнительная операция, такая как ограничение или сдвиг, над результатом обработки интерполяционной фильтрации, вывода вектора движения или контурной фильтрации.
Фиг.14 является схемой устройства 400 кодирования видео согласно варианту осуществления настоящего изобретения. Устройство 400 кодирования видео подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 кодирования видео может быть декодером, таким как видеодекодер 30 по фиг.11A или кодер, такой как видеокодер 20 по фиг. 11А. В варианте осуществления устройство 400 кодирования видео может быть одним или более компонентами видеодекодера 30 по фиг.11A или видеокодер 20 по фиг.11A, как описано выше.
Устройство 400 кодирования видео содержит входные порты 410 и блоки 420 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 передатчика (Tx) и выходные порты 450 для передачи данных; и память 460 для хранения данных. Устройство 400 кодирования видео может также содержать оптико-электрические (OE) компоненты и электрические-оптические (EO) компоненты, подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для вывода или ввода оптических или электрических сигналов.
Процессор 430 реализован аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), FPGAs, ASICs и DSPs. Процессор 430 связан с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит блок 470 кодирования. Блок 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, блок 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Таким образом, использование блока 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 кодирования видео и обеспечивает преобразование устройства 400 кодирования видео в другое состояние. В качестве альтернативы блок 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.
Память 460 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую память с произвольным доступом (SRAM).
Фиг.15 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства 310 источника и устройства 320 назначения по фиг.11 согласно примерному варианту осуществления. Устройство 500 может реализовывать способы настоящего изобретения, описанные выше. Устройство 500 может быть выполнено в форме вычислительной системы, включающей в себя несколько вычислительных устройств, или в форме одного вычислительного устройства, например, мобильного телефона, планшетного компьютера, портативного компьютера, портативного компьютера, настольного компьютера, и тому подобное.
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.
В реализации память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или устройством оперативной памяти (RAM). В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может содержать в себя код и данные 506, к которым обращается процессор 502 с использованием шины 512. Память 504 может дополнительно содержать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя, по меньшей мере, одну программу, которая позволяет процессору 502 выполнять описанные в настоящем документе способы. Например, прикладные программы 510 могут содержать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы. Устройство 500 также может включать в себя дополнительную память в виде вторичного запоминающего устройства 514, которое может, например, быть картой памяти, используемой с мобильным вычислительным устройством. Поскольку сеансы видеосвязи могут содержать значительный объем информации, они могут быть сохранены полностью или частично во вторичном хранилище 514 и загружены в память 504 по мере необходимости для обработки. Устройство 500 также может включать в себя одно или более устройств вывода, таких как дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным распознавать сенсорные вводы. Дисплей 518 может быть подключен к процессору 502 через шину 512.
Устройство 500 также может содержать в себя одно или более устройств вывода, таких как дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным распознавать сенсорные вводы. Дисплей 518 может быть соединен с процессором 502 через шину 512. Другие устройства вывода, которые позволяют пользователю программировать или иным образом использовать устройство 500, могут быть предоставлены в дополнение к дисплею 518 или в качестве альтернативы ему или содержит в себя дисплей, дисплей может быть реализован различными способами, в том числе с помощью жидкокристаллического дисплея (LCD), дисплея с электронно-лучевой трубкой (CRT), плазменного дисплея или дисплея на светоизлучающих диодах (LED), например, органического светодиодного (OLED) дисплея.
Устройство 500 также может включать в себя устройство 520 формирования изображений, например камеру, или любое другое устройство 520 формирования изображений, существующее в настоящее время или разработанное в дальнейшем, которое может воспринимать изображение, такое как изображение пользователя, управляющего устройством, или взаимодействовать с устройством 500. Устройство 520 формирования изображений может быть расположено так, чтобы оно было направлено к пользователю, работающему с устройством 500. В примере положение и оптическая ось устройства 520 формирования изображений могут быть выполнены таким образом, чтобы поле зрения включало бы в себя область, которая непосредственно примыкает к дисплею 518 и из которой дисплей 518 виден.
Устройство 500 также может содержать в себя устройство 522 обнаружения звука, например, микрофон, или любое другое звуковое устройство, существующее в настоящее время или разработанное в будущем, которое может воспринимать звуки рядом с устройством 500, или взаимодействовать с ним. Устройство 522 обнаружения звука может быть расположено так, чтобы было направлено на пользователя, работающего с устройством 500, и может быть выполнено с возможностью принимать звуки, например, речь или другие звуки, издаваемые пользователем, когда пользователь управляет устройством 500.
Хотя фиг.15 изображает процессор 502 и память 504 устройства 500 как интегрированные в единый блок, могут использоваться другие конфигурации. Операции процессора 502 могут быть распределены между несколькими машинами (каждая машина имеет один или более процессоров), которые могут быть связаны напрямую или через локальную область или другую сеть. Память 504 может быть распределена между несколькими машинами, такими как сетевая память или память на нескольких машинах, выполняющих операции устройства 500. Хотя изображена как одна шина, шина 512 устройства 500 может состоять из нескольких шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один интегрированный блок, такой как карта памяти, или более блоков, например, несколько карт памяти. Таким образом, устройство 500 может быть реализовано в широком разнообразии конфигураций.
ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯ, ОНОСЯЩИЕСЯ К СВЯЗИ МЕЖДУ ЭЛЕМЕНТАМИ ОГРАНИЧЕНИЯ РАЗДЕЛЕНИЯ
Настоящее изобретение относится к отношениям между элементами ограничения разделения (установка правил разделения для различных способов разделения изображения), к элементам ограничения, которые могут сигнализироваться через битовый поток, который включает в себя множество кодированных изображений. Соответственно, изобретение предлагает устройства и способы для генерирования, декодирования или обработки такого битового потока, в частности, включающий в себя элементы ограничения разделения в битовом потоке, и извлечение элементов ограничения разделения согласно новым правилам разделения.
Следует отметить, что названия вышеописанных элементов синтаксиса используются (в этом документе) в том виде, в котором они используются обычно. Однако должно быть понятно, что эти названия можно изменить без изменения технического контекста. Следовательно, что следует считать важным логическое значение элементов синтаксиса.
В настоящее время элементы ограничения разделения (например, MaxBtSizeY, MaxMttDepth и MinQtSizeY) сигнализируются индивидуально в их диапазоне определения. В частности, в данный момент, элемент CtbSizeY (т.е. log2_ctu_size_minus2) синтаксиса и элементы MinQtSizeY (т.е. log2_min_qt_size_intra_slices_minus2 и log2_min_qt_size_inter_slices_minus2) синтаксиса и элементы MaxMttDepth (т.е. max_mtt_hierarchy_depth_inter_slices и max_mtt_hierarchy_depth_intra_slices) синтаксиса сигнализируется в наборе параметров последовательности (SPS). Кроме того, элемент синтаксиса разницы между размером CTB яркости и MaxBtSizeY (то есть log2_diff_ctu_max_bt_size) сигнализируется в заголовке сегмента. SPS и заголовок сегмента могут содержаться в битовом потоке изображения.
Примерный синтаксис SPS, в частности синтаксис полезной нагрузки необработанной байтовой последовательности (RBSP) SPS, показан на фиг. 8. Семантика SPS RBSP этого синтаксиса следующая.
«Pic_width_in_luma_samples» определяет ширину каждого декодированного изображения в блоках выборок яркости, не должен быть равен 0 и должен быть целым числом, кратным MinCbSizeY.
«Pic_height_in_luma_samples» определяет высоту каждого декодированного изображения в блоках выборок яркости, не должен быть равен 0 и должен быть целым числом, кратным MinCbSizeY.
«Log2_ctu_size_minus2» плюс 2 определяет размер CTB яркости каждого CTU.
Элементы CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSixeInSamplesY, PicWidthInSamplesC и PicHeightInSamplesC обычно получены, как ниже указано.
• CtbLog2SizeY = log2_ctu_size_minus2 + 2
• CtbSizeY = 1 << CtbLog2SizeY
• MinCbLog2SizeY = 2
• MinCbSizeY = 1 << MinCbLog2SizeY
• MinTbSizeY = 4
• MaxTbSizeY = 64
• PicWidthInCtbsY = Ceil (pic_width_in_luma_samples ÷ CtbSizeY)
• PicHeightInCtbsY = Ceil (pic_height_in_luma_samples ÷ CtbSizeY)
• PicSizeInCtbsY = PicWidthInCtbsY * PicHeightInCtbsY
• PicWidthInMinCbsY = pic_width_in_luma_samples / MinCbSizeY
• PicHeightInMinCbsY = pic_height_in_luma_samples / MinCbSizeY
• PicSizeInMinCbsY = PicWidthInMinCbsY * PicHeightInMinCbsY
• PicSizeInSamplesY = pic_width_in_luma_samples * pic_height_in_luma_samples
• PicWidthInSamplesC = pic_width_in_luma_samples / SubWidthC
• PicHeightInSamplesC = pic_height_in_luma_samples / SubHeightC
«Log2_min_qt_size_intra_slices_minus2» плюс 2 определяет минимальный размер яркости листового блока, полученного в результате разделения дерева квадрантов CTU на сегменты с slice_type, равным 2 (I). Значение log2_min_qt_size_intra_slices_minus2 должно быть в диапазоне от 0 до CtbLog2SizeY - 2 включительно.
• MinQtLog2SizeIntraY = log2_min_qt_size_intra_slices_minus2 + 2
«Log2_min_qt_size_inter_slices_minus2» плюс 2 определяет минимальный размер яркости листового блока, полученного в результате разделения дерева квадрантов CTU на сегменты с slice_type, равным 0 (B) или 1 (P). Значение log2_min_qt_size_inter_slices_minus2 должно быть в диапазоне от 0 до CtbLog2SizeY - 2 включительно.
• MinQtLog2SizeInterY = log2_min_qt_size_inter_slices_minus2 + 2
«Max_mtt_hierarchy_depth_inter_slices» определяет максимальную глубину иерархии для блоков кодирования, полученные в результате разделения многотипного дерева листового дерева квадрантов на сегменты с slice_type, равным 0 (B) или 1 (P). Значение max_mtt_hierarchy_depth_inter_slices должно быть в диапазоне от 0 до CtbLog2SizeY - MinTbLog2SizeY включительно.
«Max_mtt_hierarchy_depth_intra_slices» определяет максимальную глубину иерархии для блоков кодирования, полученные в результате разделения многотипного дерева листового дерева квадрантов на сегменты с slice_type, равным 2 (I). Значение max_mtt_hierarchy_depth_intra_slices должно быть в диапазоне от 0 до CtbLog2SizeY - MinTbLog2SizeY включительно.
Кроме того, фиг.9 показывает примерный синтаксис заголовка сегмента. Семантика заголовка фрагмента этого синтаксиса следующая.
«Log2_diff_ctu_max_bt_size» определяет разницу между размером CTB яркости и максимальным размером яркости (шириной или высотой) блока кодирования, который может быть разделен с использованием двоичного разделения. Значение log2_diff_ctu_max_bt_size должно быть в диапазоне от 0 до CtbLog2SizeY - MinCbLog2SizeY включительно.
Когда log2_diff_ctu_max_bt_size отсутствует, значение log2_diff_ctu_max_bt_size предполагается равным 2.
Элементы MinQtLog2SizeY, MaxBtLog2SizeY, MinBtLog2SizeY, MaxTtLog2SizeY, MinTtLog2SizeY, MaxBtSizeY, MinBtSizeY, MaxTtSizeY, MinTtSizeY и MaxMttDepth обычно выводятся следующим образом:
• MinQtLog2SizeY = (slice_type = = I)? MinQtLog2SizeIntraY: MinQtLog2SizeInterY
• MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size
• MinBtLog2SizeY = MinCbLog2SizeY
• MaxTtLog2SizeY = (slice_type = = I)? 5: 6
• MinTtLog2SizeY = MinCbLog2SizeY
• MinQtSizeY = 1 << MinQtLog2SizeY
• MaxBtSizeY = 1 << MaxBtLog2SizeY
• MinBtSizeY = 1 << MinBtLog2SizeY
• MaxTtSizeY = 1 << MaxTtLog2SizeY
• MinTtSizeY = 1 << MinTtLog2SizeY
• MaxMttDepth = (slice_type = = I)? max_mtt_hierarchy_depth_intra_slices: max_mtt_hierarchy_depth_inter_slices
Как показано на фиг.8, в настоящее время ширина и высота последовательности изображений (например, изображений видеопоследовательности) указываются с использованием элементов «pic_width_in_luma_samples» и «pic_height_in_luma_samples» синтаксиса. Обычно эти элементы синтаксиса должны быть кратными MinCbSizeY, чтобы гарантировать, что изображение может быть разделено на блоки кодирования с минимальным размером. Однако, хотя pic_height_in_luma_samples и pic_width_in_luma_samples должны быть кратными MinCbSizeY, по-прежнему не гарантируется, что изображение может быть полностью разделено на блоки с использованием доступных способов разделения дерева квадрантов, двоичного дерева и троичного дерева, соответственно. Ниже приведено пояснение примера данного аспекта:
В качестве примера предполагается, что:
• MinCbSizeY равен 4
• MinQtSizeY равен 32
• MaxBtSizeY равен 16
В этом примере, если pic_width_in_luma_samples = 132 и pic_width_in_luma_samples = 132, хотя ширина и высота изображения кратны 4, все же невозможно полностью разделить изображение. Причина в том, что родительский блок, например, размер 32×32 не может быть разделен с использованием двоичного разделения или разделения дерева квадрантов, потому что, если будет применено разделение дерева квадрантов, ограничение MinQtSizeY будет нарушено и, если будет применено двоичное разделение, будет нарушено ограничение MaxBtSizeY. Другими словами, невозможно сгенерировать блок с шириной или высотой, равной 4, что, однако, необходимо для полного разделения изображения.
Таким образом, как проиллюстрировано выше, в настоящее время необходимо решить техническую задачу разделения изображения с полным соблюдением обычных правил разделения. Фактически, данная техническая задача является весьма сложной, поскольку это означает, что некоторые размеры изображения не могут быть закодированы и не могут быть декодированы.
Фиг.1 показывает устройство 100 согласно общему варианту осуществления изобретения. Устройство 100 выполнено с возможностью генерировать или обрабатывать, то есть, манипулировать битовым потоком 101, включающий в себя закодированные изображения, например, битовый поток видео. Устройство 100 может находиться в или может содержать кодер, выполненный с возможностью кодировать изображения и генерировать битовый поток 101. Устройство 100 может определять отношения между элементами ограничения разделения и может включать в битовый поток 101 эти элементы ограничения разделения и/или их отношения. Таким образом, устройство 100 может добавлять элементы ограничения разделения и/или отношения к синтаксису SPS и/или синтаксису заголовка сегмента в битовом потоке 101.
Подобным образом устройство декодера анализирует битовый поток и/или получает из битового потока и применяя заданные правила, параметры ограничения, относящиеся к разделению. Затем параметр ограничения помогает правильно декодировать и восстанавливать разделы. Кодер и декодер используют (обрабатывают) один и тот же синтаксис.
В частности, устройство 100 выполнено с возможностью определять MaxBtSizeY 102 и/или определять MaxMttDepth 103 и MinCbSizeY 104. Затем устройство 100 выполнено с возможностью определять MinQtSizeY 105 на основании MaxBtSizeY 102 и/или на основании MaxMttDepth 103 и MinCbSizeY 104. Наконец, устройство 100 выполнено с возможностью включать в битовый поток 101 определенный MinQtSizeY 105 либо косвенно (то есть, путем использования информации, из которой может быть получен MinQtSizeY 105), либо напрямую.
В устройстве 100 согласно первому конкретному варианту осуществления изобретения, которое основано на устройстве 100, показанном на фиг.1, диапазон значений MinQtSizeY 105 может быть ограничен на основании значения MaxBtSizeY 102. Например, верхняя граница MinQtSizeY 105 может быть ограничена MaxBtSizeY 102. Другими словами, в устройстве 100 согласно первому конкретному варианту осуществления минимальное значение MinQtSizeY 105 не может быть больше MaxBtSizeY 102.
В качестве альтернативы или в дополнение к вышесказанному в устройстве 100 согласно первому конкретному варианту осуществления диапазон значений MinQtSizeY 105 может быть ограничен на основании MaxMttDepth 103. В этом случае, например:
• Если MaxMttDepth 103 равно 0, MinQtSizeY 105 может быть равен (или может быть получен как) MinCbSizeY 104.
• Если MaxMttDepth 103 больше 0, верхняя граница MinQtSizeY 105 может быть равна (MinCbSizeY 104 << MaxMttDepth 103). Другими словами, MinQtSizeY 105 не должен быть больше (MinCbSizeY 104 << MaxMttDepth 103).
Примечательно, что в этом документе операция x << y может быть математически описана как xy, где x равно 2 в степени n, где n является неотрицательным целым числом. Другими словами, x << y представляет собой сдвиг x на y бит влево.
Таким образом, устройство 100 согласно первому конкретному варианту осуществления выполнено с возможностью устанавливать отношения между MinQtSizeY 105 и MinCbSizeY 104, MaxBtSizeY 102 и/или MaxMttDepth 103, в частности, таким образом, чтобы наименьший блок раздела мог быть получен путем рекурсивного разделения родительского блока, используя комбинацию способов разделения дерева квадрантов или двоичного разделения. Поскольку наименьший блок (размер которого указан MinCbSizeY 104) может быть сгенерирован с помощью доступных способов разделения, можно полностью разделить изображение, размер которого кратен MinCbSizeY 104.
Фиг.2 и фиг.3 показывают синтаксис 200 SPS RPBS и синтаксис 300 заголовка сегмента для устройства согласно второму конкретному варианту осуществления изобретения. В частности, традиционный синтаксис SPS RBSP, показанный на фиг.8 изменен на синтаксис 200, показанный на фиг.2 (новые элементы выделены жирным шрифтом, удаленные - перечеркнутыми). Кроме того, традиционный синтаксис заголовка сегмента, показанный на фиг.9, изменен на синтаксис 300, показанный на фиг.3 (новые элементы выделены жирным шрифтом, удаленные элементы зачеркнуты). Устройство согласно второму конкретному варианту осуществления может быть выполнено на основании устройства 100, показанном на фиг.1, или может быть отдельным вариантом осуществления изобретения. В устройстве по второму конкретному варианту реализовано:
• MaxBtSizeY 102 сигнализируется в битовом потоке 101 относительно MinQtSizeY 105. Другими словами, как показано на фиг.3, элемент 301 синтаксиса разницы между MaxBtSizeY 102 и MinQtSizeY 105 может быть сигнализирован в битовом потоке 101 (с использованием, например, элемента синтаксиса, такого как log2_diff_max_bt_size_min_qt_size), и может быть получен MaxBtSizeY 102 (например, в декодере битового потока 101) на основании MinQtSizeY 105 и log2_diff_max_bt_size_min_qt_size. В этом случае, в примере:
- MaxBtSizeY 102 = MinQtSizeY 105 << log2_diff_max_bt_size_min_qt_size
- Необходимо отметить, что в этом примере элемент 301 синтаксиса разницы между MaxBtSizeY 102 и MinQtSizeY 105 сигнализируется в логарифмическом масштабе (в частности, по основанию 2). В этом примере log2_diff_max_bt_size_min_qt_size может иметь только положительные целочисленные значения или нулевое значение.
• MaxMttDepth 103 сигнализируется в битовом потоке 101 относительно MinQtSizeY 105 и MinCbSizeY 104. Как показано на фиг. 2, элемент 201 синтаксиса разницы между MaxMttDepth 103 и значением log-2 MinQtSizeY 105 может сигнализироваться в битовом потоке 101 (например, с использованием элемента синтаксиса:
diff_max_mtt_hierarchy_depth_log2_min_qt_size). Два таких элемента 201 синтаксиса показаны на фиг. 2, один для inter_slices, один для intra_slices. В этом случае в примере:
- MaxMttDepth 103 = diff_max_mtt_hierarchy_depth_log2_min_qt_size + log2 (MinQtSizeY) - log2 (MinCbSizeY).
- Необходимо отметить, что в этом примере снова предполагается, что diff_max_mtt_hierarchy_depth_log2_min_qt_size отображается в логарифмическом масштабе. Функция log2 (x) соответствует логарифму x по основанию 2.
На фиг.3, «log2_diff_max_bt_size_min_qt_size» определяет разницу между максимальным размером яркости (шириной или высотой) блока кодирования, который может быть разделен с использованием двоичного разделения, и минимальным размером яркости (шириной или высотой) блока кодирования, который может быть разделен с использованием дерева квадрантов. Значение log2_diff_ctu_max_bt_size должно находиться в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeY включительно.
Фиг.4 показывает синтаксис 400 SPS RPBS для устройства согласно третьему конкретному варианту осуществления изобретения. Устройство согласно третьему конкретному варианту осуществления может быть выполнено на устройстве 100, показанном на фиг. 1, или может быть отдельным вариантом осуществления изобретения. Как упоминалось ранее, обычно каждый из сигнализированных элементов 405 и 406 размера изображения (pic_width_in_luma_samples и pic_height_in_luma_samples) определяется как значение, кратное целому числу MinCbSizeY 104.
Напротив, в первой реализации устройства согласно третьему конкретному варианту осуществления элементы 405 и 406 размера изображения могут быть ограничены, чтобы иметь только значения, которые являются целыми кратными MinQtSizeY 105. Преимущество этого заключается в том, что граничный блок всегда может иметь в качестве доступного способа разделения разделение дерева квадрантов.
Во второй реализации устройства согласно третьему конкретному варианту осуществления ширина и высота изображения могут сигнализироваться в битовом потоке 101 на основании MinQtSizeY 105. В частности, традиционный синтаксис SPS RBSP, показанный на фиг.8, изменяется согласно синтаксису 400, показанному на фиг.4 (новые элементы выделены жирным шрифтом, удаленные - перечеркнутыми).
В этом случае в синтаксисе 400 SPS, показанном на фиг.4, четыре элемента 401-404 синтаксиса могут сигнализироваться (например, log2_diff_pic_height_min_Qt и log2_diff_pic_width_min_Qt), в частности, два элемента синтаксиса (высота/ширина) на intra_slice и два элемента синтаксиса (высота/ширина) на inter_slice. Предпочтительно, эти элементы 401-404 синтаксиса сигнализируются вместо элементов 405 и 406 фактического размера изображения, и ширина и высота изображения могут быть определены с использованием следующих соотношений:
• Ширина изображения в выборках яркости = MinQtSizeY 105 << log2_diff_pic_width_min_Qt
• Высота изображения в выборках яркости = MinQtSizeY 105 << log2_diff_pic_height_min_Qt
Элементы 401-404 синтаксиса, в частности разницы, могут быть указаны в синтаксисе 400 SPS на основании логарифмической шкалы.
Фиг.5 и фиг.6 показывают синтаксисы 5000 и 600 двух заголовков сегмента, соответственно, для устройства согласно четвертому конкретному варианту осуществления изобретения. Устройство согласно четвертому конкретному варианту осуществления может быть получено на устройстве 100, показанном на фиг. 1, или может быть отдельным вариантом осуществления изобретения.
Устройство согласно четвертому конкретному варианту осуществления изобретения имеет отношение к решению технической задачи, заключающейся в том, что если MaxMttDepth 103 выводится, сигнализируется или указывается как равное 0, MaxBtSizeY 102 (или MaxTtSizeY) все еще может находиться в битовом потоке 101, и может иметь значение больше MinCbSizeY 104, и MinBtSizeY (или MinTtSizeY) все еще может иметь значение, равное MinCbSizeY 104. Это условие может сформировать неоднозначность в работе кодера и/или декодера, так что полное разделение кадра изображения все еще может быть невозможно.
В первой реализации устройства согласно четвертому конкретному варианту осуществления MaxBtSizeY 102 (или MaxTtSizeY) передается или указывается в битовом потоке 101 на основании значения MaxMttDepth 103. В частности, традиционный синтаксис заголовка сегмента, показанный на фиг.9, изменен на синтаксис 5000, показанный на фиг.5 (новые элементы выделены жирным шрифтом). То есть устройство выполнено с возможностью добавлять элемент 5001 синтаксиса MaxBtSizeY 102 (или MaxTtSizeY), зависящего от MaxMttDepth 103, в битовый поток 101.
В частности, когда MaxMttDepth 103 равно 0, MaxBtSizeY 102 (или MaxTtSizeY) может не передаваться в битовом потоке 101, но может быть выведено (например, в декодере) как равное MinCbSizeY 104. В качестве альтернативы MaxBtSizeY 102 (или MaxTtSizeY) выводится (например, в декодере) как равное предварительно определенному значению по умолчанию, например, 4 или 8, если MaxMttDepth 103 равно 0.
«Log2_diff_ctu_max_bt_size» снова определяет разницу между размером CTB яркости и максимальным размером яркости (шириной или высотой) блока кодирования, который может быть разделен с использованием двоичного разделения. Значение log2_diff_ctu_max_bt_size должно быть в диапазоне от 0 до CtbLog2SizeY - MinCbLog2SizeY включительно.
Когда log2_diff_ctu_max_bt_size отсутствует, может применяться следующее: если slice_type равно 2 (I) и max_mtt_hierarchy_depth_intra_slices равно 1, значение log2_diff_ctu_max_bt_size может быть выведено равным_f_b_diff_size, равным 2. В противном случае может быть выведено значение log2_diff_diff, равное 2. В противном случае, log2_diff_ctu_max_bt_size может быть получено равное CtbLog2SizeY - MinCbLog2SizeY.
Во второй реализации устройства согласно четвертому конкретному варианту осуществления MaxMttDepth 103 сигнализируется или указывается в битовом потоке 101 на основании значения MaxBtSizeY 102 (или MaxTtSizeY). В частности, традиционный синтаксис заголовка сегмента, показанный на фиг.9, изменен на синтаксис 600, показанный на фиг. 6 (новые элементы выделены жирным шрифтом). То есть устройство выполнено с возможностью добавления в битовый поток 101 элемента 601 синтаксиса MaxMttDepth 103, зависящего от MaxBtSizeY 102 или MaxTtSizeY.
В частности, когда MaxBtSizeY 102 (или MaxTtSizeY) равно 0, MaxMttDepth 103 может не передаваться, но может быть выведено, например, в декодере должно быть равно 0. Если значение MaxMttDepth 103 равно 0, это означает, что двоичное разделение не допускается. В этом решении элемент MaxBtSizeY 102 синтаксиса и MaxTtSizeY должен сигнализироваться перед MaxMttDepth 103, но не ограничен каким-либо заголовком набора параметров.
«MaxTtSizeY» определяется как максимальный размер яркости (ширина или высота) с точки зрения количества выборок блока кодирования, который может быть разделен с использованием троичного разделения. «MinTtSizeY» определяется как минимальный размер яркости (ширина или высота) с точки зрения количества выборок блока кодирования, который может быть разделен с использованием троичного разделения.
На фиг.6 «max_mtt_hierarchy_depth» определяет максимальную глубину иерархии для блоков кодирования, полученные в результате разделения многотипного дерева листового дерева квадрантов в сегменте. Значение max_mtt_hierarchy_depth_inter_slices должно быть в диапазоне от 0 до CtbLog2SizeY - MinTbLog2SizeY включительно. Когда max_mtt_hierarchy_depth отсутствует, значение max_mtt_hierachiy_depth устанавливается равным 0.
Фиг.7 показывает способ 7000 согласно варианту осуществления изобретения. Способ 7000 предназначен специально для управления битовым потоком 101 и может выполняться устройством 100, показанным на фиг.1. Способ 7000 также может выполняться кодером, кодирующим изображения битового потока 101 в битовый поток 101, т.е. генерирующим битовый поток 101.
Способ 7000 содержит этап 7001 определения MaxBtSizeY 102 и/или определения MaxMttDepth 103 и MinCbSizeY 104. Кроме того, способ 7000 содержит этап 7002 определения MinQtSizeY 105 на основании MaxBtSizeY 102 и/или на основании MaxMttDepth 103 и MinCbSizeY 104. Наконец, способ 7000 содержит этап 7003, включение в битовый поток 101 определенное значение MinQtSizeY 105.
Фиг.10 показывает устройство 1000 согласно общему варианту осуществления изобретения. Устройство 1000 выполнено с возможностью генерировать или обрабатывать, то есть манипулировать битовым потоком 101, включающий в себя закодированные изображения, например, битовый поток видео. Устройство 1000 может быть включено в или может содержать кодер, выполненный с возможностью кодировать изображения и генерировать битовый поток 101. Устройство 1000 может определять отношения между элементами ограничения разделения и может включать в битовый поток 101 эти элементы ограничения разделения и/или их отношения. Таким образом, устройство 1000 может добавлять элементы ограничения разделения и/или отношения к синтаксису SPS и/или синтаксису заголовка сегмента в битовый поток 101. Устройство 1000 является альтернативой устройству 100, показанному на фиг. 1. Однако признаки устройства 1000, поясняемые ниже со ссылкой на фиг.10 могут быть объединены с описанными выше признаками устройств согласно первому, второму, третьему или четвертому конкретным вариантам осуществления (если они не основаны на устройстве 100 на фиг. 1).
В частности, устройство 1000 выполнено с возможностью определять MinQtSizeY (105). Кроме того, выполнено с возможностью определять MaxBtSizeY 102 и/или определять MaxMttDepth 103 на основании MinQtSizeY 105. Наконец, выполнено с возможностью включать в битовый поток (101) определенный MaxBtSizeY 102 и/или определенный MaxMttDepth 103 либо косвенно (т.е. путем включения информации, из которой могут быть получены значения MaxBtSizeY 102 и/или MaxMttDepth 103) или напрямую.
Например, устройство 1000 может определять MaxBtSizeY 102 с учетом того, что его нижний предел является MinQtSizeY 105. То есть диапазон значений MaxBtSizeY 102 может быть ограничен значением MinQtSizeY 105. Например, нижняя граница MaxBtSizeY 102 может быть ограничивается MinQtSizeY 105. Другими словами, в устройстве 1000 минимальное значение MaxBtSizeY 102 не может быть меньше MinQtSizeY 105.
В качестве альтернативы или в дополнение к вышесказанному, в устройстве 1000 MaxMttDepth 103 может быть определен с учетом того, что его верхний предел представляет собой разницу значения log2 MinQtSizeY 105 и значения log2 MinCbSizeY 104. То есть максимальное значение MaxMttDepth 103 не может быть больше, чем разница между значением log2 MinQtSizeY 105 и значением log2 MinCbSizeY 104.
Таким образом, первый аспект изобретения предоставляет устройство для генерирования или обработки битового потока, включающий в себя закодированные изображения, причем устройство выполнено с возможностью определять MaxBtSizeY и/или определять MaxMttDepth и MinCbSizeY, определять MinQtSizeY на основании MaxBtSizeY и/или на основании MaxMttDepth и MinCbSizeY и включать в битовый поток определенный MinQtSizeY.
Путем определения MinQtSizeY на основании MaxBtSizeY и/или на основании MaxMttDepth и MinCbSizeY, то есть путем определения новых правил разделения посредством установки отношений между этими элементами ограничения разделения, устройство первого аспекта достигает увеличения доступности и гибкости различных способов разделения изображения, в частности разделение дерева квадрантов и двоичного дерева.
В форме реализации первого аспекта устройство выполнено с возможностью определять MinQtSizeY с учетом того, что его верхним пределом является MaxBtSizeY, и/или определять MinQtSizeY с учетом того, что его верхним пределом является MinCbSizeY в зависимости от MaxMttDepth.
Устанавливая такие связи между элементами MinQtSizeY, MinCbSizeY, MaxBtSizeY и MaxMttDepth ограничения разделения, соответственно, гарантируется, что может быть получен наименьший блок разделения путем рекурсивного разделения родительского блока с использованием комбинации способов разделения дерева квадрантов или двоичного разделения. Поскольку наименьший блок (размер которого указывается MinCbSizeY) может быть сгенерирован с помощью доступных способов разделения, можно полностью разделить изображение, размер которого кратен MinCbSizeY.
В дополнительной форме реализации первого аспекта устройство выполнено с возможностью определять MinQtSizeY как MinCbSizeY, если MaxMttDepth равно нулю, и определять MinQtSizeY как MinCbSizeY в зависимости от MaxMttDepth, если MaxMttDepth больше нуля.
Это обеспечивает эффективную форму реализации предшествующей формы реализации для обеспечения полного разделения изображения с использованием дерева квадрантов и разделения двоичного дерева, соответственно.
Второй аспект изобретения предоставляет устройство для генерирования или обработки битового потока, включающий в себя закодированные изображения, в котором устройство выполнено с возможностью: определять MinQtSizeY, определять MaxBtSizeY и/или определять MaxMttDepth на основании MinQtSizeY, и
включать в битовый поток определенное значение MaxBtSizeY и/или определенное значение MaxMttDepth.
В форме реализации второго аспекта устройство выполнено с возможностью определять MaxBtSizeY с учетом того, что его нижний предел равен MinQtSizeY, и/или определять MaxMttDepth с учетом того, что его верхний предел является разницую значения log2 MinQtSizeY и log2 значения MinCbSizeY.
Как и в первом аспекте, второй аспект определяет новые правила разделения посредством установки отношений между элементами ограничения разделения. Таким образом, устройство второго аспекта обеспечивает повышение доступности и гибкости различных способов разделения изображения, в частности разделение дерева квадрантов и двоичного дерева.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью включать в битовый поток указание отношения, в частности разницы между MinQtSizeY и MaxBtSizeY.
Таким образом, можно легко получить соответствующие элементы ограничения разделения, например, на стороне декодера, с одновременным сокращением информационных накладных расходов в битовом потоке. Разница является примером отношения. Однако отношение также может быть коэффициентом пропорциональности, схемой вычисления и т.п., что позволяет получить MaxBtSizeY из MinQtSizeY.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью включения в битовый поток указание отношения, в частности разницы, между значением log 2 MinQtSizeY и MaxMttDepth.
Таким образом, можно получить соответствующие элементы ограничения разделения, например, на стороне декодера, с одновременным уменьшением информационных накладных расходов в битовом потоке.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью определять один или более элементов размера изображения, которые указывают размер, в частности высоту и ширину, изображений битового потока, как целое кратное MinQtSizeY, и включить в битовый поток один или более элементов размера изображения.
Как следствие, граничный блок всегда может иметь разделение дерева квадрантов в качестве доступного способа разделения.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью определять один или более элементов размера изображения, которые указывают размер, в частности высоту и ширину, изображений битового потока, и включать в битовый поток указание отношение между элементами размера изображения и MinQtSizeY.
Таким образом, можно получить соответствующие элементы ограничения разделения, например, на стороне декодера, с одновременным уменьшением информационных накладных расходов в битовом потоке.
В дополнительной форме реализации первого или второго аспекта указание соотношения между элементами размера изображения и MinQtSizeY основано на логарифмической форме.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью включения в битовый поток указания MaxBtSizeY или MaxTtSizeY в зависимости от MaxMttDepth.
Таким образом устраняется неоднозначность, обычно возникающая в работе кодера и/или декодера, и становится возможным полное разделение кадра изображения.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью не включать в битовый поток какое-либо указание MaxBtSizeY или MaxTtSizeY, если MaxMttDepth равно нулю.
Это позволяет уменьшить информационные издержки в битовом потоке.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью включать в битовый поток указание MaxMttDepth, зависящий от MaxBtSizeY или MaxTtSizeY.
Таким образом устраняется неоднозначность, обычно возникающая в работе кодера и/или декодера, и становится возможным полное разделение кадра изображения.
В дополнительной форме реализации первого или второго аспекта устройство выполнено с возможностью не включать в битовый поток какое-либо указание MaxMttDepth, если MaxBtSizeY или MaxTtSizeY равно нулю.
Это позволяет уменьшить информационные издержки в битовом потоке.
В дополнительной форме реализации первого или второго аспекта устройство содержит или включено в кодер, выполненный с возможностью кодировать изображения битового потока.
Третий аспект изобретения предоставляет способ для генерирования или обработки битового потока, включающего в себя закодированные изображения, в котором способ содержит: определение MaxBtSizeY и/или определение MaxMttDepth и MinCbSizeY, определение MinQtSizeY на основании MaxBtSizeY и/или на основании MaxMttDepth и MinCbSizeY, и включение в битовый поток определенного MinQtSizeY.
В форме реализации третьего аспекта способ содержит определение MinQtSizeY с учетом того, что его верхним пределом является MaxBtSizeY, и/или определение MinQtSizeY с учетом того, что его верхним пределом является MinCbSizeY в зависимости от MaxMttDepth.
В дополнительной форме реализации третьего аспекта способ содержит определение MinQtSizeY как MinCbSizeY, если MaxMttDepth равно нулю, и определение MinQtSizeY как MinCbSizeY в зависимости MaxMttDepth, если MaxMttDepth больше нуля.
В дополнительной форме реализации третьего аспекта способ содержит включение в битовый поток указания отношения, в частности разницы, между MinQtSizeY и MaxBtSizeY.
В дополнительной форме реализации третьего аспекта способ содержит включение в битовый поток указания отношения, в частности разницы между MinQtSizeY и MaxMttDepth.
В дополнительной форме реализации третьего аспекта способ содержит определение одного или более элементов размера изображения, которые указывают размер, в частности высоту и ширину, изображений битового потока, как целое кратное MinQtSizeY, и включение в битовый поток одного или более элементов размера изображения.
В дополнительной форме реализации третьего аспекта способ содержит определение одного или более элементов размера изображения, которые указывают размер, в частности высоту и ширину, изображений битового потока, и включение в битовый поток указания отношения между элементами размера изображения и MinQtSizeY.
В дополнительной форме реализации третьего аспекта указание соотношения между элементами размера изображения и MinQtSizeY основано на логарифмической шкале.
В дополнительной форме реализации третьего аспекта способ содержит включение в битовый поток указания MaxBtSizeY или MaxTtSizeY в зависимости от MaxMttDepth.
В дополнительной форме реализации третьего аспекта способ содержит не включение в битовый поток какого-либо указания MaxBtSizeY или MaxTtSizeY, если MaxMttDepth равно нулю.
В дополнительной форме реализации третьего аспекта способ содержит включение в битовый поток указания MaxMttDepth, зависящий от MaxBtSizeY или MaxTtSizeY.
В дополнительной форме реализации третьего аспекта способ содержит не включение в битовый поток какого-либо указания MaxMttDepth, если MaxBtSizeY или MaxTtSizeY равно нулю.
В дополнительной форме реализации третьего аспекта способ выполняется в кодере, кодирующем изображения битового потока.
С помощью способа третьего аспекта и форм его реализации могут быть достигнуты все преимущества и эффекты, описанные выше для соответствующего устройства первого аспекта и его соответствующих форм реализации. Дополнительным аспектом изобретения является способ генерирования или обработки битового потока, соответствующего устройству второго аспекта.
Четвертый аспект изобретения предоставляет устройство для генерирования или обработки битового потока, включающего в себя закодированные изображения, в котором устройство выполнено с возможностью включать в битовый поток указание отношения, в частности разницы, между MinQtSizeY и MaxBtSizeY и/или включать в битовый поток указание отношения, в частности разницы, между MinQtSizeY и MaxMttDepth.
Со ссылкой на устройство четвертого аспекта соответствующие элементы ограничения разделения могут сигнализироваться с одновременным уменьшением служебной информации в битовом потоке. Элементы ограничения разделения могут быть получены, например, на стороне декодера. Устройство четвертого аспекта обеспечивает повышение доступности и гибкости различных способов разделения изображения, в частности разделения дерева квадрантов и двоичного дерева.
Пятый аспект изобретения предоставляет устройство для генерирования или обработки битового потока, включающий в себя закодированные изображения, в котором устройство выполнено с возможностью: определять один или более элементов размера изображения, которые указывают размер, в частности высоту и ширину, изображений битового потока, который должен быть целым числом, кратным MinQtSizeY, и включать в битовый поток один или более элементов размера изображения; или определять один или более элементов размера изображения, которые указывают размер, в частности высоту и ширину, изображений битового потока, и включать в битовый поток указание отношения между элементами размера изображения и MinQtSizeY.
Согласно пятому аспекту, в качестве доступного способа разделения граничный блок всегда может иметь разделение дерева квадрантов. Кроме того, могут быть получены соответствующие элементы ограничения разделения, например, на стороне декодера, с одновременным уменьшением информационных накладных расходов в битовом потоке. Устройство по пятому аспекту обеспечивает повышение доступности и гибкости различных способов разделения изображения, в частности разделения дерева квадрантов и двоичного дерева.
Шестой аспект изобретения предоставляет устройство для генерирования или обработки битового потока, включающего в себя закодированные изображения, устройство выполнено с возможностью: включать в битовый поток указание MaxBtSizeY или MaxTtSizeY в зависимости от MaxMttDepth; или включать в битовый поток указание MaxMttDepth, зависящего от MaxBtSizeY или MaxTtSizeY.
Устройство по шестому аспекту уменьшает или устраняет неоднозначность, обычно возникающую при работе кодера и/или декодера и, таким образом, поддерживает полное разделение кадра изображения. Устройство по шестому аспекту обеспечивает повышение доступности и гибкости различных способов разделения изображения, в частности разделение дерева квадрантов и двоичного дерева.
Седьмой аспект изобретения обеспечивает компьютерный программный продукт, содержащий программный код для управления устройством для выполнения способа третьего аспекта и его соответствующие формы реализации, когда программный код выполняется одним или более процессорами устройства. Устройство может быть устройством первого, второго, четвертого, пятого или шестого аспекта или любой его формы реализации.
Восьмой аспект изобретения предоставляет устройство для декодирования битового потока, генерируемого или обрабатываемого устройством, в соответствии с первым, вторым, четвертым, пятым или шестым аспектом или любой его формой реализации.
ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯ, ОТНОСЯЩИЕСЯ К ГРАНИЧНОМУ РАЗДЕЛЕНИЮ
Стандарт следующего поколения универсального кодирования видео (VVC) является последним совместным проектом исследования видео группы экспертов по кодированию видео (VCEG) Международного союза электросвязи (ITU-T) и Международной организации по стандартизации/Международной электротехнической комиссии (ISO/IEC) организации по стандартизации группы экспертов по движущимся изображениям (MPEG), работающие вместе в рамках партнерства, известного как Joint Video Exploration Team (JVET). В VVC структура сегментации многотипного дерева (двоичное/троичное/квадрантов) (BT/TT/QT или двоичное дерево/троичное дерево/дерево квадрантов) заменяет или может заменить концепцию многотипного разделения блока, т.е. устраняет концепцию разделения CU, PU и TU, за исключением случаев, когда это необходимо для CU, размер которых слишком велик для максимальной длины преобразования, и поддерживает большую гибкость для форм разделения CU. [JVET-J1002].
Фиг.16A-F иллюстрируют, в качестве примера, режимы разделения, используемые в настоящее время в VTM. Фиг.16A показывает неразделенный блок (no split), фиг.16B показывает четвертичное или разделение дерева квадрантов (QT), фиг.16C показывает горизонтальное двоичное разделение или двоичного дерева (BT), фиг.16D показывает вертикальное двоичное разделение или двоичного дерева (BT), фиг.16E показывает горизонтальное троичное разделение или троичного дерева (ТТ), фиг.16F показывает вертикальное троичное или троичное дерево (TT) разделения блока, такого как CU или CTU. Варианты осуществления могут быть выполнены с возможностью реализации режимов разделения, как показано на фиг.16А-16F.
В вариантах осуществления могут быть определены следующие параметры и указаны элементами синтаксиса набора параметров последовательности (SPS) для BT/TT/QT схемы дерева кодирования:
CTU размер: размер корневого узла дерева квадрантов.
MinQTSize: минимально допустимый размер листового узла дерева квадрантов
MaxBTTSize: максимально допустимый размер корневого узла двоичного и троичного дерева.
MaxBTTDepth: максимально допустимая глубина двоичного и троичного дерева, и
MinBTTSize: минимально допустимый размер листового узла двоичного и троичного дерева.
В других вариантах осуществления минимально допустимый размер листового узла дерева квадрантов параметр MinQTSize также может содержаться в других заголовках или наборах, например, заголовке сегмента (SH) или наборе параметров изображения (PPS).
В стандарте HEVC блок дерева кодирования (CTU) или блок кодирования (CU), которые расположены на границах сегмента/изображения, будут принудительно разделены с использованием дерева квадрантов (QT) до тех пор, пока правая нижняя выборка листового узла не будет расположена в пределах границы сегмента/изображения. О принудительном разделении QT или разделении не требуется сигнализировать в битовом потоке, так как и кодер, и декодер, например, и видеокодер 20, и видеодекодер 30 имеют информацию о применении принудительной QT. Задачей принудительного разделения является предоставление границы CTU/CU с помощью видеокодера 20/видеодекодера 30.
Международная патентная публикация номер WO 2016/090568 раскрывает структуру QTBT (дерево квадрантов плюс двоичное дерево), а также в VTM 1.0 унаследован от HEVC процесс принудительного разделения CTU/CU на границе. Это означает, что CTU/CU, расположенный на границе кадра, принудительно разделяется структурой дерева квадрантов (QT) без учета оптимизации скорости-искажения (RD) до тех пор, пока весь текущий CU не окажется внутри границы изображения. Эти принудительные разделы не сигнализируются в битовом потоке.
Фиг.17A показывает пример принудительного разделения для CTU нижней границы (128×128) высокого разрешения (HD) (1920×1080 пикселей), разделенного принудительным QT. На фиг.17, изображение высокой четкости имеет разрешение 1920×1080 пикселей и CTU имеет размер 128×128 пикселей или составляет 128×128 пикселей.
В SubCE2 (обработка границ изображения) CE1 (разделение) на совещании в Сан-Диего (04.2018) [JVET-J1021] было предложено 15 тестов относительно обработки границ изображения с использованием BT, TT или ABT (асимметричное BT). Например, в JVET-K0280 и JVET-K0376 граница определяется, как показано на фиг.18. Фиг.18 показаны границы изображения пунктирными линиями, и области граничных случаев показаны прямыми линиями, а именно, нижний граничный случай, угловой граничный случай и правый граничный случай. Нижняя граница может быть разделена горизонтальным принудительным BT или принудительным QT, правая граница может быть разделена вертикальным принудительным BT или принудительным QT и угловой случай может быть разделен только принудительным QT, в котором решение об использовании любого из принудительных BT или принудительное разделение QT основано на критерии оптимизации искажения скорости и сигнализируется в битовом потоке. Принудительное разделение означает, что блок должен быть разделен, например, принудительное разделение применяется к граничным блокам, которые нельзя кодировать с использованием «без разделения», как показано на фиг.16A.
Если в принудительном граничном разделении используется принудительное разделение QT, то ограничение разделения MinQTSize игнорируется. Например, на фиг.13A, если MinQTSize сигнализируется в SPS как 32, чтобы соответствовать границе с принудительным способом QT, будет необходимо разделение QT до размера блока 8×8, что игнорирует ограничение MinQTSize, равное 32.
Согласно вариантам осуществления изобретения, если для разделения границ изображения используется принудительное QT, то выполняется принудительное разделение QT, например, не игнорируется ограничение разделения, как указано, например, в SPS. Если необходимо дополнительное принудительное разделение, используется только принудительное BT, которое в комбинации также может называться принудительным QTBT. В вариантах осуществления изобретения, например, для принудительного разделения QT на границах изображения учитывается ограничение разделения MinQTSize, и никакой дополнительной сигнализации для принудительного разделения BT не требуется. Варианты осуществления также позволяют согласовывать разделение для нормальных (не граничных) блоков и граничных блоков. Например. в традиционных решениях требуются два параметра «MinQTSize»: один для разделения нормальных блоков, а другой для разделения граничных блоков. Варианты осуществления требуют только одного общего параметра «MinQTSize» для разделения как нормального блока, так и граничного блока, который может гибко устанавливаться между кодером и декодером, например, сигнализируя один параметр «MinQTSize». Кроме того, варианты осуществления требуют меньше разделов, чем, например, принудительное QT.
Решения для случая нижней границы и правой границы
В случае нижней и правой границы, если размер блока больше, чем MinQTSize, то режим разделения для разделения граничного изображения может быть выбран между принудительным разделением BT и принудительным разделением QT, например, на основании RDO (оптимизация скорости-искажения). В противном случае (т.е. если размер блока равен или меньше MinQTSize), для разделения границ изображения используется только принудительное разделение BT, более конкретно, принудительное горизонтальное разделение BT используется для нижней границы соответственно для граничного блока, расположенного на нижней границе изображения и вертикальное принудительное BT используется для правой границы, соответственно, для граничного блока, расположенного на правой границе изображения.
Принудительное разделение BT может содержать рекурсивное разделение текущего блока с помощью горизонтального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не окажется на нижней границе изображения, и рекурсивное разделение суб-раздела с помощью вертикального принудительного граничного разделения до тех пор, пока листовой узел полностью не будет расположен на правой границе изображения. В качестве альтернативы принудительное разделение BT может содержать рекурсивное разделение текущего блока с помощью вертикального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не окажется на нижней границе, и рекурсивное разделение суб-раздела с помощью горизонтального принудительного граничного разделения до тех пор, пока листовой узел будет полностью расположен на правой границе. MinQTSize может применяться также для управления разделением неграничного блока.
Например, в случае, показанном на фиг.17A, если MinQTSize равен или ограничен 32, в то время как для соответствия границе изображения требуется размер прямоугольного (неквадратного) блока высотой или шириной 8 выборок, для разделения 32×32 граничного блока будет использоваться принудительное разделение BT. Разделы BT могут быть дополнительно разделены с помощью принудительного разделения BT того же типа, например, в случае применения принудительного вертикального разделения BT применяется только дополнительное принудительное вертикальное разделение BT, а в случае применения принудительного горизонтального разделения BT применяется только дополнительное принудительное горизонтальное разделение BT. Принудительное разделение BT продолжается до тех пор, пока листовой узел полностью не окажется в пределах изображения.
Фиг.17B показывает примерное разделение CTU нижней границы с размером 128×128 выборок согласно варианту осуществления изобретения. Нижний граничный CTU, который образует корневой блок или корневой узел дерева разделения, разбит на более мелкие разделы, например, блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие разделы или блоки могут быть дополнительно разделены на еще меньшие разделы или блоки. На фиг.17B, CTU представляет собой первое дерево квадратов, разделенное на четыре квадратных блока 710, 720, 730 и 740, каждый из которых имеет размер 64×64 выборок. Из этих блоков блоки 710 и 720 снова являются нижними граничными блоками, тогда как блоки 730 и 740 находятся вне изображения (соответственно, находятся вне изображения) и не обрабатываются.
Блок 710 дополнительно разделяется с использованием дерева квадрантов на четыре квадратных блока 750, 760, 770 и 780, каждый из которых имеет размер 32×32 выборки. Блоки 750 и 760 расположены в пределах изображения, тогда как блоки 770 и 780 снова образуют нижние граничные блоки. Поскольку размер блока 770 не превышает MinQTSize, который, например, равен 32, к блоку 770 применяется рекурсивное горизонтальное принудительное двоичное разделение до тех пор, пока листовой узел не окажется полностью в пределах или полностью внутри изображения, например, пока блок 772 листового узла, прямоугольный неквадратный блок, имеющий 32×16 выборок, находится в пределах изображения (после одного горизонтального двоичного разделения), или блок 774 листового узла, прямоугольный неквадратный блок, расположенный на нижней границе изображения и имеющий 32×8 выборок, находятся в пределах изображения (после двух горизонтальных двоичных разбиений). То же самое относится к блоку 780.
Варианты осуществления настоящего изобретения позволяют согласовать разделение для нормальных блоков, полностью расположенных внутри изображения, и разделение граничных блоков. Граничные блоки являются блоками, которые не полностью находятся внутри изображения и не полностью вне изображения. Иными словами, граничные блоки представляют собой блоки, которые содержат часть, которая расположена в пределах изображения, и часть, которая расположена за пределами изображения. Кроме того, варианты осуществления настоящего изобретения позволяют уменьшить сигнализацию, поскольку о принудительном разделении BT на уровне MinQTSize или ниже сигнализация не требуется.
Решения для углового случая
В угловом случае некоторые подходы допускают только принудительное разделение QT, которое также игнорирует ограничение MinQTSize. Варианты осуществления настоящего изобретения предоставляют два решения для углового случая. Угловой случай возникает, когда обрабатываемый в данный момент блок находится в углу изображения. Это имеет место, если текущий блок пересекает или примыкает к двум границам изображения (вертикальной и горизонтальной).
Решение 1:
Угловой случай рассматривается как нижний граничный случай или как правый граничный случай. Фиг.20 показывает вариант определения границы. Фиг.20 показывает границы изображения пунктирными линиями и области граничных случаев показаны прямыми линиями. Как проиллюстрировано, угловой случай определяется как нижний граничный случай. Таким образом, решение такое же, как описано выше для случая нижней границы и случая правой границы. Другими словами, сначала применяется горизонтальное разделение (как описано для случая нижней границы) до тех пор, пока блоки или разделы не будут полностью в пределах изображения (в вертикальном направлении) и затем применяется вертикальное разделение (как описано для случая правой границы), пока листовые узлы не окажутся полностью в пределах изображения (в горизонтальном направлении).
Решение 2:
Определение граничных случаев остается как есть. Если принудительный QT ограничен MinQTSize (текущий размер блока равен или меньше MinQTSize), использовать принудительную горизонтальную BT для соответствия нижней границе, когда нижняя граница совпадает, использовать принудительную вертикальную BT для соответствия правой границе.
Например, на фиг.19A, который показывает вариант осуществления принудительного QTBT для блока, расположенного в углу изображения, если MinQTSize равен или ограничен 32 для принудительного разделения QT углового случая, будет использоваться дополнительное разделение BT после разделения блока 32×32 до тех пор, пока не будет завершено принудительное разделение.
Фиг.19B показывает дополнительные подробности примерного разделения граничного CTU в или в углу изображения согласно варианту осуществления изобретения, в котором CTU имеет размер 128×128 выборок. CTU является первым деревом квадрантов, разделенное на четыре квадратных блока, каждый размером 64×64 выборок. Из этих блоков только верхний левый блок 910 является граничным блоком, тогда как остальные три расположены вне (полностью вне) изображения и не обрабатываются дополнительно. Блок 910 дополнительно разделяется с использованием дерева квадрантов на четыре квадратных блока 920, 930, 940 и 950, каждый из которых имеет размер 32×32 выборок. Блок 920 расположен внутри изображения, тогда как блоки 930, 940 и 950 снова образуют граничные блоки. Поскольку размер этих блоков 930, 940 и 950 не превышает MinQTSize, который равен 32, принудительное двоичное разделение применяется к блокам 930, 940 и 950.
Блок 930 расположен на правой границе и разделяется с использованием рекурсивного вертикального принудительного двоичного разделения до тех пор, пока листовой узел не окажется в пределах изображения, например, блок 932, расположенный на правой границе изображения (здесь после двух вертикальных двоичных разбиений).
Блок 940 расположен на нижней границе и разделяется с использованием рекурсивного горизонтального принудительного двоичного разделения до тех пор, пока листовой узел не окажется в пределах изображения, например, блок 942, расположенный на правой границе изображения (здесь после двух горизонтальных двоичных разделений).
Блок 950 расположен на угловой границе и разделяется с использованием первого рекурсивного горизонтального принудительного двоичного разделения до тех пор, пока суб-раздел или блок, здесь блок 952, не окажется на нижней границе изображения (здесь после двух горизонтальных двоичных разделений), и затем выполняется рекурсивное разделение суб-раздела с помощью вертикального принудительного граничного разделения до листового узла или блока, например, блока 954, расположенного на правой границе изображения (здесь после двух вертикальных двоичных разделений) или, соответственно, до тех пор, пока листовой узел не окажется внутри изображения.
Вышеупомянутые подходы могут применяться как к декодированию, так и к кодированию. Для декодирования MinQTSize может быть принят через SPS. Для кодирования MinQTSize может передаваться через SPS. Варианты осуществления могут использовать определения границ, как показано на фиг.18 или фиг.20, или другие способы определения границ.
Далее представлены дополнительные варианты осуществления настоящего изобретения. Следует отметить, что нумерация, используемая в следующем разделе, не обязательно должна соответствовать нумерации, используемой в предшествующих разделах.
Вариант 1 осуществления. Способ разделения, содержащий:
определение, является ли текущий блок изображения граничным блоком;
если текущий блок является граничным, определение, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов;
если размер текущего блока не превышает минимально допустимый размер листового узла дерева квадрантов, к текущему блоку применяется принудительное разделение двоичного дерева.
Вариант 2 осуществления. Способ разделения по варианту 1 осуществления, в котором принудительное разделение двоичного дерева представляет собой рекурсивное горизонтальное принудительное двоичное разделение в случае, если текущий блок находится на нижней границе изображения, или является рекурсивным вертикальным принудительным граничным разделением в случае, если текущий блок расположен на правой границе изображения.
Вариант 3 осуществления. Способ разделения по варианту 1 или 2 осуществления, в котором принудительное двоичное разделение содержит рекурсивное разделение текущего блока посредством горизонтального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет расположен непосредственно на нижней границе изображения, и рекурсивное разделение суб-раздела с помощью вертикального принудительного граничного разделения до тех пор, пока листовой узел полностью не окажется непосредственно на правой границе изображения, или наоборот.
Вариант 4 осуществления. Способ разделения по любому из вариантов 1-3 осуществления, в котором минимально допустимый размер листового узла дерева квадрантов является минимально допустимым размером листового узла дерева квадрантов, также применяемым для управления разделением неграничного блока.
Вариант 5 осуществления. Способ декодирования для декодирования блока путем разделения блока согласно способу разделения любого из вариантов 1-4 осуществления.
Вариант 6 осуществления. Способ декодирования согласно варианту 5 осуществления, в котором минимально допустимый размер листового узла дерева квадрантов принимается через SPS.
Вариант 7 осуществления. Способ кодирования для кодирования блока путем разделения блока согласно способу разделения по любому из вариантов 1-4 осуществления.
Вариант 8 осуществления. Способ кодирования по варианту 7 осуществления, в котором минимально допустимый размер листового узла дерева квадрантов передается через SPS.
Вариант 9 осуществления. Устройство для декодирования, содержащее логическую схему, выполненную с возможностью выполнять любой из способов вариантов 5 или 6 осуществления.
Вариант 10 осуществления. Устройство для кодирования, содержащее логическую схему, выполненную с возможностью выполнять любой из способов варианта 7 или 8 осуществления.
Вариант 11 осуществления. Постоянный носитель данных для хранения инструкций, когда они выполняются процессором, побуждают процессор выполнять любой из способов согласно вариантам 1-8 осуществления.
В одном или более примерах описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут храниться или передаваться в виде одной или более инструкций или кода на машиночитаемом носителе и выполняться аппаратным процессором. Машиночитаемый носитель может содержать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например, носителю данных, или носителю связи, включающий в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям данных, которые являются энергонезависимыми, или (2) средам связи, таким как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации способов, описанных в настоящем изобретении. Компьютерный программный продукт может содержать в себя машиночитаемый носитель.
В качестве примера, но не ограничения, такие машиночитаемые носители данных могут содержать RAM, ROM, электрически стираемую программируемую постоянную память (EEPROM), CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения требуемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Дополнительно, любое соединение правильно называть машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасный порт, радио и микроволновый сигнал, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволновый сигнал рассматриваются в качестве среды связи. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого относятся к энергонезависимым материальным носителям данных. Диск, как используется в настоящем документе, включает в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом, и диски воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем машиночитаемых носителей.
Инструкции могут выполняться одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSPs), микропроцессоры общего назначения, специализированные интегральные схемы (ASICs), программируемые логические матрицы (FPGAs) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин «процессор», используемый в настоящем описании, может относиться к любой из вышеупомянутой структуре или любой другой структуре, подходящей для реализации описанных способов. Дополнительно, в некоторых аспектах, описанные в настоящем документе, функциональные возможности могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, выполненных с возможностью кодировать и декодировать или содержащиеся в комбинированном кодеке. Дополнительно, способы могут быть полностью реализованы в одной или более схемах или логических элементах.
Способы настоящего изобретения могут быть реализованы в большом количестве устройств или приспособлений, включающие в себя беспроводной телефон, интегральную схему (IC) или набор ICs (например, набор микросхем). В настоящем изобретении описаны различные компоненты, модули или блоки для представления функциональных аспектов устройств, выполненных с возможностью выполнять раскрытые технологии, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, включающий в себя один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или встроенным программным обеспечением.
Устройство содержит элемент памяти; и элемент процессора, соединенный с элементом памяти и выполненный с возможностью определять, является ли текущий блок изображения граничным блоком, определять, когда текущий блок является граничным блоком, определять, превышает ли размер текущего блока минимально допустимый размер (MinQTSize) дерева квадрантов (QT) и применять, когда размер текущего блока не превышает MinQTSize, принудительное разделение двоичного дерева (BT) к текущему блоку.
Хотя в настоящем изобретении представлено несколько вариантов осуществления, следует понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах без отступления от сущности или объема настоящего изобретения. Настоящие примеры следует рассматривать как иллюстративные, а не как ограничительные, и настоящее изобретение не ограничиваться приведенными в настоящем документе деталями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы.
Дополнительно, способы, системы, подсистемы и технологии, описанные и проиллюстрированные в различных вариантах осуществления как отдельные или дискретные, могут быть объединены или интегрированы с другими системами, модулями, технологиями или способами без отклонения от объема настоящего изобретения. Другие элементы, показанные или обсуждаемые как связанные или непосредственно связанные или взаимодействующие друг с другом, могут быть косвенно связаны или взаимодействовать через некоторый интерфейс, устройство или промежуточный компонент, электрически, механически или иным образом. Специалистом в данной области техники могут быть установлены и могут быть выполнены другие примеры изменений, замен и модификаций без отклонения от сущности и объема, раскрытых в данном документе.
Варианты осуществления настоящего изобретения (или настоящего раскрытия) предоставляют устройства и способы для кодирования и декодирования.
Первый аспект относится к способу разделения, содержащему определение, является ли текущий блок изображения граничным блоком и превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов; и, если текущий блок является граничным блоком и размер текущего блока не превышает минимально допустимый размер (MinQTSize) листового узла дерева квадрантов, применение принудительного разделения двоичного дерева (BT) к текущему блоку.
В первой форме реализации способа согласно первому аспекту как таковому принудительное разделение двоичного дерева является рекурсивным горизонтальным принудительным двоичным разделением в случае, если текущий блок расположен на нижней границе изображения, или рекурсивным вертикальным принудительным граничным разделением в случае, если текущий блок расположен на правой границе изображения.
Во второй форме реализации способа согласно первому аспекту как таковому или любой предшествующей форме реализации первого аспекта принудительное разделение двоичного дерева продолжается до тех пор, пока блок листового узла не окажется в пределах изображения.
В третьей форме реализации способа согласно первому аспекту как таковому или любой предшествующей форме реализации первого аспекта принудительное двоичное разделение содержит рекурсивное разделение текущего блока с помощью горизонтального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находиться на нижней границе изображения; и рекурсивное разделение суб-раздела посредством вертикального принудительного граничного разделения до тех пор, пока листовой узел полностью не окажется на правой границе изображения.
В четвертой форме реализации способа согласно первому аспекту как таковому или любой предшествующей форме реализации первого аспекта, принудительное разделение BT содержит рекурсивное разделение текущего блока с помощью вертикального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находится на нижней границе; и рекурсивное разделение суб-раздела посредством горизонтального принудительного граничного разделения до тех пор, пока листовой узел полностью не окажется на правой границе.
В пятой форме реализации способа согласно первому аспекту как таковому или любой предшествующей форме реализации первого аспекта способ дополнительно содержит применение минимально допустимого размера листового узла дерева квадрантов для управления разделением неграничного блока.
В шестой форме реализации способа согласно первому аспекту как таковому или любой предшествующей форме реализации первого аспекта, граничный блок представляет собой блок, который не полностью находится внутри изображения и не полностью вне изображения.
Второй аспект относится к способу декодирования для декодирования блока путем разделения блока согласно первому аспекту как таковому или любой предшествующей форме реализации первого аспекта.
В первой форме реализации способа согласно второму аспекту как таковому способ дополнительно содержит прием минимально допустимого размера листового узла дерева квадрантов через набор параметров последовательности (SPS).
Третий аспект относится к способу кодирования для кодирования блока путем разделения блока в соответствии с первым аспектом как таковым или любой предшествующей формой реализации первого аспекта.
В первой форме реализации способа согласно третьему аспекту как таковому способ дополнительно содержит передачу минимально допустимого размера листового узла дерева квадрантов через набор параметров последовательности (SPS).
Четвертый аспект относится к устройству для декодирования, содержащему логические схемы, выполненные с возможностью декодировать блок путем разделения блока согласно способу разделения первого аспекта как такового или любой предшествующей форме реализации первого аспекта.
В первой форме реализации устройства для декодирования согласно четвертому аспекту как таковому логическая схема дополнительно выполнена с возможностью принимать минимально допустимый размер листового узла дерева квадрантов через набор параметров последовательности (SPS).
Пятый аспект относится к устройству для кодирования, содержащему логические схемы, выполненные с возможностью кодировать блок путем разделения блока согласно способу разделения первого аспекта как такового или любой предшествующей форме реализации первого аспекта.
В первой форме реализации устройства декодирования согласно пятому аспекту как таковому логическая схема дополнительно выполнена с возможностью передавать минимально допустимый размер листового узла дерева квадрантов через набор параметров последовательности (SPS).
Шестой аспект относится к постоянному носителю данных для хранения инструкций, которые при выполнении процессором побуждают процессор выполнять любой из первого, второго или третьего аспекта как такового или любую предшествующую форму реализации первого, второго или третьего аспекта.
Седьмой аспект относится к способу, содержащему определение, что текущий блок изображения является граничным блоком и что размер текущего блока меньше или равен минимально допустимому размеру (MinQTSize) листового узла дерева квадрантов (QT); и применение, в ответ на определение, принудительного разделения двоичного дерева (BT) к текущему блоку.
В первой форме реализации способа согласно седьмому аспекту как таковому, текущий блок расположен на нижней границе изображения, и в котором принудительное разделение BT является рекурсивным горизонтальным принудительным разделением BT.
Во второй форме реализации способа согласно седьмому аспекту как таковому или любой предшествующей форме реализации седьмого аспекта текущий блок расположен на правой границе изображения, и в котором принудительное разделение BT является рекурсивным вертикальным принудительным разделением BT.
В третьей форме реализации способа согласно седьмому аспекту как таковому или любой предшествующей форме реализации седьмого аспекта принудительное разделение BT содержит рекурсивное разделение текущего блока с помощью горизонтального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находиться на нижней границе; и рекурсивное разделение суб-раздела посредством вертикального принудительного граничного разделения до тех пор, пока листовой узел не будет полностью расположен на правой границе.
В четвертой форме реализации способа согласно седьмому аспекту как таковому или любой предшествующей форме реализации седьмого аспекта принудительное разделение BT содержит рекурсивное разделение текущего блока с помощью вертикального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находиться на нижней границе; и рекурсивное разделение подразделения посредством горизонтального принудительного граничного разделения до тех пор, пока листовой узел полностью не окажется на правой границе.
В пятой форме реализации способа согласно седьмому аспекту как таковому или любой предшествующей форме реализации седьмого аспекта способ дополнительно содержит применение MinQTSize для управления разделением неграничного блока.
В шестой форме реализации способа согласно седьмому аспекту как таковому или любой предшествующей форме реализации седьмого аспекта способ дополнительно содержит прием MinQTSize через набор параметров последовательности (SPS).
В седьмой форме реализации способа согласно седьмому аспекту как таковому или любой предшествующей форме реализации седьмого аспекта способ дополнительно содержит передачу MinQTSize через набор параметров последовательности (SPS).
Восьмой аспект относится к устройству, содержащему память; и процессор, соединенный с памятью и выполненный с возможностью определять, является ли текущий блок изображения граничным блоком, определять, когда текущий блок является граничным блоком, определять, превышает ли размер текущего блока минимально допустимый размер (MinQTSize) листового узла дерева квадрантов (QT) и применять, когда размер текущего блока не превышает MinQTSize, принудительное разделение двоичного дерева (BT) к текущему блоку.
В первой форме реализации устройства согласно восьмому аспекту как таковому принудительное разделение BT является рекурсивным горизонтальным принудительным разделением BT, когда текущий блок расположен на нижней границе изображения, или рекурсивным вертикальным принудительным разделением BT, когда текущий блок расположен на правой границе изображения.
Во второй форме реализации устройства согласно восьмому аспекту как таковому или любой предшествующей форме реализации восьмого аспекта принудительное разделение BT содержит рекурсивное разделение текущего блока с помощью горизонтального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находиться на нижней границе; и рекурсивное разделение суб-раздела посредством вертикального принудительного граничного разделения до тех пор, пока листовой узел не будет полностью расположен на правой границе.
В третьей форме реализации устройства согласно восьмому аспекту как таковому или любой предшествующей форме реализации восьмого аспекта принудительное разделение BT содержит рекурсивное разделение текущего блока с помощью вертикального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находиться на нижней границе; и рекурсивное разделение подразделения посредством горизонтального принудительного граничного разделения до тех пор, пока листовой узел полностью не окажется на правой границе.
В четвертой форме реализации устройства согласно восьмому аспекту как таковому или любой предшествующей форме реализации восьмого аспекта процессор дополнительно выполнен с возможностью применять MinQTSize для управления разделением неграничного блока.
В пятой форме реализации устройства согласно восьмому аспекту как таковой или любой предшествующей форме реализации восьмого аспекта устройство дополнительно содержит приемник, соединенный с процессором и выполненный с возможностью принимать MinQTSize через набор параметров последовательности (SPS).
В шестой форме реализации устройства согласно восьмому аспекту как таковому или любой предшествующей форме реализации восьмого аспекта устройство дополнительно содержит передатчик, соединенный с процессором и выполненный с возможностью передавать MinQTSize через набор параметров последовательности (SPS).
Девятый аспект относится к компьютерному программному продукту, содержащему исполняемые компьютером инструкции, хранящиеся на постоянном носителе, которые при исполнении процессором побуждают устройство определять, является ли текущий блок изображения граничным блоком; определять, когда текущий блок является граничным блоком, определять, превышает ли размер текущего блока минимально допустимый размер (MinQTSize) листового узла дерева квадрантов (QT); и применить, когда размер текущего блока 0 не больше, чем MinQTSize, принудительное разделение двоичного дерева (BT) к текущему блоку.
В первой форме реализации устройства согласно восьмому аспекту как таковому принудительное разделение BT является рекурсивным горизонтальным принудительным разделением BT, когда текущий блок расположен на нижней границе изображения, или рекурсивным вертикальным принудительным разделением BT, когда текущий блок расположен на правой границе изображения.
Во второй форме реализации устройства согласно девятому аспекту как таковому или любой предшествующей форме реализации девятого аспекта, принудительное разделение BT содержит рекурсивное разделение текущего блока с помощью горизонтального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находиться на нижней границе; и рекурсивное разделение суб-раздела посредством вертикального принудительного граничного разделения до тех пор, пока листовой узел не будет полностью расположен на правой границе.
В третьей форме реализации устройства согласно девятому аспекту как таковому или любой предшествующей форме реализации девятого аспекта принудительное разделение BT содержит рекурсивное разделение текущего блока с помощью вертикального принудительного граничного разделения до тех пор, пока суб-раздел текущего блока не будет находиться на нижней границе; и рекурсивное разделение подразделения посредством горизонтального принудительного граничного разделения до тех пор, пока листовой узел полностью не окажется на правой границе.
В четвертой форме реализации устройства согласно девятому аспекту как таковому или любой предшествующей форме реализации девятого аспекта инструкции дополнительно побуждают устройство применять MinQTSize для управления разделением неграничного блока.
В пятой форме реализации устройства согласно девятому аспекту как таковому или любой предшествующей форме реализации девятого аспекта инструкции дополнительно побуждают устройство принимать MinQTSize через набор параметров последовательности (SPS).
В шестой форме реализации устройства согласно девятому аспекту как таковому или любой предшествующей форме реализации девятого аспекта инструкции дополнительно побуждают устройство передавать MinQTSize через набор параметров последовательности (SPS).
ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯ, ОТНОСЯЩИЕСЯ К ОТНОШЕНИЮ МЕЖДУ ОГРАНИЧЕНИЯМИ РАЗДЕЛЕНИЯ ДЛЯ НЕГРАНИЧНЫХ И ГРАНИЧНЫХ БЛОКОВ
Кодирование видео следующего поколения (NGVC) не применяет концепцию разделения CU, PU и TU и поддерживает большую гибкость для форм раздела CU. Размер CU соответствует размеру узла кодирования и может иметь квадратную или неквадратную (например, прямоугольную) форму.
В J. An et al., «Структура блочного разделения для кодирования видео следующего поколения», Международный союз электросвязи, COM16-C966, сентябрь 2015 г. (далее «Предложение VCEG COM16-C966») были предложены технологии разделения дерева квадрантов-двоичное дерево (QTBT) для будущего стандарта кодирования видео помимо HEVC. Моделирование показало, что предлагаемая структура QTBT более эффективна, чем структура дерева квадрантов в используемом HEVC. В HEVC внешнее предсказание для небольших блоков ограничено для уменьшения доступа к памяти для компенсации движения, и внешнее предсказание не поддерживается для блоков 4×4. В QTBT JEM эти ограничения сняты.
В QTBT CU может иметь квадратную или прямоугольную форму. Как показано на фиг.6, блок дерева кодирования (CTU) сначала разделяется структурой дерева квадрантов. Листовые узлы дерева квадрантов могут быть дополнительно разделены структурой двоичного дерева. В двоичном дереве используется два типа разделения: симметричное горизонтальное и симметричное вертикальное разделение. В каждом случае узел разделяется путем деления узла посередине по горизонтали или вертикали. Листовые узлы двоичного дерева называются блоками кодирования (CUs), и эта сегментация используется для предсказания и обработки преобразования без какого-либо дополнительного разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. CU иногда состоит из блоков кодирования (CBs) различных цветовых компонентов, например, один CU содержит один CB яркости и два CBs цветности в случае P и B сегментов формата цветности 4:2:0 и иногда состоит из CB одного компонента, например, один CU содержит только один CB яркости или только два CBs цветности в случае I-сегментов.
Для схемы разделения QTBT определены следующие параметры
- CTU размер: размер корневого узла дерева квадрантов, та же концепция, что и в HEVC.
- MinQTSize: минимально допустимый размер листового узла дерева квадрантов
- MaxBTSize: максимально допустимый размер корневого узла двоичного дерева
- MaxBTDepth: максимально допустимая глубина двоичного дерева
- MinBTSize: минимально допустимый размер листового узла двоичного дерева
В одном примере структуры разделения QTBT, когда узел дерева квадрантов имеет размер, равный или меньший, чем MinQTSize, дерево квадрантов дополнительно не рассматривается. Дополнительное разделение двоичным деревом не предусматривается, поскольку размер (MinQTSize) превышает MaxBTSize. В противном случае листовой узел дерева квадрантов может быть дополнительно разделен двоичным деревом. Следовательно, листовой узел дерева квадрантов также является корневым узлом для двоичного дерева, и его глубина двоичного дерева равна 0 (нулю). Когда глубина двоичного дерева достигает MaxBTDepth (т.е. 4), дополнительное разделение не рассматривается. Если ширина узла двоичного дерева равна MinBTSize (т.е. 4), дополнительное горизонтальное разделение не рассматривается. Точно так же, когда узел двоичного дерева имеет высоту, равную MinBTSize, дополнительное вертикальное разделение не рассматривается. Листовые узлы двоичного дерева дополнительно обрабатываются с помощью обработки предсказания и преобразования без какого-либо дополнительного разделения. В JEM максимальный размер CTU составляет 256×256 выборок яркости. Могут быть дополнительно обработаны листовые узлы двоичного дерева (CUs) (например, путем выполнения процесса предсказания и процесса преобразования) без какого-либо дополнительного разделения.
Фиг.21 иллюстрирует пример блока 30 (например, CTB), разделенного с использованием способов разделения QTBT. Как показано на фиг. 21, используя способы разделения QTBT, каждый из блоков разбивается симметрично по центру каждого блока. Фиг.22 иллюстрирует древовидную структуру, соответствующую блочному разделению на фиг.21. Сплошные линии на фиг.22 обозначают разделение дерева квадрантов, а пунктирные линии обозначают разделение двоичного дерева. В одном примере в каждом узле разделения (т.е. не листовом) бинарного дерева сигнализируется элемент синтаксиса (например, флаг) для указания типа выполненного разделения (например, горизонтальное или вертикальное), где 0 указывает горизонтальное разделение и 1 указывает вертикальное разделение. Для разделения дерева квадратов указывать тип разделения не требуется, поскольку при разбиении дерева квадратов блок всегда разбивается по горизонтали и вертикали на 4 подблока одинакового размера.
Как показано на фиг.22, в узле 50 блок 30 (соответствующий корню 50) разделен на четыре блока 31, 32, 33 и 34, показанных на фиг.21, используя разделение QT. Блок 34 далее не разделяется и, следовательно, является листовым узлом. В узле 52 блок 31 дополнительно разделяется на два блока с использованием разделения BT. Как показано на фиг.22 узел 52 отмечен цифрой 1, что указывает на вертикальное разделение. Таким образом, разделение в узле 52 приводит к блоку 37 и блоку, включающему в себя оба блока 35 и 36. Блоки 35 и 36 формируются путем дополнительного вертикального разделения в узле 54. В узле 56 блок 32 дополнительно разделяется на два блока 38 и 39 с использованием разделения BT.
В узле 58 блок 33 разделяется на 4 блока равного размера с использованием разделения QT. Блоки 43 и 44 формируются посредством разделения QT и дополнительно не разделяются. В узле 60 верхний левый блок сначала разделяется с использованием вертикального разделения двоичного дерева, в результате чего получается блок 40 и правый вертикальный блок. Правый вертикальный блок затем разделяется с использованием горизонтального разделения двоичного дерева на блоки 41 и 42. Нижний правый блок, полученный в результате разделения дерева квадратов в узле 58, разделяется в узле 62 с использованием горизонтального разделения двоичного дерева на блоки 45 и 46. Как показано на фиг.22, узел 62 обозначен 0, что указывает на горизонтальное разделение.
В дополнение к QTBT, предложена структура разделения блока, именуемая многотипным деревом (МТТ) для замены BT в структурах CU на основании QTBT, что означает, что сначала CTU может быть разделен с помощью разделения QT для получения блока CTU и затем, во-вторых, блок может быть разделен с помощью MTT разделения.
Структура MTT разделения по-прежнему представляет собой рекурсивную древовидную структуру. В MTT используется несколько различных структур разделов (например, две или более). Например, согласно MTT технологии, могут использоваться две или более различных структур разделов для каждого соответствующего нелистового узла древовидной структуры на каждой глубине древовидной структуры. Глубина узла в древовидной структуре может относиться к длине пути (например, количеству разбиений) от узла до корня древовидной структуры.
В MTT используется два типа разделения: разделение BT и разделение на основании троичного дерева (TT). Тип разделения может быть выбран из разделения BT и TT. Структура разделения TT отличается от структур QT или BT тем, что структура разделения TT не разбивает блок по центру. Центральная часть блока остается в одном субблоке. В отличие от QT, который формирует четыре блока, или двоичного дерева, которое формирует два блока, разделение в соответствии со структурой разделения TT дает три блока. Примеры типов разделов в соответствии со структурой разделения TT включают в себя симметричные типы разделов (как горизонтальные, так и вертикальные), а также асимметричные типы разделов (как горизонтальные, так и вертикальные). Кроме того, типы симметричных разделов согласно структуре разделения TT могут быть неравномерными/неоднородными или равномерными/однородными. Типы асимметричных разделов в соответствии со структурой разделения ТТ бывают неравномерными/неоднородными. В одном примере структура разделения TT может содержать в себя, по меньшей мере, один из следующих типов разделений: горизонтальное равномерное/однородное симметричное троичное дерево, вертикальное равномерное/однородное симметричное троичное дерево, горизонтальное неравномерное/неоднородное симметричное троичное дерево, вертикальное неравномерное/неоднородное симметричное троичное дерево, горизонтальное неравномерное/неоднородное асимметричное троичное дерево или вертикальное неравномерное/неоднородное асимметричное троичное дерево.
В общем, неравномерный/неоднородный симметричный тип разделения троичного дерева является типом разделения, который симметричен относительно центральной линии блока, но где, по меньшей мере, один из трех результирующих блоков не имеет тот же размер, что и два других. Один предпочтительный пример показывает, что боковые блоки составляют 1/4 размера блока и центральный блок имеет 1⁄2 размера блока. Равномерный/однородный симметричный тип разделения троичного дерева является типом разделения, который симметричен относительно центральной линии блока, и все результирующие блоки имеют одинаковый размер. Такое разделение в качестве варианта, если высота или ширина блока, в зависимости от вертикального или горизонтального разделения, кратны 3. Неравномерный/неоднородный асимметричный тип разделения троичного дерева является типом разделения, который не является симметричным относительно центральной линии блока, и где, по меньшей мере, один из результирующих блоков не имеет тот же размер, что и два других.
Фиг.23 является концептуальной схемой, иллюстрирующая возможные примеры типов горизонтального разделения троичного дерева. Фиг.24 является концептуальной схемой, иллюстрирующая возможные примеры типов вертикального разделения троичного дерева. На обоих фиг.23 и фиг.24, h представляет высоту блока в выборках яркости или цветности и w представляет ширину блока в выборках яркости или цветности. Обратите внимание, что соответствующая центральная линия блока не представляет границу блока (т.е. разделы троичного дерева не разделяют блок через центральную линию). Скорее, центральная линия используется для обозначения, является ли конкретный тип раздела симметричным или асимметричным относительно центральной линии исходного блока. Центральная линия также проходит по направлению раздела.
Как показано на фиг.23, блок 71 разделен с помощью горизонтального равномерного/однородного симметричного типа разделения. Тип горизонтального равномерного/однородного симметричного разделения формирует симметричные верхнюю и нижнюю половины относительно центральной линии блока 71. Тип равномерного/однородного симметричного разделения формирует три субблока равного размера, каждый с высотой h/3 и шириной w. Тип равномерного/однородного симметричного разделения является возможным, когда высота блока 71 делится на 3 без остатка.
Блок 73 разделен типом горизонтального неравномерного/неоднородного симметричного разделения. Тип горизонтального неравномерного/неоднородного симметричного разделение формирует симметричные верхнюю и нижнюю половины относительно центральной линии блока 73. Тип горизонтального неравномерного/неоднородного симметричного разделение формирует два блока равного размера (например, верхний и нижний блоки с высотой h/4) и центральный блок другого размера (например, центральный блок высотой h/2). В одном примере, согласно типу горизонтального неравномерного/неоднородного симметричного разделения, область центрального блока равна объединенным областям верхнего и нижнего блоков. В некоторых примерах тип горизонтального неравномерного/неоднородного симметричного разделения может быть предпочтительным для блоков, имеющих высоту, равную степени 2 (например, 2, 4, 8, 16, 32 и т.д.).
Блок 75 разделен типом горизонтального неравномерного/неоднородного асимметричного разделения. Тип горизонтального неравномерного/неоднородного асимметричного разделения не формирует симметричные верхней и нижней половины относительно центральной линии блока 75 (т.е. верхняя и нижняя половины асимметричны). В примере на фиг.23, тип горизонтального неравномерного/неоднородного асимметричного разделения не формирует верхний блок высотой h/4, центральный блок высотой 3h/8 и нижний блок высотой 3h/8. Конечно, можно использовать другие асимметричные компоновки.
Как показано на фиг.24, блок 81 разделен типом вертикального равномерного/однородного симметричного разделения. Тип вертикального равномерного/однородного симметричного разделения формирует симметричные левую и правую половины относительно центральной линии блока 81. Тип вертикального равномерного/однородного симметричного разделения формирует три субблока равного размера, каждый с шириной w/3 и высотой h. Тип равномерного/однородного симметричного разделения возможен, когда ширина блока 81 делится на 3 без остатка.
Блок 83 разделен типом вертикального неравномерного/неоднородного симметричного разделения. Тип вертикального неравномерного/неоднородного симметричного разделения формирует симметричные левую и правую половины относительно центральной линии блока 83. Тип вертикального неравномерного/неоднородного симметричного разделения формирует симметричные левую и правую половины относительно центральной линии 83. Тип вертикального неравномерного/неоднородного симметричного разделения формирует два блока одинакового размера (например, левый и правый блоки шириной w/4) и центральный блок разного размера (например, центральный блок шириной w/2). В одном примере, согласно типу вертикального неравномерного/неоднородного симметричного разделения, область центрального блока равна объединенным областям левого и правого блоков. В некоторых примерах тип вертикального неравномерного/неоднородного симметричного разделения может быть предпочтительным для блоков, имеющих ширину, равную степени 2 (например, 2, 4, 8, 16, 32 и т.д.).
Блок 85 разделен типом вертикального неравномерного/неоднородного асимметричного разделения. Тип вертикального неравномерного/неоднородного асимметричного разделения не формирует симметричные левую и правую половины относительно центральной линии блока 85 (т.е. левая и правая половины асимметричны). В примере на фиг.24, тип вертикального неравномерного/неоднородного симметричного разделения формирует левый блок шириной w/4, центральный блок шириной 3w/8 и правый блок шириной 3w/8. Конечно, можно использовать другие асимметричные компоновки.
В дополнение (или альтернативно) к параметрам для QTBT, определенным выше, для схемы разделения MTT определены следующие параметры.
- MaxBTSize: максимально допустимый размер корневого узла двоичного дерева
- MinBtSize: минимально допустимый размер корневого узла двоичного дерева.
- MaxMttDepth: максимальная глубина многотипного дерева.
- MaxMttDepth offset: максимальное смещение глубины многотипного дерева.
- MaxTtSize: максимально допустимый размер корневого узла троичного дерева
- MinTtSize: минимально допустимый размер корневого узла троичного дерева
- MinCbSize: минимально допустимый размер блока кодирования.
Варианты осуществления настоящего изобретения могут быть реализованы видеокодером или видеодекодером, таким как видеокодер 20 по фиг.12 или видеодекодер 30 по фиг.13, в соответствии с вариантом осуществления настоящего изобретения. Один или более структурных элементов видеокодера 20 или видеодекодера 30, включающие в себя блок разделения, могут быть выполнены с возможностью выполнять способы вариантов осуществления настоящего изобретения.
В вариантах настоящего изобретения:
В JVET-K1001-v4 log2_ctu_size_minus2, log2_min_qt_size_intra_slices_minus2 и log2_min_qt_size_inter_slices_minus2 сигнализируются в SPS (как элементы синтаксиса).
Параметр log2_ctu_size_minus2 plus 2 определяет размер блока дерева кодирования яркости каждого CTU. В частности:
CtbLog2SizeY = log2_ctu_size_minus2 + 2 (7–5)
CtbSizeY = 1 << CtbLog2SizeY (7-6)
Другими словами, CtbLog2SizeY определяет значение log2 размера CTU CtbSizeY, соответствующий размеру блока дерева кодирования (CTB) для яркости (Y).
Дополнительные установки предоставляются следующим образом:
MinCbLog2SizeY = 2 (7-7)
MinCbSizeY = 1 << MinCbLog2SizeY (7-8)
MinTbSizeY = 4 (7–9)
MaxTbSizeY = 64 (7–10)
Параметр log2_min_qt_size_intra_slices_minus2 плюс 2 определяет минимальный размер яркости листового блока, полученного в результате разделения дерева квадрантов CTU в сегментах с slice_type, равным 2 (I), то есть, внутренних сегментов. Значение log2_min_qt_size_intra_slices_minus2 должно быть в диапазоне от 0 до CtbLog2SizeY - 2 включительно.
MinQtLog2SizeIntraY = log2_min_qt_size_intra_slices_minus2 + 2 (7-22)
Параметр log2_min_qt_size_inter_slices_minus2 плюс 2 указывает минимальный размер яркости листового блока, полученного в результате разделения дерева квадрантов CTU в сегментах с slice_type, равным 0 (B) или 1 (P), то есть, внешними сегментами. Значение log2_min_qt_size_inter_slices_minus2 должно быть в диапазоне от 0 до CtbLog2SizeY - 2 включительно.
MinQtLog2SizeInterY = log2_min_qt_size_inter_slices_minus2 + 2 (7-23)
MinQtSizeY определен в (7-30), что означает минимально допустимый размер разделения дерева квадрантов в выборке яркости. Если размер блока кодирования меньше или равен MinQtSizeY, разделение дерева квадрантов не допускается. Дополнительные установки предоставляют собой следующее:
MinQtLog2SizeY = (slice_type = = I)? MinQtLog2SizeIntraY: MinQtLog2SizeInterY (7-25)
MaxBtLog2SizeY = CtbLog2SizeY - log2_diff_ctu_max_bt_size (7-26)
MinBtLog2SizeY = MinCbLog2SizeY (7-27)
MaxTtLog2SizeY = (slice_type = = I)? 5: 6 (7–28)
MinTtLog2SizeY = MinCbLog2SizeY (7-29)
MinQtSizeY = 1 << MinQtLog2SizeY (7-30)
MaxBtSizeY = 1 << MaxBtLog2SizeY (7-31)
MinBtSizeY = 1 << MinBtLog2SizeY (7-32)
MaxTtSizeY = 1 << MaxTtLog2SizeY (7-33)
MinTtSizeY = 1 << MinTtLog2SizeY (7-34)
MaxMttDepth = (slice_type = = I)? max_mtt_hierarchy_depth_intra_slices:
max_mtt_hierarchy_depth_inter_slices (7-35)
Параметры max_mtt_hierarchy_depth_intra_slices и max_mtt_hierarchy_depth_inter_slices обозначают максимальную глубину иерархии для разделения по типу MTT для внутренних и внешних сегментов соответственно.
Основываясь на семантике log2_min_qt_size_intra_slices_minus2 и log2_min_qt_size_inter_slices_minus2, диапазоны log2_min_qt_size_intra_slices_minus2 и log2_min_qt_size_inter_slices_minus2 составляют от 0 до CtbLog2SizeY-2.
Здесь CtbLog2SizeY определяется в семантике log2_ctu_size_minus2, что означает значение log2 размера блока дерева кодирования яркости каждого CTU, CtbLog2SizeY в VTM2.0 равно 7.
На основании (7-22) и (7-23) диапазон MinQtLog2SizeIntraY и MinQtLog2SizeInterY составляет от 2 до CtbLog2SizeY.
На основании (7-25) диапазон MinQtLog2SizeY составляет от 2 до CtbLog2SizeY.
На основании (7-30) диапазон MinQtSizeY в JVET-K1001-v4 составляет от (1 << 2) до (1 << CtbLog2SizeY), в VTM2.0 диапазон составляет от (1 << 2) to (1 << 7), что равно от 4 до 128.
В JVET-K1001-v4 log2_diff_ctu_max_bt_size условно сигнализируется в заголовке сегмента.
Параметр log2_diff_ctu_max_bt_size определяет разницу между размером CTB яркости и максимальным размером яркости (шириной или высотой) блока кодирования, который может быть разделен с использованием двоичного разделения. Значение log2_diff_ctu_max_bt_size должно быть в диапазоне от 0 до CtbLog2SizeY - MinCbLog2SizeY включительно.
Когда log2_diff_ctu_max_bt_size отсутствует, значение log2_diff_ctu_max_bt_size предполагается равным 2.
MinCbLog2SizeY определен в (7-7), что означает минимально допустимый размер блока кодирования.
Основываясь на семантике log2_diff_ctu_max_bt_size, диапазон log2_diff_ctu_max_bt_size составляет от 0 до CtbLog2SizeY - MinCbLog2SizeY.
На основании (7-26) диапазон MaxBtLog2SizeY составляет от CtbLog2SizeY до MinCbLog2SizeY.
На основании (7-31) диапазон MaxBtSizeY составляет от (1 << CtbLog2SizeY) до (1 << MinCbLog2SizeY).
На основании (7-7) диапазон MaxBtSizeY в JVET-K1001-v4 составляет от (1 << CtbLog2SizeY) до (1 << 2), поскольку в VTM2.0 CtbLog2SizeY равен 7, диапазон MaxBtSizeY в VTM2.0 равен от 128 до 4.
Следовательно, MinQtSizeY имеет диапазон от 4 до (1 << CtbLog2SizeY), в VTM2.0 от 4 до 128, MaxBtSizeY имеет диапазон от (1 << CtbLog2SizeY) до 4, в VTM2.0 от 128 до 4.
Соответственно, существует вероятность того, что MinQtSizeY больше, чем MaxBtSizeY.
Более того, на основании текущей обработки границ в VVC 2.0, для блоков, расположенных на границе, разрешено только QT и BT разделение (не разрешено TT, не разрешено отсутствие разделения).
Если текущий блок кодирования расположен на границе и текущий размер блока кодирования cbSizeY удовлетворяет условию:
MinQtSizeY> cbSizeY> MaxBtSizeY,
для текущего блока кодирования невозможно ни QT, ни BT. Следовательно, для текущего блока нет доступного режима разделения.
ВАРИАНТ 1 ОСУЩЕСТВЛЕНИЯ.
Далее приведено подробное описание решения (варианты осуществления изобретения) вышеупомянутых технических задач, включающие в себя аспект граничного случая.
Согласно варианту осуществления, для решения упомянутой технической задачи нижняя граница MaxBtSizeY должна быть ограничена MinQtSizeY, чтобы убедиться, что MaxBtSizeY не меньше MinQtSizeY. В частности, нижняя граница MaxBtSizeY может быть равна MinQtSizeY, поэтому диапазон MaxBtSizeY должен иметь значение от (1 << CtbLog2SizeY) до (1 << MinQtLog2SizeY), поэтому диапазон MaxBtLog2SizeY должен быть от CtbLog2SizeY до MinQtLog2SizeY, поэтому диапазон log2_diff_ctu_max_max_bt_sizebLogSize2 должен быть от 0 до CtbLog2SizeY- MinQtLog2SizeY.
Соответствующее изменение в проекте (стандарта видео) находится в семантике log2_diff_ctu_max_bt_size следующим образом:
log2_diff_ctu_max_bt_size определяет разницу между размером CTB яркости и максимальным размером яркости (шириной или высотой) блока кодирования, который может быть разделен с использованием двоичного разделения. Значение log2_diff_ctu_max_bt_size должно находиться в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeY включительно.
Соответствующий способ кодирования, реализованный устройством кодирования (декодером или кодером), может быть следующим:
определение, является ли текущий блок изображения граничным блоком;
определение, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов;
если текущий блок является граничным и размер текущего блока не превышает минимально допустимый размер листового узла дерева квадрантов, применение двоичного разделения к текущему блоку; в котором минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева.
В котором применение двоичного разделения к текущему блоку может содержать применение принудительного двоичного разделения к текущему блоку.
В котором текущий блок может быть получен путем разделения изображения или блока дерева кодирования (CTU).
В котором способ может содержать два случая: 1) treeType равно SINGLE_TREE или DUAL_TREE_LUMA; 2) treeType равен DUAL_TREE_CHROMA. Для случая 1) текущий блок является блоком яркости и для случая 2) текущий блок является блоком цветности.
В котором максимально допустимый размер корневого узла двоичного дерева может быть максимальным размером яркости в выборках яркости корневого блока кодирования яркости, который может быть разделен с использованием разделения двоичного дерева.
В котором максимально допустимый размер корневого узла троичного дерева может быть максимальным размером яркости в выборках яркости корневого блока кодирования яркости, который может быть разделен с использованием разделения троичного дерева.
В котором минимально допустимый размер листового узла дерева квадрантов может быть минимальным размером яркости в выборках яркости листового блока яркости, полученные в результате разделения дерева квадрантов.
В настоящем документе кодирование соответствует кодированию изображения, видео или движущегося изображения.
Граничный блок означает, что граница изображения/кадра разрезает блок, или, другими словами, блок находится на границе изображения/кадра. В вышеприведенном варианте осуществления двоичное разделение применяется к текущему блоку, если текущий блок является граничным блоком (условие 1) и его размер не превышает минимально допустимый размер листового узла дерева квадрантов (условие 2). Следует отметить, что в некоторых вариантах осуществления может использоваться троичное или другое разделение вместо двоичного разделения. Более того, в некоторых вариантах осуществления двоичное разделение может применяться при условии 2 независимо от условия 1. Другими словами, условие 1 не требует оценки. Если размер текущего блока действительно больше, чем минимально допустимый размер листового узла дерева квадрантов (т.е. условие 2 не выполняется), может применяться разделение дерева квадрантов.
Следует отметить, что могут рассматриваться варианты осуществления, в которых двоичное разделение используется только для граничных блоков (условие 1). Для неграничных блоков разделение дерева квадрантов может быть единственным используемым разделением. Применение двоичного (или троичного) разделения на границе изображения/кадра дает преимущество, в качестве варианта, более эффективное разделение, например, горизонтальные двоичные/троичные разделы на горизонтальной границе и вертикальные двоичные/троичные разделы на вертикальной границе.
Другой соответствующий способ кодирования, реализованный устройством для кодирования (декодером или кодером), может быть следующим: определение, превышает ли размер граничного блока минимально допустимый размер листового узла дерева квадрантов. Если размер граничного блока не превышает минимально допустимый размер листового узла дерева квадрантов, минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева (например, по стандартной спецификации), и к граничному блоку применяется двоичное разделение.
В качестве варианта, граничный блок может не содержать угловой блок. Другими словами, угловой блок, который обрезается как вертикальной, так и горизонтальной границей изображения/кадра, не рассматривается как граничный блок для целей вышеупомянутого условия 1.
ВАРИАНТ 2 ОСУЩЕСТВЛЕНИЯ
Далее приведено описание других вариантов осуществления настоящего изобретения (в сочетании с вышеупомянутыми вариантами осуществления).
В JVET-K1001-v4 в SPS сигнализируется max_mtt_hierarchy_depth_inter_slices и max_mtt_hierarchy_depth_intra_slices. Другими словами, max_mtt_hierarchy_depth_inter_slices и max_mtt_hierarchy_depth_intra_slices являются элементами синтаксиса, что означает, что их значение содержится в битовом потоке, включающий в себя также закодированное изображение или видео.
В частности, max_mtt_hierarchy_depth_inter_slices определяет максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева на листового дерева квадрантов в сегментах с slice_type, равным 0 (B) или 1 (P). Значение max_mtt_hierarchy_depth_inter_slices должно быть в диапазоне от 0 до CtbLog2SizeY - MinTbLog2SizeY включительно.
max_mtt_hierarchy_depth_intra_slices определяет максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева листового дерева квадрантов в сегментах с slice_type, равным 2 (I). Значение max_mtt_hierarchy_depth_intra_slices должно быть в диапазоне от 0 до CtbLog2SizeY - MinTbLog2SizeY включительно.
MinTbSizeY определяется в (7-9), которое фиксировано как 4, поэтому MinTbLog2SizeY = log2 MinTbSizeY, которое фиксировано как 2.
Определяется MaxMttDepth, что означает максимально допустимую глубину разделения многотипного дерева. Если текущая глубина разделения многотипного дерева больше или равна MaxMttDepth, разделение многотипного дерева не допускается (применяется).
Основываясь на семантике max_mtt_hierarchy_depth_inter_slices и max_mtt_hierarchy_depth_intra_slices, диапазон max_mtt_hierarchy_depth_inter_slices и max_mtt_hierarchy_depth_intra_slices составляет от 0 до CtbLog2SizeY - MinTbLog2SizeY.
На основании (7-35) диапазон MaxMttDepth составляет от 0 до CtbLog2SizeY - MinTbLog2SizeY. Поскольку в VTM2.0 CtbLog2SizeY равно 7, диапазон MaxMttDepth составляет от 0 до 5.
Следовательно, MaxMttDepth имеет диапазон от 0 до CtbLog2SizeY - MinTbLog2SizeY, в VTM2.0 от 0 до 5.
Основываясь на текущей обработке границ в VVC 2.0, для блока, расположенного на границе, разрешено только QT и BT разделение (не разрешено TT, не разрешено без разделения).
Если первая техническая задача, упомянутая выше, решена (MaxBtSizeY> = MinQtSizeY), все равно выполняется следующее условие:
cbSizeY <= MinQtSizeY
MaxMttDepth = 0
Для граничной обработки недостаточно уровней разделов BT (вообще любого МТТ, включающего в себя и ТТ).
Например, MinQtSizeY равно 16, MinTbSizeY равно 4, MaxMttDepth равно 0.
Если граничный блок с cbSizeY = 16 и родительским разделом является QT, и этот блок все еще находится на границе, дополнительное разделение не может быть выполнено, потому что Mttdepth текущего блока достигнута MaxMttDepth.
Решение (вариант осуществления изобретения) данной технической задачи граничного случая: для решения упомянутой технической задачи нижняя граница MaxMttDepth должна быть ограничена до 1 (другими словами, не может принимать значение нуля), чтобы убедиться, что после разделения QT достаточно уровней разнотипного разделения дерева для граничного случая. Или, даже более того, нижняя граница MaxMttDepth должна быть ограничена (MinQtLog2SizeY-MinTbLog2SizeY), чтобы убедиться в наличии достаточного количества уровней многотивового раздела дерева после разделения QT как для граничного, так и для не граничного случая.
Соответствующее изменение в (стандартном) тексте проекта находится в семантике max_mtt_hierarchy_depth_inter_slices и max_mtt_hierarchy_depth_intra_slices следующим образом:
max_mtt_hierarchy_depth_inter_slices определяет максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева на листовом дереве квадрантов в сегментах с slice_type, равным 0 (B) или 1 (P). Значение max_mtt_hierarchy_depth_inter_slices должно быть в диапазоне от 1 до CtbLog2SizeY - MinTbLog2SizeY включительно.
max_mtt_hierarchy_depth_intra_slices задает максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева листового дерева квадрантов в сегментах с slice_type, равным 2 (I). Значение max_mtt_hierarchy_depth_intra_slices должно быть в диапазоне от 1 до CtbLog2SizeY - MinTbLog2SizeY включительно.
или
max_mtt_hierarchy_depth_inter_slices определяет максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева листового дерева квадрантов в сегментах с slice_type, равным 0 (B) или 1 (P). Значение max_mtt_hierarchy_depth_inter_slices должно находиться в диапазоне от MinQtLog2SizeY-MinTbLog2SizeY до CtbLog2SizeY - MinTbLog2SizeY включительно.
max_mtt_hierarchy_depth_intra_slices определяет максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева листового дерева квадрантов в сегментах с slice_type, равным 2 (I). Значение max_mtt_hierarchy_depth_intra_slices должно находиться в диапазоне от MinQtLog2SizeY-MinTbLog2SizeY до CtbLog2SizeY - MinTbLog2SizeY включительно.
Соответствующий способ кодирования, реализованный устройством для кодирования (декодером или кодером), может быть следующим:
Разделение изображения на блоки, в котором блоки составляют граничный блок; Применение двоичного разделения к граничному блоку с максимальной граничной глубиной многотипного разделения, в котором максимальная граничная глубина многотипного разделения представляет собой сумму, по меньшей мере, максимальной глубины многотипного дерева и максимального смещения глубины многотипного дерева, в котором максимальная глубина многотипного дерева больше 0. Этот вариант осуществления может быть объединен с вариантом 1 осуществления или может применяться без варианта 1 осуществления.
В качестве варианта, максимальная глубина многотипного дерева больше 0 при применении двоичного разделения к граничному блоку.
В качестве варианта, граничный блок может не содержать угловой блок.
ВАРИАНТ 3 ОСУЩЕСТВЛЕНИЯ.
В других вариантах настоящего изобретения:
В JVET-K1001-v4, если MinQtSizeY> MaxBtSizeY и MinQtSizeY> MaxTtSizeY.
Если cbSize = MinQtsizeY, раздел не может достичь MinCbSizeY (MinTbSizeY и MinCbsizeY фиксированы и равны 4), в связи с отсутствием доступного возможного режима разделения.
Решение этой технической задачи неграничного случая или граничного случая: для решения упомянутой технической задачи нижняя граница MaxBtSizeY должна быть ограничена до MinQtSizeY, чтобы убедиться, что MaxBtSizeY не меньше MinQtSizeY. Или нижняя граница MaxTtSizeY должна быть ограничена MinQtSizeY, чтобы убедиться, что MaxTtSizeY не меньше MinQtSizeY.
Соответствующее изменение текста проекта находится в семантике
log2_diff_ctu_max_bt_size определяет разницу между размером CTB яркости и максимальным размером яркости (шириной или высотой) блока кодирования, который может быть разделен с использованием двоичного разделения. Значение log2_diff_ctu_max_bt_size должно находиться в диапазоне от 0 до CtbLog2SizeY - MinQtLog2SizeY включительно.
И/или
log2_min_qt_size_intra_slices_minus2 plus 2 определяет минимальный размер яркости листового блока, полученного в результате разделения дерева квадрантов CTU в сегментах с slice_type, равным 2 (I). Значение log2_min_qt_size_intra_slices_minus2 должно быть в диапазоне от 0 до MaxTtLog2SizeY - 2 включительно.
log2_min_qt_size_inter_slices_minus2 plus 2 определяет минимальный размер яркости листового блока, полученного в результате разделения дерева квадрантов CTU в сегментах с slice_type, равным 0 (B) или 1 (P). Значение log2_min_qt_size_inter_slices_minus2 должно быть в диапазоне от 0 до MaxTtLog2SizeY - 2 включительно.
Соответствующий способ кодирования, реализованный устройством для кодирования (декодером или кодером), может быть следующим:
определение, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов;
Если размер текущего блока не больше, чем минимально допустимый размер листового узла дерева квадрантов, к текущему блоку применяется разделение многотипного дерева;
В котором минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева или минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла троичного дерева.
В качестве варианта, минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева, и минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла троичного дерева.
В качестве варианта, применение множественного разделения дерева к текущему блоку, включающее в себя применение троичного разделения к текущему блоку или применение двоичного разделения к текущему блоку.
В качестве варианта, граничный блок может не содержать угловой блок.
ВАРИАНТ 4 ОСУЩЕСТВЛЕНИЯ
В других вариантах настоящего изобретения:
Если MaxBtSizeY> = MinQtSizeY, MinQtSizeY> MinTbLog2SizeY и MaxMttDepth <(MinQtLog2SizeY- MinTbLog2SizeY),
Если cbSize = MinQtsizeY, раздел не может достичь MinCbSizeY, в связи с отсутствием достаточного количества разрешенных уровней разделения многотипного дерева.
Решение этой технической задачи неграничного случая или граничного случая: для решения упомянутой технической задачи нижняя граница MaxMttDepth должна быть ограничена (MinQtLog2SizeY- MinTbLog2SizeY) для обеспечения достаточного количества уровней разделения многотипного дерева после разделения QT как для граничного, так и для неграничного случая.
Соответствующее изменение в тексте проекта находится в семантике max_mtt_hierarchy_depth_inter_slices и max_mtt_hierarchy_depth_intra_slices следующим образом:
max_mtt_hierarchy_depth_inter_slices определяет максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева листового дерева квадрантов в сегментах с slice_type, равным 0 (B) или 1 (P). Значение max_mtt_hierarchy_depth_inter_slices должно находиться в диапазоне от MinQtLog2SizeY-MinTbLog2SizeY до CtbLog2SizeY - MinTbLog2SizeY включительно.
max_mtt_hierarchy_depth_intra_slices определяет максимальную глубину иерархии для блока кодирования, возникающих в результате разделения многотипного дерева дерева листового дерева квадрантов в сегментах с slice_type, равным 2 (I). Значение max_mtt_hierarchy_depth_intra_slices должно находиться в диапазоне от MinQtLog2SizeY-MinTbLog2SizeY до CtbLog2SizeY - MinTbLog2SizeY включительно.
Соответствующий способ кодирования, реализованный устройством для кодирования (декодером или кодером), может быть следующим:
Разделение изображения на блоки;
Применение разделения многотипного дерева к блоку блоков с конечной максимальной глубиной многотипного дерева, в котором конечная максимальная глубина многотипного дерева представляет собой сумму, по меньшей мере, максимальной глубины многотипного дерева и максимального смещения глубины многотипного дерева, в котором максимальная глубина многотипного дерева больше или равна вычитанию значения Log2 минимального допустимого размера блока преобразования из значения Log2 минимально допустимого размера листового узла дерева квадрантов, или максимальная глубина многотипного дерева больше, чем или равна вычитанию значения Log2 минимально допустимого размера блока кодирования из значения Log2 минимально допустимого размера листового узла дерева квадрантов.
В качестве варианта, блок не является граничным.
В качестве варианта, максимальное смещение глубины многотипного дерева равно 0.
В качестве варианта, блок является граничным блоком и разделение многотипного дерева является двоичным разделением.
В качестве варианта, разделение многотипного дерева является (или включает в себя) троичное разделение.
В качестве варианта, граничный блок может не содержать угловой блок.
Варианты 1-4 осуществления могут применяться на стороне кодера для разделения изображения/кадра на блоки кодирования и для кодирования блоков кодирования. Варианты 1-4 осуществления могут применяться на стороне декодера для предоставления разделов изображения/кадра, а именно, блоков кодирования, и для декодирования блоков кодирования соответственно (например, правильного синтаксического анализа блоков кодирования из потока и их декодирования).
Согласно некоторым вариантам осуществления предоставляется декодер, содержащий один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором программы, когда выполняется процессорами, конфигурирует декодер выполнить любой из способов, описанных выше со ссылкой на варианты 1-4 осуществления.
Более того, предоставляется кодер, содержащий один или более процессоров; и постоянный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для выполнения процессорами, в котором программы, когда выполняется процессорами, конфигурирует кодер выполнить любой из способов, описанных выше со ссылкой на варианты 1-4 осуществления.
Таким образом, предоставляется способ кодирования, реализуемый устройством декодирования, содержащий: определение, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов; если размер текущего блока не больше, чем минимально допустимый размер листового узла дерева квадрантов, применение многотипного разделения дерева к текущему блоку; в котором минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева или минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла троичного дерева.
Данный подход способствует эффективному разделению и сигнализации параметров разделения для блоков изображения/видео.
Более того, в некоторых реализациях способ также содержит этапы определения, является ли текущий блок изображения граничным блоком. Если текущий блок является граничным и размер текущего блока не превышает минимально допустимый размер листового узла дерева квадрантов, способ также включает в себя применение к текущему блоку двоичного разделения. Следует отметить, что в этом случае минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева. Например, если размер текущего блока не превышает минимально допустимый размер листового узла дерева квадрантов, вышеупомянутое применение разделения многотипного дерева к текущему блоку включает в себя применение к текущему блоку двоичного разделения, если текущий блок является граничным блоком и размер текущего блока не больше минимально допустимого размера листового узла дерева квадрантов.
Обеспечение двоичного разделения может быть особенно выгодным для блоков на границе изображения/видеокадра, например, для блоков, разделенных границей. Таким образом, в некоторых реализациях может быть полезно применять подход для граничных блоков, а не применять его для остальных блоков. Однако настоящее изобретение не ограничивается этим, и, как упомянуто выше, также может применяться подход применения двоичного разделения для большей глубины разделения для неграничных блоков и эффективно сигнализироваться.
В дополнение или в качестве альтернативы вышеупомянутым вариантам осуществления минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева, и минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла троичного дерева.
Применение многотипного разделения дерева к текущему блоку может включать в себя применение к текущему блоку троичного разделения или применение двоичного разделения к текущему блоку. Однако настоящее изобретение этим не ограничивается и, в общем, многотипное разделение дерева может также включать в себя дополнительные или другие различные типы разделения.
Способ может дополнительно включать в себя определение максимально допустимого размера корневого узла двоичного дерева на основании минимально допустимого размера листового узла дерева квадрантов. Это облегчает эффективную сигнализацию/хранение параметров. Например, максимально допустимый размер корневого узла двоичного дерева может считаться равным минимально допустимому размеру листового узла дерева квадрантов. Однако настоящее изобретение этим не ограничивается, и можно предположить другое соотношение для получения максимально допустимого размера корневого узла двоичного дерева.
Согласно примерному варианту осуществления, в дополнение или в качестве альтернативы к вышеописанным вариантам осуществления, способ может содержать этапы разделения изображения на блоки, в котором блоки содержат текущий блок. Применение двоичного разделения к текущему блоку содержит применение двоичного разделения к граничному блоку с максимальной граничной глубиной многотипного разделения, в котором максимальная граничная глубина многотипного разделения представляет собой сумму, по меньшей мере, максимальной глубины многотипного дерева и максимального смещения глубины многотипного дерева, в котором максимальная глубина многотипного дерева больше 0. Более того, в некоторых реализациях максимальная глубина многотипного дерева больше 0 при применении двоичного разделения к граничному блоку.
Согласно варианту осуществления способ включает в себя разделение изображения на блоки (блоки, содержащие текущий блок). Применение разделения многотипного дерева к текущему блоку включает в себя применение разделения многотипного дерева к текущему блоку блоков с конечной максимальной глубиной многотипного дерева, в котором конечная максимальная глубина многотипного дерева является суммой, по меньшей мере, максимальной глубины многотипного дерева и максимального смещения глубины многотипного дерева, в котором максимальная глубина многотипного дерева больше или равна вычитанию значения Log2 минимального допустимого размера блока преобразования из значения Log2 минимально допустимого размера листового узла дерева квадрантов, или максимальная глубина многотипного дерева больше или равна вычитанию значения Log2 минимально допустимого размера блока кодирования из значения Log2 минимально допустимого размера листового узла дерева квадрантов. Это облегчает дополнительное разделение даже при больших глубинах разделения.
Текущий блок может быть неграничным блоком. Максимальное смещение глубины многотипного дерева может быть 0. Текущий блок может быть, альтернативно или дополнительно, граничным блоком, и многотипное разделение дерева является двоичным разделением. Разделение многотипного дерева может быть троичным или включать в себя троичное разделение.
Согласно варианту осуществления предоставляется способ кодирования, содержащий этапы: определения, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов; если размер текущего блока не больше, чем минимально допустимый размер листового узла дерева квадрантов, применение многотипного разделения дерева к текущему блоку; в котором минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева или минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла троичного дерева.
В способе кодирования могут применяться любые из вышеупомянутых правил и ограничений, описанных в отношении способа декодирования. Поскольку сторона кодера и сторона декодера должны совместно использовать битовый поток. В частности, сторона кодирования генерирует битовый поток после кодирования разделов, полученных в результате разделения, описанного выше, в то время как сторона декодирования анализирует битовый поток и соответственно восстанавливает декодированные разделы. То же самое относится к вариантам осуществления, относящимся к устройству для кодирования (кодеру) и устройству для декодирования (декодеру), описанным ниже.
Согласно варианту осуществления предоставляется устройство для декодирования, содержащее схему, выполненную с возможностью: определять, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов; если размер текущего блока не превышает минимально допустимый размер листового узла дерева квадрантов, применить к текущему блоку разделение многотипного дерева; в котором минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева или минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла троичного дерева. Следует отметить, что определение того, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов, может выполняться на основании сигнализации в битовом потоке на стороне декодирования.
Также предоставляется устройство для кодирования, которое содержит схему, выполненную с возможностью: определять, превышает ли размер текущего блока минимально допустимый размер листового узла дерева квадрантов; если размер текущего блока не превышает минимально допустимый размер листового узла дерева квадрантов, применить к текущему блоку разделение многотипного дерева; в котором минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла двоичного дерева или минимально допустимый размер листового узла дерева квадрантов не превышает максимально допустимый размер корневого узла троичного дерева.
Согласно варианту осуществления предоставляется постоянный машиночитаемый носитель данных, хранящий программы для выполнения схемой обработки, в котором программы при выполнении схемой обработки, конфигурирует схему обработки выполнить любой из упомянутых выше способов.
Описанные в настоящем изобретении устройства, могут содержать схемы обработки для выполнения различных операций и способов, описанных в данном документе. Схема обработки может содержать аппаратное и программное обеспечение. Например, схема обработки может содержать один или более процессоров и энергонезависимую память, подключенную к одному или нескольким процессорам. Память может содержать программный код, который при выполнении одним или более процессорами побуждают устройство выполнять указанные операции или способы.
Изобретение было описано с использованием различных вариантов осуществления, как примеры, так и реализации. Однако специалистам в данной области техники очевидно, что возможный другие вариации, которые могут применять настоящее изобретение на практике на основании изучения чертежей, описания изобретения и независимых пунктов формулы изобретения. В формуле изобретения, а также в описании слово «содержащий» не исключает других элементов или этапов, неопределенный артикль «а» или «an» не исключает множественность. Один элемент или другой блок может выполнять функции нескольких объектов или объектов, указанных в формуле изобретения. Сам факт того, что определенные меры изложены во взаимно различных зависимых пунктах формулы изобретения, не означает, что не может быть использована комбинация этих мер в преимущественной реализации.
Ниже приводится объяснение реализаций способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и использующей их системе.
Фиг.27 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Эта система 3100 поставки контента содержит в себя устройство 3102 захвата, оконечное устройство 3106 и дополнительно включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с оконечным устройством 3106 по линии 3104 связи. Линия связи может содержать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, помимо прочего, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию и т.п.
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на чертежах), и сервер кодирует данные и передает закодированные данные в оконечное устройство 3106. Устройство 3102 захвата включает в себя, но не ограничивается, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, PDA, устройство, установленное на транспортном средстве, или их комбинация и т.п. Например, устройство 3102 захвата может включать в себя устройство 12 источника, как описано выше. Когда данные включают в себя видео, видеокодер 20, содержащийся в устройстве 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть, голос), аудиокодер, содержащийся в устройстве 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет закодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на оконечное устройство 3106.
В системе 3100 поставки контента оконечное устройство 310 принимает и воспроизводит закодированные данные. Оконечное устройство 3106 может быть устройством, выполненным с возможностью принимать и восстанавливать данные, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеомагнитофон (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, устройство 3124, установленное на транспортном средстве, или их комбинация или тому подобное, выполненное с возможностью декодировать вышеупомянутые закодированные данные. Например, оконечное устройство 3106 может включать в себя устройство 14 назначение, как описано выше. Когда кодированные данные включают в себя видео, для выполнения декодирования видео предоставляется приоритет видеодекодеру 30, содержащемуся в оконечном устройстве. Когда кодированные данные включают в себя звук, аудиодекодер, содержащийся в оконечном устройстве, получает приоритет для выполнения обработки декодирования звука.
Для оконечного устройства с дисплеем, например, смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеомагнитофона (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122 или устройства 3124, установленного на транспортном средстве, оконечное устройство может передавать декодированные данные на свой дисплей. Для оконечного устройства, не оборудованного дисплеем, например, STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, в нем устанавливается контакт с внешним дисплеем 3126 для приема и отображения декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство для кодирования изображения или устройство для декодирования изображения, как показано в вышеупомянутых вариантах осуществления.
Фиг.28 является схемой, показывающей структуру примера оконечного устройства 3106. После того, как оконечное устройство 3106 принимает поток из устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи потока. Протокол содержит, помимо прочего, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию или тому подобное.
После того, как блок 3202 обработки протокола обработает поток, формируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации закодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.
Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, в качестве варианта, субтитры. Видеодекодер 3206, который содержит видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на фиг.18) перед подачей его в блок 3212 синхронизации. Аналогично, аудиокадр может сохраняться в буфере (не показан на фиг.28) перед подачей его в блок 3212 синхронизации.
Блок 3212 синхронизации синхронизирует видеокадр и звуковой кадр и подает видео/аудио на видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может быть закодирована в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и визуальных данных, и временных меток, относящихся доставки самого потока данных.
При наличии субтитр в потоке, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры в дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и в вышеупомянутых вариантах осуществления либо устройство для кодирования изображения, либо устройство для декодирования изображения может быть включено в другую систему, например, автомобильную систему.
Хотя варианты осуществления изобретения были в основном описаны на основании кодирования видео, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10) и другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, то есть обработка или кодирование отдельного изображения независимо от любого предшествующего или последующего изображения, как при кодировании видео. В общем, если обработка кодирования изображения ограничена одним изображением 17, в случае могут быть недоступны только блоки 244 (кодер) и 344 (декодер) внешнего предсказания. Все другие функции (также называемые инструментами или технологиями) видеокодера 20 и видеодекодер 30 могут в равной степени использоваться для обработки неподвижных изображений, например, вычисление остатка 204/304, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, разделение 262/362, внутреннее предсказание 254/354 и/или контурная фильтрация 220, 320 и энтропийное кодирование 270 и энтропийное декодирование 304.
Варианты осуществления, например, кодера 20 и декодера 30, а также описанные здесь функции, например, применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, встроенным программным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на машиночитаемом носителе или передаваться через среду связи в виде одной или более инструкций или кода и выполняться аппаратным процессором. Машиночитаемый носитель может содержать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например, носителю данных, или носителю связи, включающему в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям данных, которые являются энергонезависимыми, или (2) средам связи, таким как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации способов, описанных в настоящем изобретении. Компьютерный программный продукт может содержать в себя машиночитаемый носитель.
Следующие логические операторы или математические операторы определяются следующим образом:
Математические операторы, используемые в настоящем изобретении, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определены более точно, и определены дополнительные операции, такие как возведение в степень и деление с действительным знаком. Правила нумерации и подсчета обычно начинаются с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.
Арифметические операторы
Определены следующие арифметические операторы следующим образом:
+ Дополнение
- Вычитание (как оператор с двумя аргументами) или отрицание (как унарный оператор префикса)
* Умножение, включающее в себя умножение матриц
xy Возведение в степень. Указывает x в степени y. В других контекстах такое обозначение используется для надстрочного индекса, а не для интерпретации как возведения в степень.
/ Целочисленное деление с отсечением результата в сторону нуля. Например, 7/4 и -7 / -4 отсекаются до 1, -7/4 и 7/-4 усекаются до -1.
÷ Используется для обозначения деления в математических уравнениях, где не предполагается отсечение или округление.
Используется для обозначения деления в математических уравнениях, где не предполагается отсечение или округление.
Суммирование f (i), где i принимает все целые значения от x до y включительно.
x % y Модуль. Остаток от x, деленный на y, определен только для целых чисел x и y, где x> = 0 и y> 0.
Логические операторы
Определены следующие логические операторы следующим образом:
x && y Булевская логическая операция «и» x и y
х | | y Булевская логическая операция «или» x и y
! Булевская логическая операция «не»
x ? y : z Если x является TRUE или не равен 0, вычисляется значение y; в противном случае, вычисляется значение z.
Операторы отношения
Определены следующие операторы отношения следующим образом:
> Больше чем
> = Больше или равно
< Менее чем
<= Меньше или равно
= = Равно
!= Не равно
Когда применяется оператор отношения к элементу синтаксиса или переменной, которой присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для элемента синтаксиса или переменной. Значение «na» не считается равным любому другому значению.
Побитовые операторы
Определены следующие побитовые операторы следующим образом:
& Побитовое «и». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых битов, равных 0.
| Побитовое «или». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых битов, равных 0.
^ Побитовое «исключающее ИЛИ». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значимых битов, равных 0.
x >> y Арифметический сдвиг вправо целочисленного представления x с двоичным дополнением на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в старшие значащие биты (MSBs) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.
x<<y Арифметический сдвиг влево целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в младшие значащие биты (LSBs) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Определены следующие операторы присвоения следующим образом:
= Оператор присваивания
+ + Приращение, т.е. x + + эквивалентно x = x + 1; при использовании в индексе массива, оценивает значение переменной до операции приращения.
- - Декремент, т.е. x-- эквивалентен x = x - 1; при использовании в индексе массива оценивает значение переменной до операции декремента.
+ = Приращение на указанную величину, т.е. x + = 3 эквивалентно x = x + 3, и x + = (−3) эквивалентно x = x + (−3).
- = Декремент на указанную величину, т.е. х - = 3 эквивалентно x = x - 3, и x - = (−3) эквивалентно x = x - (−3).
Указание диапазона
Для указания диапазона значений используются следующие обозначения:
x = y..z x принимает целые значения от y до z включительно, где x, y и z являются целыми числами, и z больше y.
Математические функции
Определены следующие математические функции:
Abs (x) =
Asin (x) тригонометрическая обратная синусоидальная функция, работающая с аргументом x, в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне −π ÷ 2 до π ÷ 2 включительно в радианах
Atan (x) тригонометрическая функция арктангенса, действующая на аргумент x, с выходным значением в диапазоне −π ÷ 2 до π ÷ 2 включительно в радианах
Atan2 (y, x) =
Ceil (x) наименьшее целое число, большее или равное x.
Clip1Y (x) = Clip3 (0, (1 << BitDepthY) - 1, x)
Clip1C (x) = Clip3 (0, (1 << BitDepthC) - 1, x)
Clip3 (x, y, z) =
Cos (x) тригонометрическая функция косинуса, оперирующая аргументом x в радианах.
Floor (x) наибольшее целое число, меньшее или равное x.
GetCurrMsb (a, b, c, d) =
Ln (x) натуральный логарифм x (логарифм с основанием e, где e является постоянная с основанием натурального логарифма 2,718 281 828 ...).
Log2 (x) логарифм x по основанию 2.
Log10 (x) десятичный логарифм числа x.
Min (x, y) =
Max (x, y) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
Sign(x) =
Sin (x) тригонометрическая функция синуса, оперирующая аргументом x в радианах.
Sqrt( x ) =
Swap( x, y ) = ( y, x )
Tan (x) тригонометрическая функция тангенса, действующая на аргумент x в радианах.
Порядок приоритетности операций
Если порядок приоритета в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
- оцениваются операции с более высоким приоритетом перед любой операцией с более низким приоритетом.
- операции с одинаковым приоритетом оцениваются последовательно слева направо.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритета, используемый в этой спецификации, такой же, как и в языке программирования C.
Таблица: Приоритет операций от наивысшего (вверху таблицы) до самого низкого (внизу таблицы)
Текстовое описание логических операций
В тексте приведено описание логических операций, которое математически описывается в следующей форме:
If (условие 0)
выражение 0
else if (условие 1)
выражение 1
...
else / * информативное замечание по оставшемуся условию * /
выражение n
можно описать следующим образом:
... как указано ниже / ... применяется следующее:
- if условие 0, выражение 0
- в противном случае, if условие 1, выражение 1
- ...
- в противном случае (информативное замечание по оставшемуся условию), выражение n
Каждое из «Если ... В противном случае, если ... В противном случае ...» в тексте начинается с «... как указано ниже» или «... применяется следующее», сразу за которым следует «Если ...». Последним условием «Если ... В противном случае, если ... Иначе, ...» всегда является «В противном случае ...». Перемежающиеся операторы «Если ... В противном случае, если ... В противном случае ...» могут быть идентифицированы путем сопоставления «... следующим образом» или «... применяется следующее» с окончанием «В противном случае ...».
В тексте изложение логических операций, которое математически описывается в следующей форме:
If (условие 0a && условие 0b)
выражение 0
else if (условие 1a | | условие 1b)
выражение 1
...
else
выражение n
можно описать следующим образом:
... как указано ниже / ... применяется следующее:
- если все следующие условия верны, выражение 0:
- условие 0a
- условие 0b
- В противном случае, если выполняется одно или более из следующих условий, выражение 1:
- условие 1а
- условие 1b
- ...
- в противном случае выражение n
В тексте изложение логических операций, которое математически описывается в следующей форме:
if (условие 0)
выражение 0
if (условие 1)
выражение 1
можно описать следующим образом:
когда условие 0, выражение 0
когда условие 1, выражение 1
Определения сокращений и глоссарий
HEVC - высокоэффективное кодирование видео
VVC - универсальное кодирование видео
VTM - тестовая модель VVC
JEM - совместная модель исследования
CTU - блок дерева кодирования
CU - блок кодирования
BT - двоичное дерево
TT - троичное дерево
QT - дерево квадрантов или четвертичное дерево
ABT - асимметричное BT
МТТ - многотипное дерево
AMP - асимметричный раздел
SH - заголовок сегмента
SPS - набор параметров последовательности
PPS - набор параметров изображения
CE - основной эксперимент
SubCE – SubCore эксперимент (часть основного эксперимента).
Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео за счет повышения эффективности разделения изображений. Получают, из битового потока, элемент синтаксиса. Получают информацию минимального размера в выборках яркости листового блока яркости, полученного в результате разделения дерева квадрантов, MinQtSizeY. Определяют максимальный размер в выборках яркости корневого блока яркости, так, что он может быть разделен с использованием разделения двоичного дерева, MaxBtSizeY на основании информации MinQtSizeY и полученного элемента синтаксиса. Причем элемент синтаксиса представляет собой элемент синтаксиса разницы между логарифмом по основанию 2 MinQtSizeY и логарифмом по основанию 2 MaxBtSizeY; или элемент синтаксиса представляет собой элемент синтаксиса разницы между MinQtSizeY и MaxBtSizeY, причем элемент синтаксиса разницы сигнализирует упомянутую разницу в логарифмической форме с основанием 2. При этом способ дополнительно содержит этапы, на которых: определяют, разрешено ли применение двоичного разделение к блоку изображения на основе MaxBtSizeY; и получают блок кодирования блока изображения на основе результата определения. 4 н. и 9 з.п. ф-лы, 31 ил.
1. Устройство декодирования битового потока (101) видео, содержащее схему, выполненную с возможностью:
получения из битового потока (101) элементов синтаксиса;
получения информации для минимального размера в выборках яркости листового блока яркости, полученного в результате разделения дерева квадрантов, MinQtSizeY (105);
определения максимального размера в выборках яркости корневого блока яркости, так что он может быть разделен с использованием разделения двоичного дерева, MaxBtSizeY (102) на основании информации MinQtSizeY (105) и полученного элемента синтаксиса;
определения, разрешено ли применение двоичного разделение к блоку изображения на основе MaxBtSizeY (102); и
получения блока кодирования блока изображения на основе результата определения; причем
элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между логарифмом по основанию 2 MinQtSizeY (105) и логарифмом по основанию 2 MaxBtSizeY (102); или
элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между MinQtSizeY (105) и MaxBtSizeY (102), причем элемент синтаксиса разницы сигнализирует упомянутую разницу в логарифмической форме с основанием 2.
2. Устройство по п.1, в котором схема выполнена с возможностью определения MaxBtSizeY (102) с учетом того, что его нижним пределом является MinQtSizeY (105).
3. Устройство по п.1 или 2, в котором схема выполнена с возможностью получения элемента синтаксиса из битового потока в зависимости от максимальной глубины иерархии для блоков кодирования, полученных в результате разделения многотипного дерева, MaxMttDepth.
4. Устройство по п.3, в котором схема выполнена с возможностью получения элемента синтаксиса из битового потока (101), если MaxMttDepth (103), характеризующее верхний предел количества последовательных двоичных или троичных разделений, применяемых для получения дочернего блока, не равно нулю.
5. Устройство (1000) генерирования битового потока (101) видео, характеризующееся тем, что выполнено с возможностью:
определения минимального размера яркости листового блока, полученного в результате разделения дерева квадрантов, MinQtSizeY (105),
определения максимального размера яркости блока кодирования, подлежащего разделению с использованием разделения двоичного дерева, MaxBtSizeY (102) на основании MinQtSizeY (105) и
вставки в битовый поток (101) информации определенного MinQtSizeY (105); и
вставки элемент синтаксиса в битовый поток (101), причем элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между логарифмом по основанию 2 MinQtSizeY (105) и логарифмом по основанию 2 MaxBtSizeY (102); или
элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между MinQtSizeY (105) и MaxBtSizeY (102), причем элемент синтаксиса разницы сигнализирует упомянутую разницу в логарифмической форме с основанием 2.
6. Устройство (1000) генерирования битового потока (101), включающего в себя закодированные изображения, по п.5, характеризующееся тем, что выполнено с возможностью определения MaxBtSizeY (102), с учетом того, что его нижний предел равен MinQtSizeY (105).
7. Устройство (1000) генерирования битового потока (101), включающего в себя закодированные изображения, по п. 5 или 6, при этом устройство характеризуется тем, что выполнено с возможностью:
вставки, в битовый поток (101), элемента (5001) синтаксиса, зависящего от максимальной глубины иерархии для блоков кодирования, полученных в результате разделения многотипного дерева, MaxMttDepth (103).
8. Устройство (1000) генерирования битового потока (101), включающего в себя закодированные изображения, по п.7, характеризующееся тем, что выполнено с возможностью
вставки, в битовый поток (101), элемента синтаксиса, если MaxMttDepth (103), характеризующее верхний предел количества последовательных двоичных или троичных разделений, применяемых для получения дочернего блока, не равно нулю.
9. Способ генерирования битового потока (101) видео, включающий в себя этапы, на которых:
определяют минимальный размер яркости листового блока в результате разделения дерева квадрантов, MinQtSizeY (105),
определяют максимальный размер яркости блока кодирования, подлежащего разделению с использованием разделения двоичного дерева, MaxBtSizeY (102), на основании MinQtSizeY (105), и
вставляют, в битовый поток (101), информацию определенного MinQtSizeY (105); и
вставляют элемент синтаксиса в битовый поток (101), причем элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между логарифмом по основанию 2 MinQtSizeY (105) и логарифмом по основанию 2 MaxBtSizeY (102); или
элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между MinQtSizeY (105) и MaxBtSizeY (102), причем элемент синтаксиса разницы сигнализирует упомянутую разницу в логарифмической форме с основанием 2.
10. Способ декодирования битового потока (101) видео, содержащий этапы, на которых:
получают, из битового потока (101), элемент синтаксиса;
получают информацию минимального размера в выборках яркости листового блока яркости, полученного в результате разделения дерева квадрантов, MinQtSizeY (105);
определяют максимальный размер в выборках яркости корневого блока яркости, так, что он может быть разделен с использованием разделения двоичного дерева, MaxBtSizeY (102) на основании информации MinQtSizeY (105) и полученного элемента синтаксиса; причем
элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между логарифмом по основанию 2 MinQtSizeY (105) и логарифмом по основанию 2 MaxBtSizeY (102); или
элемент синтаксиса представляет собой элемент (301) синтаксиса разницы между MinQtSizeY (105) и MaxBtSizeY (102), причем элемент синтаксиса разницы сигнализирует упомянутую разницу в логарифмической форме с основанием 2;
при этом способ дополнительно содержит этапы, на которых:
определяют, разрешено ли применение двоичного разделение к блоку изображения на основе MaxBtSizeY (102); и
получают блок кодирования блока изображения на основе результата определения.
11. Способ по п.10, в котором этап определения MaxBtSizeY (102) на основании информации для MinQtSizeY (105) и полученного элемента синтаксиса содержит подэтап, на котором определяют MaxBtSizeY (102) с учетом того, что его нижним пределом является MinQtSizeY (105).
12. Способ по п.10 или 11, в котором этап получения, из битового потока (101), элемента синтаксиса содержит подэтап, на котором получают элемент синтаксиса из битового потока в зависимости от максимальной глубины иерархии для блоков кодирования, полученных из разделения многотипного дерева, MaxMttDepth.
13. Способ по п.12, в котором этап получения элемента синтаксиса, из битового потока (101), содержит подэтап, на котором получают элемент синтаксиса из битового потока (101), если MaxMttDepth (103), характеризующее верхний предел количества последовательных двоичных или троичных разделений, применяемых для получения дочернего блока, не равно нулю.
BENJAMIN BROSS и др., "Versatile Video Coding (Draft 2)", Любляна, Словения, опубл | |||
Печь-кухня, могущая работать, как самостоятельно, так и в комбинации с разного рода нагревательными приборами | 1921 |
|
SU10A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз | 1924 |
|
SU2014A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз | 1924 |
|
SU2014A1 |
Авторы
Даты
2022-12-23—Публикация
2019-09-03—Подача